This MR uses an intermediary function `start_app` to call after system initialization instead of `app_main`. In RTOS builds, freertos provides `start_app` and calls `app_main`. In non-RTOS builds, user provides `start_app` directly.
This MR uses an intermediary function `start_app` to call after system initialization instead of `app_main`. In RTOS builds, freertos provides `start_app` and calls `app_main`. In non-RTOS builds, user provides `start_app` directly.