【NXP开发板应用—智能插排】2.初步解析example之GPI

【前言】
首先感谢深圳市米尔科技有限公司举办的此次活动并予以本人参加此次活动的机会,以往接触过嵌入式,但那都是皮毛,最多刷个系统之类的,能够说对于嵌入式系统开发这件事情是至关很是陌生的,此次活动为我提供了一个很是好的入门和学习嵌入式的机会,同时在社区及技术群内也获得了很大的帮助和鼓励,这也是我不断前行和进步的动力,在这里一并致谢了。下面我附上本次学习心得及过程。
米尔MYS-6ULX单板机介绍:
MYS-6ULX是一款以NXP i.MX6UL/i.MX6ULL处理器,Cortex-A7内核为核心的嵌入式单板机,主频为528MHz。配备了256MB高速DDR三、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,实现红外遥控控制空调。node

【初步解析example之GPIO】linux

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

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

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

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

 

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

二、系统经过dts文件来维护device tree的,咱们经过米尔提供的开发手册找到该文件,以下图所示函数

咱们只需找到相应的dts文件,打开看到学习

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

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

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

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

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

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

相关文章
相关标签/搜索