coding无法使用浏览器打开,必须用git工具下载:
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git
参考资料:
descriptor-based | legacy | 说明 |
---|---|---|
获得GPIO | ||
gpiod_get | gpio_request | |
gpiod_get_index | ||
gpiod_get_array | gpio_request_array | |
devm_gpiod_get | ||
devm_gpiod_get_index | ||
devm_gpiod_get_array | ||
设置方向 | ||
gpiod_direction_input | gpio_direction_input | |
gpiod_direction_output | gpio_direction_output | |
读值、写值 | ||
gpiod_get_value | gpio_get_value | |
gpiod_set_value | gpio_set_value | |
释放GPIO | ||
gpio_free | gpio_free | |
gpiod_put | gpio_free_array | |
gpiod_put_array | ||
devm_gpiod_put | ||
devm_gpiod_put_array |
记住GPIO Controller的要素,这有助于理解它的驱动程序:
以Linux面向对象编程的思想,一个GPIO Controller必定会使用一个结构体来表示,这个结构体必定含有这些信息:
每个GPIO Controller用一个gpio_device来表示:
我们并不需要自己穿件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
)]
分配、设置、注册gpioc_chip结构体,示例:drivers\gpio\gpio-74x164.c