【问题标题】:Sparkfun Edge bootloader problemsSparkfun Edge 引导加载程序问题
【发布时间】:2019-04-01 20:33:23
【问题描述】:

sparkfun board edge board 今天终于到货了 ;-)

按照这篇写得很好的指南:https://codelabs.developers.google.com/codelabs/sparkfun-tensorflow/#3,我在尝试使用 tensorflow 示例附带的 uart_wired_update.pyscript 刷新 Ambiq 上的代码时遇到以下 NoResponseError

opprud$ python3 tensorflow/lite/experimental/micro/tools/make/downloads/AmbiqSuite-Rel2.0.0/tools/apollo3_scripts/uart_wired_update.py -b 115200 /dev/cu.usbserial-1430 -r 1 -f main_nonsecure_wire.bin -i 6

MOJ/Connecting with Corvette over serial port /dev/cu.usbserial-1430...

Sending Hello.

No response for command 0x00000000

Traceback (most recent call last):

  File "tensorflow/lite/experimental/micro/tools/make/downloads/AmbiqSuite-Rel2.0.0/tools/apollo3_scripts/uart_wired_update.py", line 336, in <module>

    main()

  File "tensorflow/lite/experimental/micro/tools/make/downloads/AmbiqSuite-Rel2.0.0/tools/apollo3_scripts/uart_wired_update.py", line 38, in main

    connect_device(ser)

  File "tensorflow/lite/experimental/micro/tools/make/downloads/AmbiqSuite-Rel2.0.0/tools/apollo3_scripts/uart_wired_update.py", line 58, in connect_device

    response = send_command(hello, 88, ser)

  File "tensorflow/lite/experimental/micro/tools/make/downloads/AmbiqSuite-Rel2.0.0/tools/apollo3_scripts/uart_wired_update.py", line 235, in send_command

    raise NoResponseError

__main__.NoResponseError

我的设置:

  • Macbook pro,旧 15 英寸和新 13 英寸都试过了
  • Sparkfun 串行基本突破,USBC 版本(默认跳转到 3v3)
  • FTDI 3v3 串行电缆

我试过了

  • 两个不同的边缘板,具有正确的 Key14 和重置组合 + 其他变体和时序
  • 旧 Macbook 上的旧版 USB
  • 带 USB C 的新 Macbook
  • FTDI 3v3 串行电缆替代 sparkfun 串行板
  • 在 tensorflow/lite/experimental/micro/tools/make/downloads/AmbiqSuite-Rel2.0.0/tools/bootloader_scripts/uart_boot_host.py 中运行另一个 uart_boot_host.py 脚本,也没有响应

我可以用范围测量握手字节'0x14'、'0x55'、'0x9d'、'0xe9'、'0x0'、'0x0'、'0x8'、'0x0'最初在 115200 上传输编程头上的 TXO 引脚 - 但 ambiq 没有回复任何内容。

顺便说一句。板载演示正在运行,蓝色 LED 闪烁,正在识别一些“是”。

欢迎任何意见。

有人知道巡洋舰引导加载程序的协议吗?

第一批主板是否有任何 CPU 版本更改,或者可能是 sparkfun 意外编程的任何锁定位?

来自热心的 TF lite 用户的 rgds ;-)

