第十章 嵌入式Linux的调试技术

1、对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行调试,例如,设置断点、逐步跟踪代码、输出调试信息等。

2、Printk函数运行在内核空间,printf函数运行在用户空间。

3、初始化Linux驱动

Static int _init printk_demo_init(void)

4、卸载Linux驱动

Static void _exit printk_demo_exit(void)

5.使用printk函数可以很方便地将消息写入日志文件或控制台,但大量使用printk函数操作日志文件或控制台设备文件会严重影响Linux驱动的性能,因此,这就要求Linux驱动只在开发阶段使用printk函数输出消息。

6.Printk函数在控制台显示消息是通过/dev/console设备文件实现的,该设备文件只在字符界面的控制台下才起作用,所以printk函数只有用在字符界面的控制台上才能正常输出消息。

7.在Linux文件系统中,/proc经常被用来作为内核空间与用户空间进行数据交互的工具。

8./proc是虚拟文件系统,所以读写/proc文件系统的速度要远比读写/dev文件系统的速度快。因此,/proc文件系统也可作为Linux驱动与用户空间程序交互的工具。

9.在Linux驱动程序中可以使用内核函数在/proc目录中创建和删除虚拟文件,也可以建立和删除虚拟目录。

10./proc文件系统和/dev文件系统一样,也需要设置访问文件的动作处理函数,/dev文件系统通过file_operations.read和file_operations.write函数指针变量读写设备文件的读写动作处理函数。

11.Proc_dir_entry结构体代表一个虚拟目录或文件。

12.Mode:虚拟文件的访问权限

13.Name:虚拟文件的名称

14.Read_proc:处理读动作的函数指针

15.Linux文件的读写有属性决定。

16.删除目录之前,要先删除虚拟目录中的虚拟文件。

17.Gdb可以跟踪调试用户空间的程序。

18.Android模拟器只能通过端口映射方式使用gdbserver调试程序,但开发板除了可以通过IP连接到gdbserver外,还可以通过串口进行连接。

以上就是我在几章学到的知识点,通过总结学习,我体会到了这门课的深奥之处,是需要我认认真真去研究的,经过多看相关资料去拓展知识层面的。多多实践来熟练掌握这门课程的主导思想和核心知识。

原文地址:https://www.cnblogs.com/daiyan666/p/5638689.html