All system objects, such asthreads,semaphores,timers, etc., can be created and deleted at runtime. There is no upper limit except for the available memory. In order to increase system reliability, thekernelarchitecture is entirely static, a memory allocator is not required (but is available as an option), and there are no data structures with upper size limits like tables or arrays. The system APIs are designed to not have error conditions such as error codes or exceptions.

ChibiOS/HAL

The HAL component is meant to be an abstraction layer between the application and the underlying micro-controller hardware.

HAL offers an high level API for accessing common MCU peripheral like GPIO, ADC, SPI and so on and also take care of clocks-related and board-level initializations.

This component is only released only underApache License 2.0and is100% freealso for commercial use.

In Brief

MCU abstraction between application and hardware accelerates the firmware development allowing a moreobjective-oriented approach. Hardware inner details are mostly hidden to the application (but not unreachable).

Support for themost common MCU peripherals.

Interface layer toward theoptionalRTOS calledOSAL. OSALs can be created in order to support any reasonable RTOS.