首页 > 技术知识 > 正文

大家好,我是小A。从这篇开始我们要开始进入正轨了。

与君初相识:

作为小A的HarmonyOS之旅的第一站:Hi3861 – WiFiIot,到现在为止我们还没有跟它正式见面。那么接下来,我们就先来个破冰吧。

这个就是我们的主角。As usual,通常我们拿到一块板子之后,我们第一件是什么?没错,就是有串口的串口,有屏幕的接屏幕,然后上电先玩一下。那么我们先给3861接个打印,上个电先。

如何接打印:

接法一:

板卡板载一颗CH340G做了usb-ttl之间的转换,因此我们可以直接通过type-c口即可以完成供电又可以完成串口通信。

一般情况下,我们使用串口的时候是先配置并打开好串口终端后,然后再给设备上电启动,这样的好处是我们首次上电就可以捕捉到所有的开机输出信息了。

但是这里板载usb转ttl的设计带了一个弊端,那就是必须先给板子通电,否则对应的端口就没有办法正确打开,我们就不能预先打开并设置好串口,从而捕获所有的信息了,必须reset一下。

接法二:

这里小A提供了另一种方案,适合嵌入式开发的小伙伴,因为需要借助人手必备的usb装ttl小板,对,没错,就是大家常见的这种土豪金,

[HarmonyOS之旅]  Chapter3 – 破冰Hi3861

小A用的是

[HarmonyOS之旅]  Chapter3 – 破冰Hi38611

感谢ebaina😜。

在硬件设计上Hi3861的打印uart的Rx和Tx其实并不是直接布线到Ch340G的引脚上完成电气连接,而是通过跳帽完成的,细心的小伙伴,通过上面的板卡图就可以发现。这里设计的左边一列是CH340G的引脚排针,右边一列是Hi3861的引脚排针。因此我们要做的就是把右边一列正确的对应连接到土豪金上。这里根据小A的实验,右边从上到下分别是Tx和Rx。当然这里的Gnd可以视情况而定,由于小A的土豪金和type-c是接在同一个hub上的,那么其实就可以不接的,因为本身已经是供地的。当然咯,这个其实并不规范,最好还是接上Gnd,养成习惯。

The next:

ok。现在我们就上电吧。

[HarmonyOS之旅]  Chapter3 – 破冰Hi38612

ok,到这里基本上就代表着uart连接正确了。在这里小A要补充一下:不知道大家还记不记得在之前我有提到过

[HarmonyOS之旅]  Chapter3 – 破冰Hi38613

伴随这个现象的同时,偶尔也会不弹出无法识别usb设备的黄色警告,必须得重新插拔hub,这样的体验可太糟糕了!!!!!

But,自从小A使用第二种外接土豪金的方法后,这个困扰小A的问题就再也没有出现过啦,因此小A觉得,这个品控或者选料或者设计还是有可优化的地方的,小A这里就不继续探究了,留待有缘人吧。

自我介绍:

now,回到正题。上图就是开机的所有打印了,很简短的一段话,我们来看看有什么Hi3861的自我介绍说了什么。

//上来就是os start,似乎表明下面全是HarmonOS的内容了,不包含bootloader的引导过程,和linux有点区别,倒是有一点点像liteos的mini-boot的风格。 ready to OS start //SDK版本以及Time:这个风格好像liteos啊 sdk ver:Hi3861V100R001C00SPC025 2020-09-03 18:10:00 //有文件系统挂载。 FileSystem mount ok. // 有wifi wifi init success! //有日志管理模块 00 00:00:00 0 132 D 0/HIVIEW: hilog init success. 00 00:00:00 0 132 D 0/HIVIEW: log limit init success. //不知道是不是前端开发所说的bootstrap框架 00 00:00:00 0 132 I 1/SAMGR: Bootstrap core services(count:3). //启动了若干服务 00 00:00:00 0 132 I 1/SAMGR: Init service:0x4ae4fc TaskPool:0xfa1e4 00 00:00:00 0 132 I 1/SAMGR: Init service:0x4ae520 TaskPool:0xfa854 00 00:00:00 0 132 I 1/SAMGR: Init service:0x4ae630 TaskPool:0xfaa14 00 00:00:00 0 164 I 1/SAMGR: Init service 0x4ae520 <time: 0ms> success! 00 00:00:00 0 64 I 1/SAMGR: Init service 0x4ae4fc <time: 0ms> success! //不知道和手机的hiview是不是同样用来管理数据流量和电池电量的 00 00:00:00 0 8 D 0/HIVIEW: hiview init success. //又启动了若干服务 00 00:00:00 0 8 I 1/SAMGR: Init service 0x4ae630 <time: 0ms> success! 00 00:00:00 0 8 I 1/SAMGR: Initialized all core system services! 00 00:00:00 0 64 I 1/SAMGR: Bootstrap system and application services(count:0). 00 00:00:00 0 64 I 1/SAMGR: Initialized all system and application services! 00 00:00:00 0 64 I 1/SAMGR: Bootstrap dynamic registered services(count:0).
<

大致上我们目前能知道的信息就这么多了,这里已经留下了几个疑问,暂时先不管,后面我们再慢慢探究。

有来必有往:

ok,到这里的话,上面Hi3861的自我介绍已经结束了,那么接下来我们是不是要展现一下我们的友好,响应一下它?那么先在终端中敲个回车看看?

[HarmonyOS之旅]  Chapter3 – 破冰Hi38614

Excuse me?怎么全是Error?不要紧张,因为Hi3861作为一个定位为wifi iot的产品,它既没有跑linux,也不是liteos,所以也是没有shell的。通过串口终端,它只支持部分AT命令,如果输入不符合它的解析规则的话,要么是ERROR,要么是无响应只有输入回显。而且它的回车换行也是有讲究的,比如小A的Mobaxterm发送AT命令就不行,只能卡在字符后面毫无反应。

[HarmonyOS之旅]  Chapter3 – 破冰Hi38615

怎么办?先切换到vscode下

[HarmonyOS之旅]  Chapter3 – 破冰Hi38616

如上配置后就可以正常输入命令了,原因就在于换行符是不是“\r\n”,MobaXterm的换行符默认是’\r‘,所以会有些异常。

如果你的常用工具的效果和小A是一样的话,如果可以配置换行的话,那就配置一下,如果不能的话,要么选用vscode ,要么就等待下一期看小A怎么折腾吧。放弃mobaxterm是不可能的,这辈子都不可能。有了大彩电,谁还看熊猫啊,是也不是?😉

总结:

Hi3861的破冰行动,大致上就到这里啦。下一篇小A就会开始和Hi3861的相爱相杀啦,先来改造一下它的换行如何?

猜你喜欢