FreeRTOS vs Bare-Metal — When Firmware Engineers Should Choose One