【前言】
首先感谢深圳市米尔科技有限公司举办的这次活动并予以本人参加这次活动的机会,以往接触过嵌入式,但那都是皮毛,最多刷个系统之类的,可以说对于嵌入式系统开发这件事情是相当非常陌生的,这次活动为我提供了一个非常好的入门和学习嵌入式的机会,同时在社区及技术群内也得到了很大的帮助和鼓励,这也是我不断前行和进步的动力,在这里一并致谢了。下面我附上本次学习心得及过程。
米尔MYS-6ULX单板机介绍:
MYS-6ULX是一款以NXP i.MX6UL/i.MX6ULL处理器,Cortex-A7内核为核心的嵌入式单板机,主频为528MHz。配备了256MB高速DDR3、256M NAND Flash,集成了以太网、WIFI、LCD接口、USB OTG、USB Host、TF Card、用户按键、用户LED、IO扩展接口等功能。
详细介绍:[http://www.myir-tech.com/product/mys_6ulx.htm]
收到米尔的板子,先上图:

【概述】
计划通过本次项目实现一些家庭电器设备控制,进现实现远程监控;
1,实现计时控制插排包括,计时,延时,定时,倒计时,周期开通和关闭功能;
2,实现PWM调控灯光或者风扇调速;
3,实现红外遥控控制空调。

【初步解析example之GPIO】

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

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

1. 开始之前,先打开一个上传到开发板的可执行命令 gpio_led ,如下图所示

我们看到带参数的,再看看源代码是怎么处理参数的

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

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

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

include 文件指向另外一个dts文件,找到该文件并打开

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

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

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

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

后续继续更新博客,敬请关注,有同道者欢迎提出建议。
声明:本文首发在与非网社区 NXP论坛›竞技场›恩智浦/米尔i.MX6ULL竞赛专区.›作者论坛ID:leo121_3006061

【NXP开发板应用—智能插排】2.初步解析example之GPI的更多相关文章

  1. 【NXP开发板应用—智能插排】3.驱动GPIO点亮外接LED

    [前言] 首先感谢深圳市米尔科技有限公司举办的这次活动并予以本人参加这次活动的机会,以往接触过嵌入式,但那都是皮毛,最多刷个系统之类的,可以说对于嵌入式系统开发这件事情是相当非常陌生的,这次活动为我提 ...

  2. 【NXP开发板应用—智能插排】4. PWM驱动

    [前言] 首先感谢深圳市米尔科技有限公司举办的这次活动并予以本人参加这次活动的机会,以往接触过嵌入式,但那都是皮毛,最多刷个系统之类的,可以说对于嵌入式系统开发这件事情是相当非常陌生的,这次活动为我提 ...

  3. 【NXP开发板应用—智能插排】1.如何使用scp传输文件

    首先感谢深圳市米尔科技有限公司举办的这次活动并予以本人参加这次活动的机会,以往接触过嵌入式,但那都是皮毛,最多刷个系统之类的,可以说对于嵌入式系统开发这件事情是相当非常陌生的,这次活动为我提供了一个非 ...

  4. @开发者,快来申请你的工业级NXP内核物联网开发板

    米尔工业级NXP开发板试用活动(MYD-C8MMX) 不久前 米尔推出了新一代高性价比核心板之王 MYC-C8MMX核心板及开发板 获得众多客户热烈反馈 这一次 我们给各位带来福利 i.MX8M mi ...

  5. TPYBoard V102:能跑Python的stm32开发板

    近来micropython语言做硬件编程很火,随之而来的就开始带动着支持micropython语言编程的开发板也开始火的发烫,今天小编就来和大家介绍一款很经典的micropython开发板-TPYBo ...

  6. LS1021ATWR开发板启动日志分析

    一.背景 LS1021ATWR开发板运行官方的openwrt系统 二.日志分析 2.1 linux相关日志 root@OpenWrt:/# reboot  重启 root@OpenWrt:/# [ 2 ...

  7. 1_ZedBoard开发板测试

    启动 将SD卡插入电脑进行格式化 格式化时,要将SD卡格式化为FAT32文件系统.块大小格式化为4096字节时后面会出现无法启动的情况,可以先复现一下这个错误.块大小我选择4096字节. 然后将Zed ...

  8. TPYBoard开发板搭建与阿里云服务发送数据

       今天给大家带来的是TPYBoard V202开发板的一次测试项目使用心得.而测试项目就是给服务端发送硬件底层数据,而数据有产品名称,WF模块MAC地址,温湿度数据.      什么是MicroP ...

  9. 迅为IMX6开发板适用于HMI|车载电脑|工业控制|医疗仪器|智能家居 灵活进行产品开发平台

    i.MX6开发平台行业中的应用 适用于HMI.POS机.车载电脑.工业控制.轨道交通.医疗仪器.智能家居.数据终端等行业. 迅为iMX6开发板采用核心板+底板结构设计,高品质,稳定性强,可以更灵活地进 ...

随机推荐

  1. LeetCode-Maximal Rectangle[code]

    code: #include <iostream> #include <vector> #include <stack> #include <algorith ...

  2. 三、docker学习笔记——安装postgresql

    1.docker pull postgres 2.docker run --name postgres -e POSTGRES_PASSWORD=123456 -p 5432:5432 -d post ...

  3. 【Leetcode】【Medium】Combinations

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...

  4. skype for business server 2015 报错“不可用:试图检查架构状态时发生故障,请确保能够访问Active Direcotry”

    报错“不可用:试图检查架构状态时发生故障,请确保能够访问Active Direcotry” 遇到错误后就上网查询了下,有的人说用下面方法解决了 用域的administrator 登入就可以了(之前是用 ...

  5. July 23rd 2017 Week 30th Sunday

    Setting goals is the first step in turning the invisible into the visible. 设定目标是将实现梦想的第一步. If you wa ...

  6. IOS AFN (第三方请求)

    什么是AFN全称是AFNetworking,是对NSURLConnection.NSURLSession的一层封装虽然运行效率没有ASI高,但是使用比ASI简单在iOS开发中,使用比较广泛 AFN的g ...

  7. CSAPP Bomb Lab记录

    记录关于CSAPP 二进制炸弹实验过程 (CSAPP配套教学网站Bomb Lab自学版本,实验地址:http://csapp.cs.cmu.edu/2e/labs.html) (个人体验:对x86汇编 ...

  8. Java时间格式化时YYYY(大写)和yyyy(小写)的区别

    在Java中,我们大多数情况下格式日期都是用的SimpleDateFormat,比如说把一个日期格式成"yyyy-MM-dd"的形式. 我们要注意的是,对于年份来说,大写的Y和小写 ...

  9. java的串行化

    参考博客:Java 对象的串行化(Serialization) 1,什么是串行化 对象的寿命通常随着生成该对象的程序的终止而终止.有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复.我们把对象 ...

  10. 自动下单tomcat版本问题

    \xalan\xalan,jar找不到是因为spring boot 中使用的是tomcat8.5,从platform依赖进来的运行时环境是tomcat8,导致覆盖原来的依赖,在platform中移除S ...