CMSIS2000  0.0.7
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Flashing and running progs at the ARM MCU

ARM core has Prinston arhitecture.

This mean that data and code are held in one memory space. Thanks to 32 bits the size of space is big and enough to hold FLASH and SRAM and DRAM memoryes. That is why Firmware program can be placed in FLASH and in RAM. This is a good feature vs AVR Havard architecture, where program MUST be placed only in FLASH ram.

So there is two problems in flashing and running programs at the ARM MCUs:

  • Copying code to memory
  • Executing, running code

There is some ways to solve this problems:

  • A program is copyed to the flash:
    • through hardware loader
    • through UART ISP loader with some utility (for ex Flash Magic)
    • through debugger
  • A program is copyed by loader from some data device. Loader is held in flash and executed evrry time then power is switching on
  • A program is copyed by debugger from some debugging software

In first case flashing process is not so fast but next program starting is fast, because it is already placed in flash memory. Also you can not be afraid of power reseting. In second case program starting is not so fast as it in the first one. Third case is the fastest, but you need to have debugging hardware and software. Also there is some advantage in this case – you have ability to put many breakpoins because there is no restrictions on number of breakpoints in ram vs flash.

See Also
ARM application debugging with OpenOCD