Bibliothèque technique gratuite ENCYCLOPÉDIE DE LA RADIOÉLECTRONIQUE ET DU GÉNIE ÉLECTRIQUE Initialisation de segments de mémoire supplémentaires dans les programmes pour microcontrôleurs de la famille MCS-51. Encyclopédie de l'électronique radio et de l'électrotechnique Encyclopédie de l'électronique radio et de l'électrotechnique / microcontrôleurs Les microcontrôleurs modernes disposent d'une mémoire de données non volatile (EEPROM) intégrée, dans laquelle des informations doivent parfois être saisies avant que l'appareil ne commence à fonctionner. L'image (firmware) de cette mémoire doit être formée lors du développement du programme. Cela peut être fait, par exemple, des assembleurs pour les microcontrôleurs des familles PICmicro et AVR. Ils donnent au programmeur la possibilité d'organiser un segment de mémoire supplémentaire et d'y définir les données initiales pour l'écriture dans l'EEPROM. Les assembleurs pour microcontrôleurs avec le cœur MSC-51 vous permettent également de diviser la mémoire en plusieurs parties, mais seulement dans l'une d'entre elles - le segment de code exécutable - l'initialisation est possible. Dans tous les autres, il n'est permis de réserver des cellules de mémoire et d'y écrire des données que pendant l'exécution du programme. La sortie de la situation peut être la réception, qui est décrite ci-dessous. Son essence est l'utilisation de l'assemblage conditionnel, à la suite duquel l'initialisation du segment de code se produit de différentes manières, en fonction des conditions de traduction. Les fichiers HEX résultants peuvent être utilisés pour programmer non seulement l'EEPROM interne du microcontrôleur, mais également des puces de mémoire externes. Des segments supplémentaires créés artificiellement (n'importe quel nombre d'entre eux est autorisé) sont placés dans le texte du programme avant le segment de code réel. Les étiquettes définies dans l'un d'entre eux seront connues dans tout ce qui suit, y compris le segment de code réel. Mais les liens dans la direction opposée ne sont pas autorisés. Il n'y a aucune restriction sur le type et l'emplacement physique de la mémoire supplémentaire. Un exemple de programme avec deux segments initialisés supplémentaires, appelés classiquement EEPROM et FLASH, est présenté dans le tableau. 1. Après l'avoir enregistré dans le fichier example.asm, nous utiliserons l'assembleur ASEM-51, qui peut être "téléchargé" gratuitement sur . Tout d'abord, lancez l'assembleur en ligne de commande asem exemple.asm eeprom.hex/define:EEPROM En traitant les premières lignes du texte du programme, il placera les étiquettes idEeprom, ptrWord et prtBufE dans sa table de symboles, et les données spécifiées par les directives DB et DW dans le fichier de sortie eeprom.hex (tableau 2). La longueur du segment sera alors vérifiée. Si la valeur du compteur de programme dépasse la taille EEPROM physiquement existante (dans ce cas - 640 cellules), un message d'erreur s'affichera. Si le volume du segment est manifestement faible, la vérification peut être exclue. Des contrôles similaires peuvent être envisagés sur d'autres segments. Ensuite, l'assembleur rencontrera la directive IFNDEF EEPROM. Puisqu'un symbole portant ce nom est défini sur la ligne de commande (paramètre /define:EEPROM), toutes les lignes suivantes du programme, jusqu'à la directive ENDIF, seront ignorées et la traduction s'arrêtera là. Exécuter la retransmission du même programme depuis la ligne de commande asem exemple.asm flash.hex/define:FLASH Il ne diffère du précédent que par la définition du symbole FLASH au lieu d'EEPROM. La première étape de traduction se déroulera exactement comme décrit ci-dessus et les données du segment EEPROM seront écrites dans le fichier de sortie. Cependant, la directive IFNDEF EEPROM n'interrompra pas le processus cette fois, et la directive suivante ORG 0 réinitialisera le compteur de programme. L'assembleur commencera à écrire les données destinées au segment FLASH dans le fichier de sortie à partir de l'adresse zéro. La diffusion sera interrompue par la directive IFNDEF FLASH. La forme finale du fichier flash.hex est indiquée dans le tableau. 3. Nous définissons la traduction du vrai segment du code exécutable par la commande asem exemple.asm Tout d'abord, des segments supplémentaires seront recompilés et toutes les étiquettes qui y sont définies seront entrées dans la table des symboles de l'assembleur, ce qui leur permettra d'être référencés à partir du segment de code. La directive ORG 0 au tout début de celle-ci réinitialisera à nouveau le compteur de programme. La diffusion se poursuivra comme d'habitude. Dans le fichier example.hex résultant (tableau 4), le code exécutable du programme commence à partir de la quatrième ligne, étant après les lignes identiques à celles contenues dans les fichiers HEX précédents. La présence d'informations redondantes n'interfère généralement pas avec le chargement correct du code dans les zones mémoire appropriées du microcontrôleur. Dans le tampon du programme qui contrôle la programmation, les données correctes, lorsque les adresses correspondent, "déplacent" celles précédemment saisies. Et seulement si le nouveau segment est plus court que le précédent, sa "queue" sera stockée dans le tampon. Pour cette raison, il est souhaitable de décrire les segments du programme dans l'ordre croissant de leur longueur. Certains programmeurs n'ont pas de tampon intermédiaire ou contrôlent strictement les données d'entrée, ne permettant pas les chevauchements d'adresses. Dans le premier cas, la programmation sera incorrecte, dans le second cas, elle ne démarrera pas du tout tant que les "erreurs" ne seront pas éliminées. Vous pouvez supprimer manuellement les lignes supplémentaires d'un fichier HEX à l'aide de n'importe quel éditeur de texte. Vous pouvez également le faire automatiquement en exécutant deux commandes à la suite : exemple hex2bin.hex exemple bin2hex.bin Le premier créera une image binaire des données contenues dans le fichier example.hex et la placera dans le fichier example.bin. Le second effectuera la transformation inverse et créera un nouveau fichier example.hex sans fioritures. Les programmes nécessaires peuvent être "téléchargés" aux adresses Et . Auteur : S. Chekunov, Izhevsk Voir d'autres articles section microcontrôleurs. Lire et écrire utile commentaires sur cet article. Dernières nouvelles de la science et de la technologie, nouvelle électronique : Machine pour éclaircir les fleurs dans les jardins
02.05.2024 Microscope infrarouge avancé
02.05.2024 Piège à air pour insectes
01.05.2024
Autres nouvelles intéressantes : ▪ Les balances intelligentes déterminent la vitesse de propagation de l'onde de pouls ▪ Alliage superélastique qui maintient la rigidité à haute température ▪ Supercondensateur en argile réfractaire ▪ Lecteur audiophile Walkman NW-A105 Fil d'actualité de la science et de la technologie, nouvelle électronique
Matériaux intéressants de la bibliothèque technique gratuite : ▪ » du site Internet de Radio Contrôle. Sélection d'articles ▪ Article de micromécanique. Histoire de l'invention et de la production ▪ article Qui est l'auteur du microscope ? Réponse détaillée ▪ article Caméraman principal du département technique. Description de l'emploi
Laissez votre commentaire sur cet article : Toutes les langues de cette page Page principale | bibliothèque | Articles | Plan du site | Avis sur le site www.diagramme.com.ua |