Android深度探索——第六章读书笔记及心得

单词个数统计程序

——第六章读书笔记及心得

通过本章的学习,学会了使用多种平台测试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工程、最后运行测试程序。

时间: 2024-10-22 03:32:50

Android深度探索——第六章读书笔记及心得的相关文章

Android深度探索——第四章读书笔记及心得

源代码的下载及编译 ——第四章读书笔记及心得 通过阅读书籍知道了Android源代码和Linux源代码的区别,了解了什么是Android移植.知道了Android移植就是Linux内核移植,而Linux内核移植主要就是Linux的驱动移植.为了开发和测试内核环境需要对环境进行搭建,进而知道了如何搭建环境.知道了如何下载Android/Linux源代码及配置Android源代码下载环境(并且知道Android源代码的下载并非一定要将4MB多的东西全部下载,也可以挑选着自己需要的东西下载,,可以利用

Android深度探索——第三章读书笔记及心得

了解Git ——第三章读书笔记及心得 对于Android的理解是从这学期才开始,所以不可谓说是了解的太少太少.对于Linux虽然经过了一学期的学习.经过一次紧张的实训,但是了解的也不是很多.不过我终究是知道Android和Linux是开源的,这是很多老师都曾经告诉我们的.虽然Git并不是学习Android和Linux开发必须掌握的技术,但是对于想要认真学习好这门技术的我们来说应该要努力掌握好这门技术.就像书上说的学习新技术的方式不是一味的读书,只会纸上谈兵.更应该深入的理解自己感兴趣的源代码,通

Android深度探索——第五章读书笔记及心得

搭建S3C6410开发板的测试环境 ——第五章读书笔记及心得 通过本章的学习学会了如何在开发板上安装Android.开发板是学习和开发嵌入式技术的主要硬件设备,想要顺利的通过linux驱动访问硬件,是不能在PC板上模拟的,需要在卡发板上进行调试和测试.其相对于手机更适合与对程序进行测试,尤其是对底层linux程序进行测试.还了解了S3C6410开发板的基本信息.知道了如何安装串口调试工具以及烧写Android系统.知道了如何配置有线网络. S3C6410是一款低功耗.高性价比的精简指令集计算机处

Android深度探索——第七章读书笔记及心得

控制发光二极管 ——第七章读书笔记及心得 通过本章的学习掌握了一个真正和硬件打交道的linux驱动程序.知道了一个完整的linux驱动只要由内部处理与硬件交互两部分组成.其中的内部处理指linux驱动的装载.卸载.与设备文件相关的动作处理以及业务逻辑.与硬件交互主要是指通过部分函数与硬件中的寄存函数进行数据交互. Linux驱动直接与硬件打交道,但是并不是linux启动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互.每一个连接linux的硬件在I/O内存中都会有映射首地址. 创建LED

Android深度探索第六章总结

Linux系统将每一个驱动都映射成一个文件,这些文件被称为设备文件或驱动文件,都保存在/dev目录中.由于大多数Linux驱动都有与其对应的设备文件,因此与Linux驱动交换数据就变成了与设备文件交换数据.编写Linux驱动程序的步骤:第一步,建立Linux驱动骨架(装载和卸载Linux驱动):第二步,注册和注销设备文件:第三步,指定与驱动相关的信息:第四步,指定回调函数:第五步,编写业务逻辑:第六步,编写makefile文件:第七步,编译Linux驱动程序:第八步,安装和卸载Linux驱动..

Android深度探索--第六章读后感

建立Linux驱动骨架:Linux内核在使用驱动时需要装载与卸载驱动,装载驱动:建立设备文件.分配内存地址空间等:module_init 函数处理驱动初始化,卸载驱动:删除设备文件.释放内存地址空间等:module_exit函数处理退出,包含这两个函数的两个宏的C程序文件也可看做是Linux驱动的骨架,注册和注销设备文件:任何一个Linux驱动都需要有一个设备文件,否则应用程序将无法与驱动程序交互.建立设备文件:在第一步编写的处理Linux初始化工作的函数中完成.misc_register函数,

Android深度探索第六章心得

编写Linux驱动程序的步骤: 第1步:建立Linux驱动骨架(装载和卸载Linux驱动) 任何类型的程序都有一个基本的结构,例如,C语言需要有一个入口函数main.Linux驱动程序也不例外.Linux内核在使用驱动时首先需要装载驱 动. 在装载过程中需要进行一些初始化工作,例如,建立设备文件,分配内存地址空间等.当Linux系统退出时需要卸载Linux驱动,在卸载的过程中需要释放 由Linux驱动占用的资源,例如,删除设备文件.释放内存地址空间等.在Linux驱动程序中需要提供两个函数来分别

Android深度探索第六章

Linux驱动程序:统计单词个数 一.编写Linux驱动程序的步骤 1.建立Linux驱动骨架(装载和卸载Linux驱动) Linux驱动程序需要提供两个函数来分别处理驱动初始化和退出的工作,用module_init和module_exit宏指定. 驱动程序的头文件一般会包括 linux/module.h,linux/init.h,linux/kernel.h,linux/fs.h,linux/miscdevice.h和asm/uaccess.h. printf与printk的区别:printf

Android深度探索——第二章读书笔记及心得

Android开发环境搭建 ——第二章读书笔记及心得 通过本章的学习了解了如何对Ubuntu Linux下的Android进行搭建,包括搭建Android应用程序开发环境.Android NDK开发环境和交叉编译环境的搭建.了解了搭建Android环境所需要的各种东西,了解了配置ADT的必要性—以便ADT能够找到Android SDK.知道了底层开发所需要的各种工具.学会了如何在Ubuntu下安装JDK.以及编译交叉编译环境,当初在学习Linux交叉环境编译的时候就不是特别成功,中间出了很多的错