RT
Skynet RT is an Apache 2.0 licensed fork of NuttX. See the NOTICE message and HISTORY changelog for additional details.
Emulation
Execute RT binary using QEMU.
./tools/configure.sh qemu-armv7a:nsh
kconfig-mconf Kconfig
./tools/mkconfig . > include/nuttx/config.h
make -j
qemu-system-arm -M virt -device loader,file=nuttx -nographic
Simulation
Run RT as POSIX Application.
./tools/configure.sh sim:nsh
kconfig-mconf Kconfig
./tools/mkconfig . > include/nuttx/config.h
make -j
./nuttx
Bare Metal
Run RT on Bare Metal like Raspberry Pi Pico 2 (RP2350).
./tools/configure.sh raspberrypi-pico-2:usbnsh
kconfig-mconf Kconfig
./tools/mkconfig . > include/nuttx/config.h
make -j
picotool uf2 convert nuttx.bin nuttx.uf2 --family absolute --offset 0x10000000
CONFIG
Configuration Menu using kconfig.
$ kconfig-mconf Kconfig

HAL
Hardware Abstraction Layer
HAL defines set of include files for CHIPS and BOARDS supported by RT.
rts/
├── include/
│ ├── arch/
│ │ ├── [chip]/
│ │ └── [board]/
CHIPS
CHIPS folder defines hardware abstractions for CPU or SoC which include GPIO, I2C, SPI, UART and Timer harware definition for SoC built-ins.
ARMv7-M — ARMv7-M 32-bit MCU Profile.
ARMv7-A — ARMv7-A 32-bit Profile.
ARMv8-M — ARMv8-M 32-bit MCU Profile.
ARMv8-A — ARMv8-A 64-bit Profile.
BCM2711 — Broadcom BCM2711.
rts/
├── hal/
│ ├── chips/
│ │ └── [chip]/
│ │ ├── cpu/
│ │ ├── mmu/
│ │ └── drivers/
│ │ ├── gpio/
│ │ ├── i2c/
│ │ ├── spi/
│ │ ├── uart/
│ │ ├── timer/
│ │ └── misc/
BOARDS
BOARDS folder fefines hardware abstractions for I/O Boards where SoC is placed. Thus the BOARD primitives include by inheritance all CHIP primitives plus Boot, PWM, ADC, Sensors and Power hardware board facilities.
CXD56XX — Sony Spresense.
PICO2 — Raspberry Pi Pico 2.
VIRTIO — QEMU Virtio.
SIM — Simulation.
rts/
├── hal/
│ ├── boards/
│ │ └── [board]/
│ │ ├── init/
│ │ ├── linker/
│ │ └── drivers/
│ │ ├── gpio/
│ │ ├── i2c/
│ │ ├── spi/
│ │ ├── uart/
│ │ ├── timer/
│ │ ├── misc/
│ │ ├── pwm/
│ │ ├── adc/
│ │ ├── sensors/
│ │ └── power/
KERNEL
RT Kernel.
LDR — ELF/FLAT Binary Loader.
CLK — Clocks and Counters.
IRQ — Interrupts.
SIG — Signaling System.
TIM — Timers.
SCH — Scheduler.
MM — Memory Manager.
MQ — Message Queues.
THR — Threads.
SEM — Semaphores.
ENV — Environment Variables.
TSK — Task Processes.
DRIVERS
Device Drivers.
EEPROM — EEPROM Access.
FDT — Flattened Device Tree.
I2C — I2C Bus.
PCI — PCI/PCIe Bus.
USBDEV — USB Device Driver.
USBHOST — USB Host Driver.
UART — UART Serial Driver.
FS
File Systems.
Virtual — File System (/).
ROM — File System (/etc).
BIN — File System (/bin).
LIBS
Libraries.
LIBC — C Run-Time Library.
LIBM — Mathematical Library.
APPS
Applications.
INIT — RT Init Supervisor.
SH — POSIX Verified Shell.
SKYNET — Skynet Application.