ATMega2561: 256KB flash mit 8Bit -Architektur. trick?

Gast #1189650
Lesenswert?
• ▲
▼
hallo,  schreibe gerade  ein bericht über ein praktikum .

mein betreuer wies mich daraufhin, in meinem Bericht zu erklären wie es 
möglich ist 256KByte flash mit dieser 8Bit-Architektur zu adressieren .

hab jetzt nochmal in datenblatt nachgesehen ..   also dort steht nur das 
es halt einen 17Bit breiten Programmcouter gibt. Instruktionen sind min 
16 Bit breit.

d.h. 2^17 =~ 128K * 2Byte pro Instruktion = ~ 256 KByte .

ist das alles.

also ich mein  die 17Bit müssen ja auch gehandled werden vom prozessor - 
wie funktioniert das ?

das ich das noch ein bissl vertiefe in meinem bericht.
Gast #1189863
Lesenswert?
• ▲
▼
Genau, der Programmzähler hat mit der linearen Ausführung ja nix am Hut: 
relative Sprünge funktionieren wie gehabt, genauso wie Rechnerei und 
'Überspringbefehle'. Interessant wirds erst bei absoluten Sprüngen, aus 
der Verktortabelle raus zum Bleistift, oder bei indirekten. Dazu gibts 
dann entweder spezielle Sprungbefehle (rjmp -> jmp -> ejmp), die 
funktionieren auch wie gehabt, werden aber im Programmspeicher 
entsprechend länger, um alle Adressbits unterbringen zu können.
Bei der indirekten Springerei reicht der Z-Zeiger auch nicht mehr aus, 
deshalb muss es irgendwo ein weiteres Adressregister geben, und wenns 
nur aus einem 'E'-Bit besteht.
Gast #1189878
Lesenswert?
• ▲
▼
Hi

Der Befehlcode von Calls und Jumps kann eine 24Bit-Adresse aufnehmen. 
Bei AVRs mit >128 KByte Flash werden 3 Byte auf den Stack gelegt.

>gibt's den EICALL Befehl, der mit EIND verwurstet
>wird, um bestimmte Sprünge/Calls machen zu können.

EICALL und EIJMP verwenden für die unteren 16 Bit Z und für die oberen 
das Register EIND.

MfG Spess

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren