资料下载
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 4.x内核文档
- Linux-4.9.88\Documentation\gpio
- Linux-4.9.88\Documentation\devicetree\bindings\gpio\gpio.txt
1. GPIO子系统的作用
芯片内部有很多引脚,这些引脚可以接到GPIO模块,也可以接到I2C等模块。
通过Pinctrl子系统来选择引脚的功能(mux function)、配置引脚:
当一个引脚被复用为GPIO功能时,我们可以去设置它的方向、设置/读取它的值。
GPIO名为"General Purpose Input/Output",通用目的输入/输出,就是常用的引脚。
GPIO可能是芯片自带的,也可能通过I2C、SPI接口扩展:
GPIO有一些通用功能、通用属性。
1.1 通用功能
- 可以设为输出:让它输出高低电平;
- 可以设为输入,读取引脚当前电平;
- 可以用来触发中断
对于芯片自带的GPIO,它的访问时很快的,可以在获得spinlocks的情况下操作它。
但是,对于通过I2C、SPI等接口扩展的GPIO,访问它们时可能导致休眠,所以这些"GPIO Expander"就不能在获得spinlocks的情况下使用。
1.2 通用属性
1.3 GPIO子系统的作用
管理GPIO,既能支持芯片本身的GPIO,也能支持扩展的GPIO。
提供统一的、简便的访问接口,实现:输入、输出、中断。
2. 预计录制的内容
- 使用GPIO子系统要掌握的重要概念
- 基于GPIO子系统的LED驱动程序
- LED驱动程序上机实验(分为多个单板)
- GPIO子系统层次与数据结构
- 具体单板上GPIO子系统源码分析(分为多个单板)
- 编写一个GPIO扩展芯片的驱动程序
- GPIO子系统与Pinctrl子系统的交互
- GPIO子系统的sysfs接口
结构
- 具体单板上GPIO子系统源码分析(分为多个单板)
- 编写一个GPIO扩展芯片的驱动程序
- GPIO子系统与Pinctrl子系统的交互
- GPIO子系统的sysfs接口