【NXP开发板应用—智能插排】3.驱动GPIO点亮外接LED
【前言】
首先感谢深圳市米尔科技有限公司举办的这次活动并予以本人参加这次活动的机会,以往接触过嵌入式,但那都是皮毛,最多刷个系统之类的,可以说对于嵌入式系统开发这件事情是相当非常陌生的,这次活动为我提供了一个非常好的入门和学习嵌入式的机会,同时在社区及技术群内也得到了很大的帮助和鼓励,这也是我不断前行和进步的动力,在这里一并致谢了。下面我附上本次学习心得及过程。
米尔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,实现红外遥控控制空调。
正文:【驱动GPIO点亮外接LED】
在上一篇gpio解析基础上,我在device tree添加了自己要用到的gpio,并且简单的驱动了外接led灯,点亮和熄灭。我暂定使用资源gpio1_io9,手册上简写gpio9。今天的操作成功对于我来说是里程碑了,非常关键,项目里叫milestone。我的项目是智能插排,其中一项功能就是开关控制插座,不要小瞧了开关,有N中方法可以实现,我用继电器。有M种控制模式,比如,计时,倒计时,延时,定时,周期工作等等,花样繁多。下边分享一下我的调试过程,比较艰辛。
1. 参考dts里已经有的两个节点gpio_leds,gpio_key,先照葫芦画个瓢,添加些代码,如图所示
说明:gpio5已经被占用,我是在操作的时候发现的,就先忽略掉。 
并且在iomux里添加如下图代码 
2.修改完成后,单独编译dts文件,生成dtb,然后我就懵了,怎么更新呢,总不至于全部更新一遍吧,群里求助,@软件工程师(红旗哥)给我一个方案是利用tftp,uboot引导通过tftp访问server自动下载dtb文件进行更新,好像有些难度,不过方案肯定是可以的(红旗哥对嵌入式开发还是比较熟悉的)。于是我在网上找到另外一种方法,就是说要找到开发板的dtb文件存贮的位置,然后用编译好的dtb直接替换掉,重启就可以加载了,多么简单,于是我就开始在开发板上查找脚dtb的文件一直无果,以至于我开始怀疑自己是不是忘记find命令了。直到有一份资料说可能存贮在某个特定的分区里,这时候才恍然大悟,fdisk -l 看到4个分区,又用cat /proc/partation查看了一下,如图所示 
看到dtb了我很开心,mount上来不就可以操作了吗?用了几种参数,终于蒙对了,加载上了,然而进去查找也没有dtb文件,但是看起来目录结构有些像dtb生成的 
找到了比较熟悉的例程里的leds,gpio_key


怀疑这个整个分区就是dtb了,于是决定用dd命令试探一下,先用scp把编译好的文件传到开发板上,使用dd命令对mtdblock2进行覆盖
dd if= of=,其总if表示input file ,of表示out file大概这个意思。 
重新启动开发板系统之后,打开系统去查找我添加的power_strip,看看是否能找到,当我看到这个参数时非常高兴,终于更新成功了 
5.加载完成,就要验证一下是不是这个设备是正确的,打开路径/sys/class/gpio/gpio9,这个应该是我在设备树里添加的,然后在这里生成出来的。
纠正一下错误,当时我的做了很多操作(是后补的帖子,就把这件事混淆了,非常抱歉),上边gpio9不是从设备树生成出来的,是通过下边的命令,感谢@apple_9938下边回帖提出的质疑,我再三检查了一下,但是power_strip确实是从设备树生成出来的,怎么像leds一样注册在/sys/class目录下,这一步我还不知道。
echo 9 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio9/direction
echo 1 > /sys/class/gpio/gpio9/value —> 写高电平
echo 0 > /sys/class/gpio/gpio9/value —> 写低电平

执行这个命令,控制外接的LED灯亮和熄灭了,说明设置正确,可以用来驱动继电器来控制插排了。
对比一下就明显了,要不然看不出来是亮和灭的状态


