FL2440添加自带led驱动

FL2440添加自带led驱动

在之前学习驱动自己写过led的驱动程序,其实s3c2440对于驱动已经支持得非常好,内核里面已经有了led的驱动程序,我们要使能led驱动只需要稍作修改。

make menuconfig 配置

 Device Drivers  ---> 
     [*] LED Support  ---> 
          [*]   LED Class Support  
          <*>   LED Support for Samsung S3C24XX GPIO LEDs//添加LED支持 

源码修改

s3c24xx系列的芯片的led硬件信息基本一致,因此内核将led的硬件设备信息源码放在了 arch/arm/plat-s3c24xx/common-smdk.c,对照芯片手册,我们要把led0~led3的相关GPIO分别配置成PB5,PB6,PB8,PB10

vim arch/arm/plat-s3c24xx/common-smdk.c
/* LED devices */

 static struct s3c24xx_led_platdata smdk_pdata_led4 = {
 .gpio       = S3C2410_GPB(5),/*led0为PB5*/
 .flags      = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 .name       = "led0",
 .def_trigger    = "timer",
  };

 static struct s3c24xx_led_platdata smdk_pdata_led5 = {
 .gpio       = S3C2410_GPB(6),/*led1为PB6*/
 .flags      = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 .name       = "led1",
 .def_trigger    = "nand-disk",
 };

 static struct s3c24xx_led_platdata smdk_pdata_led6 = {
 gpio       = S3C2410_GPB(8),/*led2为PB8*/
 .flags      = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 .name       = "led2",
 };

 static struct s3c24xx_led_platdata smdk_pdata_led7 = {
 .gpio       = S3C2410_GPB(10),/*led3为PB10*/
 .flags      = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
  .name       = "led3",
 };

完成以上操作之后重新编译内核并且下载到开发板。

测试运行

对于向led这样的设备模型,系统认为所有的设备都是挂接在总线上的,而要使设备工作,就需要相应的驱动。设备模型会产生一个虚拟的文件系统——sysfs,它给用户提供了一个从用户空间去访问内核设备的方法,它在linux里的路径是/sys。如果要写程序访问sysfs,可以像读写普通文件一样来操作/sys目录下的文件。

下载到内核之后会在/sys/class/目录下生成leds目录,会看到led0 led1 led2 led3,在leds目录下执行ls -l 可知,led0、led1 、led2、 led3都是软连接
Alt text

进入到led0目录下,可以看到brightness 等文件
Alt text
其中brightness就是控制等亮灭的文件,max_brightness可以控制亮灭程度的最大值假如设定是100就是0到100代表不同的亮度(需要单板硬件的支持)。
- 向brightness文件中写入1控制灯亮
- 向brightness文件中写入0控制灯亮

cat > brightness //向brightness写入数据
可以看到,写入1时,led0点亮;写入0时,led0熄灭。对于其他的led灯也是同样的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值