Risposte:
L'avvio dalla memoria di sistema richiama il bootloader su chip, che è presente nel chip direttamente dalla fabbrica, prima di aver programmato qualcosa nella memoria flash su chip. Ciò consente di caricare (programmare) il codice nel dispositivo da un'interfaccia esterna come UART o USB. Questo è spiegato in dettaglio nel manuale.
La memoria flash principale è dove va di solito il tuo codice. Durante il normale funzionamento, il codice risiederà in flash e all'accensione (POR), la CPU recupererà il flash di ripristino e il puntatore dello stack iniziale (SP). Puoi caricare il flash tramite JTAG, bootloader su chip (sopra), ecc.
Infine, è possibile caricare il codice nella RAM (JTAG, runtime) e quindi avviare / eseguire da lì. Questo non viene spesso usato, di solito stai facendo qualcosa di complicato come un bootloader temporaneo o simili.