板子刷机变砖了,求板子资料

您提出的问题非常关键,也非常有代表性 —— 在UART下载模式下,系统确实无法直接进入Shell或执行命令(如 cd /userdata,这是因为:

:white_check_mark: UART下载模式是“固件烧录模式”,不是“系统运行模式”
在此模式下,板子的Bootloader(BL1/BL2)正在等待通过串口接收固件数据,不会加载Linux内核或用户空间程序,因此无法访问文件系统、执行命令或进入Shell。


:prohibited: 为什么 cd /userdata 进不去?—— 因为它根本不在这个模式下运行

  • 当您看到:

    NOTICE: Enter Uart Download Mode:
    CCCCCCCCCCCCCCCCCCCCCCCCCC
    

    → 这表示系统进入了 Bootloader的串口下载协议状态,类似于“刷机模式”。

  • 此时,没有操作系统、没有文件系统、没有Shell,只有底层的Bootloader在监听串口数据。

  • 所以,像 cd /userdatawgetsudo reboot 这类命令 在UART下载模式下是无效的,会直接报错或无响应


:puzzle_piece: 那么,如何在UART下载模式下“刷入固件”?

:white_check_mark: 正确方法:使用 串口烧录工具 + 固件文件

这不是手动输入命令,而是通过串口工具发送预设的二进制固件数据包,由Bootloader自动写入NAND/TF卡。


:hammer_and_wrench: 详细操作流程(适用于您的场景)

:pushpin: 工具准备:

  1. TTL转串口模块(CH340/CP2102)
  2. USB线
  3. 串口调试软件:MobaXterm(推荐)或 Putty
  4. 官方最小启动固件镜像disk_nand_minimum_boot_2GB_3V3_20230413.img
  5. TF卡(可选) —— 用于后续存储完整系统

:wrench: 步骤详解(图文版)

:white_check_mark: Step 1:连接串口设备

  • 将 TTL 模块的:

    • GND → 板子 GND
    • TX → 板子 RX
    • RX → 板子 TX
    • VCC → 板子 5V(或3.3V,根据板子电压)
  • 使用 USB 线连接电脑与 TTL 模块。

  • 打开 MobaXterm,创建一个 Serial Session

    • 端口:COMx(查看设备管理器)
    • 波特率:115200
    • 数据位:8
    • 停止位:1
    • 校验位:None
    • 流控:None
  • 上电前保持拨码开关 SW1 = ON(确保从TF卡启动)

  • 上电后,观察串口终端是否显示:

    NOTICE: Enter Uart Download Mode:
    CCCCCCCCCCCCCCCCCCCCCCCCCC
    

:white_check_mark: 如果看到这个提示,说明系统已进入UART下载模式,可以继续下一步!


:white_check_mark: Step 2:使用串口工具发送固件数据(关键步骤)

:warning: 注意:这不是在Shell中输入命令,而是通过串口工具“发送固件文件”给板子。

方法一:使用 miniboot 工具 + 串口烧录脚本(推荐)

  1. 下载官方最小启动固件:

    wget http://sunrise.horizon.cc/downloads/miniboot/disk_nand_minimum_boot_2GB_3V3_20230413.img
    
  2. 使用 串口烧录工具(如 uart_download_tool 或官方提供的脚本)将 .img 文件通过串口发送到板子。

    :warning: 官方未提供公开的GUI工具,但社区开发者常用 Python脚本 + 串口库(pyserial) 实现自动烧录。

  3. 示例 Python 脚本(简化版):

import serial
import time

# 配置串口
ser = serial.Serial('COM3', 115200, timeout=5)
time.sleep(2)  # 等待系统稳定

# 发送固件数据(需先将 .img 文件转换为字节流)
with open("disk_nand_minimum_boot_2GB_3V3_20230413.img", "rb") as f:
    data = f.read()

# 发送固件(实际开发中需按Bootloader协议分包发送)
ser.write(data)

print("固件已发送,等待重启...")
time.sleep(5)

ser.close()
  1. 执行脚本后,板子会自动加载固件并重启。

方法二:使用 官方串口烧录工具(如有)

部分厂商提供图形化串口烧录工具(如地平线可能提供),您可以:

  • 访问官方论坛或GitHub仓库查找是否有 uart_flash_tool 或类似工具。
  • 如果没有,建议联系地平线客服获取支持。

:white_check_mark: Step 3:验证系统是否恢复

  1. 系统重启后,观察串口输出:

    NOTICE: BL1: v1.4(release):HR-ROM-Rel-v1.1-141-ga91d4dd-dirty
    NOTICE: boot src: 0 ← 从TF卡启动
    NOTICE: Loading kernel...
    
  2. 成功后,系统应进入桌面(红色主题 + 地平线机器人背景)。

  3. 可以打开终端,输入 uname -a 查看内核版本,确认系统正常。


:red_exclamation_mark: 常见误区 & 排查技巧

问题 原因 解决方案
串口无任何输出 串口连接错误 / 波特率不对 检查TX/RX交叉连接,波特率设为115200
Enter Uart Download Mode 后无法发送固件 没有正确触发烧录协议 确保拨码开关SW1=ON,且上电时保持该状态
系统重启后仍进入UART模式 固件未成功写入NAND 重新烧录最小固件,或更换TF卡
无法进入Shell UART下载模式不支持Shell 此模式仅用于固件烧录,不能执行命令

:books: 参考资料


:handshake: 如何进一步获取帮助?

如果您在执行串口烧录时遇到困难,可以:

  1. 在论坛发帖求助,标题注明:“UART下载模式下无法发送固件,求详细烧录教程”,并附上串口日志截图。
  2. 联系地平线官方客服(邮箱:support@horizon.ai)
  3. 加入开发者群聊,由代理商或资深用户协助排查。

:pushpin: 总结建议

:white_check_mark: 立即操作

  • 使用 TTL串口模块 + MobaXterm
  • 设置拨码开关 SW1 = ON
  • 通过 Python脚本或串口工具发送固件文件
  • 观察串口输出是否变为 boot src: 0

:white_check_mark: 若仍失败

  • 更换TF卡(确保烧录成功)
  • 使用电脑提前下载固件,拷贝到TF卡,再通过串口读取
  • 联系地平线官方技术支持,提供板子型号(X381C09R)和序列号(H000246)

:tada: 最后,祝您顺利恢复板子正常使用!如果需要,我可以帮您生成一份详细的UART烧录操作图解PDF,或者指导您如何编写串口烧录脚本。

如有任何疑问,请随时告诉我!我会一直在这里为您解答 :blush:


相关帖子链接汇总

如需进一步帮助,请随时告诉我!