嵌入式Linux驱动开发(二)——字符设备驱动之控制LED

本文介绍了如何在嵌入式Linux环境下开发字符设备驱动,以控制LED灯。首先,通过理解硬件原理图和芯片手册确定LED的连接及操作寄存器。然后,讲解了驱动程序中如何通过ioremap映射物理地址,以及内核空间和用户空间的数据交换。驱动程序主要包括初始化、设置GPIO为输出、读取用户数据并操作LED状态等功能。最后,通过测试程序验证驱动程序的功能,实现对LED灯的控制。
摘要由CSDN通过智能技术生成

关于驱动程序框架,请参考:
嵌入式Linux驱动开发(一)——字符设备驱动框架入门

同时,在这篇文章里面留下了两个问题,现在先来解决其中的第一个问题,就是如何用驱动程序来操作需要操作的硬件。

关于开发板点亮LED的问题,在这里简单介绍一下,也可以参考之前我写的文章:
嵌入式Linux开发——裸板程序点亮开发板上的LED灯
首先为了操作硬件,看接线原理图是必不可少的一步,这几个LED的原理图相对来说比较简单,在这里说一下,如果需要看懂稍微复杂一点的原理图,可以参见:
Linux嵌入式开发入门(二)——看懂原理图

以下是LED的接线原理图:


LED的原理图
LED的原理图

看到上面的是开发板上面的三盏LED,在图上的左边,他们统一接到了3.3V的一个高电平上,那么如果在LED右侧为地(低电平),那么从左到右就可以形成电压差,因此,也就可以形成电流来点亮LED。

那么在LED右侧,引出三条线,这三条线根据接线原理图可以看出来接入到了下图的芯片中。

LED引脚对应的2440芯片引脚
LED引脚对应的2440芯片引脚

我们根据上面的两幅接线的原理图可以看出来,三盏LED都接在了这个芯片上,那么接下来就是需要我们来阅读一下这个芯片的手册了,看看如何来操作这些引脚。而我们需要的该引脚的状态应该是: 输出低电平点亮LED,输出高电平熄灭LED
查看芯片手册:1. 对应引脚配置为输出引脚 2. 对应引脚输出低电平
2440芯片手册对应的GPF引脚信息
2440芯片手册对应的GPF引脚信息

根据芯片手册,找到对应引脚的部分,发现操作该引脚实际需要操作三个寄存器:GPFCONGPFDAT
GPFUP
其中配置输出引脚需要配置的是GPFCON寄存器,让寄存器中的数据的对应位保存01,即可设置为输出引脚;而操作GPFDAT寄存器中的对应位的数据为1/0,既可让该引脚输出高/低电平。
所以我们控制对应的LED,实际上就是来控制2440芯片中的GPFCON和GPFDAT两个寄存器中的值。
根据手册可以看到,这个两个寄存器的地址分别是0x5600 00500x5600 0054。我们是不是像单片机程序一样,直接来操作这个两个地址呢?
实际不是的,在驱动程序的开发过程中,并不直接操纵这两个地址,而是操作这两个地址的映射。具体操作稍后详见代码。

PS: 写一个关于点亮LED的驱动,需要遵循一下结果步骤:

  • 搭建驱动的框架
  • 完善硬件操作的部分
    • 看懂原理图,确定引脚
    • 看芯片手册来确定如何操作引脚
  • 写代码(和单片机程序的区别为,驱动程序操作的是ioremap映射的虚拟地址,而非物理地址)

我们现在已经知道了驱动框架如何编写,同时根据硬件的原理图和芯片手册知道了该如何操作我们希望操作的硬件。那么接下来就是编写代码了。

我们驱动等下来完成,先确定我们希望如何来操作硬件&#

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值