Forum: Mikrocontroller und Digitale Elektronik Allgemeine Fragen zur Programmierung von AVR


von schirrmie (Gast)


Lesenswert?

Hi ich beschfägte mich jetzt seit einiger Zeit mit der Programmierung
und verstehe einiges noch nicht, hoffe bin hier richtig!
Also nehmen wir mal denn AT90S8535 mit 8kBFlash 512B EEPROM und 512B
SRam.
1.)Der Flash ist doch für denn speicher meines geschrieben Programm
oder?
2.)Wann weiß ich das der Voll ist das heißt wie viel darf ich
Programmieren?
3.)Wofür ist der SRam?
4.)Wenn ich ein Array von chars Anlege z.B. char buffer[100]; wo wird
der gespeichert im Flash im SRam oder im EEPROM(glaub ich nicht!)?
5.)Wozu die verschiedenen AusgabeFormate? Es gibt ja HEX, BIN und
bestimmt noch mehr, aber wozu?
6.)Und wieso haben die ne Unterschiedliche größe?
7.)Ich hatte mal ein Programm geschrieben mit 6,5KByte Quellcode. Die
Hex-Datei war 18,4Kbyte groß die Bin-Datei war 6,56Kbyte groß. Wie
passt jetzt die 18,4Kbyte Hex-Datei auf denn 8535? Wird die noch
umgeformt? Vielleicht zur anmerkung habe mit Ponnyprog mein AVR
Programmiert.
Ich weiß sind viele Fragen auf einmal und mir fallen bestimmt noch mehr
ein aber ich hoffe mir kann jemand helfen!
MfG Schirrmie

von Ivan (Gast)


Lesenswert?

Hallo Schirrmie,

ersteinmal dein programm konnt in den EEPROM! Der SRAM ist ein
statischer Speicher, wo du deine Variablen die du in deinem programm
drauchst speicher tust!

ich hoffe ich konnte dir erstmal weiter helfen!

mfg ivan

von Matthias (Gast)


Lesenswert?

Hi

1.) Ja. Das Programm kommt beim AVR nicht in den EEPROM. Technische
gesehen ist ein Flash zwar auch ein EEPROM aber in der AVR Terminologie
liegt das Programm nicht im EEPROM.

2.) Dein Programmiertool wird es dir sagen wenn der Flash nicht
ausreicht. Du wirst du aber maximal 4k Befehle in 8k Flash bringen. 8k
Flash sind aer reichlich. Da bringt man schon so einiges rein.

3.) Für flüchtige Variablen und den Stack. Evtl. auch für den Heap.

4.) Üblicherweise im SRAM.

5.) Verschiedene Programmiersoftware verlangt verschieden
Datenformate.

6.) Die Codierung ist eine anderen. BIN-Dateien enthalten die reinen
Daten. In Intel HEX Dateien sind die Daten ASCII-kodiert und mit
Addressinformation, Typinformationen und Prüfsummen versehen.

7.) Das hättest du auch durch die Forensuche herausfinden können.
Intel-HEX Dateien sind bei einer Zeilenlänge von 16 Nutz-Byte etwa 2,8
mal größer als das eigentliche Binary. Bei größeren Zeilenlängen (bis
zu 255 Nutzbyte sind möglich) geht dieser Faktor gegen 2.

Matthias

von Thorsten (Gast)


Lesenswert?

Hallo,

zu 1) ja
zu 2) Die meißten Compiler geben dir Asukunft über die erzeugten
Bytes.
zu 3) Wie schon erwähnt für deine Variablen.
zu 4) normalerweise im SRAM, wenn in deinem array allerdings Konstanten
stehen, so können die durchaus auch im Flash abgelegt werden. Dies ist
aber abhängig vom Prozessor, nicht jeder unterstützt dies.
zu 5) Manche Programmiergeräte benötigen z. B. Bin-Files.
zu 6) Bin-Files sind reine binäre Dateien, bei denen ein Byte auch
genau als ein Byte gespeichert ist. Hex-Files dagegen reine
Text-Dateien. Zur Speicherung eines Bytes sind also schon zwei Zeichen
notwendig (hexadezimal). Außerdem enthält dieses File noch
Adressangaben und Prüfsummen.
zu 7) siehe Punkt 6; Im Prinzip wird das Hex-File beim flashen in ein
Bin-File umgewandelt. Um sicher zu gehen, kannst du dir also ein
Bin-File erzeugen. Dann siehst du exakt die Anzahl der Bytes die in den
AVR gebrannt werden.

So, ich hoffe das hat etwas geholfen.

Gruß
Thorsten

von Thorsten (Gast)


Lesenswert?

Oh, da war Matthias schneller :)

von schirrmie (Gast)


Lesenswert?

Gut danke habt mir schon sehr weiter geholfen.
MfG schirrmie

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.