完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛
|
上一篇帖子已经把官方提供的历程解释了一遍,这一篇帖子我们直接调用公用的GPIO接口库gpiolib.c,实现我们的控制功能。米尔科技提供的内核已经吧RicoBoard的GPIO操作和gpiolib连接起来啦,具体怎么连接,在这篇帖子里小狂就不做详细的描述了,这是一个非常复杂的过程,看的我也是头晕脑胀各种赋值操作,各种跳转。有兴趣的童鞋可以参考一下这篇帖子, http://weimenlove.blog.163.com/blog/static/1777547320139251031924/ 讲的非常之详细,能让你更加清晰内核的调用过程。我们要做的就是在我们的驱动程序中,调用gpiolib.c库中的内容,然后实现IO的拉高和拉低操作。其实米尔提供的内核文件也是基于ti的,我们从TI的官网上,可以直接找到他们GPIO的调用过程。
上一篇帖子我们直接用到的就是User Layer层来控制我们的GPIO ,这一节小狂主要就是带大家在GPIO 的字符驱动层调用gpiolib.c中的函数来实现IO的控制。 先介绍几个相关的函数, static inline int gpio_request(unsignedgpio, const char *label); 其中gpio为请求的io号在内核中的表达形式,跟上一节的计算方式一致GPIO5_9=5*32+9=169,GPIO1_25=1*32+25=57。Lable是你为申请的GPIO起一个名字。 static inline void gpio_free(unsigned gpio); 有申请就要有释放,这个在驱动编程中应该要养成的一个好习惯,这个函数的作用就是释放你刚才申请的IO号。 int gpio_direction_input(unsigned gpio); int gpio_direction_output(unsigned gpio,int value); 这两个函数是设置GPIO为输入还是输出状态,当设置为输出的时候,可以指定初始时为高电平还是低电平。 static inline void gpio_set_value(unsignedint gpio, int value); 设置当前GPIO的输出状态,这次驱动中对GPIO的控制主要为输出控制,小狂在这里只介绍输出。如果还想了解更多的gpiolib中函数的使用方法,可以查看documentat文件夹里gpio.txt文档。 我们在注册模块的时候应该注册IO,看下图
然后在移除模块的时候应该释放IO
这里我们事先在控制台的输出控制,不需要ioctl,先不实现,当我们往设备节点中写字符1的时候,io设置为0,开灯,同时打印信息,写0的时候关灯,同时打印信息,只需要事先写函数就行。
驱动程序,实现后,我们应该在内核中编译,makefile文件如下图所示,这个make文件只适合一个.c文档的编译,不适合多个.c,下一篇帖子会说多个.c的makefile,其中KERNELDIR指定你的内核主Makefile所在的目录。
在虚拟机中进入到你的make所在目录,然后执行make,编译完成如下图所示
然后我们把程序下载到开发板中,导入模块
查看我们的驱动有没有导入到内核
可以看到我们的主设备号为233,然后在驱动文件中建立设备节点
查看一下设备节点有没有成功建立
然后我们点亮LED
在这里就不上实物图啦,结果跟上一篇帖子一样 然后,我们让灯关了
总结 到这里,我们在驱动层控制LED的想法已经实现,其实吧,这种控制方式,是我们自己调用内核中GPIO驱动,就是上边说的那些函数,上一节是在系统中往文件中写内容,其实也是调用的那些函数,什么export啊,direction啊,分别对应就行了。下一篇我们讲怎么在驱动中使用物理地址映射。
|
|
相关推荐
12 个讨论
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n5631228 发表于 2017-9-2 19:21 对,要指向你的内核的目录,另外,你的内核要编译一下 |
|
|
|
|
|
|
|
|
我的板子被收回了,嘿嘿,就没有玩,嘻嘻,应该只是支持的,insmod肯定可以的
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
【米尔RK3506国产开发板评测】3、实时补丁以及EtherCAT IGH移植
1149 浏览 0 评论
10250 浏览 0 评论
35750 浏览 0 评论
【米尔NXP i.MX 91开发板评测】基于RS485接口实现modbus从机
1689 浏览 0 评论
【米尔NXP i.MX 91开发板评测】移植运行IGH EtherCAT主站
1990 浏览 0 评论
【米尔-瑞米派兼容树莓派扩展模块-试用体验】基于ROS系统的三麦轮小车自主导航
4537浏览 2评论
【米尔NXP i.MX 93开发板试用评测】5、安装Debian和排除启动故障
1467浏览 2评论
【米尔NXP i.MX 93开发板试用评测】2、异构通信环境搭建和源码编译
1669浏览 2评论
【米尔-瑞米派兼容树莓派扩展模块-试用体验】Free RTOS应用开发环境部署
2110浏览 1评论
【米尔-Xilinx XC7A100T FPGA开发板试用】+03.SFP光口测试(zmj)
2190浏览 1评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 10:58 , Processed in 1.030684 second(s), Total 61, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
11425