后续继续更新博客,敬请关注,有同道者欢迎提出建议。
声明:本文首发在与非网社区 NXP论坛›竞技场›恩智浦/米尔i.MX6ULL竞赛专区.›作者论坛ID:leo121_3006061
【NXP开发板应用—智能插排】3.驱动GPIO点亮外接LED的更多相关文章
- 【NXP开发板应用—智能插排】2.初步解析example之GPI
[前言] 首先感谢深圳市米尔科技有限公司举办的这次活动并予以本人参加这次活动的机会,以往接触过嵌入式,但那都是皮毛,最多刷个系统之类的,可以说对于嵌入式系统开发这件事情是相当非常陌生的,这次活动为我提 ...
- 【NXP开发板应用—智能插排】4. PWM驱动
[前言] 首先感谢深圳市米尔科技有限公司举办的这次活动并予以本人参加这次活动的机会,以往接触过嵌入式,但那都是皮毛,最多刷个系统之类的,可以说对于嵌入式系统开发这件事情是相当非常陌生的,这次活动为我提 ...
- 【NXP开发板应用—智能插排】1.如何使用scp传输文件
首先感谢深圳市米尔科技有限公司举办的这次活动并予以本人参加这次活动的机会,以往接触过嵌入式,但那都是皮毛,最多刷个系统之类的,可以说对于嵌入式系统开发这件事情是相当非常陌生的,这次活动为我提供了一个非 ...
- @开发者,快来申请你的工业级NXP内核物联网开发板
米尔工业级NXP开发板试用活动(MYD-C8MMX) 不久前 米尔推出了新一代高性价比核心板之王 MYC-C8MMX核心板及开发板 获得众多客户热烈反馈 这一次 我们给各位带来福利 i.MX8M mi ...
- 真正的RISC-V开发板——VEGA织女星开发板开箱评测
前言 由于最近ARM公司要求员工"停止所有与华为及其子公司正在生效的合约.支持及未决约定",即暂停与华为的相关合作,大家纷纷把注意力投向了另一个的处理器架构RISC-V,它是基于精 ...
- 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解
本文转自:http://www.topeetboard.com 视频下载地址: 驱动注册:http://pan.baidu.com/s/1i34HcDB 设备注册:http://pan.baidu.c ...
- TPYBoard V102:能跑Python的stm32开发板
近来micropython语言做硬件编程很火,随之而来的就开始带动着支持micropython语言编程的开发板也开始火的发烫,今天小编就来和大家介绍一款很经典的micropython开发板-TPYBo ...
- LS1021ATWR开发板启动日志分析
一.背景 LS1021ATWR开发板运行官方的openwrt系统 二.日志分析 2.1 linux相关日志 root@OpenWrt:/# reboot 重启 root@OpenWrt:/# [ 2 ...
- 1_ZedBoard开发板测试
启动 将SD卡插入电脑进行格式化 格式化时,要将SD卡格式化为FAT32文件系统.块大小格式化为4096字节时后面会出现无法启动的情况,可以先复现一下这个错误.块大小我选择4096字节. 然后将Zed ...
随机推荐
- js 数据格式化
//金额增加千分号formatPrice(123456.78) = 123,456.78 function formatPrice(val) { var parts = val.toString(). ...
- ELK_Elastic Search和kibana版本对应关系
https://www.elastic.co/downloads/past-releases/kibana-5-0-0 https://www.elastic.co/downloads/past-re ...
- js中直接调用函数和new函数的区别
如果函数返回值为常规意义上的值类型(Number.String.Boolean)时,new函数将会返回一个该函数的实例对象,而如果函数返回一个引用类型(Object.Array.Function),则 ...
- 475. Heaters (start binary search, appplication for binary search)
Winter is coming! Your first job during the contest is to design a standard heater with fixed warm r ...
- 可跨域的单点登录(SSO)实现方案
可跨域的单点登录(SSO)实现方案 SSO简介 定义: 传统的单站点登录访问授权机制是:登录成功后将用户信息保存在session中,sessionId保存在cookie中,每次访问需要登录访问的资源( ...
- QT信号和槽在哪个线程执行问题
时隔四个月后的第一篇,换了个公司可以登录的博客,记录一些学习内容吧 这是看到别人写的比较好的一篇,排版有点乱 QThread的使用方法 起源 昨天不小心看到Qt开发人员( Bradley T.Hugh ...
- Spring 的下载、安装和使用
一.下载 Spring 下载地址:http://repo.spring.io/libs-release-local/org/springframework/spring/4.0.6.RELEASE/ ...
- perl的一些小函数——split、join、sort
有时候,我们需要将一个字符串或一行文本通过某种方式转换为单个的元素存储在数组中,或者将许多元素通过某种分割符,将他们组合成一个字符串.perl刚好就提供了这样的功能,通过split或者join分割或组 ...
- Linux(十一) 文件目录权限 chmod umask chown
一 文件目录权限定义 首先我们先认识一下文件目录的权限定义,请看下面ls -l的结果我们发现一个文件或者目录的前面有10位的信息,第一位表示文件类型,大概有一下几种类型:d 表示目录 - 普通文件 b ...
- 调节Ubuntu分辨率
列出当前支持的分辨率 使用 xrandr 命令新增显示模式 至此分辨率更改完成 重启后会失效 在 ~/.profile 最末尾添加修改分辨率的命令