Description
STM8 port details. This section how the ChibiOS/RT features are implemented on this architecture.
The ChibiOS/RT logical System States are mapped as follow in the STM8 port:
- Init. This state is represented by the startup code and the initialization code before
chSysInit()
is executed. It has not a special hardware state associated.
- Normal. This is the state the system has after executing
chSysInit()
. Interrupts are enabled.
- Suspended. Interrupts are disabled.
- Disabled. Interrupts are enabled. This state is equivalent to the Suspended state because there are no fast interrupts in this architecture.
- Sleep. Implemented with "wait" instruction insertion in the idle loop.
- S-Locked. Interrupts are disabled.
- I-Locked. This state is equivalent to the SRI state, the
chSysLockI()
and chSysUnlockI()
APIs do nothing (still use them in order to formally change state because this may change).
- Serving Regular Interrupt. Normal interrupt service code.
- Serving Fast Interrupt. Not present in this architecture.
- Serving Non-Maskable Interrupt. The STM8 ha non maskable interrupt sources that can be associated to this state.
- Halted. Implemented as an infinite loop with interrupts disabled.
- The STM8 does not have a dedicated interrupt stack, make sure to reserve enough stack space for interrupts in each thread stack. This can be done by modifying the
INT_REQUIRED_STACK
macro into ./os/ports/RC/STM8/chcore.h.
- The kernel currently supports only the small memory model so the kernel files should be loaded in the first 64K. Note that this is not a problem because upper addresses can be used by the user code, the kernel can context switch code running there.
- The configuration option
CH_OPTIMIZE_SPEED
is not currently supported because the missing support of the inline
"C" keyword in the compiler.