查看: 4835|回复: 9

RIoTboard连载四 板子上LED指示灯的操作

[复制链接]
  • TA的每日心情
    开心
    2018-10-12 13:33
  • 签到天数: 183 天

    连续签到: 3 天

    [LV.7]常住居民III

    发表于 2014-5-6 07:50:10 | 显示全部楼层 |阅读模式
    分享到:
    继续上次文章搭建完RIoTboard开发环境后,首先熟悉了板子上的GPIO资源,最优先的当然是LED指示灯,大家已经习惯将流水灯作为驱动开发的入门操作。首先分析RIoTboardboard初始化代码,找到Board-mx6q-riot.c文件,然后查找相关的LED初始化操作
    有如下简单分析步骤:
    1.LED
    结构体:
    static struct gpio_led imx6q_gpio_leds[] = {
            {
                   .name                   ="sys_led",
                   .default_trigger        = "heartbeat",
                   .gpio                   =RIOT_SYS_LED,
                   .active_low             = true,
            },
            {
                   .name                   ="user_led",
                   .gpio                   =RIOT_USER_LED,
                   .active_low             = true,
            },
    };
    由上述结构体定义得知,RIOTboard定义了两个LED指示灯,一个是sys_led,作用是系统心跳指示,其实大家看到板子上D46的闪烁也正是类似心跳的闪烁方式,另一个是user_led,这个是定义为RIOT板子上用户可以操作的LED。

    2.
    定义platform设备:
    static struct platform_device imx6q_gpio_led_device = {
           .name            = "leds-gpio",
           .id          = -1,
           .num_resources = 0,
           .dev        = {
                  .platform_data= &imx6q_gpio_leds_data,
           }
    };

    由上述代码看出,系统定义了一个名字为leds-gpioplatform设备,定义了之后就是设备注册函数:
    static void __init imx6q_add_device_gpio_leds(void)
    {
           platform_device_register(&imx6q_gpio_led_device);
    }
    由上述代码可以看出RIOTboard针对LED做了一个平台设备驱动,于是我们去系统中找相关的设备驱动文件,到路径
    /sys/bus/platform/drivers
    下找到设备驱动文件leds-gpio
    wenjian.JPG
    进入这个文件夹,最后大家进入到这个路径:
    /sys/bus/platform/drivers/leds-gpio/leds-gpio/leds/user_led
    这个路径下有个brightness,然后就可以通过写brightness来控制user_led的亮灭:
    亮操作:
    echo 1 > brightness
    这时候大家可以看到板子上的D45灯已经亮了
    IMG_20140506_002105.jpg

    灭操作:
    echo 0 > brightness
    D45 灯灭就灭了。
    其实这个地方的LED是大家学习linux驱动的很好的入口点,简单而且典型。
    后续再继续分析LEDplatform设备和驱动相关代码,这次时间紧就先到这儿了。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-10-8 09:49
  • 签到天数: 430 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-5-6 09:58:41 | 显示全部楼层
    楼主linux功底不错啊,呵呵,加油,期待更牛逼的功能试验!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-10-29 22:48
  • 签到天数: 731 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-5-6 11:02:32 | 显示全部楼层
    谢谢分享。最近一直在折腾这个小灯,这下子给我帮了大忙啊。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-29 20:40
  • 签到天数: 1341 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2014-5-6 22:37:03 | 显示全部楼层
    不错 跟着楼主学学!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-9-12 10:26
  • 签到天数: 12 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2014-5-8 23:26:53 | 显示全部楼层
    不错不错,楼主UBOOT搞定了吧
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-10-12 13:33
  • 签到天数: 183 天

    连续签到: 3 天

    [LV.7]常住居民III

     楼主| 发表于 2014-5-9 10:26:40 | 显示全部楼层
    @Se7en说的uboot搞定了是指什么?前几天在做7寸屏驱动板的原理和PCB,刚做完,分享就少了点。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-10-31 08:31
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2014-5-12 08:46:58 | 显示全部楼层
    我也是在学习驱动,在Mini2440上学习,看完教程,做完实验,滑到RIoTboard感觉还是摸不到门!

    谢谢楼主的分享。希望楼主出更多教程!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-10-31 08:31
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2014-5-12 08:48:51 | 显示全部楼层
    为什么我搜不到  Board-mx6q-riot.c 或者 mx6q-riot.c 这个文件呢?

    请问具体是哪个目录啊?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-10-12 13:33
  • 签到天数: 183 天

    连续签到: 3 天

    [LV.7]常住居民III

     楼主| 发表于 2014-5-12 20:33:57 | 显示全部楼层
    board-mx6q-riot.c在arch/arm/mach-mx6这个文件夹下,我的帖子都是在RIoTboard的linux源代码下做的实验,如果是其他系统不能确定是否这个文件名。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-3-15 09:09
  • 签到天数: 24 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2015-6-19 13:10:18 | 显示全部楼层
    非常有用,学习了,感谢楼主!!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 19:49 , Processed in 0.217510 second(s), 34 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.