单词个数统计程序
——第六章读书笔记及心得
通过本章的学习,学会了使用多种平台测试linux驱动开发。学会了统计单词个数的程序,通过该程序知道了该算法的实现技术为linux驱动,因为该程序的单词是封装在linux驱动中的。在此之前还对linux有了深入的了解。知道了linux驱动程序编写的步骤。了解到了一些重要的函数。学会了注册和注销设备文件。学会了制定回调函数。知道了如何在eclipse中开发和测试linux驱动程序。
Linux系统将每一个驱动都映射为一个文件,称为设备文件或驱动文件,都保存在/dev中,使得交互变得十分容易。编写linux驱动最重要的一步就是编写回调函数,否则与是设备文件交互的数据无法得到处理。
Linux驱动程序的编写与大多数程序一样有着自己的规范。具体步骤如下:
1、建立linux驱动骨架
2、注册和注销设备文件
3、制定与驱动相关的信息
4、制定回调函数
5、编写业务逻辑
6、编写Makefile文件
7、编译linux驱动程序
8、安装和卸载linux驱动
统计单词个数的程序没有访问硬件而是利用设备文件作为介质与应用程序进行交互。编写该程序前需建立存放linux驱动程序的目录,然后建立驱动源代码文件,最后编写Makefile文件。
在编写驱动程序的骨架——初始化和退出驱动中用到了printk函数。该函数用于输出日志信息。运行在内核空间。
安装linux驱动:#insmod xxx.ko
查看xxx是否安装成功:#lsmod | grep xxx
卸载linux驱动:#rmmod xxx
可利用#modinfo xxx查看查看xxx.ko中的信息。
在编写注册和注销设备文件时需要注意的是,设备文件由主设备号和次设备号描述,misc_register函数只能设置次设备号。File_operation结构体重定义了回调函数指针变量。如果成功注册设备文件misc_register返回值为非0的整数,如果失败,为0。
在编写代码时需要注意的是由于内核空间的程序不能直接访问用户空间的数据,因此,需要在word_count_read和word_count_write函数中分别使用copy_to_user和copy_from_user函数将数据从内核空间复制到用户空间或从用户空间复制到内核空间。
测试linux驱动的平台有很多包括Ubuntu linux、android模拟器和S3C6410开发板。
在eclipse中开发驱动程序首先需要建立C工程、然后建立C源代码文件链接、接着设置include路径、编译linux驱动。在eclipse中测试linux驱动,首先需要导入.c文件、然后设置include路径、接着建立Target、然后Bulid工程、最后运行测试程序。