五到八章心得

第五章

本章主要学习关于开发板的测试环境,由于我们所开发的Linux驱动,不管使用何种方法编译后,都需要在开发板上进行测试,这是因为在ARM架构的开发板可以在X86架构的PC在CPU指令及二进制格式上有所不同 ,而且在Linux所需要的硬件在PC上很难进行模拟,因此要在开发板上进行调试和测试。

本章主要介绍了S3C6410开发板,这是一款低功耗、高性价比的RISC,可广泛应用于移动电话和通用处理等领域。

安装串口调试工具minicom的步骤:1、检测当前系统是否支持usb转串口;2、安装minicom;3、配置minicom;4、测试minicom。

烧写Android系统的步骤:1、插入读卡器并连接PC;2、向SD卡中写入mmc.bin和zImage-sd.bin;3、将相关文件复制到SD卡上,然后按照规则设置开发板上的启动开关;4、开始从SD卡烧写Android;5、校准屏幕。

第六章

本章刚开始对Linux驱动进行了详细说明并简单介绍了编写Linux驱动程序的步骤,然后通过一个“统计单词个数”的例子对驱动程序开发的相关操作进行了详细地说明,最后又介绍了测试开发出来的驱动程序的各种方法。

编写驱动程序的步骤:1、建立Linux驱动骨架;2、注册和注销设备文件;3、指定与驱动相关的信息;4、指定回调函数;5、编写业务逻辑;6、编写Makefile文件;7、编译Linux驱动程序;8、安装和卸载Linux驱动。

测试Linux驱动的方法有:1、使用Ubuntu Linux测试Linux驱动;2、在安卓模拟器上通过原生C程序测试Linux驱动;3、使用Android NDK测试Linux驱动;4、使用Java代码直接操作设备文件来测试Linux驱动;5、使用S3C6410开发板测试Linux驱动;6、将驱动编译进Linux内核进行测试;

第七章

本章主要学习了LED驱动,LED驱动是本书第一个真正和硬件打交道的的Linux驱动。虽然LED驱动并不复杂,只是控制了4个LED,但LED驱动已经包括了Linux驱动所有必要的成分。一个完整的Linux驱动主要由内部处理和与硬件交互两部分组成。其中内部处理主要是指Linux驱动的装载、卸载、与设备文件相关的动作处理,以及业务逻辑等。与硬件交互主要是指通过IOWRITE32、ioread32等函数与硬件中的寄存器进行数据交互。Linux驱动在不同平台的移植也是处理这两部分。如果在不同Linux内核版本之间的移植,主要是移植第一部分,如果在不同硬件平台的移植,主要是移植第二部分。

尽管linux驱动直接与硬件打交道,但并不是linux驱动直接向硬件中的内存写数据,而是与本机的I/O内存进行交互。由于misc_register函数只能建立主设备号为10的设备文件,如果想建立其他主设备号的设备文件,就需要使用cdev_init、register_chrdev_region、cdev_add等函数:初始化cdev。cdev的大多数成员变量并不需我们自己去初始化,只要调用cdev_init函数即可;指定设备号;使用cdev_add函数将字符设备添加到内核中的字符设备数组中;使用class_create宏创建struct class;使用device_create函数创建设备文件。

第八章

本章主要讲的实例是蜂鸣器驱动程序,蜂鸣器是S3C6410开发板上自带的一个硬件设备。可以通过向寄存器写入特定的值来控制蜂鸣器发出的尖叫声。介绍了蜂鸣器的实现原理,并实现了一个完整的蜂鸣器驱动。

在某些情况下,linux驱动无法正常卸载,需要强行卸载,但是本章的方法不能强行卸载所有的linux驱动模块,只能卸载由于异常情况而导致的linux驱动模块无法卸载情况。比如:

初始化函数崩溃,这种情况的表现是当前linux驱动模块没有被任何其他的linux驱动模块使用,但却显示已经被引用了一次。解决方法把是当前的linux驱动模块的引用计数器清零即可。上次在荆老师的实验课上做这个实验的时候就遇到过这个问题,开发板一直发出响声无法关闭,只能通过重启开发板来避免,但一直重启开发板很是麻烦,试验一次就要重启一次,通过本章的学习就能很好地解决这个令人困扰的问题了。

时间: 2024-10-27 13:41:56

五到八章心得的相关文章

201671010117 2016-2017-2 《Java程序设计》Java第五周学习心得

Java第五周学习心得       通过这一周的学习,对继承有了一定的了解,但是不是很熟悉,老师上课按以前的方法讲解了第五节的懂得了更深入了一点,还需要多多敲代码来掌握的更深,因为方法突然的改变,还是有一点的不习惯,所以现在还在适应中,感觉部分知识掌握的不是很深入,还需要加强.

汇编语言第五到八章总结

