封面《E スクールライフ》
问题描述
haas100 无法进行烧录,报错 Please connect the serial port of the board to the PC,then reset the board.
。
问题解决方案
Please connect the serial port of th board to the PC,then reset the board.
这个问题找不到啥解决资料,官方群里问了也没有没人回应。只能自己翻阅一下 haas 百事通查查有没有类似资源。找到了其中一条信息如下:
【情形 5】: 提示 “Please reboot board now”
解决办法:目前发现部分 HaaS100/ EDU K1 由于出厂固件中没有二级 boot,现象就是一直提名用户 please reboot board now;遇到该问题的同学请先参考这个文档请用下面链接中的 “Windows GUI” 工具烧录即可解决。之后再用 vscode + haas studio 烧录也不会出现问题。
由此我们初步猜测可能是二级 boot 出了问题,导致 haas studio 无法对 haas100 进行软重启。因此我们打开 {Your Project}\hardware\chip\haas1000\release\write_flash_gui
运行其中的 haas1000_write_flash_main.exe
。结果发现闪退。无法发现明显原因,那么我们从命令行打开,很明显的就能看到错误原因。比较明显是阿里的人员在编译烧录工具出了问题。
考虑到之前有人使用该工具烧录成功过,且该工具是使用 git clone 下来的。那么可以去 github 找找看有哪个版本的是烧录的。
2021-11-18 更新:闪退原因在于缺少
productline_cfg.xml
文件,下载 productline_cfg.xml 并放入wirte_flash_gui
文件夹即可,不必再下载整份工程
1 | git clone https://github.com/alibaba/AliOS-Things.git -b dev_3.1.0_haas |
执行上面的 git 命令,打开 {your path}/AliOS-Things/platform/mcu/haas1000/release/write_flash_gui
目录中的 haas1000_write_flash_main.exe
。这次可以看到 gui 工具打开成功了。
后续的工作就和官方的操作一样了,官方教程链接放在了底下的参考资料中,但是需要注意的是我们不是只升级二级 boot,而是全部重新烧写。
最后测试能否烧写我们的工程,烧写结果如下所示。我的代码成功的烧录进了板子中。
外谈
运行 aos make clean
发现出错,错误原因见下
1 | /usr/bin/bash: -c: line 1: syntax error: unexpected end of file |
这个问题倒是比较常见,因为 Windows 的 EOL (End of Line) 是由回车 CR 和换行 LF 组成,这也是为什么我们需要在串口输出中加上 \r\n 才能换行。而 Linux 中的 EOL 是 LF。因此在 Linux 中运行 Windows 中写的文件会有这个问题。
从错误开头的 /usr/bin/bash
可以发现是 Linux 的 bash,个人推测这个应该是因为我的电脑里面装有 wsl2。从 makefile 看一下需要删除的文件。
1 | ifeq ($(OS), Windows_NT) |
观察发现 aos_sdk 文件夹为 *.a 应该是到时候要链接的类库,EOL 是 LF。out 文件夹里面是 *.d,*.o 还有 bin 文件,基本上为编译中间产物和最终文件,EOL 为 CRLF,aos.elf 和 aos.map 的 ROL 都是 CRLF,同时发现执行 aos make clean
后就删除了 aos_sdk 中的内容。
明白了原因就很容易解决该问题了。看 makefile 中的命令,应该是用 cmd 运行。因此只需要在 makefile 的第一行加上一句 SHELL := C:\Windows\System32\cmd.exe
。指定运行的 shell 为 cmd 即可。修改后的运行结果如下。
外谈 2
没想到吧,还有 2。其实是我懒得新建一个文章了。
本次主要添加一个 powershell 中激活 aos 的小脚本。由于我个人不是很喜欢 haas 这个插件的目前版本。因为他总是在各个目录下启动,并新建一个终端修改环境变量。于是我平时不用 haas 时就把这个插件禁用了,但是由于我偶尔由需要打开 haas 工程编译一点点内容,此时需要重新激活插件略微有点麻烦。考虑到 haas studio 基本上都是使用 aos-tools 完成,所谓的修改环境变量也只是为了方便找到 aos-tools。在熟悉了 aos 的几个基本命令后,不使用 haas studio 也能够完成开发,这样只需要临时修改环境变量就可以直接完成工程,而不用使用那烦人 haas studio 了。
激活脚本如下,和 haas 的命令一样,将下面的路径改为你的路径。然后只需要将这段代码保存成 activate.ps1
或者其他你自己命名的文件,但要注意结尾为.ps1
。然后在 powershell 运行就可以临时激活 aos
了。$Env:Path
只是临时修改环境变量,只需要关闭该终端就可以关闭 haas,因此就没写 deactivate 文件。如果说需要任何地方都可以激活的话,也可以将其放在环境变量里面。
1 | # 保存成 activate.ps1 |
后记
在成功烧写后,我玩了一下 haas100 这块板子,感觉板子还是不错,做的还行。但是这个开发工具实在不行,问题有点多。希望阿里能够完善一下,不然这个工具就会劝退好多人了。