0. 写在前面
关于 Atlas 200 AI 卡的系统问题,在浏览帖子时发现这样一段话:
【Atlas200(RC)连FPGA(EP)】,PCIe、eMMC及文件系统问题_昇腾硬件_昇腾论坛
这和我们之前遇到的情况一模一样。我们使用 A 卡完成制卡且可以正常启动,但替换为 B 卡却无法正常启动。经查询,A 卡和 B 卡的固件版本存在显著差异。A 卡的 UEFI 和 xloader 固件版本为 1.84.15.1.310,而 B 卡的版本为 1.3.2.893。这种版本差异可能是导致 B 卡无法适配当前制卡包的原因。
为了解决这一问题,我们计划参考旧版本制卡流程,先使用 A 卡进行旧版本制卡包的制卡操作,然后验证 B 卡是否能够在旧版制卡包中成功启动。如果A、B 两卡都能成功启动,则进行相应的固件升级操作。
1. 旧版本制卡包制卡
这里需要准备旧版制卡包的资源。因为华为官方并不对个人提供旧版制卡包,所以我使用的是全爱科技官网提供的制卡包。链接如下:全爱科技 - 下载中心 。
这里我使用的是 A200-3000 1.0.0.SPC209 软件包。
2. 升级固件
使用旧版本制卡包进行制卡,A、B 两卡都能成功启动并登入到 Ubuntu 系统了。但是原本高固件版本的 A 卡此时固件版本与 B 卡一样了,均为 1.3.2.893。所以我们还需要进行两张卡的固件和驱动升级。
这里需要准备你想要升级版本的固件包和驱动包。很幸运,这些资源华为官方都有给个人提供。不过上面提到的全爱科技官网也有提供相应资源。这里我以华为官网的 6.0.RC1 版本为例,想要升级固件和驱动需要准备以下两个文件,即:
Ascend310-driver-6.0.0-ubuntu18.04.aarch64-minirc.tar.gz
Ascend310-firmware-6.0.0-minirc.run
这两个文件都能在 社区版-固件与驱动-昇腾社区 的 Atlas-200-sdk_6.0.0.zip 文件里面解压缩得到。
之后就参考着以下链接进行升级即可,升级过程中不需要短接串口进入到维护模式。
安全启动固件文件描述 - Atlas 200 AI加速模块 1.0.9 软件安装与维护指南 (RC场景) 06 - 华为https://support.huawei.com/enterprise/zh/doc/EDOC1100181242/5cbfc07e?idPath=23710424|251366513|22892968|252309141|250702933#ZH-CN_TOPIC_0265783421值得注意的是,如果将 A 卡升级成功后,再换上 B 卡,B 卡是不能成功启动并登入 Ubuntu 的。个人猜想是升级过程中旧版本的软件包被升级成高级软件包了,导致低固件版本的 B 又不能和高版本软件包适配了。
解决办法:短接串口进入 B 卡的维护模式,并进行旧版本制卡包的重新制卡,然后下电,取消串口的短接并重新上电,待到进入 Ubuntu 系统后再重复升级的操作步骤。这样 A、B 两卡就都是高版本的固件了。
3. 新版本制卡包制卡
个人认为还是需要用新版本制卡包进行制卡的,这里以 6.0.RC1 版本为例,依照以下链接来进行制卡操作。使用上述的 A 卡或者 B 卡都能完成。
4. 测试
在同一块自制底板上测试不同的 Atlas 200 加速卡,在使用新版本制卡包的情况下,无论是 A 卡或是 B 卡都能正常启动并进入 Ubuntu 系统。这下完美解决了问题。之前我还以为 B 卡就要变成板砖了……
5. 最后的说明
Ubuntu 系统的所有数据都存储在了 emmc 芯片里面,个人感觉更换了 Atlas 卡就是更换了一个处理器而已,至于数据是不受卡影响的。
我手上有 8g 运行内存和 4g 运行内存的 Atlas 200。在使用 8g 卡时,我往系统里新建了一个 tmp.txt 文件,Total Ram 指标显示为 8g。更换为 4g 卡后,依然能在系统中看到之前新建的 tmp.txt ,同时 Total Ram 指标显示为 4g。这也证明了我的猜想。