第六章 心得体会

通过第六章的学习,使自己对Linux驱动程序的理解更加深刻,通过一个简单的单词统计驱动程序,使自己学到了很多。

学到的知识:

一、编写Linux驱动程序的步骤

第1步:建立Linux驱动骨架

第2步:注册和注销设备文件

misc_register 创建设备文件

misc_deregister 移除设备文件

第3步:指定与驱动相关的信息

通过MODULE_AUTHOP、MODULE_LICENSE、MODULE_ALIAS、MODULE_DESCRIPTION等宏指定与驱动相关的信息。

第4步:指定回调函数

Linux系统调用相应驱动程序的回调函数。

第5步:编写业务逻辑

第6步:编写Makefile文件

Linux内核源代码的编译规则是通过Makefile文件定义的。

第7步:编译Linux驱动程序

第8步:安装和卸载Linux驱动

二、统计单词个数

第一步:编写Linux驱动程序前的准备工作

# mkdir -p /root/drivers/ch06/word_count

# cd /root/drovers/ch06/word_count

# echo ‘‘ >word_count.c

# echo ‘obj-m := word_count.o‘ > Makefile

第二步:编写Linux驱动程序的骨架

骨架部分主要是Linux驱动的初始化和退出函数。

第三步:指定与驱动相关的信息

模块作者:使用MODULE_AUTHOR宏指定。

模块描述:使用MODULE_DESCRIPTION宏指定。

模块别名:使用MODULE_ALIAS宏指定。

模块协议:使用MODULE_LICENSE宏指定。

协议包括:开源协议、GPL协议、LGPL协议、BSD协议、Apache Licence 2.0协议、MIT协议。

第四步:注册和注销设备文件

extern int misc_register(struct miscdevice *misc);

extern int misc_dergister(struct miscdevice *misc);

第五步:指定回调函数

添加word_count_read和word_count_write

第六步:实现统计单词数的算法

第七步:编译、安装、卸载Linux驱动程序

查看日志输出信息和驱动模块信息

# dmesg |tail -n 1

#modinfo word_count.ko

检测驱动模块的依赖关系

# dempod  /root/drivers/ch06/word_count/word_count.ko

装载Linux驱动

# modprobe word_count

三、使用多种方法测试Linux驱动

1、使用Ubuntu Linux测试Linux驱动

2、在Android模拟器上通过原生C程序测试Linux驱动

3、使用Android NDK测试Linux驱动

4、使用Java代码直接操作设备文件来测试Linux驱动

5、使用S3C6410开发板测试Linux驱动

6、将驱动编译进Linux内核进行驱动

四、使用Eclipse开发和测试Linux驱动程序

1、在Eclipse中开发Linux驱动程序

第一步:建立C工程

第二步:建立C源代码文件链接

第三步:设置include路径

第四步:编译Linux驱动

2、在Eclipse中测试Linux驱动

第一步:导入test_word_count.c文件

第二步:设置include路径

第三步:建立Target

第四步:Build工程

第五步:运行测试程序

时间: 2024-11-07 22:47:56

第六章 心得体会的相关文章

《Android深度探索》第六章心得体会

第六章讲述了一个简单的驱动程序:统计单词个数 本章的重点在于了解到linux将每一个驱动都映射到一个文件当中,保存在/dev中.目的在与使与linux驱动的交互变得简单.另外很重要的一点就是需要指定回调函数,回调函数可以处理设备文件交换的数据. 第一步.建立linux驱动骨架 目的是给linux程序创建一个基本结构.Linux驱动中一般使用moudle_inie和moudle_exit来宏指定.因为这是linux驱动中比较重要的两个函数.所以包含这两个函数的文件也可以看作是linux驱动的骨架

安卓移植和驱动开发第六章心得体会

第六章 第一个LINUX驱动程序:统计单词个数 统计单词数的word_count 驱动是本书实现的第一个完整的Linux 驱动.虽然word_count 驱动的功能并不复杂,但足以让以前从来接触过Linux 驱动的开发人员了解Linux 驱动的完整开发过程.本章不仅仅是介绍一个示例,还介绍了如何使用不同的方法测试Linux 驱动.这些方法主要以平台来区分.当然,要编写 Linux 驱动程序还需要更高级的功能. 如向打印机驱动写入数据时, 对于打印机 驱动来说,需要接收这些被写入的数据,并将它们通

第六章心得体会

第六章主要学习到了安卓底层开发的相关知识,这章主要介绍了第一个linux驱动程序:统计单词个数.Linux驱动的工作和访问方式是Linux的亮点之一. Linux系统将每一个驱动都映射成一个文件,这些文件称为设备文件或驱动文件,都保存在/dev目录中.这种 设计理念使得与Linux驱动进行交互就像与普通文件进行交互一样容易.当然,也比访问LinuxAPI 更容易. 由于大多数Linux驱动都有与其对应的设备文件, 因此与Linux驱动交换数据就变成了与 设备文件交换数据.例如,向Linux打印机

Android深度探索-卷1第六章心得体会

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

阅读《软件工程—理论方法与实践》第六章心得体会

面向对象技术是软件工程领域中的重要技术,不仅仅是一种程序设计方法,更是一种对真实世界的抽思维方式.面向对象的软件工程方法涉及到从面向对象分析.面向对象设计.面向对象编程.面向对象测试到面向对象软件维护的全过程.面向对象的基本概念包括对象.类.封装.继承.消息.关联.聚合.多态性.属性和服务是构成对象的两个基本要素.使用共同的建模语言进行软件建模在软件开发过程中很必要(①以一种容易理解的形式为后期使用信息提供了便利的方法,②便于交流).UML富有表达力,描述开发所需要的各种视图,以此为基础组建系统

《Android深度探索》(卷1)HAL与驱动开发 第六章心得体会

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

阅读《软件工程—理论方法与实践》第四章心得体会

阅读第四章所得体会.软件需求是决定软件开发是否成功的一个关键因素.开发人员应当学会正确地理解软件需求,实行开非完善但是高质量的需求开发和管理,最大限度地降低软件需求风险.软件需求可以划分为业务需求(定义了项目的远景和范围).用户需求(使用该系统需要完成的任务).系统需求.功能需求(说明了需要开发实现的功能)和非功能需求(功能需求的补充)等型.需求工程是应用已证实有效的原理和方法,并通过合适的工具和符号,系统地描述出待开发系统及其行为特征和相关约束,其过程包括需求获取.需求分析.需求规格说明.需求

《android深入探索》第六章心得

看了本书第六章,我学到了: linux系统下每个驱动都映射成一个文件(设备文件/驱动文件),都保存在/dev目录下.回掉函数的功能是使linux驱动能响应应用程序,使设备文件和应用程序交互的接口. 编写linux驱动程序(大体框架): ①   装载驱动:module_init()   卸载驱动:module_exit() ②   注册设备文件:misc_register()  注销设备文件:misc_deregister() ③   指定与驱动相关信息:MODULE_AUTHOR.MODULE_

大道至简第一章心得体会

大道至简——编程的精义  心得体会      谨以此用于苦恼编程序不得入门的人,不对之处敬请指出 “虽我之死,有子存焉:子又生孙,孙又生子:子又有子,子又有孙.子子孙孙,无穷匮也.而山不加增,何苦而不平?” ——<愚公移山>,<列子-汤问篇> 编程究其本身对大数人而言是一件很苦恼而又无法避免的事情,但是有点可笑的是编程本身实在是一件简单的事,因为“程序=算法+结构”,所谓的编程就是把一件事情交给计算机去做,然后把你的想法“告诉”计算机就行了.但是编程又是一件很“无语”的事情——因为