The RAK3172 contains a STM32WLE5CC mcu, which has 64kB RAM and 256kB Flash memory. The LoraWAN stack occupies about half of that, and the remaining space can be used for application programs.
The standard SWDIO/SWCLK pins are available in the pin header together with USART1 for effective development environment.
We are undertaking to put a small Forth (zForth) in the standard LoraWAN stack for this module, so that you can add custom functionality without creating a new Flash image. Forth is a somewhat alien programming language, but has been used successfully both on Nasa missions as well as deep inside CPUs, such as SPARC, and very popular for games in the 1980s.
Colibri MCU1 standard image intends to execute Colibri Forth in the following way;
1. 2kB of EEPROM is reserved for a custom Forth program. This is executed at lower priority at the max interval of every 50ms. 2. Each Colibri expansion module has a 24LC16 EEPROM. The first 128 bytes are reserved for calibration parameters, the remaining 1920 bytes is a Forth program that is executed by the host MCU, to interact with the expansion module and preparing a packet to be sent via LoraWAN, so Uplink message on fPort 2. 3. Colibri modules that has an on-board STM32F030 (currently Colibri PID and Colibri RS485u) has an additional 2kB of EEPROM containing a Forth program that the on-board STM32F030 will execute.
All these Forth programs can be uploaded in the field via LoraWAN (so called) Downlink communications.
The Colibri MCU1 can be programmed with the Arduino IDE. The support for this is provided by RAKwireless. See RAKwireless website.