主题
Z210核心板使用指引
我们以核心板 + 底板为例,讲解基础的使用问题。
- 如何与电脑连接?
- 如何运行程序?
- 如果接的其他屏幕,如何调屏?
调试串口
调试串口是一组专用的串口,连接该串口,就是一个 Shell 终端。
可以直接执行命令,控制整个系统。
在没有其他的连接方式时,这是一个可以连接设备的保留方案。
使用PuTTY
连接调试串口
PuTTY
是一款免费、开源的远程连接软件,也可以基于串口连接Linux设备。
先将核心板供电,可以选择5V的电源,或者直接利用底板上的Type-C USB口,用USB数据线与电脑连接,完成供电。
准备一个USB转TTL的串口板。
找到底板上的
DEBUG_TX
、DEBUG_RX
、GND
脚(底板背面有标注脚位),使用杜邦线,分别连接到串口板上的RXD
、TXD
、GND
。最终连接状态如下图。
通过设备管理器,确定串口板在电脑上对应的串口号。
如果你正在使用Windwos
系统,按一下键盘上的Win
键,会弹出搜索框,输入设备管理器
,会自动搜索,再点击搜索结果,即可进入电脑的设备管理器界面。
展开端口
节点,如果串口板工作正常,可以看到对应的串口号,我这里显示串口号是COM5
。点此下载
PuTTY
软件。运行
PuTTY
软件,选择串口连接类型,输入串口号COM5
(改为你电脑上的串口号),波特率设置为115200
,最后点击打开
。如果以上步骤都正常,能看到一个黑底白字的窗口。
这时候,多次输入键盘的Enter
键, 如果你看到这样的输出,说明连接正常。
这个状态下,可以输入想要执行的命令,再按Enter
键执行。我们可以先尝试执行查看日志的命令,记住这条指令,后续开发中,会经常使用它。
shelllogcat -v threadtime
刚才的指令会实时显示程序的日志(也会显示已缓存的日志)。
如果按Ctrl-C
组合键,可以中止刚才执行的命令,中止后,又会回到可以输入命令的状态。
注意
调试串口不能用作协议通信。
协议通讯请使用普通串口,如TXD2、RXD2。
USB
底板上,有一个Type-C的USB口,可以根据需求,切换为不同的功能(只能三选一)。
- ADB
常用于调试,传输速度快,建议调屏时,开启此功能。 - U盘
可以接一个U盘,读取U盘内的文件。 - WIFI
如果开启Wi-Fi功能,这个USB口会失效,既不能作为U盘,也不能作为ADB使用。
USB ADB功能
使用USB线与电脑连接,可以使用ADB功能。
ADB 也是一种与设备的连接方案。
与调试串口相比,ADB拥有更快的传输速度,使用起来也更灵活。在后续的开发中,可以通过这个模式快速运行程序。
在有条件的情况下,我们更愿意使用这个方案连接设备。
使用USB ADB连接设备
底板上,有一个Type-C的USB口,使用数据线与电脑连接,同时数据线也可以为核心板供电。
默认情况下,设备是U盘模式,U盘模式下,只能用来接U盘,用于读取U盘。
注意
U盘模式下,即使设备与电脑的USB线连接,电脑也是看不到任何USB设备的。
连接调试串口,在
PuTTY
软件中,依次输入以下命令。shellrm -rf /data/*
shellreboot
第一条命令的作用是删除所有的配置。确保下次开机时,Wi-Fi不会自动开启(Wi-Fi和USB 功能只能二选一)。
第二条命令是控制设备重启(重新上电是同样的效果)。
等待几秒,设备重启完成后,在PuTTY
中,继续执行以下命令。shellcat /sys/devices/soc0/soc/soc:usbotg/usb_device
如果一切正常,这时候电脑会识别到一个USB设备,表示成功开启USB ADB功能。
注意
如果是默认的程序,USB ADB 不会记忆,设备重启后,需要再次设置。
USB U盘功能
底板上,有一个Type-C的USB口,使用转接线与U盘连接,可以在设备里读取U盘上的文件。
开启USB U盘功能
连接调试串口,在
PuTTY
软件中,依次输入以下命令。shellrm -rf /data/* reboot
第一条命令的作用是删除所有的配置,确保下次开机时,Wi-Fi不会自动开启(Wi-Fi和USB功能只能二选一)。
第二条命令是控制设备重启。等待几秒,设备重启完成后,在
PuTTY
中,继续执行以下命令。shellcat /sys/devices/soc0/soc/soc:usbotg/usb_host
如果一切正常,这时候电脑应该会识别到一个USB设备,表示成功开启USB U盘功能。
注意
仅支持FAT32格式的U盘。
如何调屏 / 设置屏参
如果你没有选用配套的屏,直接接上自己的屏,应该不能正常工作,需要你进一步调屏,屏幕才能正常显示。
调屏前,推荐开启USB ADB功能,调试时会更加方便。
然后具体的调屏步骤请参考调屏工具文档。
在代码中切换USB功能
Z210核心板的USB有两种工作模式:host和device,也可称为U盘模式和adb模式。设备默认是U盘模式,用来读取U盘中的文件。如果要使用USB下载调试应用,需要将USB接口切换到adb模式。切换模式通过以下代码实现:
注意:切到模式需要等wifi完全关闭,否则可能导致死机,adb模式下需要关闭wifi
- U盘模式:可以读取U盘中的文件。c
//切换到U盘模式 system("cat /sys/devices/soc0/soc/soc:usbotg/usb_host");
- adb模式:将USB接口作为调试接口,供调试程序使用。调试程序可参考adb调试和查看打印日志。c
//切换到adb模式 system("cat /sys/devices/soc0/soc/soc:usbotg/usb_device");
- 查看模式:查看当前USB接口的工作模式。shell
//查看当前USB接口的工作模式 cat /sys/devices/soc0/soc/soc:usbotg/otg_role
这些命令都可以在flythings下进行输入运行,示例:
在默认应用的设置中,可以看到USB接口的工作模式, 如下图:
打开adb调试模式后,可以进行调试程序的下载。注意:打开为adb模式,关闭为u盘模式,adb模式下无法打开wifi。
下载调试
USB下载调试
由于默认的模式是U盘模式,如果我们想要使用USB接口进行下载调试软件,就需要将其转成adb模式,先按照USB ADB功能切换到adb模式。切换完成后,打开FlyThings IDE开发工具,在菜单栏上,依次选择菜单 调试配置 -> ADB配置->USB
,选择确定,开始下载调试。
1. 在IDE菜单栏中,选择调试配置
下拉菜单中的ADB配置
。
2. 连接方式选择USB
,设置完成后应用并关闭。 3. 右击项目文件,选择
快速运行
,开始下载调试,快捷键为 Ctrl + Alt + R
。
网络调试
如果选用WIFI,需要先进入设备的WIFI设置界面,将机器连接到与电脑相同的网络,也就是说,电脑与机器必须接入同一个WIFI(如果网络不同,将无法连接)。
网络连接成功之后,点击WIFI设置界面右上角菜单按钮查看设备的IP地址。
如果选用以太网,先进入机器的以太网设置界面,点击界面右上角按钮查看设备的IP地址
得到设备的IP地址后,打开FlyThings IDE开发工具,在菜单栏上,依次选择菜单调试配置 -> ADB配置->网络
, 将机器IP填入,选择确定。工具将尝试与机器连接,如果提示连接成功,则表示正常。如果提示失败,则需要检查IP是否正确?机器连接WIFI是否正常?
- 完成上一步后,就可以直接下载程序了。在项目资源管理器中,选中项目名,右键,在弹出菜单中选择
下载调试
菜单, 选择后,它会先自动编译一次,编译成功后,再将程序下载到机器中,如果没有提示错误,那么你就可以看到机器程序已经得到了更新。同样,在选中项目后,你还可以使用快捷键Ctrl + Alt + R
下载调试。
软件升级
软件下载调试只是临时将程序下载到设备中,如果想永久保存,需要进行固化升级。固化升级首先需要制作升级包,然后通过USB线或网络的方式进行升级。升级包需要通过IDE编译生成,在IDE工具栏中找到下图所示的按钮,点击箭头按钮设置升级包的保存路径,点击圆形按钮进行编译,编译成功后,它会在设置的路径下会生成一个名为update.img
的文件,这个文件就是升级包。
通过USB线升级
首先将设备切换到adb调试模式,用数据线连接电脑和机器的USB口,在终端输入命令:
此处adb命令是在IDE工具中打开的系统命令行中输入,并不是调试串口的终端。
将升级包
update.img
推送到机器的/mnt/extsd/
路径中adb push /path/update.img /mnt/extsd/
将自动升级
zkautoupgrade
文件推送到机器的/mnt/extsd/
路径中,此文件为空白文件不要后缀名,作用是告诉机器需要自动升级。adb push /path/zkautoupgrade /mnt/extsd/
将logo图片
boot_logo.JPG
推送到机器的/mnt/extsd/
路径中,此图片为开机启动logo图片,可以替换掉原来的图片。adb push /path/boot_logo.JPG /mnt/extsd/
重启应用
adb shell setprop ctl.restart zkswe
通过网络升级
通过网络升级不需要接线,需要知道机器的IP,在终端输入命令:
连接机器的IP地址,例如IP为:192.168.1.4
adb connect 192.168.1.4
回车运行出现connect 192.168.1.4:5555代表连接成功
将升级包update推到/mnt/extsd/路径中
adb push update.img /mnt/extsd/
将自动升级zkautoupgrade文件推到/mnt/extsd/路径中,
adb push zkautoupgrade /mnt/extsd/
将logo图片推到/mnt/extsd/路径中
adb push boot_logo.JPG /mnt/extsd/
重启应用
adb shell setprop ctl.restart zkswe
通过插U盘升级
由于usb接口需要插U盘,所以要外接5V电源。必须将USB接口切换到U盘模式,同时wifi也需要关闭,才能进行插U盘升级。具体步骤如下:
外接5V电源,并连接调试串口,在终端输入命令。
rm -rf /data/* reboot
- 第一条命令的作用是删除所有的配置,确保下次开机时,Wi-Fi不会自动开启(Wi-Fi和USB功能只能二选一)。
- 第二条命令是控制设备重启,重启后在应用不设置的情况下,USB接口默认是U盘模式。
等待设备重启完成,将升级包
update.img
放到U盘中。- 自动升级文件为空白文件不要后缀名,作用是告诉机器需要自动升级。
- 可放入logo图片为开机启动logo图片,替换掉原来的logo。
将U盘插入设备,设备会自动识别到U盘,如果U盘中有自动升级文件,将开始自动升级。
完成升级后,将U盘拔出,设备会自动重启。
更多升级请参考固化升级。
插U盘通过调试串口刷机
如果升级过程当中不小心断电了,可以通过插U盘刷机的方式恢复,由于此方法USB接口需要插U盘,所以要外接5V电源,而且必须将USB接口切换到U盘模式。具体步骤如下:
通过调试串口刷机电脑需要通过USB转TTL串口模块连接板子的调试串口。
将刷机文件名字改为full_update.zk放入U盘插入板子。 注意:此处刷机文件是指系统包并不是应用的update.img文件,一般z210_xxx_zkswe.sd文件,sd文件需重命名为full_update.zk。
在将命令输入界面按回车然后上电,进入UBOOT命令操作模式(如果没出现就反复操作),如下图:
进入UBOOT命令操作模式输入zkupdate 0x21000000 0xb1 1回车就会开始刷入数据。输入数据过程中会有操作进度的日志输出(如下图),界面上有的机器也会显示刷机进度条。等待升级完成拔出U盘重启机器即可。
通讯串口
Z210核心板除了调试串口外还有一个功能串口(/dev/ttyS2
),对应引脚为TXD2
和RXD2
,用户可用它进行串口通讯。
使用SSCOM串口调试助手
SSCOM是一款开源的串口调试工具,支持多种串口通讯协议。
先将核心板供电,可以选择5V的电源,或者直接利用底板上的Type-C USB口,用USB数据线与电脑连接,完成供电。
准备一个USB转TTL的串口板。
找到底板上的
TX2
、RX2
、GND
脚(底板背面有标注脚位),使用杜邦线,分别连接到串口板上的RXD
、TXD
、GND
。最终连接状态如下图。
点击
设置
按钮,选择demo样例
,进入通讯串口测试界面。下载并安装SSCOM工具,点此下载。
打开SSCOM工具,选择端口号
COM3
(选择自己的USB转TTL串口板对应的端口号),波特率设置为115200
。点击
打开串口
按钮,连接成功后从上图可以看到设备发送的串口数据。//串口调试助手上收到的串口数据 [10:30:53.778]收←◆FF 55 00 00 01 44 67 [10:30:56.754]收←◆FF 55 00 00 01 47 64 [10:30:59.755]收←◆FF 55 00 00 01 AD FE [10:31:02.755]收←◆FF 55 00 00 01 83 28 [10:31:05.755]收←◆FF 55 00 00 01 51 5A
点击
发送
按钮,可以向设备发送数据。
核心板上收到串口调试助手的数据,数据0x51对应的十进制为81。
短接
TX2
和RX2
脚,可以实现串口数据的自发自收。
此处使用的核心板软件,在本文末尾Z210出厂样例代码中。 串口更多的使用方法,请前往开发文档中串口通讯章节,具体请参考Linux串口编程。
ADC使用
z210核心板支持ADC功能,需要用户自行设计ADC外围电路,下面是获取ADC值代码示例:
c++
#include "utils/AdcHelper.h"
static void testAdc() {
/*
*设置adc通道,默认是0,可再0-5之间设置
*当获取的adc值不正确时可尝试设置通道
*/
AdcHelper::setChannel(0);
/**
* 设置adc使能状态
*
* @param true 使能
* false 禁止
* 默认是使能状态
*/
AdcHelper::setEnable(true);
for (int i = 0; i < 10; i++) {
// 读取adc值
int val = AdcHelper::getVal();
LOGD("adc val = %d\n", val);
}
}
更多ADC使用方法,请参考ADC使用。
播放音频
Z210核心板支持播放音频文件,具体流程请参考播放音频。
样例下载
z210出厂样例代码下载点此下载。
样例包含了控件demo、mqtt协议、http协议等等,具体请参考样例代码