Проблемы с загрузчиком Sparkfun Edge
Наконец-то появились доски для доски sparkfun;-)
Следуя этому хорошо написанному руководству: https://codelabs.developers.google.com/codelabs/sparkfun-tensorflow/ я застрял со следующей ошибкой NoResponseError при попытке прошить код на Ambiq с помощью uart_wired_update.py
скрипт, который поставляется с примерами тензорного потока
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 (по умолчанию переход на 3 на 3)
- FTDI 3v3 последовательный кабель
я пытался
- две разные граничные платы, с правильным Key14 и сбросом комбинированного + разные варианты и время
- старый USB на старом Macbook
- новый Macbook с USB C
- Серийный кабель FTDI 3v3 как альтернатива последовательной плате sparkfun
- Запуск альтернативы
uart_boot_host.py
скрипт в tenorflow / lite / экспериментальный / микро /tools/make/downloads/AmbiqSuite-Rel2.0.0/tools/bootloader_scripts/uart_boot_host.py, также без ответа
Я могу измерить, с помощью области, байты рукопожатия "0x14", "0x55", "0x9d", "0xe9", "0x0", "0x0", "0x8", "0x0", передаваемые первоначально в 115200 на выводе TXO в заголовке программы - но ambiq ничего не отвечает.
Кстати. Демонстрация на борту запущена, мигает синий светодиод, распознается какое-то "да".
Любые входы приветствуются.
Кто-нибудь знает протокол загрузчика корвета?
Существуют ли какие-либо изменения ревизии ЦП в первой партии плат или, возможно, какие-либо биты блокировки, случайно запрограммированные в sparkfun?
rgds от нетерпеливого пользователя TF lite;-)
3 ответа
Я попытался измерить фактическую скорость передачи данных с помощью области на выводах rx/tx и увидел, что синхронизация битов с использованием последовательного драйвера по умолчанию для OSX довольно неточна, примерно на 10% меньше, что приводит к ошибочным показаниям и, в конечном счете, к отсутствию байтов, когда скорость передачи данных высока.
После обновления до последовательного драйвера ch340 время улучшилось, и время битов было правильным. При скорости 921600 бит / с один байт 8N1 должен составлять 10,9 мкс
Установка драйвера https://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver
Вот что сработало для меня: (источник: https://github.com/sparkfun/SparkFun_Edge_BSP/issues/3, учебник по SparkFunEdge и мои товарищи по команде!). Я запускаю это на машине Linux (x86_64; Run$ uname -a
) и мой SparkfunEdge DEVICENAME=/dev/ttyUSB0
Руководство предупреждает вас об этой проблеме на шаге 4:
Примечание. Некоторые пользователи сообщали о проблемах с драйверами по умолчанию для своей операционной системы для программистов, поэтому мы рекомендуем установить драйвер, прежде чем продолжить.
Щелкните ссылку на драйвер и следуйте инструкциям в разделе "Другие дистрибутивы Linux" следующим образом:
Установите правильную версию библиотеки 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
Теперь отключите USB-C от платы SparkfunEdge и снова подключите его.
$ dmesg .... [955876.176950] ch34x 1-7:1.0: ch34x converter detected [955876.177320] usb 1-7: ch34x converter now attached to ttyUSB0
Рад слышать, что вы так взволнованы по поводу доски. У меня есть догадка, что это будет легко исправить.
Платы Edge, розданные на конференции, имеют загрузчик, настроенный на 115200 бод, однако платы Edge, вышедшие во второй партии, обновлены до скорости 921600 бод, что значительно сокращает время прошивки. Попробуйте изменить скорость передачи в вашем скрипте последовательной загрузки.
Вы также можете настроить Ambiq Software Development Kit для написания собственных приложений для микроконтроллера Apollo3. Ознакомьтесь с руководством здесь: Использование Edge Board с Ambiq SDK
В 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. Тогда прошивка у меня успешно работает.
Поскольку я не могу комментировать ваш пост (недостаточно репутации.... спасибо SE), я отвечу здесь.
Если точность скорости передачи данных является проблемой, я немного не уверен, что это будет вызвано ОС, но скорее я думаю, что это проблема с чипом USB-последовательного преобразователя. Я использовал CH340G, тогда как на версии USB-C есть микросхема CH340C. Разница между ними заключается в том, что версия "C" включает в себя внутренний генератор для обеспечения задания частоты. Возможно, что этот менее точный...? Я попробую это здесь (но на окнах) и дам вам знать.
Если это постоянная проблема, не могли бы вы сделать пост на форумах SparkFun? Таким образом, наша техническая поддержка может быть связана (они также могут предоставить вам замену оборудования в случае его неисправности). Вот форум для Edge: SparkFun Edge Forums
Если проблема исходит от ОС, то единственное исправление, которое мы можем сделать с Edge, - это уменьшить скорость загрузчика. Мы работаем над кратким руководством о том, как это сделать, но для этого потребуется программист / отладчик для процессоров Cortex-M. Оценочная плата Ambiq Apollo3 имеет встроенный SEGGER J-Link, который мы использовали для программирования плат.