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

一线原厂驱动开发经验,专门为嵌入式精心打造的嵌入式进阶视频教程,详情请点击:王利涛老师个人店