Linux环境下的LED驱动[图文]

最近的时间了,本人都在从事软硬件间的程序设计,虽然我懂得不多,但是经过一段时间的摸索之后也找到了一些解决问题的方法。虽然从前的我,只会写软体程序,也从来没有想到我会接触到这个领域的东西,但是经过这几个月的努力终于有了一些小小的收获。
 
我所使用的实验平台是S3C2440A开发板,外观如下图: 

Linux环境下的LED驱动[图文]

 
这篇文章主要针对如何在Linux环境下驱动LED灯号做一个简单的说明,内容包含如何撰写一个Linux的module、如何使用module、如何测试module。在嵌入式系统中最常碰到的事情就是要控制周边的装置,例如灯号、蜂鸣器等等,这些装置可以通过GPIO来做控制,GPIO到底是什麽东西呢?你可以把GPIO当作是一堆可以控制周边装置的暂存器,每个暂存器都会有他对应的实体位置,对这些暂存器设定一些数值就可以控制周边的装置。我们先从最简单的LED控制开始研究,其他的装置都是大同小异,我也会在后面的文章中陆陆续续的说明这些装置如何来实作。我们假设已经可以正常的从S3C2440实验版上通过boot loader正常开机,并且载入Linux作业系统。如果我们能在Linux作业系统下控制LED灯号的亮或暗,就完成本文章的目的。
 
目前开发板上所使用的作业系统为Linux 2.4.18,所以该模组是针对2.4.18所撰写的,所以必须在编辑环境(我们所使用的开发环境是Dev-C++,请参考之前的文章)中include到2.4.18的kernel,设定的方法:「专桉(p)」->「专桉选项」,会弹出如下图的视窗,请设定「档桉/目录」->「引入标头档目录」,加入Linux 2.4.18中的include的目录。 

Linux环境下的LED驱动[图文]

 
接下来我们必须先了解一下灯号的接线,了解灯号到底使用到哪些GPIO,你可以去翻阅你手边所拥有的线路图,应该能找到一份有关Led的讯号接线方式,如下图所示:

Linux环境下的LED驱动[图文]


从图中你可以了解到控制第一个Led是由EINT4/GPF4来做控制的,有些线路图可能不会直些写出是哪个GPIO,你可能要去找找这个符号对应到2440A处理器的哪一个接脚以得知是由哪个GPIO控制。这张图显示第一个灯号是由GPF4所控制,当你知道是由GPF4所控制你可以从S3C2440A的规格书中得知对应的Address,如下图所示:

Linux环境下的LED驱动[图文]

当你已经得知这些基本的资料后可以开始撰写Linux的驱动程序。

相关推荐