# [Keil MDK versions](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/asm/intro/)

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/asm/)
- [Keil MDK versions](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/asm/intro/)
- [Setting up a Project in Keil Studio (VS Code)](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/asm/setup_mdk6/)
- [Setting up a Project in Keil MDK (μVision)](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/asm/setup_mdk5/)
- [Writing assembly functions](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/asm/coding/)
- [Next Steps](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/asm/_next-steps/)

Though Cortex-M processors have been designed so that all operations can be programmed with C/C++ code, it can be useful to also understand how to create assembler level code, which can be more efficient than compiler generated code.

## Efficient Embedded Systems Education Kit

This Learning Path is based on examples from the [Efficient Embedded Systems Education Kit](https://github.com/arm-university/Efficient-Embedded-Systems-Design-Education-Kit), which uses the [Nucleo-F401RE](https://www.st.com/en/evaluation-tools/nucleo-f401re.html) development board.

In this learning path, the Cortex-M4 Fixed Virtual Platform provided with MDK will be used.

The assembly level functions will conform to the [Arm Procedure Call Standard](https://github.com/ARM-software/abi-aa/blob/main/aapcs32/aapcs32.rst).

## Keil MDK

[Keil MDK](https://www.keil.arm.com/) can support a number of different environments.

Keil Studio is a collection of `Visual Studio Code` extensions to provide a complete development IDE. For installation instructions, refer to the [Arm Keil Studio for VS Code](https://learn.arm.com/install-guides/keilstudio_vs/) install guide. Windows, Linux, and macOS are supported hosts.

You can also use the legacy μVision IDE. For installation instructions, refer to the [Keil μVision](https://learn.arm.com/install-guides/mdk/) install guide. Note that only Windows is a supported host.
