Два приложения Tibbo BASIC/C
Два устройства Tibbo, WM2000 и WS1102, могут хранить до двух скомпилированных двоичных файлов приложений Tibbo BASIC/C - «APP0» и «APP1» (в каждый момент времени может работать только одно).
Из общего объёма памяти программ модуля, равного 4,096KB, Monitor/Loader (M/L) занимает 960KB, а единственный экземпляр TiOS - 1,448KB, так что для приложений остаётся 1,688KB. Учтите, что это хранилище выровнено по 4KB: если APP0 «пуст» или меньше 4KB, он всё равно займёт 4KB. Точно так же, если размер APP0 не кратен 4KB, он займёт место до границы следующего блока в 4KB.
Во всём прежнем оборудовании, программируемом на Tibbo BASIC/C, хранится одно приложение, которое может занять всю флеш-память, не занятую M/L и TiOS. WM2000 и WS1102, у которых объём флеш-памяти как минимум вчетверо больше, чем у любого предшественника, позволяют хранить второе приложение - APP1 - в месте, оставшемся после M/L, TiOS и APP0.
Блок Device Configuration Block (DCB), хранящийся во флеш-памяти, позволяет определить, какое из двух приложений запускается при включении питания или перезагрузке устройства (есть также принудительный запуск APP0 через линию MD). Для работы с новой консолью BLE Console, которая даёт доступ к DCB, Tibbo подготовила удобное веб-приложение BLE Terminal.
Приложения Tibbo BASIC/C могут работать с DCB через специальный API (новые свойства и методы нескольких объектов). В частности, APP0 и APP1 могут читать и записывать данные DCB, а также переключаться друг на друга с помощью sys.reboottoapp.
В Tibbo предполагают, что APP0 будет играть роль «вторичного Monitor/Loader», а APP1 - реализовывать основную функциональность изделий на базе WM2000. Например, такой «вторичный M/L» мог бы предоставлять способы настройки параметров изделия, обновления его кода из облака или выполнения других функций управления.
Для этого Tibbo разработала «сопутствующее» приложение, которое поставляется с WM2000 как APP0. Оно позволяет просматривать и изменять DCB через смартфонное приложение L.U.I.S. (доступно для iOS и Android, а также в виде веб-приложения). Tibbo видит в сопутствующем приложении отправную точку и источник вдохновения для ваших собственных подобных проектов, поэтому его исходный код опубликован здесь, и вы вправе изменять его как угодно.
Кроме того, APP0 и APP1 можно заполнить отдельными полнофункциональными пользовательскими приложениями.
Выбор приложения и поведение
Свойство sys.defaultapp указывает, какое приложение TiOS загрузит при включении питания или перезагрузке устройства. Это свойство можно изменить через DCB или задать его значение в приложении Tibbo BASIC/C.
По умолчанию WM2000 и WS1102 загружают APP1 при включении питания или перезагрузке. Если в устройство загружено только одно приложение как APP1 - или сопутствующее приложение как APP0, но оно никогда не используется, - всё работает почти так же, как в прежнем оборудовании Tibbo. Если вы планируете использовать только одно приложение, загруженное как APP0, нужно установить sys.defaultapp равным PL_APP_NUM_0, чтобы устройство загрузило ваше приложение.
После принудительного запуска APP0 через линию MD при следующей загрузке устройство запустит то приложение, которое указано по умолчанию, - если, конечно, вы снова не воспользуетесь принудительным запуском через MD.
Загрузка приложений и обновлений
Device Explorer всегда загружает приложение в активное, а удалённые обновления выполняются через внешнюю флеш-память. Device Explorer показывает, какое приложение активно, цифрой 0 или 1 перед названием текущего проекта.
При каждом обновлении APP0 приложение APP1 удаляется, и его нужно загрузить заново. Такая схема избавляет от необходимости оставлять свободное место между двумя приложениями. Но небольшой зазор (почти до 4KB) неизбежен, поскольку все файлы в WM2000 и WS1102 должны быть выровнены по 4KB.
Чтобы избежать несоответствий, APP0 всегда следует распространять вместе с TiOS, а APP1 нужно проверять, чтобы он использовал ту же версию TiOS.
Для удобства Tibbo обновила веб-приложение BinMerger, добавив поддержку систем с несколькими приложениями, таких как WM2000. Обновлённое веб-приложение позволяет объединить TiOS, APP0 и APP1 в один двоичный файл, который можно использовать для обновления прошивки, что значительно упрощает процесс обновления. Более старая утилита BinMerger для Windows системы с несколькими приложениями не поддерживает.
Генератор файлов Tibbo Composite Uncompressed (.TCU) тоже обновлён и поддерживает несколько приложений.
WM2000 - первое устройство Tibbo, прошивку которого можно обновить файлом .BIN по Wi-Fi на сетевом этапе режима обновления M/L.