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:
There is some ways to solve this problems:
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.