Ошибка OTA для esp32 с использованием контрольной суммы ethe rnet - PullRequest
1 голос
/ 02 мая 2020

Я использую Atmega2560 , подключенный к модулю Ethe rnet, чтобы получить двоичный файл Esp32 , а затем отправить файл через UART на Esp32 для обновления своей прошивки.

Я пытаюсь получить данные двоичного файла через модуль Ethe rnet, используя библиотеку HttpClient, но когда данные сохраняются в OTA-разделе Esp32, я получаю:

esp_image: Checksum failed . Calculated 0xad read 0x0

Когда я проверял некоторые из Полученные данные из двоичного файла перед отправкой в ​​esp32, я вижу, что в некотором местоположении 0x0 вместо правильного значения должно быть.

Это часть моего кода, где я читаю двоичный файл и отправил его на Esp32.

EthernetClient transport;
HttpClient client(transport, SERVER, SERVER_PORT);
Serial.print("Check for update file ");
Serial.println(PATH);
client.get(PATH);
int statusCode = client.responseStatusCode();
Serial.print("Update status code: ");
Serial.println(statusCode);
if (statusCode != 200)
{
client.stop();
return;
}
long bin_length = client.contentLength();
if (bin_length == HttpClient::kNoContentLengthHeader) {
client.stop();
Serial.println("Server didn't provide Content-length header. Can't continue with update.");
return;
}
Serial.print("Server returned update file of size ");
Serial.print(bin_length);
Serial.println(" bytes");
ESPSerial.print(String(bin_length)); //send file size to ESP
delay(10000);
byte data_char;
int counter=0;
while (bin_length > 0)
{
if (!client.readBytes(&data_char, 1)) // reading a byte with timeout
break;
ESPSerial.write(data_char); //here send data to esp32
if(bin_length==0||bin_length==1||bin_length==2){Serial.print("last data=");Serial.println(data_char,HEX);}
counter++;
if(counter==1000)
{
Serial.println(bin_length);
counter=0;
delay(100);
}
bin_length--;
}
client.stop();
if (bin_length > 0)
{
Serial.print("Timeout downloading update file at ");
Serial.print(bin_length);
Serial.println(" bytes. Can't continue with update.");
return;
}

Кто-нибудь может мне помочь с этой проблемой?

...