2016-05-11 31 views
-2

Ist die Größe des von einem Programm auf einem Chip belegten Flash-Speichers basierend auf dem Inhalt und der Größe der .HEX-Datei möglich? Und wenn nicht, gibt es einen anderen Weg?Anzahl der belegten Flash-Speicher in Relation zur Anzahl der Bytes in einer .HEX-Datei

Hat ein Chip, der 32kB Flash-Speicher beansprucht, genau 32kB verfügbaren Flash-Speichers?

Beispiel:

Mark eine ungesunde Sorge um die Menge an Flash-Speicher auf seinem ATMEGA328P Mikroprozessor verbleibt, nachdem er Programme es eine zusammengesetzte .HEX Datei und avrdude Tool von Atmel bereitgestellt wird. Deshalb öffnet er die .HEX Datei mit einem Texteditor und zählt die Bytes:

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

: 00000001FF

Sein Ergebnis ist 115 Bytes insgesamt oder 118 mit ":". Mark erkennt jedoch, dass von diesen Bytes ein bestimmter Betrag Prüfsummen und Flags ist. Wenn Mark avrdude ausführt, um die Hardware mit seinem Code zu flashen, teilt ihm das Tool mit, dass die Datei 170 Bytes enthält. Dies verwirrt und schüchtert ihn ein, da der gesamte freie Flash-Speicher auf dem Chip nur 188 Mal mehr ist als das, was das Tool ihm über die Anzahl der Bytes in der Datei gesagt hat. Er bricht in Tränen aus.

Um Marks emotionale Ausfälle zu vermeiden, wäre es gut, die Anzahl der Bytes im Flash-Speicher schätzen zu können, die von einem in der .HEX-Datei gespeicherten Programm belegt sind.

P.S. Mark möchte in Zukunft ein viel billigeres Low-End-System verwenden und muss wissen, wie viel Speicher sein Programm auf einem solchen System belegt.

Antwort

1

1) allgemein keine. aber im Falle von Intel Hex-Format und Motorola srecord ist ein sehr hoher Prozentsatz der Größe der Datei direkt mit dem Flash/ROM-Inhalt verwandt. Du kannst also nicht genau auf die Byte-Berechnung eingehen, aber du kannst nah kommen.

2) dieses Dateiformat ist so einfach zu analysieren, dauert buchstäblich 15 Minuten oder weniger von Grund auf neu, um einen Parser zu schreiben, wahrscheinlich weniger Zeit, die Sie im Internet recherchieren mussten und dann diese Frage schreiben. Analysiere es einfach.

3) wenn sie eine Menge an Flash ankündigen, so viel Flash hat es. Manchmal werden sie Zahlenspiele spielen und der eine Betrag in einer kurzen Feature-Liste beinhaltet einen Bootloader-Bereich oder andere Bereiche, aber im Allgemeinen nicht in diesen Tagen, da diese am Ende beißen.

4) es gibt viele Werkzeuge, die Ihnen sagen, wie viel Ihr Programm verbraucht, in den populären Toolchains, nur eine Frage des Lesens des Handbuchs, des Suchens im Netz, etc. Oder die 45 Minuten verbringend, um someones elf oder srec zu finden oder ihex Parser und versuchen, herauszufinden, wie man es benutzt, oder die 15 Minuten, um Ihre eigenen für jedes dieser Werkzeuge zu schreiben, oder die 2-3 Minuten, die es braucht, um zu lernen, wie man die vorhandenen Werkzeugkettenwerkzeuge benutzt.

+0

In der Tat scheint die Verwendung der vorhandenen Toolchain Tools der einfachste und schnellste Weg. Danke für die Antwort. Der Vorteil beim Schreiben einer Frage ist, dass man immer mehr interessante Informationen daraus bekommt! – NoobPointerException