Моя цель: передать большой (~ 200 КБ) двоичный файл по HTTP в чанках и проверить с помощью некоторого типа обнаружения ошибок, что мой полученный чанк (на стороне клиента) ТОЧНО совпадает с отправленным чанком с сервера.
Итак, у меня есть двоичный файл (обновление прошивки для микроконтроллера), который я пытаюсь отправить со своего сервера (nodejs с Express) на мое устройство.Я могу успешно отправлять HTTP-запросы на строки и другие мелочи и хорошо читать ответы, но теперь я хочу отправить файл.
Этот файл имеет размер около 200 КБ, а на стороне сервера я использую fseek
, чтобы разделить файл на 512 байт (это размер страницы моей встроенной флэш-памяти NAND, в которую будет записано обновление).На стороне клиента (мой микроконтроллер) я делаю запрос на получение и указываю индекс текущего чанка, на котором я работаю (например, я начинаю с ?index=0
и увеличиваю чанк на чанк примерно до ?index=400
).
Для каждого полученного чанка я хотел бы подтвердить, что у меня есть те же данные, что и на сервере.Моя текущая идея состоит в том, чтобы выполнить проверку CRC на стороне клиента и сравнить ее с CRC с сервера, который будет сохранен в заголовке ответа GET.Это хороший подход?Есть ли лучший стандарт для того, что я пытаюсь достичь?
Дополнительно: Микроконтроллер использует процессор STM32, 2 МБ флэш-памяти NAND, 256 КБ SRAM.Написание моих изображений с использованием Mbed-OS 5.12