fl2440——内核自带LED的使用

在之前的学习中,学习了led普通字符设备以及platform总线的led。其实在linux的内核中,已经有了对s3c24xx的led支持,我们只要稍作修改便可以使能它。

一、添加内核支持

make menuconfig
Device Drivers --->
[*] LED Support --->

这里写图片描述
将如上选项选上即可。

二、代码修改

想查看自带的代码可以到[tangbin@localhost linux-3.0]$ vim drivers/leds/leds-s3c24xx.c 查找。

接下来修改:
我们的fl2440上LED的GPIO分别为PB5,PB6,PB8PB10,只需要修改成我们的即可。

vim arch/arm/plat-s3c24xx/common-smdk.c

 49 /* LED devices */
 50 
 51 static struct s3c24xx_led_platdata smdk_pdata_led4 = {
 52     .gpio       = S3C2410_GPB(5),   //修改成S3C2410_GPB(5),以下依此修改6810
 53     .flags      = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 54     .name       = "led4",
 55     .def_trigger    = "timer",
 56 };
 57 
 58 static struct s3c24xx_led_platdata smdk_pdata_led5 = {
 59     .gpio       = S3C2410_GPB(6),
 60     .flags      = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 61     .name       = "led5",
 62     .def_trigger    = "nand-disk",
 63 };
 64 
 65 static struct s3c24xx_led_platdata smdk_pdata_led6 = {
 66     .gpio       = S3C2410_GPB(8),
 67     .flags      = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 68     .name       = "led6",
 69 };
 70 
 71 static struct s3c24xx_led_platdata smdk_pdata_led7 = {
 72     .gpio       = S3C2410_GPB(10),
 73     .flags      = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 74     .name       = "led7",
 75 };

之后make编译,并下载到开发板。

三、开发板上测试

进入开发版,
这里写图片描述
可以看到led4~led7,其对应的是一个软连接,如图所示。
首先/sys 下的目录结构是经过精心设计的:在 /sys/devices 下是所有设备的真实对象,包括如视频卡和以太网卡等真实的设备,也包括 ACPI 等不那么显而易见的真实设备、还有 tty, bonding 等纯粹虚拟的设备;在其它目录如 class, bus 等中则在分类的目录中含有大量对 devices 中真实对象引用的符号链接文件。
Sysfs文件系统是一个类似于proc文件系统的特殊文件系统,用于将系统中的设备组织成层次结构,并向用户模式程序提供详细的内核数据结构信息。
其实,就是 在用户态可以通过对sys文件系统的访问,来看内核态的一些驱动或者设备等。
对于我们的LED,linux把他当作是直接挂在总线上的,我们可以直接通过/sys上操作对应文件而控制LED。
进入任意一个LED:
这里写图片描述
其中,操作brightness就可以控制灯的亮灭。如:echo 0 > brightness就是灭,1就是亮。max_brightness还可以调节亮度,最大值为255。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值