Embracing the principle of "write once, run anywhere," Brawl is an innovative application runtime environment that hosts a featherweight virtual machine and developer sandbox. It's specifically designed for crafting IoT applications and their business logic, even on resource-limited microcontrollers. Brawl's standout feature is its exceptional ability to minimize firmware binary sizes while maintaining near-native performance with native bindings.
To illustrate, let's revisit a familiar example sketch provided in the Blink Tutorial 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 | ||
Compiled on the latest Arduino IDE and selecting the relevant device target, a simple application's firmware binary size varies considerably – ranging from 930 bytes to a substantial 48,732 bytes. And remember, this disparity exists even though the logic is identical across all targets. Brawl changes this narrative. With Brawl, developers create their device-agnostic business logic, resulting in a firmware size that remains consistent, no matter the deployment target. This firmware is then interpreted and executed in an on-device application runtime environment using native bindings – without impacting performance.
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 | ||||
Just like that, your application is condensed to a mere twenty (20) bytes across all platforms, a fraction of the original firmware size.
Brawl is built with IoT in mind. It supports all functionalities that can be performed natively on the target microcontroller. Its virtual machine offers a basic arithmetic logic unit with default bindings to GPIO, I2C, SPI, and 1-Wire. It also provides a secure sandbox to curb unwanted activities, with the capability to expand and execute complex tasks via native bindings without affecting performance.
Our Oasis and Fusion technologies synergize perfectly with Brawl, providing a platform to execute IoT firmware while offering a secure ecosystem for delivering and deploying firmware updates to devices in the field. As narrow band networks like LoRa, Sigfox, NB-IoT and LTE-M continue to expand with their limited uplink and downlink bandwidth, Brawl's compact firmware size enables feasible FOTA update capabilities. This eliminates the need for fallback networks or alternative wireless technologies for delivering firmware updates, reducing both complexity and cost.
Just as Java and .NET revolutionized server and desktop computing two decades ago, Brawl has the potential to redefine the IoT landscape. Its IoT virtual machine can theoretically be deployed anywhere, facilitating the creation of digital twins or functioning as a process within a more powerful environment. This aids in concept development and validation, saving significant investment in IoT.
Brawl signifies our dedication to continuously evolving with the technology of tomorrow. It might not be in mainstream use now, but it represents our commitment to staying ahead of the curve, offering the smallest possible firmware size, and future-proofing IoT application development.