Éditeurs de liens, chargeurs et exécutables
Sur un microcontrôleur sans OS, quel traitement le code de démarrage effectue-t-il juste après la mise sous tension, avant d'appeler main ?
- ARéécrire tout le langage machine de .text de la RAM vers la flash
- BLire le contenu de la RAM pour restaurer les valeurs des variables au moment de la dernière coupure
- CCopier les valeurs initiales de .data de la flash vers la RAM et remplir de 0 la zone .bss
Afficher la réponse et l'explication
Réponse : C. Copier les valeurs initiales de .data de la flash vers la RAM et remplir de 0 la zone .bss
Le contenu de la RAM étant perdu à la coupure de l'alimentation, les valeurs des variables initialisées sont stockées dans la flash, non modifiable, et le code de démarrage les copie vers l'emplacement des variables en RAM. La zone des variables non initialisées (.bss) est remplie de 0. Dans le script d'édition de liens, on spécifie séparément pour .data « l'adresse de stockage en flash » et « l'adresse d'utilisation en RAM à l'exécution ». Ce n'est qu'après cela que main peut démarrer dans l'état prévu par le langage C.
Continuer : 9 autres questions sur Éditeurs de liens, chargeurs et exécutables