Der Flash-Speicher von atmega8 ist 8 KB groß.
Ist dies die maximale Größe für die .hex-Datei oder der maximale Speicher, den ich Variablen in meinem Code zuweisen kann?
Wenn keiner der oben genannten Punkte zutrifft, was ist dann die Speicherzuweisungsstruktur von Atmega8? In welchen Speicher geht die .hex-Datei?
Bei der Standardverwendung geht Ihr Code in den 8 KByte Flash-Speicher und Variablen in den 1 KByte SRAM. Beachten Sie, dass eine Hex-Datei, da sie ein einzelnes Byte als Paar hexadezimaler Zeichen darstellt und einige andere Informationen enthält, mehr als doppelt so groß ist wie der tatsächlich geladene Code, sodass eine Hex-Datei mit etwas mehr als 16 KB geladen werden sollte.
Der zuverlässigste Ort, um herauszufinden, wie viel Flash und SRAM Ihr Code verwendet, ist der Compiler. Wenn Sie Atmel Studio 6 im Build-Ausgabebereich verwenden, sollten Sie beim Scrollen nach oben Folgendes sehen:
Programmspeichernutzung: 540 Byte 0,8 % voll
Datenspeichernutzung: 0 Byte 0,0 % voll
Die Programmspeichernutzung zeigt also, wie viel Flash verwendet wird, und die Datenspeichernutzung zeigt, wie viel SRAM verwendet wird.
Der Flash-Speicher ist Ihr Programmspeicher. Dort wird Ihre Hex-Datei gespeichert. Sie können Daten in Flash zwingen, wenn Sie wenig RAM haben, aber es ist nicht so schnell beim Lesen / Schreiben wie RAM.
RAM ist der zur Laufzeit verwendete Speicher für Variablen und alles andere, auf das im laufenden Betrieb zugegriffen werden muss.
EEPROM ist ein nichtflüchtiger Speicher zum Speichern von Dingen wie Kalibrierungsdaten, Seriennummern usw. Es wird selten für Dinge verwendet, die regelmäßig geschrieben werden müssen.
Informationen zur tatsächlichen Speichernutzung finden Sie in der Kartendatei. Im Falle der GCC-Toolkette, die per Linker wie folgt ausgeführt wird:
avr-ld -Map=app.map
oder durch gcc
Fahrer:
avr-gcc -Wl,-Map,app.map
Benutzer17592
PeterJ
shafeeq
PeterJ
shafeeq
PeterJ
shafeeq