赛昉VisionFive2开发板eMMC无法启动解决流程
Andy18650
2024年09月04日 02:18

(本文以eMMC为例编写,对于NVMe启动的情况应该也适用,虽然作者没有亲自测试)

我于一年左右以前从微雪购买了一块VisionFive2 RISC-V开发板,买来以后就一直吃灰,直到最近参加RVSC峰会才记起来,于是决定安装个最新的Debian使用。

本着物尽其用的原则,我决定尝试使用VisionFive2上的eMMC模块接口接一块eMMC模块作为启动盘,microSD卡槽则可以空出来作可移动存储空间。但是,在正确烧写并校验eMMC镜像以后,VisionFive2仍然不能从eMMC启动(主板开关已正确设置)。我找来一块microSD卡临时烧写了SD卡镜像,并将开关设置为SD启动模式,VisionFive2正常启动,证明板子硬件无故障。在对照Wiki检查了我的操作流程没有出现失误以后,我在RVspace论坛上发表了帖子寻求帮助。

发布以后,RVspace论坛在下方推荐了另外一个相似的已解决问题。

我顺藤摸瓜找到了芯查查网上的开箱体验和固件升级教程:

但是,这篇教程里的固件更新流程比较繁琐而且已经过时,需要将其中的官方教程链接复制到浏览器地址栏以后访问才能获得最新教程。

注意,更新固件需要使用串口启动,所以需要提前准备USB转串口模块和支持Xmodem协议的PC端串口终端软件。(作为参考,我使用的是CP2102和TeraTerm,但是其他的模块应该也可以使用)在断电状态下将开发板设置为UART启动模式(USB口向自己,两个开关都向左),然后上电。如果开发板不断输出C,代表正在等待Xmodem输入(不是开发板坏了,我当时看到一串C以为开发板死循环了,其实不是)。将Github仓库starfive-tech/Tools/recovery下合适版本的bin文件(我拥的是jh7110-recovery-20230322.bin)通过Xmodem发送给开发板。开发板输出以下界面:

这里我们需要做的是0和2。注意SPL和uboot不要跟着Tools仓库的建议去手动build(虽然应该可以,但是绕了远路,我差点掉这个坑里),可以去starfive-tech/VisionFive2仓库的releases里面,从最新发布的release下载(同样注意不要使用芯查查教程里的链接,那个链接是很多个版本以前的)。下载以后,在串口终端输入数字然后回车选择功能,开发板应该会输出CCCCC。。。并等待文件传输。传输完成一个文件以后,开发板会自动烧写flash。烧写完成以后,串口终端应回到功能选择界面,此时选择另一个项目烧写即可。(烧写的顺序应该没有影响,但是作为参考,我先烧写了u-boot-spl,再烧写了fw_payload)

两项都烧写完成以后,将开发板断电,启动模式设置为flash(USB口向自己,两个开关都向右),装上eMMC模块(或NVMe硬盘)后,开发板正常从eMMC(或NVMe)启动,如不能正常启动,则考虑检查启动设备和镜像的完整性。

注意,开发板上启动开关的SD和eMMC启动选项都已deprecated,不建议使用。现在这两个启动都应选择flash,然后flash中的启动模块会自动寻找可以启动的设备启动。

总结:

固件是任何开发板的重要组成部分,但也是经常被忽视的部分。新买的/长期未使用的开发板出现无法启动的情况,应该先考虑更新固件。(其实不怕break的话,经常使用的开发板也可以紧跟最新固件)

国产RISC-V处理器的社区开放程度,活跃程度和文件的丰富程度都已经做到了相当的水平,甚至不输很多老牌ARM开发板。但是,RVspace在文件的可及性和可查性上还有待提升。比如,在RVspace的Wiki上,搜索固件,firmware,bootloader,启动都没有任何结果,这次问题的顺利、快速解决,也有一定运气的成分在里面(正好看到老帖子,两次多想了一下没掉坑里面——没有跟着教程去远程登录更新固件,没有自己build固件)。所以我认为,文档和资源多则多矣,要达到媲美大ARM开发板项目的话,RVspace还需要在文件的结构整理和搜索的便捷性上做一些打磨。

总之,国产处理器加油!RISC-V加油!