Поскольку устройство Интернета вещей поддерживает удаленное подключение к Интернету, локальное или удаленное обновление OTA также является важной функцией контроллера программирования сценариев, поскольку нет никакой гарантии, что реле полностью лишено ошибок, обнаруженных в использование ошибок, если нет интерфейса обновления OTA, клиентам трудно позволить обновлять прошивку через последовательный порт, контроллер можно обновить только до заводского состояния, стоимость высокая, влияние большое.
Кроме того, у клиента могут быть некоторые персонализированные функции, которые невозможно реализовать с помощью китайского программирования, и для этого потребуется обновить прошивку контроллера.
Эти две ситуации необходимо решать с помощью локальной или удаленной функции OTA.
В эти дни было потрачено немного времени на выполнение этой функции, теперь она суммируется следующим образом:
(1) FLASH ESP8266 может хранить две прошивки с именами от user1.bin до user2.bin, а адреса двух прошивок определяются загрузочной программой boot.bin, хранящейся по адресу 0x0000, а адреса хранения различны для разная мощность вспышки.
Например, ESP8266-01S с емкостью флэш-памяти 1 Мбайт, адрес хранилища — 0x01000 и 0x81000 соответственно, а ESP8266-07S с емкостью флэш-памяти 4 Мбайт, адрес памяти — 0x01000 и 0x101000 соответственно.
(2) через возвращаемое значение функции system_upgrade_userbin_check, чтобы получить текущую программу, запущенную user1.bin или user2.bin, обновление прошивки, в другую область хранения прошивки, чтобы записать полную прошивку, например, если текущий запуск сохранен в 0x1000 файла user1.bin, затем по адресу 0x81000(ESP8266-01S) или 0x101000(EPS8266-07S) для записи прошивки user2.bin, после записи, а затем через функцию system_upgrade_flag_set(0x02) сообщить SDK о записи завершено, SDK устанавливает системные параметры, чтобы при запуске ESP8266 загружалась другая прошивка.
3) Официальной рекомендуемой практикой является загрузка прошивки на облачный сервер в память по протоколу http, я не использовал эту программу, в основном из-за двух соображений, во-первых, прошла ли эта программа строгую проверку и была ли она проверка данных достаточно продумана, чтобы избежать перехода на кирпич, я в этом сомневаюсь. Во-вторых, эта программа требует, чтобы контроллер имел возможность подключения к внешней сети для загрузки прошивки с сервера, что сделать непросто.
В настоящее время я использую Delphi для разработки набора программного обеспечения для обновления прошивки, программного обеспечения в качестве TCP-клиента для прямого подключения к контроллеру или подключения к TCP-шлюзу облачного сервера, а затем передачи на контроллер, а затем в соответствии с 512 байт для кадра данных для отправки прошивки в контроллер.
Далее этот набор логики можно перенести на сервер, клиент может открыть веб-страницу через браузер и отправить прошивку на контроллер.
4) Целостность данных полностью проверяется, первый кадр данных выполняет контрольную сумму crc32, прошивка записывается во флэш-память, а затем считывается для сравнения с записанным значением и в то же время вычисляется значение crc32, и верхний компьютер для отправки значения crc32 по сравнению с данными чтения и записи одинаковы, а также одинаковое значение crc, считается, что кадр данных записан успешно;
В то же время значение crc32 для каждого кадра данных, а затем далее значение crc32, чтобы получить общее значение crc32, по сравнению с общим значением crc32, отправленным главным компьютером, значение остается тем же перед вызовом функции system_upgrade_flag_set( 0x02), чтобы SDK мог переключиться на загрузочную прошивку.
(5) Запись в две разные области прошивки: user1.bin, user2.bin не совпадают. Для разработки RTOS sdk необходимо изменить значение переменной Makefile APP, чтобы сгенерировать user1.bin, user2. .bin, соответственно, главный компьютер в соответствии с контроллером, чтобы вернуться к текущему запуску прошивки области хранения, выбрать другую область хранения прошивки, отправленной на контроллер. Главный компьютер выбирает прошивку в другой области хранения в соответствии с областью хранения работающей в данный момент прошивки, возвращенной контроллером.
Если в обеих областях хранения используется одна и та же прошивка, ESP8266 не сможет нормально запуститься.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3