How nornrtos/norncore works
nornOS is a small preemptive real-time kernel for AVR and ESP32, with a Linux host port. Its principal product workflow is an application initializing the kernel, registering tasks, then starting the scheduler; tasks use kernel services and portable HAL drivers to interact with hardware. The graph also preserves documented synchronization, timing, memory, watchdog, AMP, and flash capabilities. Unsampled module relationships are included only where the README describes them; source excerpts provide the application-specific links shown.
Main entry points: rtos.h Public RTOS API · bTool.c bTool Controller · rtos_kernel.c Scheduler Core · tc07_amp.c AMP Example
Components 24
Applications
- bTool Controller
applications/bTool/bTool.c - Kernel Test Cases
applications - AMP Example
applications/tc07/tc07_amp.c - Kernel Benchmark
applications/tc10/tc10_bench.c - Stack Depth Test
applications/tc12/tc12_depth.c
Kernel
- Public RTOS API
kernel/rtos.h - Scheduler Core
kernel/rtos_kernel.c - Semaphores & Mutexes
kernel/rtos_sync.c - Queues & Mailboxes
kernel/rtos_queue.c - Task Notifications
kernel/rtos_notify.c - Software Timers
kernel/rtos_timer.c - Event Groups
kernel/rtos_evgroup.c - Heap & Pools
kernel/rtos_heap.c - Panic & Watchdog
kernel/rtos_panic.c
CPU Ports
- AVR Port
port/avr/port_avr.c - ESP32 Port
port/xtensa/port_esp32.c - Host Port
port/host/port_host.c
Hardware Abstraction
- AMP Link
hal/xtensa/amp.c - UART Driver
hal/uart.h - DHT11 Driver
hal/dht11.c - LCD Driver
hal/hd44780.c - Flash Storage
hal/flash.h - Board & GPIO
hal/avr/board.h
Other components
- Application
Connections 27
- Application → bTool Controller: starts
- Application → Kernel Test Cases: runs
- bTool Controller → Public RTOS API: initializes tasks
applications/bTool/bTool.c - bTool Controller → DHT11 Driver: reads sensor
applications/bTool/bTool.c - bTool Controller → LCD Driver: updates display
applications/bTool/bTool.c - bTool Controller → UART Driver: uses console
applications/bTool/bTool.c - bTool Controller → Semaphores & Mutexes: locks state
applications/bTool/bTool.c - bTool Controller → Queues & Mailboxes: posts readings
applications/bTool/bTool.c - Kernel Test Cases → Public RTOS API: tests services
applications/tc01/tc01_basics.c - AMP Example → Public RTOS API: creates tasks
applications/tc07/tc07_amp.c - AMP Example → AMP Link: sends messages
applications/tc07/tc07_amp.c - Kernel Benchmark → Public RTOS API: measures calls
applications/tc10/tc10_bench.c - Stack Depth Test → Public RTOS API: tests stacks
applications/tc12/tc12_depth.c - Public RTOS API → Scheduler Core: schedules tasks
kernel/rtos_kernel.c - Public RTOS API → Semaphores & Mutexes: offers synchronization
- Public RTOS API → Queues & Mailboxes: offers queues
- Public RTOS API → Task Notifications: offers notifications
- Public RTOS API → Software Timers: offers timers
- Public RTOS API → Event Groups: offers events
- Public RTOS API → Heap & Pools: offers allocation
- Public RTOS API → Panic & Watchdog: offers recovery
- Scheduler Core → AVR Port: uses CPU port
- Scheduler Core → ESP32 Port: uses CPU port
- Scheduler Core → Host Port: uses CPU port
- AMP Link → ESP32 Port: wakes core
- bTool Controller → Board & GPIO: maps pins
applications/bTool/bTool.c - Public RTOS API → Flash Storage: persists app data