第三次月考

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三次月考相关的知识,希望对你有一定的参考价值。

第八章 让开发板发出声音:蜂鸣器驱动

一、linux代码驱动的代码重用:linux驱动的代码重用有很多的方法,比如说用c程序的方式,将要重用的代码放到其他文件中但是要在头文件中声明。还可以采用另外一种动态重用的方式就是一个linux驱动可以使用另一个驱动的内容,如函数等。编译是由多个文件组成的linux驱动,如果linux驱动复杂,就需要多个linux文件来存放不同的功能,这样有利于分类和管理。

二、强行卸载linux驱动:如果编写的linux驱动程序在逻辑上是正确的,那么是可以正常装载和卸载的,在有些情况下就不能正常装载和卸载,Linux驱动无法卸载的情况:

情况一:初始化函数崩溃p

情况二:卸载函数被阻塞

三、蜂鸣器(pwm)驱动:蜂鸣器与LED一样也是开发板自带的简单的硬件,若打开蜂鸣器开发板会发出想蜂鸣一样的叫声,关闭就会停止尖叫。蜂鸣器驱动的原理:pwm基本原理通过脉冲来控制蜂鸣器的打开和关闭。

测试蜂鸣器驱动:pwm_fun.c则包含了打开和停止pwm的两个函数,从Makefile中可以看出,编译器首先将pwm.c和pwm_fun.c文件编译成pwm.o和pwm_fun.o,然后再将两个.o文件连接成pwm_driver.o,最后生成pwm_driver.ko,然后执行build.sh脚本文件,然后就编译成功了。

输入如下命令:

./ioctl /dev/pwm_dev 1 0

./ioctl /dev/pwm_dev 0 0

由于命令必须要求输入I/O命令的参数,而PWM驱动未使用I/O命令参数,所以ioctl最后一个命令行可以任意输入参数。如果最后显示如下信息并且蜂鸣器发出尖叫则说明测试成功!

第九章 硬件抽象层:HAL

HAL(Handerware Abstraction Layer,硬件抽象层)是建立在linux程序上的一套程序库,这套程序库并不属于内核,而是属于内核之上的应用层。

一、为什么要在android中加入HAL:在linux驱动中一般有两种类型的代码:访问硬件寄存器的代码和业务逻辑代码。对于访问硬件寄存器的代码而言,并没有秘密,这都是调用linux内核的标准函数进行的标准操作。Google为android加入HAL其主要目的在于:

统一硬件的调用接口;

解决了GPL版权问题;‘

针对一些特殊要求;

二、andriod HAL架构

在Andriod系统中使用程序库,条用位于内核空间的Linux驱动,然后Andriod应用程序。

HAL的基本原理是在android系统中使用程序库调用内核空间的linux驱动。

三、 为LED增加HAL:将所有业务逻辑从LED驱动移植到HAL模块,而LED驱动模块只保留读写寄存器的工程能。加入HAL会使组成linux驱动的一整套library更加独立,更加容易维护。编写一款支持HAL的LINUX程序驱动程序的步骤:1.Linux驱动程序;2.编写HAL Library;3.编写Service Library。编写HAL模块的步骤:1.定义结构体和宏;2.编写HAL模块的open函数;3.定义hw_module_methods_t结构体变量;4.定义HAL_MODULE_INFO_SYM变量;5.编写HAL模块的close函数;6.编写控制LED的函数。

第十章 嵌入式linux的调试技术

对于复杂的linux驱动及HAL等程序库,需要使用各种方法对其进行调试

一、打印内核调试信息:printK:printK函数与printf函数类似,只不过printK函数运行在内核空间,printf函数运行在用户空间。也就是说像linux驱动这样的linux内核程序只能使用printK函数输出调试信息。

二、防止printK函数降低linux驱动性能:虽然printK函数可以很方便的将消息写入日志文件或控制台,大那是大量使用printK函数操控日志文件或控制台设备文件会严重影响linux的驱动性能。只要只在开发阶段使用printK函数,在正式发布linux驱动时把有可能影响性能的printK函数去掉。

三、通过虚拟文件系统(/proc)进行数据交互:在linux文件系统中,/proc经常用来被作为用户空间和内核空间进行数据交互的工具。/proc文件系统的行为方式和设备系统(/dev)的类似。

四、调试工具:gdb,gdbservice,和kgdb。

以上是关于第三次月考的主要内容,如果未能解决你的问题,请参考以下文章

第三次月考

第三次月考

第二次月考

复合函数

20全栈+Python移动Web项目答辩暨月考颁奖典礼

java ITSA第58次月赛问题2.道路修补