Этот ботлоадер предназначен специально для Arduino UNO/Nano/Pro Mini и позволяет загружать программы через модуль NRF24L01+. Поддерживает протокол STK500V2, совместим с avrdude и Arduino IDE. Объём памяти флэш-чипа составляет 2 КБ. Поддерживается частотная хоппинг передача данных, а также включены необходимые скрипты для программатора.
Примечание 1: В проекте включён упрощённый вариант кода для программатора, полная версия доступна по ссылке: https://gitee.com/alicedodo/arduino-nrf2401-programmer
Примечание 2: Может ли этот ботлоадер считаться просто игрушкой?
На первый взгляд это действительно может показаться игрушкой, так как при попытках обновления прошивки через радио невозможно автоматически сбросить устройство (что невозможно сделать без использования проводной связи). Это требует ручного сброса устройства, что приведёт к тому, что ботлоадер выйдет из режима ожидания и загрузка будет прервана. Однако если использовать специальную прошивку, которая поддерживает эту возможность, то ситуация может измениться:
Если процесс загрузки прерывается, bootloader имеет механизмы восстановления. Bootloader имеет два режима работы: NORMAL и CRITICAL. Режим выбирается в зависимости от источника сброса устройства:
Реализованы общие команды протокола и подмножество ISP-команд: чтение/запись флэш-памяти, чтение/запись EEPROM, чтение только сбросовых бит.
Связь между беспроводным программатором и avrdude осуществляется через радиомодуль NRF24L01+. Программатор передает команды от PC, не расшифровывая их, а затем отправляет ответ ACK обратно в avrdude.
Тестировалось с версиями avrdude 5.10 и 6.3; гарантий корректной работы других версий нет. Версия 5.10 входит в состав winAVR2010, а 6.3 — это последняя официальная версия.### 2. Два способа загрузки: SPI с модулем NRF24L01P или последовательный порт
Bootloader по умолчанию использует беспроводной модуль для приема данных. При отсутствии сигнала от беспроводного модуля используется последовательный порт (скорость 115200 бод).
Проверка наличия беспроводного модуля производится один раз при запуске системы, после чего переключение между портами больше не происходит.
При запуске bootloader начинает прослушивание сигнала рукопожатия на канале с базовой скоростью, адресом и каналом по умолчанию. Программатор передает новый набор значений (скорость, случайный канал и адрес) в сообщении рукопожатия. После успешного рукопожатия конфигурация меняется, и дальнейшая связь продолжается на новом канале.
Команды частотного хоппинга реализованы на основе протокола STK500V2 и выглядят как обычные команды для bootloader, поэтому теоретически можно несколько раз менять канал связи.
По умолчанию используется следующий схемный лист:
DEVICE_PORT
на ваш порт.make
make upload
(команда upload
сначала записывает fuses, затем bootloader)bin
. Перед записью вам потребуется настроить fuses: lfuse
:0xFF / hfuse
:0xDA / efuse
:0xFD.)## Как тестировать bootloader:nrf24l01+
, затем подключите USB-кабель от целевой платы к компьютеру и найдите соответствующее устройство COM.avrdude
-cstk500v2
-pm328p
-P COMx/ttyUSBx/ttyACMx
-U flash:r:test_read.hex:i
.avrdude
(версия 6.3, другие версии не проверялись):
1.Используйте любой консольный монитор порта, многократно открывайте и закрывайте соединение COM с Arduino; каждый раз Arduino будет перезапускаться.Примечание: Этот шаг отличается от обычной загрузки программы: Беспроводной программатор не имеет доступа к целевой плате, поэтому он не может вызвать её сброс так же, как это делает последовательный порт. Поэтому требуется ручной сброс целевой платы. Для этого после начала загрузки следите за сообщениями состояния в нижнем левом углу IDE. Если появилось сообщение типа "Загрузка...", немедленно выполните ручной сброс целевой платы. Позднее начало загрузки может привести к её провалу, так как после сброса микроконтроллера bootloader ждет сигнал для загрузки всего одну секунду; при пропуске этого времени он переходит к выполнению firmware в области APP.## Результаты тестирования скорости потери пакетов:
Отсутствие помех от устройств Wi-Fi 2.4 ГГц
Незначительные помехи от устройств Wi-Fi 2.4 ГГц
Ощутимые помехи от устройства программатора Wi-Fi 2.4 ГГц
Ощутимые помехи от устройства bootloader'а Wi-Fi 2.4 ГГц
По причине ограничения времени, я остановлюсь здесь. Если вас заинтересовала данная тема, оставьте комментарий, и я дополню документацию по конкретной реализации кода.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )