通过第十章的学习,了解了在嵌入式Linux驱动开发中的调试技术已经调试工具。
学到的知识:
一、打印内核调试信息:printk
printk函数的原型如下:
asmlinkage int printk(const char * fmt, ... )
printk文件是一个简单的有4个数字组成的文本文件,该文件的默认值如下:6 4 1 7
6:将消息输出到控制台的级别。
4:默认的消息日志级别。
1:控制台日志级别可被设置的最小值
7:控制台日志级别的默认值.
二、防止printk函数降低Linux驱动性能
1.可变参数的宏
2.do{...}while(O)
三、通过虚拟文件系统进行数据交互
proc_mkdir
name: 虚拟目录名称。
parent: 虚拟目录父目录的 proc_dir_entry结构体指针。
create_proc_enttry
name: 虚拟文件名称。
mode: 虚拟文件的访问权限
parent: 虚拟文件父目录的 proc_dir_entry 结构体指针。
create_proc_read_entty
name:虚拟文件名称。
mode:虚拟文件的访问权限
base:虚拟文件父目录的proc_dir_entry结构体指针。
read_proc:处理读动作的函数指针。
data:用于虚拟文件系统的数据。
remove_proc_entry
name:要删除的虚拟文件的名称。
parent:虚拟文件父目录的proc_dir_entry结构体指针。
四、调试工具
1.用gdb调试用户空间程序
2.用gdbserver远程调试用户空间程序
3.用kgdb远程调试内核程序
时间: 2024-09-28 17:28:48