ChibiOS/RT
Copyright and Credits
License and F.A.Q.
Project Goals
Application Range
Architecture
Kernel Concepts
Articles and Code Samples
General
Setting up a free embedded IDE
Embedded development using Eclipse
Response Time and Jitter
Knowledge Base
Integration Guide
Porting ChibiOS/RT for Dummies
Events Explained
Debugging ChibiOS/RT applications
Stacks and stack sizes
Round Robin scheduling explained
Threads Lifecycle
Mutual Exclusion guide
Invoking multiple primitives as a single atomic operation
Saving RAM by declaring thread functions "noreturn"
Reliable timings using Threads
Designing an embedded application
How To's
How to create a thread
How to write interrupt handlers
How to wake up a thread from an interrupt handler
How to manage memory
How to cleanly stop the OS
Testing Strategy
Threads and Scheduler test
Ready List functionality #1
Ready List functionality #2
Threads priority change test
Threads delays test
Dynamic APIs test
Threads creation from Memory Heap
Threads creation from Memory Pool
Registry and References test
Messages test
Messages Server loop
Semaphores test
Enqueuing test
Timeout test
Atomic signal-wait test
Mutexes test
Priority enqueuing test
Priority inheritance, simple case
Priority inheritance, complex case
Priority return verification
Mutex status
Condition Variable signal test
Condition Variable broadcast test
Condition Variable priority boost test
Events test
Events registration and dispatch
Events wait and broadcast
Events timeout
Mailboxes test
Queuing and timeouts
I/O Queues test
Input Queues functionality and APIs
Output Queues functionality and APIs
Memory Heap test
Allocation and fragmentation test
Memory Pools test
Allocation and enqueuing test
Kernel Benchmarks
Messages performance #1
Messages performance #2
Messages performance #3
Context Switch performance
Threads performance, full cycle
Threads performance, create/exit only
Mass reschedule performance
I/O Round-Robin voluntary reschedule.
I/O Queues throughput
Virtual Timers set/reset performance
Semaphores wait/signal performance
Mutexes lock/unlock performance
RAM Footprint
Modules
Kernel
Version Numbers and Identification
Configuration
Types
Base Kernel Services
System Management
Scheduler
Threads
Time and Virtual Timers
Synchronization
Semaphores
Mutexes
Condition Variables
Event Flags
Synchronous Messages
Mailboxes
Memory Management
Core Memory Manager
Heaps
Memory Pools
I/O Support
Data Streams
I/O Channels
I/O Queues
Registry
Debug
Port Templates
Internals
Ports
MegaAVR
Configuration Options
AVR Core Implementation
AVR Drivers
AVR HAL Support
AVR USART Support
ARM7TDMI
Core Port Implementation
Startup Support
AT91SAM7 Support
AT91SAM7 HAL Support
AT91SAM7 I/O Ports Support
AT91SAM7 USART Support
AT91SAM7 EMAC Support
AT91SAM7 MII Support
LPC214x Support
VIC Support
LPC214x HAL Support
LPC214x I/O Ports Support
LPC214x UART Support
LPC214x SPI Support
ARM Cortex-Mx
ARMv6-M Specific Implementation
ARMv7-M Specific Implementation
NVIC Support
STM32F10x Specific Parameters
LPC11xx Specific Parameters
LPC13xx Specific Parameters
LPC11xx Support
LPC11xx HAL Support
LPC11xx I/O Ports Support
LPC11xx UART Support
LPC13xx Support
LPC13xx HAL Support
LPC13xx I/O Ports Support
LPC13xx UART Support
STM32 Support
STM32 HAL Support
STM32F103 HAL Support
STM32F105/F107 HAL Support
STM32 I/O Ports Support
STM32 USART Support
STM32 DMA Support
STM32 ADC Support
STM32 CAN Support
STM32 PWM Support
STM32 SPI Support
PowerPC
SPC563 Drivers
SPC563 HAL Support
SPC563 ESCI Support
MSP430
MSP430 Drivers
MSP430 HAL Support
MSP430 I/O Ports Support
MSP430 USART Support
STM8
STM8 Drivers
STM8 HAL Support
STM8 I/O Ports Support
STM8 UART Support
HAL
HAL Driver
HAL Low Level Driver
PAL Driver
PAL Low Level Driver
Serial Driver
Serial Low Level Driver
SPI Driver
SPI Low Level Driver
ADC Driver
ADC Low Level Driver
CAN Driver
CAN Low Level Driver
PWM Driver
PWM Low Level Driver
MAC Driver
MAC Low Level Driver
MMC over SPI Driver
Various
C++ Wrapper
Memory Streams
Periodic Events Timer
Command Shell
Test Runtime
External Components
Data Structures
__ioport
_SerialDriver
ADCConfig
ADCConversionGroup
ADCDriver
at91sam7_pio_setup_t
BaseAsynchronousChannel
BaseAsynchronousChannelVMT
BaseChannel
BaseChannelVMT
BaseSequentialStream
BaseSequentialStreamVMT
chibios_rt::BaseThread
CANConfig
CANDriver
CANFilter
CANRxFrame
CANTxFrame
CM3_NVIC
CM3_SCB
CM3_ST
cmxctx
CondVar
chibios_rt::CondVar
context
CtxSwcEvent
eabi_frame
EMACDescriptor
chibios_rt::EnhancedThread< N >
chibios_rt::Event
EventListener
EventSource
EvTimer
extctx
GenericConfig
GenericQueue
gpio_t
heap_header
intctx
IOBus
lpc111x_gpio_setup_t
LPC13xx_gpio_setup_t
lpc214x_fio_setup_t
MACDriver
MACReceiveDescriptor
MACTransmitDescriptor
memory_heap
MemoryPool
MemoryStream
MemStreamVMT
MMCConfig
MMCDriver
msp430_dio_setup_t
chibios_rt::Mutex
Mutex
PALConfig
pool_header
port_common_t
PWMChannelConfig
PWMConfig
PWMDriver
ReadyList
chibios_rt::Semaphore
Semaphore
SerialConfig
SerialDriverVMT
ShellCommand
ShellConfig
SPIConfig
SPIDriver
stkalign_t
stm32_gpio_setup_t
stm8_startctx
chibios_rt::System
testcase
Thread
ThreadsList
ThreadsQueue
chibios_rt::Timer
TraceBuffer
VirtualTimer
VTList
Class Hierarchy
Data Fields
Graphical Class Hierarchy
File List
adc.c
adc.h
templates/adc_lld.c
platforms/STM32/adc_lld.c
templates/adc_lld.h
platforms/STM32/adc_lld.h
at91sam7.h
at91sam7_mii.c
at91sam7_mii.h
can.c
can.h
templates/can_lld.c
platforms/STM32/can_lld.c
templates/can_lld.h
platforms/STM32/can_lld.h
ch.cpp
ch.h
ch.hpp
chcond.c
chcond.h
chconf.h
kernel/templates/chcore.c
ports/GCC/AVR/chcore.c
ports/GCC/ARM7/chcore.c
ports/GCC/ARMCMx/chcore.c
ports/GCC/PPC/chcore.c
ports/GCC/MSP430/chcore.c
ports/RC/STM8/chcore.c
kernel/templates/chcore.h
ports/GCC/AVR/chcore.h
ports/GCC/ARM7/chcore.h
ports/GCC/ARMCMx/chcore.h
ports/GCC/PPC/chcore.h
ports/GCC/MSP430/chcore.h
ports/RC/STM8/chcore.h
chcore_v6m.c
chcore_v6m.h
chcore_v7m.c
chcore_v7m.h
chcoreasm.s
chdebug.c
chdebug.h
chevents.c
chevents.h
chheap.c
chheap.h
chinline.h
chioch.h
chlists.c
chlists.h
chmboxes.c
chmboxes.h
chmemcore.c
chmemcore.h
chmempools.c
chmempools.h
chmsg.c
chmsg.h
chmtx.c
chmtx.h
chqueues.c
chqueues.h
chregistry.c
chregistry.h
chschd.c
chschd.h
chsem.c
chsem.h
chstreams.h
chsys.c
chsys.h
chthreads.c
chthreads.h
kernel/templates/chtypes.h
ports/GCC/AVR/chtypes.h
ports/GCC/ARM7/chtypes.h
ports/GCC/ARMCMx/chtypes.h
ports/GCC/PPC/chtypes.h
ports/GCC/MSP430/chtypes.h
ports/RC/STM8/chtypes.h
chvt.c
chvt.h
STM32F10x/cmparams.h
LPC11xx/cmparams.h
LPC13xx/cmparams.h
ARM7/crt0.s
ARMCMx/crt0.s
PPC/crt0.s
evtimer.c
evtimer.h
hal.c
hal.h
templates/hal_lld.c
platforms/AT91SAM7/hal_lld.c
platforms/AVR/hal_lld.c
platforms/LPC11xx/hal_lld.c
platforms/LPC13xx/hal_lld.c
platforms/LPC214x/hal_lld.c
platforms/MSP430/hal_lld.c
platforms/SPC56x/hal_lld.c
platforms/STM32/hal_lld.c
platforms/STM8/hal_lld.c
templates/hal_lld.h
platforms/AT91SAM7/hal_lld.h
platforms/AVR/hal_lld.h
platforms/LPC11xx/hal_lld.h
platforms/LPC13xx/hal_lld.h
platforms/LPC214x/hal_lld.h
platforms/MSP430/hal_lld.h
platforms/SPC56x/hal_lld.h
platforms/STM32/hal_lld.h
platforms/STM8/hal_lld.h
hal_lld_f103.h
hal_lld_f105_f107.h
halconf.h
lpc214x.h
mac.c
mac.h
templates/mac_lld.c
platforms/AT91SAM7/mac_lld.c
templates/mac_lld.h
platforms/AT91SAM7/mac_lld.h
memstreams.c
memstreams.h
mii.h
mmc_spi.c
mmc_spi.h
mpc563m.h
nvic.c
nvic.h
pal.c
pal.h
templates/pal_lld.c
platforms/AT91SAM7/pal_lld.c
platforms/LPC11xx/pal_lld.c
platforms/LPC13xx/pal_lld.c
platforms/LPC214x/pal_lld.c
platforms/MSP430/pal_lld.c
platforms/STM32/pal_lld.c
platforms/STM8/pal_lld.c
templates/pal_lld.h
platforms/AT91SAM7/pal_lld.h
platforms/LPC11xx/pal_lld.h
platforms/LPC13xx/pal_lld.h
platforms/LPC214x/pal_lld.h
platforms/MSP430/pal_lld.h
platforms/STM32/pal_lld.h
platforms/STM8/pal_lld.h
pwm.c
pwm.h
templates/pwm_lld.c
platforms/STM32/pwm_lld.c
templates/pwm_lld.h
platforms/STM32/pwm_lld.h
serial.c
serial.h
templates/serial_lld.c
platforms/AT91SAM7/serial_lld.c
platforms/AVR/serial_lld.c
platforms/LPC11xx/serial_lld.c
platforms/LPC13xx/serial_lld.c
platforms/LPC214x/serial_lld.c
platforms/MSP430/serial_lld.c
platforms/SPC56x/serial_lld.c
platforms/STM32/serial_lld.c
platforms/STM8/serial_lld.c
templates/serial_lld.h
platforms/AT91SAM7/serial_lld.h
platforms/AVR/serial_lld.h
platforms/LPC11xx/serial_lld.h
platforms/LPC13xx/serial_lld.h
platforms/LPC214x/serial_lld.h
platforms/MSP430/serial_lld.h
platforms/SPC56x/serial_lld.h
platforms/STM32/serial_lld.h
platforms/STM8/serial_lld.h
shell.c
shell.h
spi.c
spi.h
templates/spi_lld.c
platforms/LPC214x/spi_lld.c
platforms/STM32/spi_lld.c
templates/spi_lld.h
platforms/LPC214x/spi_lld.h
platforms/STM32/spi_lld.h
stm32_dma.c
stm32_dma.h
stm8.h
syscalls.c
test.c
test.h
testbmk.c
testbmk.h
testdyn.c
testdyn.h
testevt.c
testevt.h
testheap.c
testheap.h
testmbox.c
testmbox.h
testmsg.c
testmsg.h
testmtx.c
testmtx.h
testpools.c
testpools.h
testqueues.c
testqueues.h
testsem.c
testsem.h
testthd.c
testthd.h
typedefs.h
vic.c
vic.h
Globals