Flash esp8266 из файловой системы SPIFFS
Я ищу способ прошить esp8266 программно, то есть без участия пользователя (и особенно без Arduino IDE)?
Предполагая, что я могу поместить программу для прошивки в файловую систему SPIFFS, есть ли способ прошить esp с помощью этого файла?
@larsb, 👍1
Обсуждение2 ответа
Лучший ответ:
Да, возможно (или, по крайней мере, было возможно несколько лет назад) иметь самопрограмму ESP8266, если вы можете загрузить файл в файловую систему с помощью ядра Update
, которое используется OTA и httpUpdate. Это была примерная программа для этого, но я не знаю, работает ли она до сих пор. Я бы также посоветовал вам использовать LittleFS вместо SPIFFS, так как последний устарел.
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <FS.h>
void setup() {
Serial.begin(115200);
Serial.println();
SPIFFS.begin();
Dir dir = SPIFFS.openDir("/");
pinMode(BUILTIN_LED, OUTPUT);
digitalWrite(BUILTIN_LED, LOW);
File file = SPIFFS.open("/firmware-update.bin", "r");
uint32_t maxSketchSpace = (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000;
if (!Update.begin(maxSketchSpace, U_FLASH)) { // начинаем с максимально доступного размера
Update.printError(Serial);
Serial.println("ERROR");
}
while (file.available()) {
uint8_t ibuffer[128];
file.read((uint8_t *)ibuffer, 128);
Serial.println((char *)ibuffer);
Update.write(ibuffer, sizeof(ibuffer));
}
Serial.print(Update.end(true));
digitalWrite(BUILTIN_LED, HIGH);
file.close();
}
void loop() {
}
Идеальный! Это именно то, что я искал. Также спасибо за предложение LittleFS, я его рассмотрю., @larsb
Да, это все еще работает, но теперь вам нужно передавать данные как указатель:
Update.write(&ibuffer, sizeof(ibuffer));
это массив, так что это уже указатель, @Juraj
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
- ESP8266 не подключается к Wi-Fi
- AT-команда не отвечает на последовательный монитор
- Разница между этими двумя платами NodeMCU?
да, но зачем хранить это в SPIFFS? см. примеры библиотек ESP8266HTTPUpdateServer и ESP8266httpUpdate, @Juraj
Я сказал, что не хочу взаимодействия с пользователем. Кроме того, мне не нужен сервер в моем ESP., @larsb
как вы получаете файл в SPIFFS? библиотека ESP8266httpUpdate загружает корзину обновлений с сервера и обновляет ее с помощью объекта Updater, не сохраняя корзину в SPIFFS., @Juraj