Запрограммировать Arduino через UART от ESP8266 SPIFFS

Я построил специальную плату с ATmega328p, подключенным к модулю ESP8266 через UART. В настоящее время я программирую ATmega328p с помощью программатора USBtiny через разъем SPI. Модуль ESP8266 программируется через кабель FTDI, подключенный к UART.

Прошивки для обоих создаются в Arduino IDE.

Я настроил веб-сервер на ESP, который позволяет загружать файлы на SPIFFS через FTP. Я хотел бы иметь возможность загрузить шестнадцатеричный файл для ATmega, а затем ESP запрограммировать ATmega через соединение UART. GPIO на ESP управляет транзистором, который может замыкать контакт сброса на ATmega на землю.

Я знаю, что мне нужен загрузчик на ATmega (например, optiboot), но я не знаю, что мне нужно сделать, чтобы ESP активировал загрузчик и прошил ATmega. Я думаю, мне нужно что-то вроде:

void initialiseAtmegaFlash () {
  // Запускаем загрузчик для приема входящего шестнадцатеричного кода через UART
}

void flashHexToAtmega (File atmegaHex) {
  for (uint32_t i = 0; i < atmegaHex.size(); ++i) {
    // Обработка синхронизации отправки байт за байтом по последовательному порту... или порция за порцией?
  }
}

, 👍0

Обсуждение

Вам нужно начать с понимания протокола STK500. Прочтите и усвойте: http://ww1.microchip.com/downloads/en/AppNotes/doc2591.pdf, @Majenko

вы можете использовать библиотеку dfu отсюда https://github.com/jandrassy/arduino-firmware-wifilink#atmega328p-sketch-ota-upload-support, @Juraj

Эта библиотека dfu выглядит так, как будто мне нужно инициировать загрузку из Arduino IDE в той же сети. Документация по протоколу STK500 выглядит как то, что мне нужно. Я надеялся, что уже может быть аккуратная библиотека, но похоже, что информация мне нужна, чтобы получить функциональность., @Pinja

https://github.com/ciminaghi/libdfu, @Juraj

тебе удалось это сделать? Если да, пожалуйста, поделитесь со мной подробностями и связями., @Saqib Manan


1 ответ


1

Чтобы ответить на мой собственный вопрос на случай, если кто-то еще окажется здесь, предложил библиотеку Juraj (https://github.com/ciminaghi/libdfu ) выглядит так, как будто он работает. Я также нашел другой проект, делающий нечто подобное (https://github.com/rene-win/esp_avr_programmer). Также документы STK500, на которые ссылается Маженко (http://ww1.microchip.com/downloads/en/AppNotes /doc2591.pdf) действительно полезны для понимания всех тонкостей!

,