ARM新手的GPIO控制问题

[复制链接]
5998|8
 楼主| 秋八月 发表于 2007-8-18 11:06 | 显示全部楼层 |阅读模式
询问在linux用户态控制GPIO口的方法。GPIO驱动已经以模块的方式写在内核里了。我看了很多**都写了使用read,write,ioctrl来和用户态交互,但是都是讲控制单一的GPIO口的。请问我想在用户态给出任意GPIO口都能够进行控制,代码该怎么写啊?<br />比如说,我想在用户应用程序里给出GPIO&nbsp;port_id,和val(0或1),让内核驱动将相应的GPIO口置0或1,应用程序和内核GPIO模块分别应当怎么处理?请各位高手给出一个例子或方法,小弟在此谢谢了。
阿南 发表于 2007-8-20 19:11 | 显示全部楼层

re:

通常情况,应用程序工程师(在用户态写程序的那位)是不管硬件方面的,他不关心哪个(或什么)IO口,他只知道板子上哪个LED,只想控制让哪个LED亮或者灭,所以他要把这些代表哪个LED亮或灭的信息告诉驱动开发工程师(在内核态写程序的那位)。驱动开发工程师根据这些信息来理解应用程序工程师到底想让哪个亮或者灭后,根据板子硬件的原理图,再控制具体的GPIO口去使对应的亮或者灭。另外read,write,ioctrl等函数就是他们交流的工具。<br />
阿南 发表于 2007-8-18 11:51 | 显示全部楼层

可以下载《ARM Linux入门笔记》,里面有讲

  
 楼主| 秋八月 发表于 2007-8-18 13:28 | 显示全部楼层

谢谢阿南老大

我看了下,您写的笔记中的点亮目标板的led部分,您在下面的驱动部分已经将控制led灯的IO口定好了,为GPIO_B8,GPIO_B7,GPIO_B9,GPIO_B10,所以只要上面的应用程序发一个幻数命令开或关就可以点亮。但是如果情况是这样:我们的板子还没有出来,具体哪个LED灯是那个IO口还不知道。所以最好能直接由上面应用程序定是具体哪个IO口,置高还是置低。不然如果硬件一修改不是就要修改内核部分了吗?再次谢谢阿南老大。
 楼主| 秋八月 发表于 2007-8-18 16:58 | 显示全部楼层

自己顶个

是不是可以传入一个结构体那?向各位尝试过的老大求教<br />
阿南 发表于 2007-8-20 10:03 | 显示全部楼层

驱动可以是一个模块,修改后单独装载测试

  
 楼主| 秋八月 发表于 2007-8-20 10:49 | 显示全部楼层

再次谢谢阿南版主

版主能不能说的详细点呢,我的目的就是直接用用户态控制GPIO,包括指定那个GPIO端口和写高低位。
 楼主| 秋八月 发表于 2007-8-21 16:46 | 显示全部楼层

如斑竹所说的话太麻烦

如版主所说的这样操作太麻烦,如果硬件一做改动,就需要重新编译一遍内核,这样效率不是会低很多吗?
阿南 发表于 2007-8-21 19:00 | 显示全部楼层

如果编译内核麻烦,你就单独编译驱动

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部