Dual Tibbo BASIC/C Apps

The WM2000 is the first Tibbo device that can store up to two compiled Tibbo BASIC/C application binaries — "APP0" and "APP1" (only one can run at a time).

Of the module's total storage of 4,096KB, system files take up 960KB and the sole instance of TiOS occupies 1,448KB, leaving 1,688KB available for apps. Note that this storage is 4KB-aligned, meaning that if APP0 is "empty" or smaller than 4KB, it will still use up 4KB. Likewise, if APP0 is larger than a multiple of 4KB, it will use the space up to the next 4KB block.

New paradigm

wm2000_app_spaces

On earlier Tibbo BASIC/C-programmable hardware, all flash storage remaining after TiOS and system files was available for a single user application binary. Starting with the WM2000 — which has at least four times the flash storage than any predecessor — all flash storage remaining after TiOS and system files can be used to store up to two Tibbo BASIC/C compiled application binaries.

If the WM2000 is loaded with only one user application, everything works almost exactly the same way it did on earlier Tibbo hardware.

The WM2000 ships preloaded with our companion settings app as APP0, with all remaining storage available to upload a project as APP1, which is loaded by default at boot. Should you need even more space for a single project, you can upload it as APP0 and manually set the module to load it after powering on (see below).

Tibbo envisions the companion settings app serving as the foundation for your own such project, which would function like a second Monitor/Loader (M/L) with expanded capabilities. Alternatively, APP0 and APP1 can be populated with separate, fully functional user apps — sys.reboottoapp allows your code to switch between the two apps.

Default app

There are several methods available for you to specify which of the two apps will load when the module boots:

  • The WM2000 debut a new M/L console, which can be used to configure a number of the device's basic settings

  • The L.U.I.S. smartphone app (available for iOS and Android) can interface with the companion settings app via Bluetooth to configure basic settings

  • The sys.defaultapp property can be included in your project code

Switching between apps

The aforementioned sys.reboottoapp is a single-use method that can be included in a project to reboot the device into the other app, providing a way for your applications to call each other.

Additionally, you can manually force the module to launch APP0 by pressing and holding the MD button when the device is powered on or reset. After about 3 seconds, the green status LED will turn on, and releasing the button will boot the device into APP0. The next time the device boots, it will load whichever app has been designated as the default (pl_app_num). This means that if APP0 is the default app, the module will launch APP0 indefinitely until that setting is changed.

Uploading apps and updates

Device Explorer will always upload to the active app, while remote upgrades take place via external flash. Device Explorer will show which app is active with a 0 or 1 before the current project's name.

Whenever APP0 increases in size, APP1 is deleted and must be re-uploaded. This arrangement eliminates the necessity of maintaining empty space between the two apps.

However, there will inevitably be space between the two (up to 4KB), because all files on the WM2000 must be 4KB-aligned. For more information, refer to Platform Objects.

APP0 should always be distributed attached to TiOS to avoid mismatches, while APP1 should be checked to ensure that it's using the same TiOS version.

For your convenience, we have updated BinMerger to support multi-app systems such as the WM2000. The updated web app allows you to merge TiOS, APP0, and APP1 into a single binary file that you can use for firmware updates, vastly simplifying the upgrade process. The older BinMerger utility for Windows, however, does not support multi-app systems.

The WM2000 is the first Tibbo device in which the firmware can be updated using a .BIN file via Wi-Fi in the M/L update mode's network phase.