编写LED驱动:如何用Linux内核里静态映射好的GPIO
2017-08-16 22:25
531 查看
编写LED驱动:如何用Linux内核里静态映射好的GPIO
所有的寄存器地址静态映射都是在reg-***.h头文件里,如看门狗,GPIO等外设的寄存器的地址静态映射都在这些头文件里。
步骤一:打开内核源代码,在里面搜索regs-gpio.h文件
打开文件后我们可以在里面看到这样的宏
VA:表示虚拟地址的缩写
我们找到虚拟地址的定义
PA:表示物理地址
再找物理地址的定义
还有诸如GPIOA,GPIOB,GPIOC等待寄存器的控制寄存器和数据寄存器的地址映射
如
对比数据手册可知,GPIOA的物理地址是0x56000000
所以,通过内核已经静态映射好的虚拟地址,就可以直接用内核映射好的虚拟地址操作GPIO
例如:
将GPIOB 0-3设置为输出
#include <mach/regs-gpio.h>
//静态映射地址
(*(volatile u32*)S3C2410_GPBCON)= ((*(volatileu32*)S3C2410_GPBCON))&~0xff|0x55;
编写LED驱动:如何用Linux内核里静态映射好的GPIO
所有的寄存器地址静态映射都是在reg-***.h头文件里,如看门狗,GPIO等外设的寄存器的地址静态映射都在这些头文件里。
步骤一:打开内核源代码,在里面搜索regs-gpio.h文件
打开文件后我们可以在里面看到这样的宏
VA:表示虚拟地址的缩写
我们找到虚拟地址的定义
PA:表示物理地址
再找物理地址的定义
还有诸如GPIOA,GPIOB,GPIOC等待寄存器的控制寄存器和数据寄存器的地址映射
如
对比数据手册可知,GPIOA的物理地址是0x56000000
所以,通过内核已经静态映射好的虚拟地址,就可以直接用内核映射好的虚拟地址操作GPIO
例如:
将GPIOB 0-3设置为输出
#include <mach/regs-gpio.h>
//静态映射地址
(*(volatile u32*)S3C2410_GPBCON)= ((*(volatileu32*)S3C2410_GPBCON))&~0xff|0x55;
相关文章推荐
- 编写LED混杂设备驱动:静态映射,如何用Linux内核里的gpio_request(),gpio_set_value()等函数,ioctl函数
- 基于TX2440开发板在ADS1.2中编写LED的驱动(GPIO的使用)裸机程序
- 50 使用linux内核源码里的led驱动<LED Support for GPIO connected LEDs>
- 驱动学习4--led静态映射
- Android下led控制(下)--Linux驱动部分--script与gpio(全志)
- 如何把设备驱动文件添加到Linux内核编译选项配置的menuconfig中
- Linux内核访问外设I/O资源的方式-静态映射(map_desc)方式
- 加入of_ (device tree操作api) 的platform驱动编写 基于gpio-keys
- 如何编写linux下nand flash驱动
- Linux内核驱动之GPIO子系统(一)GPIO的使用
- Linux简单设备驱动(1):使用IO内存操作GPIO--LED
- 如何编写linux下nand flash驱动-2
- 如何编写nand驱动,360doc比较详细
- Linux内核访问外设I/O资源的方式(设备物理地址和设备虚拟地址),静态映射和动态映射
- Linux内核驱动之GPIO子系统(一)GPIO的使用
- IMX6Q学习笔记——编写LED驱动和测试程序以及相关管脚配置
- Linux内核驱动GPIO的使用
- Linux内核驱动之GPIO子系统
- 通用GPIO驱动和apk(含jni),支持所有GPIO,支持LED控制,支持友善6410/210开发板,支持安卓2.3/4.0,内核2.6/3.0
- Linux 字符设备驱动开发基础(一)—— 编写简单 LED 设备驱动