问题现象
RC场景下,装有华为昇腾Atlas 200加速模块的开发板无法启动系统。
将制作好系统的SD卡插入开发板,0号串口输出的日志卡在Start to jump Linux kernel
,之后没有更多输出。
可能原因
一种比较大的可能是——在制作系统时,你使用的软件包(如Atlas 200 1.0.13.5)内含的固件版本太高(1.0.13.5软件包的固件版本为1.80.22.5.220)。
我的环境
硬件环境
- 华为昇腾 Atlas 200 AI 加速模块(RC场景)
- 自己设计的外围开发板
软件环境
- 自己编译的系统内核及驱动,基于软件包 Atlas 200 1.0.13.5 (驱动版本 21.0.4.9;固件版本 1.80.22.5.220)
- 系统发行版为 Ubuntu18.04
软件包的下载页面:
软件包内部包含的文件:
制卡参考文档
Atlas 200 AI加速模块 1.0.13 软件安装与维护指南(RC场景)04
解决思路
既然系统所需的固件版本太高,那么我们可以准备一张新的SD卡,先烧录一个低版本的系统镜像。如果低版本镜像能够成功启动,我们再进入系统手动升级驱动。升级完驱动之后,将原来的SD卡插入机器,此时应当可以正常启动。
寻找低版本镜像
准备一张新的SD卡。
我们可以先在华为开发论坛中找到一个合适的200DK低版本系统镜像(如,固件与驱动版本:1.0.11 CANN版本:5.0.3alpha002),将其烧录到新的SD卡中。
将新准备的SD卡插入开发板。如果系统成功启动,串口会出现>>>>>>>>>>>>LiteOS start succeed!<<<<<<<<<<<
字样与登录提示。
升级固件
如果能够通过串口登录系统,接下来我们将固件上传到系统中(可以使用多种文件传输途径。本教程选择直接将SD卡取出,挂载到另一台电脑上传输文件),最后进入系统手动升级固件。
本节的参考文档为你们当时制卡时的参考文档。
-
将开发板断电,取出刚刚烧录的新SD卡。将其插入并挂载到一台Linux机器中。找到并进入SD卡文件系统中的
/home/HwHiAiUser/
目录。 -
软件包中有一个名称类似于
Atlas-200-sdk_xxx.zip
的压缩文件,解压后会得到固件升级包Ascend310-firmware-<version>-minirc.run
。将固件升级包拷贝到Atlas 200 AI加速模块所在系统的任一目录下,例如将其拷贝到刚才进入的/home/HwHiAiUser/
目录。
-
确认拷贝成功后拔出SD卡,插入到开发板中。开发板系统启动后从串口登录进用户HwHiAiUser。切换到root用户,执行升级命令。
# 以下命令应当在RC场景的开发板中执行
su
chmod +x ./Ascend310-firmware-*-minirc.run
./Ascend310-firmware-*-minirc.run --upgrade
执行完此命令后,固件相关文件存储在/usr/local/Ascend/firmware
目录下。
-
执行
reboot
重启命令,进行开发板的重启,从而完成固件包的升级。升级过程中请勿将Atlas 200开发板断电,升级时间15分钟左右(文档原文。我这里系统很快就重启完毕了)。 -
待Atlas 200 AI加速模块启动完成后,执行如下命令,查看升级后的Atlas 200 AI加速模块版本号。
# 执行如下命令,进入driver目录。
cd /var/davinci/driver/
# 执行如下命令,读取版本信息,与固件包版本信息一致即表示升级成功。
./upgrade-tool --device_index -1 --component xloader --version
./upgrade-tool --device_index -1 --component uefi --version
- 将SD卡替换为最初(系统无法启动)的SD卡,尝试给开发板上电,此时系统应当正常启动。