Loading...
首页专栏详情
打赏

[HarmonyOS之旅] Chapter3 - 破冰Hi3861

 
2人已赏
易百纳技术社区 codinglab 2020-12-18 19:15:33
大家好,我是小A。从这篇开始我们要开始进入正轨了。

与君初相识:

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

image-20201215211558842

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

如何接打印:

接法一:

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

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

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

接法二:

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

image-20201215212400021

小A用的是

image-20201215212737568

感谢ebaina😜。

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

The next:

ok。现在我们就上电吧。

image-20201215192432228

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

image-20201215192941052

伴随这个现象的同时,偶尔也会不弹出无法识别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的自我介绍已经结束了,那么接下来我们是不是要展现一下我们的友好,响应一下它?那么先在终端中敲个回车看看?

image-20201215195140815

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

image-20201215195757441

怎么办?先切换到vscode下

image-20201215195947810

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

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

总结:

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

评论
1个
内容存在敏感词
  • 给我一个支点,让我撬动地球~

    期待更多文章

打赏作者
codinglab
您的支持将鼓励我继续创作!
金额:
¥1 ¥5 ¥10 ¥50 ¥100
支付方式:
微信支付
支付宝支付
微信支付
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区