第五章 [BX]和loop 1.内存单元间接表示: [bx] mov  dl, [0];  dl  ←  ((ds)×16 + 0) mov  bx, 0 mov  dl, [bx];  dl  ←  ((ds)×16 + (bx)) 可以使用bx间接访问内存单元.默认,段地址在ds. 2.loop指令 (1) 语法格式 loop  标号 (2) CPU执行指令过程 ① (cx) ← (cx) - 1 ② 判断cx的值是否为0. 如果(cx) ≠ 0,跳转到标号处执行: 如果(cx) = 0,

第五章读书心得

本章主要介绍了OK6410-A开发板安装Android,主要的知识点如下: 5.1s3c6410开发板简介 s3c6410是一种低功耗.高性价比的RISC处理器,它基于ARM11内核,可广泛应用于移动电话和 通用处理等领域. 5.2安装串口调试工具:minicom 安装.配置和测试minicom 第一步:检测当前系统是否支持USB转串口 第二步:安装minicom 第三步:配置minicom 第四步:测试minicom 5.3烧写Android系统 1.使用Eboot擦除NandFlash的方法

第八章心得体会

通过第八章的学习,我学到了如下知识点: 一.Linux驱动的代码重用 1.编译是由多个文件组成的Linux驱动 如果Linux驱动只有1个源代码文件,0bj-m变量可以和源代码文件同名.如果Linux驱动包含多个文件,就需要使用module-y来指定所以的目标文件. 2.Linux驱动模块的依赖 代码重用分为静态和动态两种. 二.强行卸载Linux驱动 情况1:初始化函数崩溃 情况2:卸载函数被阻塞 三.蜂鸣器(PWM)驱动 1.蜂鸣器驱动的原理 蜂鸣器也称PWM,基本原理是通过脉冲来控制蜂鸣器

201671010115 2016-2017-2《Java程序设计》第五周学习心得

一周又过去了,感觉这学期过得好快.觉得自己才从家里回来,可一学期的四分之一又没了.在这段时光里,我们花大量的时间和精力学习了Java,然而我感觉自己还是学不会Java,就拿Java上的继承来说吧,上周我们班的同学都给老师提了意见,让老师按传统教学上一节继承,老师确实也听了我们的意见并且也这样做了,可是,听懂的同学应该也不是很多.可能因为我们一直都没有课后多复习的习惯:也可能是我们只是看书,没有多实践,没有敲更多的代码:导致前面的基础知识有的还没有完全掌握,就对后面的学习有了很大影响.所以,这周最

201671010118 2016-2017-2《Java程序设计》 第五周学习心得

第五周的java课程已经结束,这周我们主要学习了继承,类.超类和子类.继承层次.多态等,老师讲这节课时用了课堂教学法,我觉得效果还不错,理解了它们的概念,以及之间的关系,掌握了超类的定义以及利用超类扩展子类,也知道了super的两种用法,super()表示调用超类的构造器,super.表示调用超类的方法.实验五中老师给了一个思考题"你觉得sumAllArea和sumAllPerimeter方法放在哪个类中更合适?"我没有真正了解,在这周学习中,基本概念理解了,但是编程还存在一定的问题,

201671010119 2016-2017-2《Java程序设计》第五周学习心得

本周老师按照传统的教学方法:课堂教学法  对第五章继承进行了重点讲解,通过老师的讲解,我学到了很多知识,尤其是一些细节,这是自己在自学过程中所没有注意到的.这周老师放慢了一下进度,我感觉学习的效果要比前几周好很多,可能也是很多年老师课堂教学法下来养成的习惯吧,还是较为习惯课堂教学法,对知识的掌握也好很多.希望老师在重点单元讲解中可以使用课堂教学法,这样我们可以更好的掌握知识. 通过老师对重点知识的讲解,我对课本程序有了更深的理解,能编写出一些代码,虽然不能写出完整程序,但比之前不知从何处下手好了

软件测试第五次作业——心得体会

构建之法——现代软件工程                                                    心得体会 对于学软件专业的学生,关于软件工程这门课应该是非常熟悉.我与它的渊源其实很久——我们学过了<软件工程服务外包>.<软件工程>,还有这学期的<软件测试>,而我对于这门课程仍然是笼统的.朦胧的.庆幸,老师给我们推荐了邹欣老师的<构建之法>这本书,让我对“软件工程”这个概念有了深刻的了解. 在以前的软件学习中,我理解的软件概念是

第八章 心得体会

通过第八章的学习,了解了蜂鸣器的工作原理以及利用PWM驱动使蜂鸣器发出声音.. 学到的知识: 一.Linux驱动的代码重用 1.编译是由多个文件组成的Linux驱动 如果Linux驱动只有1个源代码文件,0bj-m变量可以和源代码文件同名.如果Linux驱动包含多个文件,就需要使用module-y来指定所以的目标文件. 2.Linux驱动模块的依赖 代码重用分为静态和动态两种. 二.强行卸载Linux驱动 情况1:初始化函数崩溃 情况2:卸载函数被阻塞 三.蜂鸣器(PWM)驱动 1.蜂鸣器驱动的