本章主要讲了两个重要的部分一是统计单词个数,二是使用eclipse开发和测试linux驱动程序。
统计单词个数:(1)编写linux驱动程序前的准备工作:建立并进入存放linux驱动程序的目录,编写Makefile文件。
(2)编写linux驱动程序的骨架:printf函数运行在用户空间,printk函数运行在内核空间。安装linux驱动、查看word_count是否成功安装、卸载linux驱动、查看日志信息。
(3)指定与驱动相关的信息:modinfo word_count.ko查看word_count.ko的信息。
(4)注册和注销设备文件:
# define DEVICE_NAME “wordcount” 定义设备文件
Static struct miscdevice misc = {}; 描述设备文件的信息
ret = misc_register(&misc); 建立设备文件
misc_deregister(&misc); 移除设备文件
(5)指定回调函数:word_count_read和word_count_write函数分别处理从设备文件读数据和向设备文件写数据的操作。两函数中的copy_to_user和copy_from_user函数是将数据从内核空间复制到用户空间或从用户空间复制到内核空间。
(6)实现统计单词数的算法。
(7)编译、安装、卸载linux驱动程序。
用eclipse开发和测试linux驱动程序:(1)前提是eclipse中安装了CDT插件。
(2)在eclipse中单击File-New-Other,选择C Project项,单击next进行相应的设置,例如工程名为word_count,然后Finish建立一个空的C工程。
(3)单击word_count工程右击菜单中的New-Soruce Folder,打开New Soruce Folder对话框,在Folder name文本框中输入src,然后Finish建立保存linux驱动源代码文件的目录。
(4)单击src目录,右键单击Import打开对话框,选择File System后next,选择word_count.c文件,然后单击Advanced,选择Create links in workspace复选框,单击Finish建立word_count.c文件中的src目录中的连接。
(5)设置include路径:右键word_count工程下的Properties,选中C/C++ General-Paths and Symbols,选中右侧Includes页的GNU C项,单击Add添加路径后OK关闭对话框。打开word_count.c,按住Ctrl,鼠标左键单击某个linux内核函数,就会直接跟踪到linux内核函数的定义部分。
(6)编译linux驱动:利用build.sh脚本编译、安装linux驱动。
(7)测试linux驱动:导入.c文件;设置include路径;建立Target,工程右键Make Target-Create,打开Create Make Target,在Target name中输入工程名后OK;Build工程:Make Targets-Build;运行测试程序,Run As-Local C/C++ Application,运行结果会输出到Console视图中。