【问题讨论】:

    标签: bootloader tensorflow-lite


    【解决方案1】:

    我尝试使用 rx/tx 引脚上的示波器测量实际波特率,发现使用默认 OSX 串行驱动程序的位时序相当不精确,应用 10% 的折扣,导致读数错误,最终丢失字节,当波特率很高。

    更新到 ch340 串口驱动后,时序得到改善,位时序正确。 在921600bps,单字节8N1应该是10.9uS

    驱动安装 https://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver

    【讨论】:

    【解决方案2】:

    这对我有用:(来源:github.com/sparkfun/SparkFun_Edge_BSP/issues/3SparkFunEdge tutorial 和我的队友!)。我在 Linux 机器上运行它(x86_64;运行$ uname -a)和我的 SparkfunEdge DEVICENAME=/dev/ttyUSB0

    本教程确实在Step 4 警告您有关此问题:

    注意:一些用户报告了他们的操作系统的问题 程序员的默认驱动程序,所以我们建议安装 driver,然后再继续。

    单击driver 链接并按照“其他 Linux 发行版”下的说明进行操作,如下所示:

    1. 安装正确版本的 ch34 库。 $ git clone https://github.com/juliagoda/CH341SER.git $ cd CH341SER/ $ make $ sudo insmod ch34x.ko $ sudo rmmod ch341

    2. 要验证是否使用了正确的驱动程序,请运行: $ dmesg .. [889247.585301] usb 1-7: ch341-uart converter now attached to ttyUSB0 [955698.718839] usbcore: registered new interface driver ch34x [955698.718848] usbserial: USB Serial support registered for ch34x [955759.196437] usbserial: USB Serial deregistering driver ch341-uart [955759.196576] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0 [955759.196601] usbcore: deregistering interface driver ch341 [955759.196643] ch341 1-7:1.0: device disconnected

      现在从 SparkfunEdge 板上拔下 USB-C,然后重新插入 $ dmesg .... [955876.176950] ch34x 1-7:1.0: ch34x converter detected [955876.177320] usb 1-7: ch34x converter now attached to ttyUSB0

    【讨论】:

      【解决方案3】:

      很高兴听到您对董事会如此兴奋。我有一种预感,这将是一个简单的解决方案。

      发布会上发放的Edge板卡的bootloader设置为115200波特,而第二批出来的Edge板卡升级为921600波特率,大大缩短了刷机时间。尝试更改串行上传脚本中的波特率。

      您还可以设置 Ambiq 软件开发套件,为 Apollo3 微控制器编写您自己的应用程序。在此处查看教程:Using the Edge Board with Ambiq SDK

      【讨论】:

      • 尝试将波特率调高至 921600,并获得了更远一点 在 uart_update_wired.py 脚本发送第一个 32 位 CRC 和 hello 消息后,偶尔我会收到 11 个字节,协议说应该返回 88 个字节我尝试在 VDD 上并联一个 3.3V 的实验室电源,因为它可能是导致 CPU 复位的电压骤降,在闪存编程期间,没有变化。 Sending Hello. ['0x14', '0x55', '0x9d', '0xe9'] ['0x0', '0x0', '0x8', '0x0'] No response for command 0x00000000 received bytes 11 ['0xd4', '0x60', '0x7', '0x87', '0x84', '0x80', '0x80', '0x83', '0x80', '0x80', '0x80']
      【解决方案4】:

      由于我无法对您的帖子发表评论(没有足够的声誉......谢谢 SE)我会在这里回复。

      如果波特率准确性是一个问题,我有点不确定这是否是由操作系统引起的,但我认为这是 USB 串行转换器芯片的问题。我一直在使用 CH340G 而在 USB-C 版本上有 CH340C IC。两者的区别在于“C”版本包括一个内部振荡器来提供频率参考。那个可能不太准确……?我会在这里(但在 Windows 上)试一试,然后告诉你。

      如果这是一个持续存在的问题,您介意在 SparkFun 论坛上发帖吗?这样我们的技术支持就可以联系起来(如果硬件有缺陷,他们也可以为您更换硬件)。这是 Edge 论坛:SparkFun Edge Forums

      如果问题来自操作系统,那么我们可以对 Edge 进行的唯一修复就是降低引导加载程序的速度。我们正在编写一个关于如何做到这一点的简短教程,但它需要有一个用于 Cortex-M 处理器的程序员/调试器。 Ambiq Apollo3 Evaluation Board 有一个内置的 SEGGER J-Link,这是我们用来对电路板进行编程的。

      【讨论】:

      • 是芯片的问题,使用正确的驱动解决了这个问题,并且可以精确调整波特率。我还没有查看 CH340 芯片的详细信息,但 sparkfun 装有 CH340C ic。我正在与负责董事会和提供的指南的 TF lite 团队联系,因此他们知道并将采取行动。
      • 我也有这个问题。调整波特率似乎让我走得更远(收到了一些东西),但最终结果仍然是一样的。我在这里的 GitHub 项目上创建了一个问题:github.com/sparkfun/SparkFun_Edge_BSP/issues/3。论坛没有使用我的 SparkFun 凭据,所以我不能在那里发帖。
      【解决方案5】:

      在 MacOS Mojave 上,安装/重新安装 CH340 对我有用: https://learn.sparkfun.com/tutorials/how-to-install-ch340-drivers#mac-osx

      在进行安装之前,请检查您是否确实看到了 sparkfun 边缘设备: ls -l /dev/cu* 如果驱动程序安装正确,您应该检测到: /dev/cu.wchusbserial1420

      我遇到了类似的问题,而我只有 /dev/cu.usbserial-1420 并认为这是预期的设备可以访问,而它是 /dev/cu.wchusbserial1420 仅在安装 ch340 驱动程序后检测到。 然后闪烁设备对我来说成功。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-20
        • 2013-08-14
        • 2011-05-07
        • 2011-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多