Pre-Emptive Multi-Tasking on Arm Cortex-M