Boot loader
the flas programming is just one way, in one group of processors. I usually use DSPs, and they use the bootloader, to copy the program data from flash to the internal, or maybe to an external fast RAM memory. There, the flash programming is another thing.
I think the ARMs use the same method.
there are 2 types: simple auto copy the data from the source (flash), and an more intelligent type: you can handle and control these with linux-like commands, from your PC, to boot, or to program the flash, from serial port. The first type: like TMS... DSPs bootloader in their ROM, and the second: like the Uboot, for ARM, and Blackfin.