ARM Cortex M3 - Getting Started

The ARM Cortex M3 is a relatively new kid on the embedded controller block. This machine is as intricate as it is beautiful and getting started with the currently available tools is a usually a daunting task for most newcomers to this core, myself included. On this page I share a few bits of knowledge which I think might be useful to others.

At first, the development environment will probably seem overwhelmingly complicated. Not to worry, you are not a sissy; it is indeed very complicated. Editor, compiler, assembler, linker, debugger, jtag server & hardware, IDEs, the target system, your code... it all has to come together to work. But I can tell you this now: Compare it to a cold lake; Just take the dive. The temperature is actually not all that bad once your in :)

The following list mentions most of the documentation you may need to get started. Ofcourse you do not need to read all of it, but having these documents on your desk / laptop is very handy when working with a Cortex M3 processor.

Reference documentation

Books on ARM

I bought these, but you can find them on the web as pdf if your try hard enough, so I have been told. I do not know where. Really.

GNU tools, JTAG and more

ARM (the company) docs

ARM RealView Compilation Tools - Version 4.0

  • Developer Guide
  • Assembler Guide
  • Compiler Reference Guide
  • Compiler User Guide
  • Libraries and Floating Point Support Guide
  • Linker User Guide
  • Linker Reference Guide

ST Micro STM32 docs

  • The datasheet of the MCU. An STM32F103B in my case.
  • RM0008 STM32 Reference manual
  • PM0056 STM32F10xxx Cortex-M3 programming manual
  • AN2586 STM32F10xxx hardware development: getting started
  • AN2606 STM32F101xx, STM32F102xx and STM32F103xx system memory boot mode
  • AN2557 STM32F10x in-application programming using the USART
  • PM0042 STM32F10xxx Flash programming