查看: 1485|回复: 9

[原创] RIoTboard连载四 板子上LED指示灯的操作

[复制链接]

15

主题

4

好友

903

积分

举人

Rank: 4

  • TA的每日心情
    开心
    2016-9-29 15:49
  • 签到天数: 113 天

    [LV.6]常住居民II

    爱板会员勋章 活跃会员勋章

    发表于 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设备和驱动相关代码,这次时间紧就先到这儿了。
    回复

    使用道具 举报

    67

    主题

    14

    好友

    5038

    积分

    状元

    Rank: 6Rank: 6

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

    [LV.9]以坛为家II

    爱板会员勋章

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

    使用道具 举报

    78

    主题

    21

    好友

    6227

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    奋斗
    2016-7-29 22:00
  • 签到天数: 726 天

    [LV.9]以坛为家II

    爱板会员勋章 活跃会员勋章 发帖机器勋章

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

    使用道具 举报

    151

    主题

    23

    好友

    7756

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    奋斗
    前天 21:17
  • 签到天数: 1087 天

    [LV.10]以坛为家III

    爱板会员勋章 活跃会员勋章 热心会员勋章 优秀会员勋章 原创达人勋章 灌水专家勋章 发帖机器勋章 在线达人勋章 论坛骨干勋章

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

    使用道具 举报

    12

    主题

    1

    好友

    1002

    积分

    进士

    Rank: 5Rank: 5

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

    [LV.3]偶尔看看II

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

    使用道具 举报

    15

    主题

    4

    好友

    903

    积分

    举人

    Rank: 4

  • TA的每日心情
    开心
    2016-9-29 15:49
  • 签到天数: 113 天

    [LV.6]常住居民II

    爱板会员勋章 活跃会员勋章

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

    使用道具 举报

    24

    主题

    7

    好友

    1082

    积分

    进士

    Rank: 5Rank: 5

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

    [LV.4]偶尔看看III

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

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

    使用道具 举报

    24

    主题

    7

    好友

    1082

    积分

    进士

    Rank: 5Rank: 5

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

    [LV.4]偶尔看看III

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

    请问具体是哪个目录啊?
    回复

    使用道具 举报

    15

    主题

    4

    好友

    903

    积分

    举人

    Rank: 4

  • TA的每日心情
    开心
    2016-9-29 15:49
  • 签到天数: 113 天

    [LV.6]常住居民II

    爱板会员勋章 活跃会员勋章

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

    使用道具 举报

    0

    主题

    0

    好友

    126

    积分

    童生

    Rank: 2

  • TA的每日心情
    开心
    2015-4-2 13:21
  • 签到天数: 12 天

    [LV.3]偶尔看看II

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

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

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


    手机版|爱板网 |网站地图  

    GMT+8, 2016-12-11 16:01 , Processed in 0.479409 second(s), 19 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部