Our great sponsors
-
moddable
Tools for developers to create truly open IoT products using standard JavaScript on low cost microcontrollers.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
> In a nutshell, the problem is that on microcontrollers everything is firmware that is compiled, linked, and deployed together using really old-fashioned tools. Changing anything means changing everything.
The author hasn't seemingly heard of http://www.ulisp.com/ which is small enough to fit within kilobytes of memory and at the same time featureful enough to drive complex microcontroller applications. At the same time, it has a normal REPL running on the microcontroller that is accessible from the outside and usable for interactive programming.
Not quite sure if I follow what you're saying. As in Tasmota/Berry do or do not do more than provide I2C/SPI?
> If one wants to do serious stuff they would use an appropriate RTOS and program it in C.
It's unfortunate, but still largely appears to be the case. I find C very time consuming to program, so I ported Nim to FreeRTOS [1]. It's _very_ nice being able to go from writing highly optimized ISR functions to high level JSON parsing in one language. Add in defaulting to memory safety but with no pause-the-world GC. I tried Rust but it seems more difficult to integrate into existing world RTOS'es, flashers, Swagger debuggers, etc.
Though, I've been curious what running a WASM VM would be like? One could integrate any language: C++, C, Nim, Rust, etc. Would be interesting.
> MongooseOS does more than this if we're talking ESP32, also other devices, Javascript, C, C++, commercial support, cloud based OTA upgrades and integration with AWS, Azure, Google and IBM Watson IoT cloud services.
MongooseOS does seem interesting, but very targeting a niche market with prebuilt needs? For future RTOS'es I think ZephyrOS [2] has a lot of potential given it's now supported by NXP [3], TI, and others but is independent of any given (cloud) vendors or other IoT companies. Some might not like the CMake based build system, but in my view all the RTOS build systems are terrible in their own special way.
1: https://github.com/elcritch/nesper
If the scope is limited to ESP32/ESP8266, it seems technically possible to run QuickJS on them.
From Fabrice Bellard himself:
> QuickJS should be able to run on the ESP32 platform as it is OS independent (as you said, quickjs-libc.c is not part of the engine). For simple scripts it should fit in the available RAM.
https://www.freelists.org/post/quickjs-devel/quickjs-on-esp3...
Some attempts on GitHub:
https://github.com/binzume/esp32quickjs
https://github.com/huming2207/quickjs-esp32
https://github.com/jack828/esp8266-quickjs
If the scope is limited to ESP32/ESP8266, it seems technically possible to run QuickJS on them.
From Fabrice Bellard himself:
> QuickJS should be able to run on the ESP32 platform as it is OS independent (as you said, quickjs-libc.c is not part of the engine). For simple scripts it should fit in the available RAM.
https://www.freelists.org/post/quickjs-devel/quickjs-on-esp3...
Some attempts on GitHub:
https://github.com/binzume/esp32quickjs
https://github.com/huming2207/quickjs-esp32
https://github.com/jack828/esp8266-quickjs
If the scope is limited to ESP32/ESP8266, it seems technically possible to run QuickJS on them.
From Fabrice Bellard himself:
> QuickJS should be able to run on the ESP32 platform as it is OS independent (as you said, quickjs-libc.c is not part of the engine). For simple scripts it should fit in the available RAM.
https://www.freelists.org/post/quickjs-devel/quickjs-on-esp3...
Some attempts on GitHub:
https://github.com/binzume/esp32quickjs
https://github.com/huming2207/quickjs-esp32
https://github.com/jack828/esp8266-quickjs
I can write a library for an OLED device that is driven by an platform agnostic I2C device that will run on any microcontroller that implements the necessary abstractions.
The `embedded-hal` (https://github.com/rust-embedded/embedded-hal) are these abstractions that allow this to happen