日期:2014-05-16  浏览次数:20727 次

问:linux驱动中set_gpio_ctrl()和write_gpio_bit()的用法
小弟,最近刚开始学LINUX驱动,在S3C2410X的LED驱动中,遇到了set_gpio_ctrl()和write_gpio_bit()两个函数,还有GPIO_PULLUP_EN等参数,在S3C2410X手册中没发现相关资料,能找到的参考很少,也没能明白。望哪位前辈能指点下

------解决方案--------------------
从字面上看,set_gpio_ctrl()和write_gpio_bit()分别是设置gpio和向gpio写入位的函数。

所谓gpio就是general purpose input ouput,通用io口,说明你的LED底层是通过gpio引脚实现存储的,在代码中你应该关注gpio的引脚序号,然后去S3C2410X手册中找相应的引脚。
------解决方案--------------------
set_gpio_ctrl()和write_gpio_bit()的原型是在miz的内核中的,用source insight找他们的定义看看就可以了,实际上set_gpio_ctrl()就是设置各个控制寄存器的状态,这些状态是用宏来表示的,实际上宏的数值就是手册中的数值,只是用宏来表示比较直观罢了.write_gpio_bit()就是往gpio写入数据寄存器,还是宏的写入,没有什么特别的东西.

不过建议看看S3C2410的各个寄存器是如何通过宏来组织的,我看过,觉得很妙.

------解决方案--------------------
set_gpio_ctrl()和write_gpio_bit()和S3C2410X手册 没有任何关系,它们是 linux 内核的 函数

查查 set_gpio_ctrl()和write_gpio_bit() 函数定义的 地方

研究研究 它们内部 都执行了 什么动作,就明白了