前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >05_GPIO子系统层次与数据结构

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

作者头像
韦东山
发布2021-12-08 10:07:42
8140
发布2021-12-08 10:07:42
举报
文章被收录于专栏:韦东山嵌入式

资料下载

coding无法使用浏览器打开,必须用git工具下载:

代码语言:javascript
复制
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-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

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

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 资料下载
  • 视频观看
  • GPIO子系统层次与数据结构
    • 1. GPIO子系统的层次
      • 1.1 层次
      • 1.2 GPIOLIB向上提供的接口
      • 1.3 GPIOLIB向下提供的接口
    • 2. 重要的3个核心数据结构
      • 2.1 gpio_device
      • 2.2 gpio_chip
      • 2.3 gpio_desc
    • 3. 怎么编写GPIO Controller驱动程序
      • 3. 怎么编写GPIO Controller驱动程序
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档