HDF驱动框架探路(五):对比linux原生驱动开发在imx6ull板子点灯 原创 精华
Mr_qzk
发布于 2021-12-13 15:18
9538浏览
7收藏
【本文正在参与优质创作者激励】
老规矩还是将最终希望跑出来的效果放出来。如下:
HDF驱动框架探路5:
前言
- 想要深入了解HDF框架的话,应该绕不开linux驱动程序的掌握。由于是在看了韦东山老师对openharmony做的移植后,觉得linux驱动的内功还是必须要有的,所以本文章对比linux应用在imx6ull中点亮LED灯。所以先修炼修炼内功。
本文框架图
- 本文的框架图是最近这段时间结合了对3516测试HDF框架,以及imx6ull上linux驱动程序的学习,所得出的,是基于目前社区中所用的比较多的几款板子和openharmony、linux对比所做的图,大佬们觉得这个图有任何问题,欢迎批评指出。
1.驱动程序
1.1 最简单的驱动程序逻辑
- 1.1 如上图所示,首先有个驱动程序入口函数和出口函数分别是module_init(led_init),module_exit(led_exit);
- 1.2 然后分别实现led_open和led_write这两个业务函数去填充file_operations结构体。
- 1.3 最后把file_operations结构体放入register_chrdev函数进行注册,然后放入入口函数中。
- 1.4 因为驱动程序的字符设备需要绑定IO设备去使用,所以在入口函数中调用class_create和device_create。
1.2 完成的实现代码如下:
2.驱动程序测试部分
2.1 测试模块实现思路
在linux内核中注册相应的驱动模块后,通过glibc库函数提供的open,read,write接口访问驱动程序绑定驱动字符设备的IO文件就可以直接调用到对应的驱动程序了。
2.2 测试部分完成实现代码
3.编译
3.1 编译思路:
- 1.首先需要将驱动程序编译成ko文件。
- 2.将测试程序编译成可执行文件。
3.2 完成实现代码如下:
- 上述代码需要的注意的,大家在使用时候需要换掉KERN_DIR中的值,换成大家自己的内核目录,因为编译时候会去这个目录下找头文件。
4.安装驱动进行测试
4.1 安装驱动思路
通过上述的步骤,大家会发现驱动程序编译好了放在了ubuntu系统中,我们的目标是需要将驱动程序安装进入imx6ull中,所以我们的目标是将驱动程序放入imx6ull中。这里的方案是:将网线插入电脑,然后串口连接imx6ull,先各自写死ip地址,目标是二者能够ping通,然后搭建nfs,这样就达到了imx6ull访问ubuntu下的驱动程序的目的
4.2 搭建好环境后进行安装驱动
通过insmod命令进行安装。
4.3 执行测试文件去点亮,熄灭灯
如下图:执行命令
没什么意外的话,这盏灯就在你的掌控之中了
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
imx6ull_led.zip 4.02K 20次下载
已于2021-12-13 15:18:05修改
赞
7
收藏 7
回复
7
1
7
相关推荐
3516的资料和文章还是太少了,感谢老师开路