Respuestas:
El arranque desde la memoria del sistema invoca el cargador de arranque en chip, que está presente en el chip directamente de fábrica, antes de que haya programado algo en el flash en chip. Esto le permite cargar el código (programa) en el dispositivo desde una interfaz externa como UART o USB. Esto se explica en detalle en el manual.
La memoria flash principal es donde normalmente va tu código. En funcionamiento normal, su código residirá en la memoria flash, y al reiniciar el encendido (POR), la CPU buscará el vector de reinicio y el puntero de pila inicial (SP) desde la memoria flash. Puede cargar flash a través de JTAG, cargador de arranque en chip (arriba), etc.
Por último, puede cargar código en RAM (JTAG, tiempo de ejecución) y luego iniciar / ejecutar desde allí. Esto no se usa con frecuencia, por lo general, está haciendo algo complicado como un gestor de arranque temporal o similar.