嘉楠科技
直播中

张桂英

8年用户 1604经验值
私信 关注
[问答]

使用K230 BurningTool 烧录 EMMC镜像报错怎么解决?

报错信息:timeout for Waiting Device Plug in
之前一直在使用CANMV-ide 某次开发板断电后重连,发现运行代码时缺少了dev/touch(0)这个库,怀疑是断电误删了文件,故重新烧录SD卡镜像,还是发生如上报错。然后又想重新烧录EMMC镜像,突然发现无法烧录。
想求解的第一个问题是 dev下的文件是保存在SD卡内还是开发板EMMC内
第二个问题是为什么使用K230 BurningTool 烧录 EMMC镜像报错
真诚发问,谢谢

回帖(1)

张昂笙

2025-7-25 18:14:22

针对你遇到的K230开发板问题,我来详细分析并提供解决方案:


? 第一个问题:/dev/touch(0) 文件存储位置




  1. /dev 目录的本质



    • /dev 是 Linux 系统的虚拟目录,存放的是 设备文件节点?。

    • 这些节点是内核在系统启动时 动态创建 的,并非存储在硬盘、SD卡或eMMC上。

    • 每个节点代表一个被内核识别到的硬件设备(如串口、I2C设备、GPU、TPU、传感器、触摸屏等)。用户空间程序通过读写这些文件来与硬件交互。




  2. 驱动程序和配置的位置



    • 驱动程序touch 设备需要对应的内核驱动模块或编译进内核的驱动支持。这些驱动代码存储在 内核映像(位于eMMC或SD卡上) 中。

    • 设备树:描述硬件连接、地址、中断等关键信息的二进制文件 dtb 也在 系统镜像(位于eMMC或SD卡上) 中。

    • 用户空间工具/库CanMV 提供的访问 /dev/touch(0) 的 Python 库文件 touch.py 或其他相关库,通常位于 文件系统(位于SD卡或eMMC上)/lib/usr/lib 等目录下。




  3. /dev/touch(0) 丢失的原因分析



    • 你遇到的 /dev/touch(0) 缺失,不是文件被误删(因为它不是普通文件),而是系统重启后内核未能成功加载触摸屏驱动未能根据设备树配置在 /dev 下创建设备节点

    • 常见原因

      • 硬件问题:断电可能导致硬件(触摸屏IC、连接线)或相关电路不稳定、虚焊或损坏,导致上电初始化失败。

      • 设备树损坏/不匹配:异常断电损坏了存储设备树或内核的eMMC/SD卡区域。之前正常可能只是内存中缓存未失效。

      • 内核损坏:异常断电损坏了内核镜像文件。

      • 固件/驱动版本问题:SD卡镜像是旧版本或与硬件批次不完全匹配。

      • 瞬时软件错误:某次启动时内核加载驱动或初始化硬件的顺序或状态意外出错(再重启可能恢复)。





结论:断电不会误删/dev下的设备节点,但可能导致硬件故障、eMMC/SD卡上的系统文件(内核、设备树)损坏或不一致,或者驱动加载失败,从而导致/dev/touch(0)节点未能被创建。 文件系统和驱动等核心组件通常存储在eMMC或SD卡上(看你当前运行的系统从哪启动)。


? 第二个问题:K230 BurningTool "Timeout for Waiting Device Plug in" 报错分析及解决


这个报错意味着烧录工具无法检测到开发板以烧录模式连接。这是固件烧录最基础的故障,原因可能涉及硬件连接、驱动、操作步骤或开发板状态。我会按照优先级从高到低排列解决方法:


