标签:
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.read和file_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路径,建立Target,Build工程,运行测试程序)。
地址:http://www.cnblogs.com/zpm123123
标签:
原文地址:http://www.cnblogs.com/zpm123123/p/5559262.html