问题描述
两块 junroc 方形 K230D CanMV AI Cam(无 BOOT 拨码开关),都出现同样的问题:一开始烧录后能正常启动、正常运行,但跑一段时间再重新烧录几次后,串口就只打印 boot failed with exit code 17 和 boot failed with exit code 20,连 U-Boot 横幅和 SPL 的 DDR 信息都没有,看起来是卡在芯片内部 ROM 阶段;期间我试过换 TF 卡、Rufus 和 balenaEtcher 两种工具、以及换回旧版官方固件(commit b63f767),镜像文件也确认过 GPT 头和 U-Boot SPL 都完好,但统统无效,而且这现象在第二块板上也一样复现。想请教一下:这种情况是不是固件在运行过程中把板子的 OTP 安全启动熔丝熔断了、导致之后只认带签名的安全镜像.如果是的话,有没有对应的带签名固件或官方恢复流程能救回来,还是要返厂换板
复现步骤
准备:一块 junroc 方形 K230D CanMV AI Cam 板子 + 一张 TF 卡 + 镜像文件 sysimage-sdcard-junroc.img.gz(解压后 428MB 的 sysimage-sdcard.img)。
烧录:用 balenaEtcher(或 Rufus 选 DD 镜像模式)把 sysimage-sdcard.img 整盘写入 TF 卡。
首次启动:卡插入板子,Type-C 上电,串口(115200)连接。此时能正常启动——串口依次出现 U-Boot SPL 2022.10、DDR 训练(PMU Major Msg)、U-Boot 2022.10 横幅、Linux 内核日志,最后到登录提示。
正常运行一段时间:跑摄像头例程或正常使用,持续几分钟到几十分钟(期间板子对 TF 卡有读写,如 resize2fs 等首次启动操作)。
断电,重新烧录:拔电,用 Etcher/Rufus 重新烧同一个(或另一个)镜像到 TF 卡,重复烧录 2~3 次。
再次上电:串口只打印:
boot failed with exit code 17
boot failed with exit code 20
没有 U-Boot SPL、没有 U-Boot 2022.10 横幅,启动直接停在芯片 ROM 阶段。
验证不可逆:换一张新 TF 卡、换旧版官方固件(commit b63f767)、换烧录工具(Rufus ↔ Etcher),结果都一样,板子永久停留在 17/20。
硬件板卡
开发板:junroc 方形 K230D CanMV AI Cam(无 BOOT0/BOOT1 拨码开关) 主控:嘉楠 Kendryte K230D(RISC-V 64 位双核,大核 Linux + 小核 RT-Smart) 设备树识别名:K230D CanMV Junroc AI Cam 摄像头 Sensor:GC2093(parse_sensor_dt: port 0 sensor=gc2093) 屏幕:480×800(edt_ft5x06 触摸) TF 卡:16GB(mmcblk0: SD 14.6 GiB)
软件版本
sdk:v1.2-20260822-013251-ubuntu-VM-0-13-ubuntu-42f0988-nncase2.11.0