Linux内核:debugfs文件系统
嵌入式Linux内核驱动的常规开发步骤,一般是这样的:
- 看芯片手册,修改寄存器或驱动源码
- 重新编译内核镜像,或驱动模块
- 将编译好的镜像拷贝到SD卡
- 将SD卡镜像插到开发板
- 重启内核,或者重新加载驱动
- 测试驱动是否正常工作
- 如果驱动无法工作,返回第一步循环
从编译、运行到调试,一圈走下来,通常需要10~15分钟,也就是说,哪怕你只修改了一行代码,也要把这个流程再走一遍,在宿主机的交叉开发效率,相比PC开发,效率会低很多。
如果公司配套的有高端的调试器,比如TRACE32,可以通过仿真、单步、直接修改寄存器来调试驱动,效率会提升很多,但是调试器一般很贵,一套下来一万起步。
今天给大家分享一个免费的驱动调试方法:通过debugfs接口来调试内核驱动。将内核中的调试变量,或者驱动的寄存器通过debugfs导出到用户空间,驱动加载后,我们不需要多次编译,通过简单的cat/echo命令,就可以直接对导出的寄存器接口查看修改,从而大大提升内核驱动开发的工作效率。
本期课程主要跟大家分享,如何通过debugfs将内核驱动中的不同格式的数据导出到用户空间,在用户空间进行查看和修改。这些数据包括:整型、布尔型、数组、结构体、链表、自定义数据、内存数据块、寄存器、寄存器组等。本期课程目录如下:
- 什么是debugfs?
- debugfs的配置编译和运行
- 第一个debugfs编程示例
- 通过debugfs导出整型数据
- 通过debugfs导出16进制数据
- 通过debugfs导出数组
- 通过debugfs导出内存数据块
- 通过debugfs导出自定义格式数据
- 在debugfs下使用seq_file接口
- 使用seq_file接口访问数组
- 使用seq_file接口访问链表
- 通过debugfs导出寄存器组
- 通过debugfs修改驱动寄存器
- 通过debugfs导出驱动调试接口
课程和配套代码已打包上传网盘,已购课学员可以直接下载观看了。《Linux内核编程》整套课程预售仍在进行中,淘宝店:Linux内核编程
或者加QQ群咨询:398294860
一线原厂驱动开发经验,专门为嵌入式精心打造的嵌入式进阶视频教程,详情请点击:王利涛老师个人店