Запрограммировать 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) {
// Обработка синхронизации отправки байт за байтом по последовательному порту... или порция за порцией?
}
}
@Pinja, 👍0
Обсуждение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) действительно полезны для понимания всех тонкостей!
- Больше не могу прошить ESP8266 (NodeMCU)
- Чтение содержимого ESP8266 Flash изнутри скетча
- Пытаюсь прошить ESP8266 с помощью Arduino UNO
- OTA-обновление ESP8266 с разными настройками размера флэш-памяти?
- ESP8266 кажется закирпичен, как восстановить?
- Вспомогательный объект Flash String в качестве переменной
- HLW8032 UART отправляет случайные данные (регистры часто переполняются)
- ESP8266 завис в режиме прошивки?
Вам нужно начать с понимания протокола 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