Hallo. Ich schreibe gerade im assembler, und bange darum, das der Speicher des mega8515 dafür reicht. woran erkenne ich, wie groß das programm ist? muss ich alle befehel im quellcode zählen und die bytes zusammenzählen !?! Oder muss die Hexfile einfach von der größe rein passen? danke für die Hilfe
hey, ich habe gerade entdeckt, wenn ich debugge bekomme ich ja immer enn kleinen bricht, und da steht unteranderem folgendes drinne: ATmega8515 memory use summary [bytes]: Segment Begin End Code Data Used Size Use% --------------------------------------------------------------- [.cseg] 0x000000 0x0000de 222 0 222 8192 2.7% [.dseg] 0x000060 0x000060 0 0 0 512 0.0% [.eseg] 0x000000 0x000000 0 0 0 512 0.0% gibt used 222 an, das 222 byte gebraucht werden?
Richtig, steht ja auch in der ersten Zeile in den Klammern. Und die Prozentzahl steht auch gleich da, also kannst du ungefähr noch 34x dein Programm reinsetzen :-) Ralf
> EEprom groß genug? Der Code landet im Flash. Aus dem EEprom können beim AVR keine Befehle ausgeführt werden.
aber was gibt dann die 222 an? wenn ich einen befehl aism code rausnehme sinkt der wert genau um die anzahl, wieviele bytes der befehl braucht. ??
...aber was gibt dann die 222 an? wenn ich einen befehl aism code rausnehme sinkt der wert genau um die anzahl, wieviele bytes der befehl braucht. ??... Dann ziehe mal eine logische Schlussfolgerung, wenn PRO BEFEHL WENIGER diese Zahl um zwei Bytes sinkt....
dann wird die zahl wohl die größe des codes in byte angeben, aber dann kommt das mit den 2,7 % ja überhaupt nicht mehr hin, weil der 8515 nur 512 Bytes EEprom hat. 222 = 2,7 % 8,148 = 1 % 814,8 = 100 % 814,8 = 512 ???? neee Schlussfolgerung Das datenblatt oder der Assembler lügt. Oder beide :-D ???
> 8515 nur 512 Bytes EEprom hat
...und das Programm landet im - Flash. Welcher 8KB groß ist.
Die meisten Befehle beötigen 1 Wort (2 Byte). Ein paar bestehen auch aus 2 Worten (4 Byte). Welcher Befehl wieviel Speicher benötigt, siehst Du im AVR Befehlssatz (AVR instruction set). Solange Du keine Strings oder konstante Daten verwendest, musst Du Dir über die Größe Deines Programms wenig Sorgen machen. Stefan
Was sind denn Strings und konstante Daten? Interessiert sei Ich habe gerade alles bis hier hin verstande und komme gut zurecht, aber das kenn ich noch nicht. Gibs dazu tutorials oder so? Wie steht denn nun die Byte anzahl mit der % zahl in verbindung? isser EEprom voll, wenn ich 100% habe, oder wenn ich da ne 512 stehen habe?
Die Prozent gibt an wieviel du verbraucht hast, von den verfügbaren Platz (Use = benutzt)
> isser EEprom voll, wenn ich 100% habe
Ja wenn für .eseg 100% angegeben werden, ist er voll.
wat wie? wer ist denn .eseg? Ich spreche vom internen EEprom extern habe ich noch nie was mit gemacht
so sieht es aus wenn man nur noch zwei Bytes frei hat Segment Begin End Code Data Used Size Use% --------------------------------------------------------------- [.cseg] 0x000000 0x000800 1976 70 2046 2048 99.9% [.dseg] 0x000060 0x000060 0 0 0 128 0.0% [.eseg] 0x000000 0x000000 0 0 0 128 0.0%
> wat wie? wer ist denn .eseg? Ich spreche vom internen EEprom extern habe > ich noch nie was mit gemacht Ja und? eeseg sagt doch aus, dass es sich um den internen EEPROM handelt. Ralf
@Lukas: Du solltest Dich mal mit den verschiedenen Speicherarten des AVRs vertraut machen. Dabei könnte das Datenblatt helfen. Auch das hiesige Tutorial kann da sehr hilfreich sein. Soviel vorweg: EEPROM ist für Daten, die gelegentlich (nicht zu oft, EEPROM hat Verschleiß) geändert werden. Programme landen nicht im EEPROM sondern im Flash. Neben Flash und EEPROM solltest Du auch Register (untere und obere, mit Konstanten ansprechbare), I/O-Bereich (bitorientierter und byteorientierter), extended-I/O (nicht beim 8515), internes SRAM und externes SRAM auseinanderhalten können, sonst wird das mit dem Programmieren nix. ...
Jupp wrote:
> Und noch ergänzend, auch der Flash-Speicher unterliegt einem Verschleiß.
Ja sicher doch, sogar bedeutend höher als EEPROM. Aber Programme
wechselt man ja nicht allzu oft. Daher hielt ich es nicht für nötig,
darauf hinzuweisen.
Trotzdem meine ich, dass sich Lukas das selbst erarbeiten muss
(Tutorial?), es wäre unfair den Anderen Anfängern gegenüber, die sich
ihr Grundwissen auch selbst erarbeiten.
Ich wollte ihm mit meinem Text lediglich zeigen, dass er etwas tun muss.
...
OK, wodurch erarbeitet man sich das denn dann außer durch tutorials fragen denken datenblatt nachschaun ausprobieren und wieder lesen...
Lukas -- wrote: > OK, wodurch erarbeitet man sich das denn dann außer durch tutorials > fragen denken datenblatt nachschaun ausprobieren und wieder lesen... Die Richtung stimmt. Allerdings sollte der Punkt "verstehen" noch mit aufgenommen werden. Tutorials können nur die ersten Schritte erklären und vor bekannten Stolperfallen warnen. Den Rest lernt man, indem man mit kleinen, überschaubaren Projekten beginnt (Du wirst staunen, was man da alles falsch machen kann) und sich schrittweise steigert. Der Blick in fremde Programme (um zu verstehen, nicht um zu kopieren ohne zu verstehen) kann auch sehr hilfreich sein. Das Datenblatt des betreffenden Controllers braucht man praktisch immer, die einzelnen Typen sind einfach zu unterschiedlich ausgestattet. Auch die Online-Hilfe des AVR-Studio kann manches Problem lösen. Viel Erfolg... ...
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.