8051 Programm von ext. EEPROM laden

Gast #1342355
Hallo,

ich versuche gerade mit einem 8051 eine Art Mini-Computer zu bauen.
Im Moment bin ich soweit, dass ich eine kleine Lib habe mit den 
nötigsten Funktionen und die Ausgabe auf einem 20x4 Display. 
Letztendlich soll da noch eine Tastatur drankommen, TV-Out und ein 
Piepser.... aber das ist jetzt erstmal nebensächlich.

Wegen Programmen, dachte ich an einen kleinen I2C EEPROM, auf dem ich 
compilierte Programme speichere und die dann lade.
Nun zu meiner Frage, ob ich mir das so ungefähr richtig vorstelle...

Ich habe 64K Programmspeicher. Wenn ich nun die Ausgabe-Routinen, Laden 
vom EEPROM usw mit einem org irgendwo z.B. an die Adresse von 40kb setze 
und dann einfach vom externen Speicher Byte für Byte das Programm hole, 
könnte ich das dann so machen und ausführen?
1
(ganz grob vereinfacht....)
2
hole byte0 an 0x0000
3
hole byte1 an 0x0001
4
...
5
...
6

7
und dann, sobald alles geladen ist einfach ein:
8

9
ljmp 0x0000
Natürlich muss ich da die RAM-Benutzung beachten, Interrupt-Vektoren 
uswuswusw.

Aber vom Prinzip her, würde das so funktionieren?
Gast
Na das würde ich grob so lösen:
1
(Pseudo-Code)
2
"Speicher-Layout":
3
0x0000 ljmp @40kb
4
0x0003 ext int0 Interrupt Vektor
5
0x000B timer 0 IV
6
...
7
...
8
0x0053 spi IV
9
0x0054: start des user-programmplatzes
10
...
11
...
12
...
13
0x40kb: start des "betriebssystems":
14
Code für Display, UART, I2C, EEPROM, Tipse, TV-Out...
Damit umgehe ich ja das Problem, dass ich Speicher überschreibe, in dem 
mein "Betriebssystem" liegt. Er hüpft ja gleich an den Start bei 40kb 
und dann habe ich Platz von dem Ende der Interruptvektoren bis zum Start 
meines Codes, der immer da sein muss.

Also das ist nun nur ein grober Umriss vom ganzen, je mehr ich darüber 
nachdenke, umso schwieriger wird es :D aber genau das macht ja den Spass 
aus ;)
Gast
Hallo,

es ist dir aber schon klar, dass 8051 eine Havard-Architektur hat, dass 
also Programm- und Datenspeicher getrennt adressiert werden? Oder hast 
du das entsprechend extern verknüpft (ich habe eine Brücke "Von 
Neumann", um den Speicherzugriff zu vereinheitlichen).

Gruss Reinhard

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.