华为云IoT智慧物流案例02 | 开发板测试与设备树框架分析(点亮LED灯)
引言
这里笔者先开个箱,上图(感谢华为云IoT借与的新玩具,拿到开发板就像拿到新玩具一样开心~)
第一章 开发板调测
1.1 开发板通电调测与网络测试
- 开发板通电,等待开发板正常启动
- 网线连接,局域网ping测试,公网ping测试
打开MobaXterm
软件如图选择对应串口和波特率(115200
)
按下开发板的“RST”
复位键,观察串口打印的信息
输入ifconfig
查看自己开发板的ip地址
ping www.baidu.com
查看公网是否可正常访问
如图所示访问公网成功
接下来我们测试一下开发板-虚拟机-主机(局域网内)能否正常通讯- 打开虚拟机,在终端输入
ifconfig
查看虚拟机的IP地址,ping
开发板的IP地址查验是否通讯成功
- 开发板终端
ping
主机的IP地址查验是否通讯成功
1.2 SCP
命令测试(开发板与PC间远程文件传输的命令)
虚拟机:新建一个hello.txt
命令:vim hello.txt
(如果有安装过vim使用此命令,如显示错误代表没有安装,命令使用 vi hello.txt)
按i
后输入文本hello
输入完成后按"ESC"
后输入:wq
,回车完成保存并退出
scp命令测试:scp hello.txt root@自己开发板的IP地址:/home/root/
第一次使用此命令会提示是否确认连接(开发板和虚拟机)
输入yes
确认连接
查看开发板终端文件检验是否传输文件成功
如图所示,开发板终端已经接收到了hello.txt文件
输入命令:
vi hello.txt
文本内容也显示正确,文件传输命令scp测试成功
第二章
2.1 设备树框架分析与点亮LED
- 设备树贯穿了整个Linux嵌入式开发
- 设备树的使用对后面实战项目外设驱动至关重要
- 在嵌入式Linux系统中,绝大多数硬件设备都有非常成熟的驱动效果
- LED子系统、GPIO子系统、INPUT子系统等都可以直接修改使用
查看内核源码与设备树框架
- 设备树:描述一个硬件平台的硬件资源,可以被uboot传递到内核,内核可以从设备树中获取硬件信息
- DTS代表设备树文件
- DTC指编译设备树源码的工具
- DTB是设备树源码编译生成的文件
首先我们看看内核源码
解压iotclub-ya157c-kernel.tar.bz2
得到内核源码目录
用VS Code
打开内核源码目录
打开设备树文件 目录如下
查找GPIO口LED相关部分(crtl+f
)
- label:标签
- gpios:查找外设对应的引脚进行驱动
- trigger:触发方式设置
- status:状态
查找用户灯的引脚
查找手册
智慧物流/智慧物流课程资料/原理图/20200520_EVB_HX_RevA04.pdf
查找芯片MP157引脚手册
智慧物流/智慧物流课程资料/原理图/MYC_YA157C_PIN%20LIST-V2-2020508.pdf
修改对应gpio口
编写设备树编译脚本.sh
执行脚本文件编译出.dtb
文件
命令:
./my_dts_make.sh
在内核同等路径下有一个编译出来的build文件,里面存放着编译好的设备树文件.dtb
用scp
命令传输dtb文件到开发板进行更新
sudo scp stm32mp157c-ya157c-lcd-v2.dtb root@自己开发板IP地址:/boot
传输完成后reboot
进行重置
reboot
在/sys/class/leds/
路径下可以看到刚刚添加的两个节点heartbeat
和motor
2.2 用命令行点亮LED灯和读取按键
我们进入led的节点heartbeat
命令:
echo none > trigger
将触发方式设置成none
,我们才可以自行控制
命令:
echo 1 > brightness
熄灭LED
命令:
echo 0 > brightness
点亮LED
命令:
echo heartbeat > trigger
设置LED为心跳指示灯状态
2.3 编写测试程序用按键点亮LED灯/驱动E53扩展板电机
接下来我们编写测试程序
这里我们需要安装另一个交叉编译链(Ubuntu下全局可用的,之前的交叉编译链基于内核编译SDK环境下)
选用arm-linux-gnueabihf-gcc
命令:
sudo apt-get install gcc-arm-linux-gnueabihf
查看是否安装成功及对应版本
命令:
arm-linux-gnueabihf-gcc -v
而后我们打开key_led
项目
主函数main.c
文件
- 定义
led属性
路径 - 创建
led_f
文件写入点 if
函数判断按键event.code
控制led亮灭
将makefile交叉编译链更改成我们安装的arm-linux-gnueabihf-gcc
打开终端(CRTL+SHIFT+`)
make编译输出可执行文件Key_LED
命令:
make ARCH=arm
ls
cd build_arm
ls
scp Key_LED root@自己开发板IP地址:/home/root
开发板输入.Key_LED
运行文件
成功用按键控制LED灯的亮灭
如果我们想要控制E53案例板上的电机呢?原理是一样的
修改对应的设备树文件
编写程序实现功能
运行可执行文件./
驱动电机成功
技术指导:
华为云社区与华为云学院:https://edu.huaweicloud.com/
人员:阿正前辈
- 点赞
- 收藏
- 关注作者
评论(0)