查看: 5008|回复: 9

[i.MX6ULL竞赛专区] 【我的项目666--智能插排】1.初步解析example之GPIO

[复制链接]
  • TA的每日心情
    开心
    昨天 12:01
  • 签到天数: 819 天

    [LV.10]以坛为家III

    71

    主题

    2445

    帖子

    24

    金牌会员

    Rank: 6Rank: 6

    积分
    5518
    最后登录
    2024-4-26
    发表于 2018-6-20 12:45:40 | 显示全部楼层 |阅读模式
    本帖最后由 leo121_3006061 于 2018-7-6 12:09 编辑

           我做的项目是直接通过开发板的gpio控制插排,从而控制用电设备,有两种状态,一个是开关状态,另外一个是pwm控制灯光和风扇转速等, 网上查阅了很多资料,终于明白了嵌入式linux的初始化开发板的资源的方式,通过Device Tree来驱动和加载设备的,相当于我们mcu设备初始化的时钟,io,uart等。下面我们通过简单的几步来理解是如何实现的
    1. 开始之前,先打开一个上传到开发板的可执行命令 gpio_led ,如下图所示

    选区_076.png
    我们看到带参数的,再看看源代码是怎么处理参数的
    选区_084.png

    到这里我们大概明白了,就是通过参数来控制gpio的,那么我们是不是随标敲一个参数就能控制任意gpio了?显然是不可能的(也有凑巧的概率)
    那么是怎么实现这个参数的呢?简单说就是这些cpu,gpio,uart等资源都放在了dts文件里,最后编译成dtb,由uboot引导程序初始化并以参数方式提交给kernel,这就是为何通过uart(usb-ttl)可以看到系统启动加载的一些信息。

    2、系统通过dts文件来维护device tree的,我们通过米尔提供的开发手册找到该文件,如下图所示

    选区_077.png

    我们只需找到相应的dts文件,打开看到


    mys-imx6ul-14x14-evk-gpmi-weim.dts (~-MYS6ULx-devel-04-Source-MYiR-iMX-Linux-arc.png
    include 文件指向另外一个dts文件,找到该文件并打开

    选区_078.png

    3. 阅览打开的文件发现了,gpio_leds,gpio_key和本次相关的资源,其他资源略。
    下图的节点及定义,简单的说一下结构
    a) leds表示节点名称
    b) compatible属性用于of_find_node_compatible函数获取设备节点用的,这个函数的通过”gpio-leds“字符串去遍历device tree,查找匹配的设备节点
    c) pinctrl-0 = <&pinctrl_leds>主要用于说明设备硬件资源在哪里获取,比如这里就是到iomuxc里面去获取IO资源
    还有gpios这个很容易看懂了。
    选区_080.png

    4.  iomuxc设备节点里面定义了CPU所有的IO资源,包括每个IO口的初始化状态都定义好了,比如leds,key

    选区_086.png
    5经过3,4两步创建所需功能的节点,然后交叉编译dts=》dtb,下载到开发板,这些步骤参考开发手册。

    经过以上的操作,基本完成了设备的驱动的开发。下一步开始本次项目,智能插排,按照上述办法先完成驱动。然后是控制命令,最后是gui(这部分对我来说比较难,我不会qt,可能会使用webserver,基于websocket控制,前一阵子参加双核大赛研究了一阵子websocket)。


    选区_077.png

    评分

    参与人数 1 +3 收起 理由
    doatello + 3

    查看全部评分

    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3299

    主题

    6546

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32024
    最后登录
    2024-4-25
    发表于 2018-6-20 13:46:28 | 显示全部楼层
    期待!
    签到签到
    回复

    使用道具 举报

  • TA的每日心情

    2021-2-4 09:24
  • 签到天数: 190 天

    [LV.7]常住居民III

    38

    主题

    591

    帖子

    28

    金牌会员

    Rank: 6Rank: 6

    积分
    2193
    最后登录
    2023-12-1
    发表于 2018-6-20 16:06:56 | 显示全部楼层
    谢谢分享,讲的比较细
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-10-17 09:43
  • 签到天数: 47 天

    [LV.5]常住居民I

    21

    主题

    135

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    487
    最后登录
    2022-10-24
    发表于 2018-6-20 17:49:03 | 显示全部楼层
    很细心的分享,谢谢
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 12:01
  • 签到天数: 819 天

    [LV.10]以坛为家III

    71

    主题

    2445

    帖子

    24

    金牌会员

    Rank: 6Rank: 6

    积分
    5518
    最后登录
    2024-4-26
     楼主| 发表于 2018-6-20 18:54:28 | 显示全部楼层
    xiaoshen-372360 发表于 2018-6-20 13:27
    谢谢楼主解惑,但是我个人感觉着哩还不是底层,应该还有底层的代码才对,不知道是不是。 ...

    其实我写完这个,也还是带着很多疑惑,今天在群里请教了@红旗哥,顺便感谢@红旗哥,基本弄清了,这个就是底层的东西了,io的分配,初始化。剩下的就是应用层查找这些设备资源进行调用。欢迎一起探讨,研究
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 12:01
  • 签到天数: 819 天

    [LV.10]以坛为家III

    71

    主题

    2445

    帖子

    24

    金牌会员

    Rank: 6Rank: 6

    积分
    5518
    最后登录
    2024-4-26
     楼主| 发表于 2018-6-20 18:55:13 | 显示全部楼层
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 12:01
  • 签到天数: 819 天

    [LV.10]以坛为家III

    71

    主题

    2445

    帖子

    24

    金牌会员

    Rank: 6Rank: 6

    积分
    5518
    最后登录
    2024-4-26
     楼主| 发表于 2018-6-20 18:55:42 | 显示全部楼层
    mzy2364 发表于 2018-6-20 16:06
    谢谢分享,讲的比较细

    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 12:01
  • 签到天数: 819 天

    [LV.10]以坛为家III

    71

    主题

    2445

    帖子

    24

    金牌会员

    Rank: 6Rank: 6

    积分
    5518
    最后登录
    2024-4-26
     楼主| 发表于 2018-6-20 18:57:04 | 显示全部楼层
    swiftman 发表于 2018-6-20 17:49
    很细心的分享,谢谢

    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-1-28 20:09
  • 签到天数: 317 天

    [LV.8]以坛为家I

    61

    主题

    1582

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    8015
    最后登录
    2022-5-12
    发表于 2018-6-20 22:56:12 | 显示全部楼层
    大佬  好厉害    先mark下 后面学到这里再来看看
    好好
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 12:01
  • 签到天数: 819 天

    [LV.10]以坛为家III

    71

    主题

    2445

    帖子

    24

    金牌会员

    Rank: 6Rank: 6

    积分
    5518
    最后登录
    2024-4-26
     楼主| 发表于 2018-6-21 10:35:27 | 显示全部楼层
    小马哥-1650185 发表于 2018-6-20 22:56
    大佬  好厉害    先mark下 后面学到这里再来看看

    不敢当不敢当,一起研究
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-26 07:46 , Processed in 0.149445 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表