Si vous lisez les documents de bras, vous verrez où se trouve la table de vecteurs et quel est le contenu. le strict minimum est à l'adresse 0x00000004 vous avez besoin du (pouce) ADDRESS du gestionnaire de réinitialisation. Si vous lisez les documents stm32, vous verrez que sur la base des broches de démarrage, diverses choses se produisent, le cas d'utilisation typique est 0x08000000 qui est le flash qui contient votre programme, est mappé à 0x00000000. Vous pouvez choisir de lier pour 0x00000000 ou vous pouvez choisir de lier pour 0x08000000 comme le font la plupart des gens, l'adresse (pouce) au décalage 0x00000004 (et 0x00000008 et ainsi de suite) pointerait alors quelque part dans 0x08000000. La mémoire est juste pour lire des choses d'écriture, des instructions, .text, est en lecture seule, vous n'avez pas besoin d'écrire, et pour un microcontrôleur, vous avez besoin de l'application pour être en stockage non volatile, et ils sont conçus pour le flash (ces jours-ci ce n'est pas une bonne idée, sauf pour but flash construit comme ceux-ci).
Donc, votre programme .text et toutes les autres données en lecture seule vont en flash. Tout fichier .data que vous avez est conservé en flash mais le bootstrap le copie en RAM et les zéros bootstrap .bss, puis une fois démarré et dans votre point d'entrée en C (souvent main() mais ce n'est qu'un nom de fonction arbitraire) cas est votre programme est en lecture seule flash et vos données sont en lecture/écriture ram. Comme cela devrait être.
Accordé en tant que programmeur vous êtes responsable de tout ce qui précède, la table de vecteur, le bootstrap, la liaison, ainsi que l'écriture du programme pour faire les choses. Le schéma de démarrage de cortex-m est très typique, les deux les plus communs sont juste exécutés à une certaine adresse, ou ont une table de vecteur d'adresses où vivent les gestionnaires. Les bras de taille complète sont l'exécution de cette adresse, les cortex-m sont une liste d'adresses, une table de vecteur. Lorsque vous lisez sur un nxp ou un atmel samd ou d'autres implémentations de cortex-ms, vous trouverez qu'ils placent tous votre flash dans l'espace de démarrage comme ils le devraient, mais peuvent le faire de différentes façons. Certains ont des chargeurs d'amorçage d'usine qui peuvent être invoqués de diverses manières et le noyau ne change pas comme par magie, ils mappent simplement le chargeur de démarrage d'usine dans l'espace d'adressage nul du cortex-m.
son tout là dans le bras et st et nxp et atmel et d'autres documents.
EDIT
mémoire système
est pour vos données, lecture/articles d'écriture, des variables, des structures de données qui changent, etc. si vous choisissez de ne pas utiliser le déjà construit dans bootloader, vous pouvez choisir d'écrire votre propre Dans le cadre de votre application et en tant que bootloader vous êtes les bienvenus et en fait vous devez télécharger le nouveau programme en RAM, mais cela ne veut pas dire que vous devez le lancer à partir de là (vous pouvez malgré le mot harvard) ou plus il est probable que vous l'utilisiez simplement comme zone d'attente pour le brûler pour clignoter. Le but typique d'un microcontrôleur est d'exécuter le firmware sur flash et d'utiliser sram pour toutes les données de lecture/écriture qui peuvent changer. Radio-réveil, grille-pain, télécommandes et une myriade d'autres choses.
Oublier la mémoire du système. C'est la zone avec le bootloader d'usine. Pour vous suffit juste de vous rappeler que vous pouvez démarrer en mode bootloader, et flasher votre programme. Tout le reste c'est trop tôt pour vous je suppose. –