资料下载
coding无法使用浏览器打开,必须用git工具下载:
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git
视频观看
百问网驱动大全
GPIO子系统层次与数据结构参考资料:
- Linux 5.x内核文档
- Linux-5.4\Documentation\driver-api
- Linux-5.4\Documentation\devicetree\bindings\gpio\gpio.txt
- Linux-5.4\drivers\gpio\gpio-74x164.c
- Linux 4.x内核文档
- Linux-4.9.88\Documentation\gpio
- Linux-4.9.88\Documentation\devicetree\bindings\gpio\gpio.txt
- Linux-4.9.88\drivers\gpio\gpio-74x164.c
记住GPIO Controller的要素,这有助于理解它的驱动程序:
- 一个GPIO Controller里有多少个引脚?有哪些引脚?
- 需要提供函数,设置引脚方向、读取/设置数值
- 需要提供函数,把引脚转换为中断
以Linux面向对象编程的思想,一个GPIO Controller必定会使用一个结构体来表示,这个结构体必定含有这些信息:
- GPIO引脚信息
- 控制引脚的函数
- 中断相关的函数
每个GPIO Controller用一个gpio_device来表示:
- 里面每一个gpio引脚用一个gpio_desc来表示
- gpio引脚的函数(引脚控制、中断相关),都放在gpio_chip里
我们并不需要自己穿件gpio_device,编写驱动时要创建的是gpio_chip,里面提供了:
- 控制引脚的函数
- 中断相关的函数
- 引脚信息:支持多少个引脚?各个引脚的名字?
我们去使用GPIO子系统时,首先是获得某个引脚对应的gpio_desc。
gpio_device表示一个GPIO Controller,里面支持多个GPIO。
在gpio_device中有一个gpio_desc数组,每一引脚有一项gpio_desc。
分配、设置、注册gpioc_chip结构体,示例:drivers\gpio\gpio-74x164.c
)]
3. 怎么编写GPIO Controller驱动程序分配、设置、注册gpioc_chip结构体,示例:drivers\gpio\gpio-74x164.c