? 最需要检查的环节




  1. 硬件连接检查 (首要!!)



    • 更换USB线: 这是最常见的原因。很多随机赠送的USB线质量较差(尤其micro USB线),只能传输数据不能正常使用。务必更换为一条已知可以稳定传输数据的高速USB线 (最好是购买品牌配件)。

    • 检查USB端口: 尝试电脑的不同USB端口 (最好插在主板原生USB 3.0接口上)。避免使用USB HUB。关机重启电脑有时能解决USB控制器临时故障。

    • 接口确认: K230通常有两个关键物理接口:

      • 调试串口 (Debug UART): Micro USB口,连接到电脑后在设备管理器中显示为USB Serial Device (COMx)CP210x/CH34x (需要驱动)。烧录工具不直接依赖这个口通信。

      • OTG烧录口: 需要确认开发板文档,通常是特定的Type-C口或Micro USB口。这个口必须连接到电脑。K230板载的可能是一个标注为OTGUSB的Type-C口。确认你插对了用于烧录的OTG口而非仅连接了调试串口。





  2. 开发板状态与操作流程 (关键!!)



    • 确保开发板完全断电: 拔掉所有电源(包括USB和外部适配器)。有些开发板的OTG供电不稳定,需要断开。

    • 进入烧录模式 (FEL Mode):

      • 找到板上的 BOOTFEL按钮 (通常印刷标识为BOOT)。

      • 按住这个BOOT/FEL按钮不放

      • 在按住按钮的同时,将烧录用USB线连接到电脑

      • 等待1-2秒后,松开按钮。

      • 此时开发板应处于特殊的烧录模式 (FEL/ISP Mode),板上的指示灯可能为特定颜色或闪烁状态 (查阅开发板手册确认)。


    • 操作后及时检查: 执行上述步骤后,在设备管理器检查USB口是否有新设备接入(如AllwinnerUnisoc相关设备),立即尝试K230 BurningTool




  3. 驱动程序安装检查



    • 串口驱动:连接调试串口后,如果设备管理器出现带感叹号的设备,安装制造商驱动 (通常是CP210xCH340, 到官网或开发板资料包中查找)。虽然烧录主通信不走调试口,但驱动程序混乱会引起整体识别问题。

    • FEL模式驱动

      • 进入FEL模式后,检查设备管理器。

      • Win10/11通常能自动识别USB Device(VID_1f3a_PID_efe8) (Allwinner SOC的FEL模式ID)。确保未被禁用

      • 如果显示为未知设备,手动安装驱动:

        • 在开发板官方文档中查找驱动包,通常包含一个zadig.exe (开源驱动安装工具)。

        • 运行zadig,在Options -> List All Devices中选中USB Device(VID_1f3a_PID_efe8)

        • 在驱动列表选择WinUSBlibusb-win32,点击Install DriverReplace Driver


      • 安装完驱动再启动烧录工具





? 进阶排查步骤




  1. 尝试不同版本工具/镜像:



    • 更换烧录工具版本: 如果之前工具版本过旧或与新镜像不兼容。去开发板官网或CanMV仓库下载最新版工具。

    • 更换eMMC镜像: 如果镜像文件问题。重新下载镜像,验证文件hash确保完整。




  2. 排查烧录软件本身



    • 关闭后以管理员身份运行烧录软件 (有时权限不足会影响检测USB设备)。

    • 尝试在其他电脑上进行烧录操作 (排除电脑系统干扰)。




  3. 断电/复位尝试



    • 彻底断开开发板所有连接5分钟,给板上电容放电。

    • 检查板上是否有硬件复位按钮 (RESET)。在插着烧录USB线的情况下尝试按一下复位按钮,看是否能进入烧录模式。




  4. 排查硬件问题 (谨慎操作)



    • 检查物理连接: 检查USB插座是否有松动、虚焊现象。

    • 测量电压: 在开发板不通电时测试电源输入端是否有短路。必要时送修。

    • 短接测试点: 如官方手册提到,可能需要用跳线帽短接特定测试点强制进入烧录模式 (操作有风险,务必先查资料确认)。




? 总结建议



  1. 最有可能的原因/dev/touch(0) 丢失是系统底层问题 (驱动加载失败/设备树问题/硬件异常),并非误删文件。重新烧录是最优解。

  2. Timeout for Waiting Device Plug in 解决优先级

    • 第一步:换一根高质量数据线,检查物理USB端口是否接触良好。

    • 第二步严格按照操作手册进入烧录模式 (通常是按住BOOT按钮再插USB)。

    • 第三步:在设备管理器中检查驱动状态是否正确安装,特别是FEL模式的驱动。使用zadig辅助解决。


  3. 如果在多种尝试后烧录工具始终无法识别设备,且排除了电脑、线材、操作问题后,可能存在硬件故障,建议联系开发板售后技术支持。


这个故障看似麻烦,但90%的案例都能通过更换数据线+正确操作进入烧录模式解决。先重点尝试这两个步骤,通常就能突破这个烧录瓶颈。 ??

举报

更多回帖

发帖
×
20
完善资料,
赚取积分