Самообновление прошивки и приложения
На большинстве (но не на всех) платформ объект fd предоставляет несколько методов, с помощью которых приложение Tibbo BASIC/C может обновить прошивку TiOS и само себя.
Для этого приложение сначала получает двоичный файл TiOS и (при необходимости) двоичный файл скомпилированного приложения и сохраняет их в области данных флеш-памяти. Эти данные приложение может сохранять прямо во флеш-секторах с помощью прямого доступа к секторам или в файле данных с помощью файлового доступа. Как данные попадут в устройство, зависит от конструкции приложения. Например, их можно передать по TCP/IP-соединению, получить в HTTP-запросе или другим способом.
Можно также получать и хранить данные в несжатом виде или сжатыми алгоритмом LZO. Приём сжатых данных ускоряет передачу данных, нужных для обновления, и уменьшает объём флеш-памяти, необходимый для их временного хранения.
Когда данные подготовлены, приложение вызывает один из перечисленных ниже методов. Их выполнение копирует данные из области данных флеш-памяти в области TiOS и приложения. После завершения копирования устройство перезагружается и начинает выполнять обновлённую версию TiOS и вашего приложения.
Каким бы методом обновления вы ни пользовались, в данные для обновления всегда должна входить прошивка TiOS. За ней может следовать двоичный файл скомпилированного приложения. Иначе говоря, самообновление всегда перезаписывает TiOS и при желании может перезаписать и ваше приложение.
Доступные методы самообновления
Методы, работающие с данными, которые хранятся во флеш-секторах:
- fd.copyfirmware
- fd.copyfirmwarelzo (у этого метода две версии: одна для 16-разрядных платформ, другая для 32-разрядных платформ)
Методы, работающие с данными, которые хранятся в файле:
БУДЬТЕ ОЧЕНЬ ОСТОРОЖНЫ! Применение этих методов к неверным данным «выведет из строя» устройство, и дальнейшие удалённые обновления станут невозможны. Придётся ехать на объект и загружать правильную прошивку и/или приложение, возможно через последовательный порт. Страшно, правда?