打印
[应用方案]

NUC972 添加LED驱动 leds_gpio 方式

[复制链接]
2950|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LED驱动的方式有多种,可以自定义驱动,然后通过/dev/myled 设备文件,来控制led。

也可以通过内核 led驱动架构来控制,通过/sys/leds/myled/ 里面的各种文件来控制。内核还提供了一个非常方便的方法,就是用过leds_gpio驱动来控制LED. 我们只需要配置相关引脚就新了。

步骤如下:

1.添加配置引脚

修改 dev.c 文件   在内核目录/arch/arm/mach-nuc970/ 中。

添加头文件


#include <linux/leds.h> // add by simon for leds_gpio driver

添加引脚配置

#if defined(CONFIG_LEDS_GPIO)
//================leds_gpio add by simon =============
static struct gpio_led gpio_leds[] = {  
    {  
        .name = "red",  
        .gpio = NUC970_PH12,
        .default_state = LEDS_GPIO_DEFSTATE_ON, // 默认LED亮  
        .active_low = 0, // 低电平亮  
        .default_trigger = "timer", // 触发器  
    },  
};  

static struct gpio_led_platform_data gpio_led_info = {  
     .leds          = gpio_leds,  
     .num_leds     = ARRAY_SIZE(gpio_leds),  
};

static struct platform_device leds_gpio = {  
    .name = "leds-gpio",  
    .id = -1,  
    .dev = {  
        .platform_data = &gpio_led_info,  
        //.release = platformdev_release,  
    },  
};  
//=====================================================
#endif


使用特权

评论回复
沙发
renzheshengui|  楼主 | 2021-7-1 13:39 | 只看该作者
2.添加设备文件

把 leds_gpio 设备添加到 static struct platform_device *nuc970_public_dev[] __initdata 这个设备数组中。 系统启动时会自动加载设备。

static struct platform_device *nuc970_public_dev[] __initdata = {

...

#if defined(CONFIG_LEDS_GPIO)
    &leds_gpio,
#endif

...

};


使用特权

评论回复
板凳
renzheshengui|  楼主 | 2021-7-1 13:39 | 只看该作者

3.配置内核




触发器的选择按需所需,timer是1秒周期性亮灭,heartbeat 是 闪2下,闪2下,cpu是按cpu使用率闪烁等。


使用特权

评论回复
地板
renzheshengui|  楼主 | 2021-7-1 13:39 | 只看该作者

4.编译

编译并更新内核,可以看到在sys目录下已经有了leds目录了,下面有个red的设备,这个名称和我之前配的相同


使用特权

评论回复
5
renzheshengui|  楼主 | 2021-7-1 13:39 | 只看该作者
5.测试

/sys/devices/platform/leds-gpio/leds/red # echo 1 > brightness
/sys/devices/platform/leds-gpio/leds/red # echo 0 > brightness
/sys/devices/platform/leds-gpio/leds/red # cat trigger
[none] nand-disk mmc0 timer oneshot heartbeat backlight gpio cpu0 default-on transient
/sys/devices/platform/leds-gpio/leds/red # echo oneshot > trigger
/sys/devices/platform/leds-gpio/leds/red # echo heartbeat > trigger


使用特权

评论回复
6
kkzz| | 2021-7-1 21:44 | 只看该作者
这个不是使用的模拟iic吗      

使用特权

评论回复
7
redone| | 2021-7-9 15:49 | 只看该作者
没太看懂,哎辜负贴这么多了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

78

主题

3888

帖子

2

粉丝