码迷,mamicode.com
首页 > 系统相关 > 详细

第六章第一个Linux驱动程序:统计单词个数

时间:2016-06-04 19:37:15      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

1.Linux驱动到底是个什么东西:

     Linux系统将每一个驱动都映射成一个文件,称之为设备文件或驱动文件。与Linux驱动交换数据相当于与设备文件交换数据。编写Linux驱动最重要的一步就是编写回调函数,否则与设备文件交互的数据将无法得到处理。

2.编写Linux驱动程序的步骤:

     建立Linux驱动骨架(装载和下载Linux驱动),注册和注销设备文件,指定与驱动相关的信息,指定回调函数,编写业务逻辑,编写makefile文件,编译Linux驱动程序,安装和卸载Linux驱动。

3.第一个Linux驱动(统计单词个数):

     利用设备文件作为介质与应用程序交互,应用程序通过向设备文件传递一个由空格分隔的字符串,然后从设备文件读出来的是字符串的单词数。       

编写Linux驱动程序前的准备工作(建立存放Linux驱动程序的目录,建立驱动源代码文件,最后编写一个Makefile文件)。

编写Linux驱动程序的骨架即初始化和退出驱动(printk函数用于输出日志信息,printf函数运行在用户空间,Linux驱动程序无法直接访问运行在用户空间的程序,malloc函数动态分配内存空间;安装Linux驱动:#insmod word_count.ko,查看word_count是否安装成功:# lsmod |grep word_count;卸载Linux驱动: # rmmod word_count;查看有Linux驱动输出的日志信息:#dmesg|grep word_count |tail -n 2)。

指定与驱动相关的信息(一般需要为Linux驱动程序制定如下信息:模块作者,模块描述,模块别名,开源协议)。

注册和注销设备文件(设备文件和普通文件不同,不能使用IO函数建立,需要使用misc_register函数建立设备文件,使用misc_deregister函数注销设备文件)。

指定回调函数(通过file_oerations.readfile_operations.write成员变量可以分别指定读写设备文件要调用的回调函数指针)。

实现统计单词数的算法(单词数使用int类型的变量存储)。

编译、安装、卸载Linux驱动程序(insmod命令和modprobe命令都可以安装Linux驱动,区别是modprobe命令可以检查驱动模块的依赖性,在使用modprobe命令装载驱动模块之前,需要先使用depmod命令检测Linux驱动模块的依赖关系)。

4.使用多种方式测试Linux驱动:

>>使用Ubuntu Linux测试Linux驱动(#sh build.sh,#echo ‘I love you. > /dev/wordcount’,#dmesg)。

Android模拟器上通过原生(Native)C程序测试Linux驱动(编译可在Android模拟器上运行的Linux驱动模块要使用goldfish内核)。

>>使用Android NDK测试Linux驱动(在Android系统中Linux驱动主要的使用者是APK程序,所以Linux驱动做完后必须要用APK程序进行测试才能说明Linux驱动可以正常使用)。

>>使用Java代码直接操作设备文件来测试Linux驱动(如果Android拥有root权限,完全可以直接使用Java代码操作设备文件,没有root权限,Linux驱动模块是无法安装的)。

>>使用S3C6410开发板测试Linux驱动(在S3C6410开发板上使用可执行程序测试Linux驱动,在S3C6410开发板上使用Android NDK测试Linux驱动,在S3C6410开发板上使用Java代码测试Linux驱动)。

>>将驱动编译进Linux内核进行测试(对于嵌入式系统一般都采用将Linux驱动编译进内核的方式,这样做虽然没有动态装载灵活,但Linux驱动会随着Android的启动而自动装载)。

5.使用Eclipse开发和测试Linux驱动程序:

>>在Eclipse中开发Linux驱动程序(建立C工程,建立C 源代码文件链接,设置include路径,编译Linux驱动)。

>>在Eclipse中测试Linux驱动(导入test_word_count.c文件,设置include路径,建立TargetBuild工程,运行测试程序)。

 

地址:http://www.cnblogs.com/zpm123123

 

第六章第一个Linux驱动程序:统计单词个数

标签:

原文地址:http://www.cnblogs.com/zpm123123/p/5559262.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!