华为云IoT智慧物流案例02 | 开发板测试与设备树框架分析(点亮LED灯)

举报
实柏 发表于 2021/06/25 14:01:47 2021/06/25
【摘要】 引言这里笔者先开个箱,上图(感谢华为云IoT借与的新玩具,拿到开发板就像拿到新玩具一样开心~) 第一章 开发板调测 1.1 开发板通电调测与网络测试开发板通电,等待开发板正常启动网线连接,局域网ping测试,公网ping测试打开MobaXterm软件如图选择对应串口和波特率(115200)按下开发板的“RST”复位键,观察串口打印的信息输入ifconfig查看自己开发板的ip地址ping ...

引言

这里笔者先开个箱,上图(感谢华为云IoT借与的新玩具,拿到开发板就像拿到新玩具一样开心~)
米尔开发板
米尔开发板

第一章 开发板调测

1.1 开发板通电调测与网络测试

  • 开发板通电,等待开发板正常启动
  • 网线连接,局域网ping测试,公网ping测试
  • 接入网线
    打开MobaXterm软件如图选择对应串口和波特率(115200
    串口
    按下开发板的“RST”复位键,观察串口打印的信息
    RST串口打印信息
    输入ifconfig查看自己开发板的ip地址
    ifconfig
    ping www.baidu.com查看公网是否可正常访问
    如图所示访问公网成功
    ping
    接下来我们测试一下开发板-虚拟机-主机(局域网内)能否正常通讯
  • 打开虚拟机,在终端输入ifconfig查看虚拟机的IP地址,ping 开发板的IP地址查验是否通讯成功
    ping
  • 开发板终端ping主机的IP地址查验是否通讯成功
    ping

1.2 SCP命令测试(开发板与PC间远程文件传输的命令)

虚拟机:新建一个hello.txt
命令:vim hello.txt(如果有安装过vim使用此命令,如显示错误代表没有安装,命令使用 vi hello.txt)
hello
i后输入文本hello
输入完成后按"ESC"后输入:wq,回车完成保存并退出
hello.txt
scp命令测试:scp hello.txt root@自己开发板的IP地址:/home/root/
scp
第一次使用此命令会提示是否确认连接(开发板和虚拟机)
输入yes确认连接
查看开发板终端文件检验是否传输文件成功
如图所示,开发板终端已经接收到了hello.txt文件
传输成功
输入命令:

vi hello.txt

文本内容也显示正确,文件传输命令scp测试成功
vi

第二章

2.1 设备树框架分析与点亮LED

  • 设备树贯穿了整个Linux嵌入式开发
  • 设备树的使用对后面实战项目外设驱动至关重要
  • 在嵌入式Linux系统中,绝大多数硬件设备都有非常成熟的驱动效果
  • LED子系统、GPIO子系统、INPUT子系统等都可以直接修改使用

查看内核源码与设备树框架

  • 设备树:描述一个硬件平台的硬件资源,可以被uboot传递到内核,内核可以从设备树中获取硬件信息
  • DTS代表设备树文件
  • DTC指编译设备树源码的工具
  • DTB是设备树源码编译生成的文件

首先我们看看内核源码
解压iotclub-ya157c-kernel.tar.bz2
得到内核源码目录
解压

VS Code打开内核源码目录
打开设备树文件 目录如下
目录
查找GPIO口LED相关部分(crtl+f
gpio

  • label:标签
  • gpios:查找外设对应的引脚进行驱动
  • trigger:触发方式设置
  • status:状态
    查找用户灯的引脚
    查找手册
    智慧物流/智慧物流课程资料/原理图/20200520_EVB_HX_RevA04.pdf
    led
    led
    查找芯片MP157引脚手册
    智慧物流/智慧物流课程资料/原理图/MYC_YA157C_PIN%20LIST-V2-2020508.pdf
    led
    修改对应gpio口
    led
    编写设备树编译脚本.sh
    脚本
    执行脚本文件编译出.dtb文件
    命令:
./my_dts_make.sh 

执行脚本
在内核同等路径下有一个编译出来的build文件,里面存放着编译好的设备树文件.dtb
dtb
scp命令传输dtb文件到开发板进行更新

sudo scp stm32mp157c-ya157c-lcd-v2.dtb root@自己开发板IP地址:/boot

scp
传输完成后reboot进行重置

reboot

reboot
/sys/class/leds/路径下可以看到刚刚添加的两个节点heartbeatmotor
sys

2.2 用命令行点亮LED灯和读取按键

我们进入led的节点heartbeat
heartbeat
命令:

echo none > trigger

将触发方式设置成none,我们才可以自行控制
none
命令:

echo 1 > brightness

熄灭LED
熄灭
熄灭
命令:

echo 0 > brightness

点亮LED
在这里插入图片描述
命令:

echo heartbeat > trigger

设置LED为心跳指示灯状态
heartbeat

2.3 编写测试程序用按键点亮LED灯/驱动E53扩展板电机

接下来我们编写测试程序
这里我们需要安装另一个交叉编译链(Ubuntu下全局可用的,之前的交叉编译链基于内核编译SDK环境下)
选用arm-linux-gnueabihf-gcc
命令:

sudo apt-get install gcc-arm-linux-gnueabihf

gcc
查看是否安装成功及对应版本
命令:

arm-linux-gnueabihf-gcc -v

在这里插入图片描述
而后我们打开key_led项目
主函数main.c文件

  1. 定义led属性路径
  2. 创建led_f文件写入点
  3. if函数判断按键event.code控制led亮灭
    led
    led
    将makefile交叉编译链更改成我们安装的arm-linux-gnueabihf-gccgcc
    打开终端(CRTL+SHIFT+`
    make编译输出可执行文件Key_LED
    命令:
make ARCH=arm
ls
cd build_arm
ls
scp Key_LED root@自己开发板IP地址:/home/root

make
开发板输入.Key_LED运行文件
led
成功用按键控制LED灯的亮灭
led
如果我们想要控制E53案例板上的电机呢?原理是一样的
修改对应的设备树文件
moter
moter
编写程序实现功能
motermoter
运行可执行文件./
可执行文件moter
驱动电机成功
moter

技术指导:
华为云社区与华为云学院:https://edu.huaweicloud.com/
人员:阿正前辈

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。