# Next Steps

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/cmsis_rtx/)
- [Create and setup Keil MDK project](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/cmsis_rtx/create/)
- [Initialize the operating system](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/cmsis_rtx/initialize/)
- [Create RTOS threads](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/cmsis_rtx/threads/)
- [Build and run the application](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/cmsis_rtx/build_and_run/)
- [Using Event Recorder](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/cmsis_rtx/eventrecorder/)
- [Next Steps](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/cmsis_rtx/_next-steps/)

## Explore related resources
Find more information about the topics in this Learning Path:
- [CMSIS-RTOS2 Documentation](https://www.keil.com/pack/doc/CMSIS/RTOS2/html/index.html)
- [Event Recorder and Component Viewer](https://www.keil.com/pack/doc/compiler/EventRecorder/html/index.html)

## Review frequently asked questions
These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

### How do I check that the required CMSIS packs are installed before creating the project?
Open the **Pack Installer** from Keil MDK and install the latest CMSIS packs. Update to the most recent versions before proceeding.

### What should main() do to start RTX5, and how do I confirm the kernel is running?
```c
main()
```
sets up the SysTick using `SystemCoreClockUpdate()`, initializes the RTOS, and starts the kernel. In debug, open **View > Watch Windows > RTX RTOS** to see the kernel state and active threads.

### How many threads does the example create and where are they started?
The example starts three threads from `app_main` using `osThreadNew()`. The number and names are arbitrary and serve to illustrate basic thread creation.

### What steps build and run the project in Keil MDK, and what should I monitor during execution?
Save all files, click Build (`F7`), then Debug (`Ctrl+F5`) to launch the FVP. Open the RTX RTOS view and the **Serial Windows > Debug (printf)** window, click Run (`F5`), and observe thread activity and output before stopping.

### When should I use Event Recorder and how do I route STDOUT to it?
Use Event Recorder when semihosting isn’t supported in Keil MDK. Enable **CMSIS-View > Event Recorder (DAP variant)**, set **CMSIS-Compiler > STDOUT (API)** to **Event Recorder**, and enable **CMSIS-Compiler > Core**. In Arm Development Studio, Event Recorder and Component Viewer aren’t supported.
