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外,还可以通过串口进行连接。
以上就是我在几章学到的知识点,通过总结学习,我体会到了这门课的深奥之处,是需要我认认真真去研究的,经过多看相关资料去拓展知识层面的。多多实践来熟练掌握这门课程的主导思想和核心知识。