Sparkfun Edge 引导加载程序问题
Sparkfun Edge bootloader problems
今天 sparkfun 板边缘板终于到了 ;-)
遵循这篇写得很好的指南:https://codelabs.developers.google.com/codelabs/sparkfun-tensorflow/#3 当我尝试在 Ambiq 上使用 uart_wired_update.py
脚本刷新代码时,我遇到了以下 NoResponseError,它带有 tensorflow 示例
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
脚本,也没有响应
我可以用示波器测量最初在编程头上 TXO 引脚上的 115200 - 但 ambiq 没有回复任何内容。
顺便说一句。板载演示是 运行,蓝色 LED 闪烁,一些 "yes's" 正在被识别。
欢迎任何意见。
有人知道 Corvette 引导加载程序的协议吗?
第一批电路板是否有任何 CPU 修订更改,或者可能是 sparkfun 意外编程的任何锁定位?
来自热切的 TF lite 用户的 rgds ;-)
很高兴听到您对董事会如此兴奋。我有一种预感,这将是一个简单的解决方案。
发布会上分发的Edge boards bootloader设置为115200 baud,而第二批出来的Edge boards升级为921600 baud的flash,大大缩短了flash时间。尝试更改串行上传脚本中的波特率。
您还可以设置 Ambiq 软件开发工具包来为 Apollo3 微控制器编写您自己的应用程序。在此处查看教程:Using the Edge Board with Ambiq SDK
我尝试用 rx/tx 引脚上的示波器测量实际波特率,发现使用默认 OSX 串行驱动程序的位时序相当不精确,应用程序 10% 关闭,导致读数错误,当波特率很高时,最终会丢失字节。
更新ch340串口驱动后,时序改善,位时序正确。
在921600bps下,单字节8N1应该是10.9uS
驱动安装
https://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver
因为我不能评论你的post(没有足够的声誉....谢谢SE)我会在这里回复。
如果波特率精度有问题,我不太确定那是由 OS 引起的,但我认为这是 USB 串口转换器芯片的问题。我一直在使用 CH340G 而在 USB-C 版本上有 CH340C IC。两者之间的区别在于 "C" 版本包括一个内部振荡器来提供频率参考。有可能那个不太准确......?我会在这里(但在 windows)试一试,然后告诉你。
如果这是一个长期存在的问题,您介意在 SparkFun 论坛上发一个 post 吗?这样我们的技术支持就可以联系起来(如果硬件有缺陷,他们也可以为您提供更换硬件)。这是 Edge 的论坛:SparkFun Edge Forums
如果问题出在 OS 那么我们可以对 Edge 做的唯一修复就是降低引导加载程序的速度。我们正在编写一个关于如何做到这一点的简短教程,但它需要为 Cortex-M 处理器提供 programmer/debugger。 Ambiq Apollo3 Evaluation Board 有一个内置的 SEGGER J-Link,这是我们用来对电路板编程的。
这对我有用:(来源:github.com/sparkfun/SparkFun_Edge_BSP/issues/3, the SparkFunEdge tutorial 和我的队友!)。我在 Linux 机器 (x86_64; 运行 $ uname -a
) 和我的 SparkfunEdge DEVICENAME=/dev/ttyUSB0
上 运行ning 这个
本教程确实在 Step 4:
警告过您这个问题
Note: Some users have reported issues with their operating system's
default drivers for programmer, so we recommend installing the
driver before you continue.
点击 driver link 并按照 "Other Linux distributions" 下的说明进行操作,如下所示:
安装正确版本的 ch34 库。
$ git clone https://github.com/juliagoda/CH341SER.git
$ cd CH341SER/
$ make
$ sudo insmod ch34x.ko
$ sudo rmmod ch341
要验证是否使用了正确的驱动程序,运行:
$ 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
在 MacOS Mojave 上,Installing/Reinstalling CH340 适合我:
https://learn.sparkfun.com/tutorials/how-to-install-ch340-drivers#mac-osx
在进行安装之前,请检查您是否确实看到了 sparkfun edge 设备:
ls -l /dev/cu*
如果驱动程序安装正确,您应该检测到:
/dev/cu.wchusbserial1420
我遇到了类似的问题,而我只有 /dev/cu.usbserial-1420 并认为这是预期的设备访问,而它是 /dev/cu.wchusbserial1420 仅在安装 ch340 驱动程序后检测到。
然后闪烁设备对我来说成功了。
今天 sparkfun 板边缘板终于到了 ;-)
遵循这篇写得很好的指南:https://codelabs.developers.google.com/codelabs/sparkfun-tensorflow/#3 当我尝试在 Ambiq 上使用 uart_wired_update.py
脚本刷新代码时,我遇到了以下 NoResponseError,它带有 tensorflow 示例
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
脚本,也没有响应
我可以用示波器测量最初在编程头上 TXO 引脚上的 115200 - 但 ambiq 没有回复任何内容。
顺便说一句。板载演示是 运行,蓝色 LED 闪烁,一些 "yes's" 正在被识别。
欢迎任何意见。
有人知道 Corvette 引导加载程序的协议吗?
第一批电路板是否有任何 CPU 修订更改,或者可能是 sparkfun 意外编程的任何锁定位?
来自热切的 TF lite 用户的 rgds ;-)
很高兴听到您对董事会如此兴奋。我有一种预感,这将是一个简单的解决方案。
发布会上分发的Edge boards bootloader设置为115200 baud,而第二批出来的Edge boards升级为921600 baud的flash,大大缩短了flash时间。尝试更改串行上传脚本中的波特率。
您还可以设置 Ambiq 软件开发工具包来为 Apollo3 微控制器编写您自己的应用程序。在此处查看教程:Using the Edge Board with Ambiq SDK
我尝试用 rx/tx 引脚上的示波器测量实际波特率,发现使用默认 OSX 串行驱动程序的位时序相当不精确,应用程序 10% 关闭,导致读数错误,当波特率很高时,最终会丢失字节。
更新ch340串口驱动后,时序改善,位时序正确。 在921600bps下,单字节8N1应该是10.9uS
驱动安装 https://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver
因为我不能评论你的post(没有足够的声誉....谢谢SE)我会在这里回复。
如果波特率精度有问题,我不太确定那是由 OS 引起的,但我认为这是 USB 串口转换器芯片的问题。我一直在使用 CH340G 而在 USB-C 版本上有 CH340C IC。两者之间的区别在于 "C" 版本包括一个内部振荡器来提供频率参考。有可能那个不太准确......?我会在这里(但在 windows)试一试,然后告诉你。
如果这是一个长期存在的问题,您介意在 SparkFun 论坛上发一个 post 吗?这样我们的技术支持就可以联系起来(如果硬件有缺陷,他们也可以为您提供更换硬件)。这是 Edge 的论坛:SparkFun Edge Forums
如果问题出在 OS 那么我们可以对 Edge 做的唯一修复就是降低引导加载程序的速度。我们正在编写一个关于如何做到这一点的简短教程,但它需要为 Cortex-M 处理器提供 programmer/debugger。 Ambiq Apollo3 Evaluation Board 有一个内置的 SEGGER J-Link,这是我们用来对电路板编程的。
这对我有用:(来源:github.com/sparkfun/SparkFun_Edge_BSP/issues/3, the SparkFunEdge tutorial 和我的队友!)。我在 Linux 机器 (x86_64; 运行 $ uname -a
) 和我的 SparkfunEdge DEVICENAME=/dev/ttyUSB0
本教程确实在 Step 4:
警告过您这个问题Note: Some users have reported issues with their operating system's default drivers for programmer, so we recommend installing the driver before you continue.
点击 driver link 并按照 "Other Linux distributions" 下的说明进行操作,如下所示:
安装正确版本的 ch34 库。
$ git clone https://github.com/juliagoda/CH341SER.git $ cd CH341SER/ $ make $ sudo insmod ch34x.ko $ sudo rmmod ch341
要验证是否使用了正确的驱动程序,运行:
$ 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
在 MacOS Mojave 上,Installing/Reinstalling CH340 适合我: https://learn.sparkfun.com/tutorials/how-to-install-ch340-drivers#mac-osx
在进行安装之前,请检查您是否确实看到了 sparkfun edge 设备: ls -l /dev/cu* 如果驱动程序安装正确,您应该检测到: /dev/cu.wchusbserial1420
我遇到了类似的问题,而我只有 /dev/cu.usbserial-1420 并认为这是预期的设备访问,而它是 /dev/cu.wchusbserial1420 仅在安装 ch340 驱动程序后检测到。 然后闪烁设备对我来说成功了。