Brawl is an on-device application runtime environment that provides a lightweight virtual machine and developer sandbox for developers to write business logic and applications for the Internet of Things. Specifically designed for IoT; the virtual machine is capable of providing near native performance using native bindings even on resource constrained micro-controllers - while drastically reducing the size of firmware binaries.
To clarify; let's take a look at the common example sketch provided in the Blink Tutorial provided in the Arduino IDE.
Arduino Sketch | Target | CPU | Firmware | |
---|---|---|---|---|
void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); } |
Arduino UNO | Atmel ATmega328P | 930 bytes | |
Arduino MKRZERO | Atmel SAMD21 | 10,072 bytes | ||
Arduino Primo | ARM Cortex-M4 | 19,960 bytes | ||
Arduino Due | ARM Cortex-M3 | 22,124 bytes | ||
Genuino 101 | Intel Currie | 48,732 bytes | ||
The tutorial was compiled using the most recent version of the Arduino IDE selecting the appropriate device target and performing a standard compile. Depending on the underlying CPU used by the micro-controller - a simple application results in a firmware binary that ranges from a relatively small 930 bytes through to 48,732 bytes - quite a considerable range in sizes considering the logic is the same across all targets.
Using Brawl, the developer only has to define the business logic of their application which is device agnostic, meaning the size of the resulting firmware remains the same regardless of the target device for deployment. The resulting IoT firmware can then be delivered to an on-device application runtime environment that interprets and executes the functionality with native bindings - with near zero performance impact.
Arduino Sketch | Target | CPU | IoT Firmware | |
---|---|---|---|---|
void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); } |
Arduino UNO | Atmel ATmega328P | 20 bytes * | |
Arduino MKRZERO | Atmel SAMD21 | 20 bytes * | ||
Arduino Primo | ARM Cortex-M4 | 20 bytes * | ||
Arduino Due | ARM Cortex-M3 | 20 bytes * | ||
Genuino 101 | Intel Currie | 20 bytes * | ||
* firmware size that is delivered and executed within IoT virtual machine | ||||
The same application can then be reduced to a tiny twenty (20) bytes, regardless of the target platform, a fraction of original firmware size.
Brawl has been designed specifically for IoT; supporting any functionality that can be done natively on the target micro-controller. The virtual machine provides a basic arithmetic logic unit with bindings to GPIO, I2C, SPI, 1-Wire by default, but also provides a secure sandbox to prevent unwanted activities from being performed - also expandable to provide native bindings to execute complex tasks without a performance hit.
RIoT Oasis and Fusion perfectly compliment the technology as they provide a target platform to execute the IoT firmware on and also provide an ecosystem environment for the secure delivery and rollout of IoT firmware to devices in the field while ensuring any messages transmitted are also secure. Native applications previously managed on the platform can be migrated to the new IoT firmware with little effort.
With the continual growth and rollout of narrow band networks (such as LoRa, Sigfox, NB-IoT) that have extremely limited up-link and down-link bandwidth - tiny firmware for business logic can accommodate for FOTA update capabilities that were previously considered unfeasible without having to rely on a fallback network or alternative wireless technologies to deliver firmware updates; reducing complexity and cost.
The server and desktop experienced a revolution with the introduction of Java and .NET almost twenty years ago; Brawl could do the same for the Internet of Things. In theory; the IoT virtual machine could be deployed anywhere; to implement a digital twin or even as a process within a more powerful environment - to assist with concept development and validation before outlaying serious investment in IoT.