2016-05-11 3 views
-2

La quantité de mémoire flash occupée par un programme sur une puce peut-elle être calculée en fonction du contenu et de la taille du fichier .HEX? Et sinon, y a-t-il un autre moyen? Est-ce qu'une puce prétendant avoir 32kB de mémoire flash a exactement 32kB de mémoire flash disponible?Quantité de mémoire flash occupée par rapport au nombre d'octets dans un fichier .HEX

Exemple:

Mark a une préoccupation malsaine pour la quantité de mémoire flash restant sur son microprocesseur ATMEGA328P après avoir des programmes à l'aide d'un fichier HEX assemblé et un outil avrdude fourni par Atmel. Par conséquent, il ouvre le fichier HEX à l'aide d'un éditeur de texte et compte les octets:

: 100000000C9434000C943E000C943E000C943E0082 : 100010000C943E000C943E000C943E000C943E0068 : 100020000C943E000C943E000C943E000C943E0058 : 100030000C943E000C943E000C943E000C943E0048 : 100040000C943E000C943E000C943E000C943E0038 : 100050000C943E000C943E000C943E000C943E0028 : 100060000C943E000C943E0011241FBECFEFD8E04C : 10007000DEBFCDBF0E9440000C9453000C940000E2 : 100080008FEF84B987B985B1809585B988B180959E : 1000900088B92FEF83ED90E3215080409040E1F745
: 0A00A00000C00 000F0CFF894FFCF7D

: 00000001FF

Son résultat est de 115 octets au total ou 118, y compris ":". Mark réalise cependant que de ces octets un certain montant est checksums et drapeaux. Lorsque Mark exécute avrdude afin de flasher le matériel avec son code, l'outil lui indique que le fichier contient 170 octets. Cela le perturbe et l'intimide en raison de la quantité totale de mémoire flash disponible sur la puce étant seulement 188 fois plus que ce que l'outil lui a dit sur le nombre d'octets dans le fichier. Il s'effondre en larmes.

Pour éviter les pannes émotionnelles de Mark, il serait bon de pouvoir estimer le nombre d'octets dans la mémoire flash occupée par un programme stocké dans le fichier .HEX.

P.S. Mark cherche à utiliser un système bas de gamme beaucoup moins cher à l'avenir et a besoin de connaître la quantité de mémoire occupée par son programme sur un tel système.

Répondre

1

1) généralement pas. mais dans le cas du format hexadécimal et de l'enregistreur motorola, un pourcentage très élevé de la taille du fichier est directement lié au contenu flash/rom. Donc, vous ne pouvez pas exactement au calcul d'octets, mais vous pouvez vous rapprocher. 2) ce format de fichier est si simple à analyser, prend littéralement 15 minutes ou moins de zéro pour écrire un analyseur, probablement moins de temps qu'il a fallu pour que vous cherchiez sur le net, puis écrivez cette question. Juste l'analyser. 3) s'ils annoncent une quantité de flash, c'est la quantité de flash qu'il contient. Parfois, ils vont jouer à des jeux de chiffres et le montant sur une courte liste de caractéristiques comprend une zone de bootloader ou d'autres domaines, mais généralement pas ces jours-ci que cela va les mordre à la fin. 4) il y a beaucoup d'outils qui vous disent combien votre programme consomme, dans les toolchains populaires, juste une question de lire le manuel, chercher sur le net, etc. Ou passer les 45 minutes pour trouver quelqu'un elf ou srec ou ihex parser et en essayant de comprendre comment l'utiliser, ou les 15 minutes pour écrire le vôtre à partir de zéro pour l'un de ces outils, ou les 2-3 minutes, il faut apprendre à utiliser les outils toolchain existants.

+0

En effet, l'utilisation des outils d'outils existants semble la manière la plus simple et la plus rapide. Merci pour la réponse. L'avantage d'écrire une question est que l'on obtient toujours des informations plus intressantes! – NoobPointerException