您当前的位置: 首页 >  数据结构

韦东山

暂无认证

  • 0浏览

    0关注

    506博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

05_GPIO子系统层次与数据结构

韦东山 发布时间:2021-08-26 10:15:32 ,浏览量:0

资料下载

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
1. GPIO子系统的层次 1.1 层次

在这里插入图片描述

1.2 GPIOLIB向上提供的接口 descriptor-basedlegacy说明获得GPIOgpiod_getgpio_requestgpiod_get_indexgpiod_get_arraygpio_request_arraydevm_gpiod_getdevm_gpiod_get_indexdevm_gpiod_get_array设置方向gpiod_direction_inputgpio_direction_inputgpiod_direction_outputgpio_direction_output读值、写值gpiod_get_valuegpio_get_valuegpiod_set_valuegpio_set_value释放GPIOgpio_freegpio_freegpiod_putgpio_free_arraygpiod_put_arraydevm_gpiod_putdevm_gpiod_put_array 1.3 GPIOLIB向下提供的接口

在这里插入图片描述

2. 重要的3个核心数据结构

记住GPIO Controller的要素,这有助于理解它的驱动程序:

  • 一个GPIO Controller里有多少个引脚?有哪些引脚?
  • 需要提供函数,设置引脚方向、读取/设置数值
  • 需要提供函数,把引脚转换为中断

以Linux面向对象编程的思想,一个GPIO Controller必定会使用一个结构体来表示,这个结构体必定含有这些信息:

  • GPIO引脚信息
  • 控制引脚的函数
  • 中断相关的函数
2.1 gpio_device

每个GPIO Controller用一个gpio_device来表示:

  • 里面每一个gpio引脚用一个gpio_desc来表示
  • gpio引脚的函数(引脚控制、中断相关),都放在gpio_chip里

在这里插入图片描述

2.2 gpio_chip

我们并不需要自己穿件gpio_device,编写驱动时要创建的是gpio_chip,里面提供了:

  • 控制引脚的函数
  • 中断相关的函数
  • 引脚信息:支持多少个引脚?各个引脚的名字?

在这里插入图片描述

2.3 gpio_desc

我们去使用GPIO子系统时,首先是获得某个引脚对应的gpio_desc。

gpio_device表示一个GPIO Controller,里面支持多个GPIO。

在gpio_device中有一个gpio_desc数组,每一引脚有一项gpio_desc。

在这里插入图片描述

3. 怎么编写GPIO Controller驱动程序

分配、设置、注册gpioc_chip结构体,示例:drivers\gpio\gpio-74x164.c

)]

3. 怎么编写GPIO Controller驱动程序

分配、设置、注册gpioc_chip结构体,示例:drivers\gpio\gpio-74x164.c

在这里插入图片描述

关注
打赏
1658827356
查看更多评论
立即登录/注册

微信扫码登录

0.0457s