第七章 LED将为我闪烁:控制发光二极管

LED驱动的移植:Android系统能否正常运行,很大程度上取决于Android能否识别当前设备的硬件,识别工作主要由Linux驱动完成。而Linux驱动必须要在当前使用的Linux内核编译才可安装在当前的Linux或Android系统中。LED驱动最简单的移植就是将其在不同的Linux内核版本下进行编译。若Linux驱动使用的API在移植目标Linux内核未发生改变,只需重新编译Linux驱动的源代码就可轻松地将Linux驱动从一个Linux内核移植到另一个Linux内核,但大多数情况并非如此。由于LED驱动未调用太多的Linux内核API,这些API在更新的Linux内核被去掉或修改的可能性不大,因此,将LED驱动移植到更新的Linux内核是一般只需在新内核下重新编译即可。LED驱动是通过设置GPMDAT寄存器来控制LED的亮灭。若要将LED驱动移植到另外基于S3C6410的开发板上,而目标开发板上与原开发板的GPMDAT寄存器的低4位含义相反,则LED驱动的代码要做相应的改变。首先要改变leds_init(),在LED驱动装载后,会用0xE设置4个LED的默认状态,新的开发板上就变成0x1。然后需要修改控制LED的代码,用于发送控制字符串,需将生成开关LED的代码互换位置,LED驱动中其他的类似的代码也可采用同样的方法修改。按照目标开发板的说明书修改LED驱动的代码,并在新的Linux内核下重新编译后,可安装在目标开发板上了。移植Linux驱动最重要的是在修改Linux驱动的源代码时,应尽量不修改Linux驱动的接口。如果修改if语句本身,就意味着LED驱动的接口变化了,这样所有调用Linux驱动的程序都需进行修改,会造成不必要的麻烦。

原文地址:https://www.cnblogs.com/mch0dm1n/p/5562767.html