【引用】Linux-2.6.32.2内核在mini2440上的移植(十五)---移植LED驱动

本文详细介绍了如何在Linux-2.6.32.2内核上移植LED驱动到mini2440开发板的过程,包括LED驱动的原理、移植步骤、内核配置和测试方法。通过理解GPIO工作原理和驱动编写,最终实现通过用户空间程序控制LED的开关状态。
摘要由CSDN通过智能技术生成

移植环境(红色粗字体字修改后内容,蓝色粗体字为特别注意内容)

1,主机环境:VMare下CentOS 5.5 ,1G内存。

2,集成开发环境:Elipse IDE

3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。

4,开发板:mini2440,2M nor flash,128M nand flash。

5,u-boot版本:u-boot-2009.08

6,linux 版本:linux-2.6.32.2

7,参考文章:

嵌入式linux应用开发完全手册,韦东山,编著。

Mini2440 之Linux 移植开发实战指南

嵌入式Linux之我行——LED驱动在2440上的实例开发

【1】LED 驱动原理及编写

在此介绍的LED 驱动实际上是一个十分典型的字符设备驱动程序,它就像学习C 语言时的“Hello,World”程序一样,代表了你对嵌入式Linux 驱动程序的入门认识,因此我们将对此驱动进行详细的介绍和分析,以便深入掌握编写驱动程序的
方法和原理。
说明:在 mini2440 的用户手册中,我们其实也已经介绍了LED 驱动,下面的内容也是基于用户手册而来的。
要写实际的驱动,就必须了解相关的硬件资源,比如用到的寄存器,物理地址,中断等,在mini2440 的原理图中,我们可以看到LED 的硬件连接是这样的:

\"Linux-2.6.32.2内核在mini2440上的移植(十五)---移植LED驱动

 查看 S3C2440 数据手册,可以知道,他们对应的硬件资源如下表
                                                                            

 LED 序号  对应的GPIO

对应的CPU 引脚

 LED1  GPB5  K2
 LED2                         GPB6  L5
 LED3  GPB7    K7
 LED4   GPB8  K5
   

GPIO 是通用输入输出口的英文简称,在S3C2440 芯片中,很多的端口都是可复用的,GPIO 只是其中的一个功能,比如这里的GPB5 端口,既可以用作普通的GPIO,也可以用作专用功能nXBACK,因此我们需要设置相应的端口寄存器,以改变引脚的用途。
在这里,四个LED 是采用GPBCON 寄存器上的4 组2bit 位来配置对应引脚的用途。4组2bit 位的功能都一样:00 表示输入,01 表示输出,10 为特殊功能,11 是保留的。见下面的截图:

\"Linux-2.6.32.2内核在mini2440上的移植(十五)---移植LED驱动

在mini2440 开发板中,
LED1 对应的是GPB5, GPB5 使用[11:10]位
LED2 对应的是GPB6, GPB6 使用[12:13]位
LED3 对应的是GPB7, GPB7 使用[14:15]位
LED4 对应的是GPB8, GPB8 使用[16:17]位
因此,驱动程序中需要先设置LED 为输出状态,也就是要把对应的GPBX 设置为01。

而 GPBDAT 寄存器用来对应4 个LED 的数值状态,GPBDAT5 就对应GPB5,GPBDAT6就对应GPB6,以此类推。根据原理图可以看出&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值