Forum: Mikrocontroller und Digitale Elektronik EEprom groß genug?


von Lukas -. (lukas)


Lesenswert?

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

von Lukas -. (lukas)


Lesenswert?

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?

von Ralf (Gast)


Lesenswert?

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

von Jupp (Gast)


Lesenswert?

Bingo!

von Malte _. (malte) Benutzerseite


Lesenswert?

> EEprom groß genug?
Der Code landet im Flash. Aus dem EEprom können beim AVR keine Befehle 
ausgeführt werden.

von Lukas -. (lukas)


Lesenswert?

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. 
??

von Matthias (Gast)


Lesenswert?

...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....

von Lukas -. (lukas)


Lesenswert?

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


???

von Malte _. (malte) Benutzerseite


Lesenswert?

> 8515 nur 512 Bytes EEprom hat
...und das Programm landet im - Flash. Welcher 8KB groß ist.

von Stefan K. (_sk_)


Lesenswert?

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

von Lukas -. (lukas)


Lesenswert?

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?

von Holger K. (krulli) Benutzerseite


Lesenswert?

Die Prozent gibt an wieviel du verbraucht hast, von den verfügbaren 
Platz (Use = benutzt)

von Malte _. (malte) Benutzerseite


Lesenswert?

> isser EEprom voll, wenn ich 100% habe
Ja wenn für .eseg 100% angegeben werden, ist er voll.

von Lukas -. (lukas)


Lesenswert?

wat wie? wer ist denn .eseg? Ich spreche vom internen EEprom extern habe 
ich noch nie was mit gemacht

von Holger K. (krulli) Benutzerseite


Lesenswert?

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%

von Ralf (Gast)


Lesenswert?

> 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

von Hannes L. (hannes)


Lesenswert?

@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.

...

von Jupp (Gast)


Lesenswert?

Und noch ergänzend, auch der Flash-Speicher unterliegt einem Verschleiß.

von Hannes L. (hannes)


Lesenswert?

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.

...

von Lukas -. (lukas)


Lesenswert?

OK, wodurch erarbeitet man sich das denn dann außer durch tutorials 
fragen denken datenblatt nachschaun ausprobieren und wieder lesen...

von Hannes L. (hannes)


Lesenswert?

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...

...

von Lukas -. (lukas)


Lesenswert?

alles klar, danke, dann bin ich ja aufm besten wege! :-)

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.