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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.