Je travaille sur un simple programmeur AVR pour mon projet universitaire, et je suis bloqué par la compréhension de la façon dont je peux mapper la mémoire d'un fichier hexadécimal à la mémoire flash réelle. Par exemple, Intel hex fournit des informations sur l'adresse de début du bloc de données, le nombre d'octets qu'il contient et les données elles-mêmes. Le problème vient de ce que AVR MCUs, en particulier ATmega16, ont souvent une adresse pour deux octets: haut et bas. Dans un premier temps, j'ai écrit une fonction simple, qui lit simplement toutes les données du fichier hex et l'écrit séquentiellement, en augmentant l'adresse d'une unité tous les deux octets passés. À ma grande surprise, cela fonctionne sur un code blinky simple. Cependant, je ne suis pas sûr, si cette approche fonctionne, si quelqu'un a besoin d'une structure de mémoire complexe.Mémoire AVR et intel hex
Ainsi, les questions sont les suivantes:
- Est-ce que cette solution fonctionne sur les structures de mémoire complexes?
- Si non, comment puis-je mapper l'adresse hexadécimale intel en adresse flash réelle? Le problème est qu'il n'y a pas d'octets hauts et bas au format hexadécimal, seulement adresse = octet.
Et si je crée une section personnalisée à la fin de la mémoire flash et que j'y place des données, quelque chose comme cela se réfère aux "structures de mémoire complexes". En fait ce n'est pas vraiment complexe;) Donc je dois juste diviser l'adresse par deux et c'est ça? –