everything is statically allocated at compile time
dynamic objects are supported by an optional layer built on top of the static core.
threads, virtual timers, semaphores, mutexes, condition variables, messages, mailboxes, event flags.
Port, Serial, ADC, CAN, GPT, I2C, MAC, MMC, PWM, SPI, UART, USB, USB-CDC
uIP, lwIP, FatFs