Größenwahn

Alles andere hier herein
Antworten
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Größenwahn

Beitrag von PIC18F2550 »

RegnatixMaximus.png
5Mb eRam in 16Bit Breite (10MByte)

es gibt 2 verschiedene Arten die Daten zu lesen und zu schreiben.
im 1. Verfaren wird erst die Adresse ausgegeben und danach die Daten gelesen oder geschrieben
Im 2. Verfahren wird die Adresse nach dem lesen oder Schreiben um 1 erhöt so das keine neuen Adressen ausgegeben werden müssen.

Hintergrund :

Grundstrucktur für LMM/Emulatoren mit Programmcode im eRam

z.B. Z80 code muss in eine 32Bit Strucktur umgewandelt werden.

- Jeder Befehl besitzt die selbe Breite
- der längste z80 Code besteht aus 4 Byte ist der Code kürzer wird mit 0x00 aufgefüllt
- Befehle stehen hintereinander
- PC ist extern als Hartware vorhanden.
- Jeder Sprung bedeutet neusetzen des PC

Schaltung noch nicht vollständig
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
TuxFan
Beiträge: 1022
Registriert: So 6. Sep 2009, 11:18

Re: Größenwahn

Beitrag von TuxFan »

Tja, Größenwahn, das kommt darauf an was Du mit dem RAM machen willst. Um z.B. eine Z80-Emulation mit CP/M laufen zu lassen, genügen 128kB und hat man 512kB wird es ja schon üppig. Dann könnte 10MB schon etwas hoch gegriffen sein. Will man jedoch die 8MB-Festplatten von CP/M, die sich auf der SD-Karte befinden, im RAM spiegeln wird es mal gerade eine, das kann man dann nicht unbedingt als Größenwahn bezeichnen. Wenn man nun andere Dinge wie LMM-Programme mit Propeller machen will, fällt mir im Momnet leider nichts ein was so groß sein soll, daß man 10MB haben muß. Da würde mich schon interessieren was es da gibt und das nicht besser durch einen etwas größeren ARM besser erledigt werden kann, weil seine Architektur für einen derartigen Adressraum optimaler geeignet ist.
Dann noch eine Frage, was verstehst Du unter eRAM oder ist das nur ein Tippfühler.

Gruß
TuxFan
Wunder gibt es immer wieder.......
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: Größenwahn

Beitrag von PIC18F2550 »

PIC18F2550 hat geschrieben:Dann noch eine Frage, was verstehst Du unter eRAM oder ist das nur ein Tippfühler.
externer RAM

Die Speicherangabe beruht auf dem im HIVE verwendeten RAM-Typ.
Bei verwendung des gesamten Adressraum's kommt mann schnell in der jetzigen Schaltungsversion auf 8MByte
Mit einer kleinen Modifikation könnte mann auch 4,2GByte verwalten.

Dabei muss nicht der Gesamte Speicher als SRAM ausgeführt sein es Kann auch FLASH oder EPROM's gemischt sein.

Eine Anwendung währe z.B. ein openNAVI. Hiergäbe es große Datenmengen die weit verteilt in der Datei verteilt sind und wo es auf ein schnelles herumspringen ankommt.
Eine SD-Karte schafft zwar die Datenmenge aber nicht die Flexibilität.
RegnatixMaximus_SLP.png
Der EEPROM befindet sich auf der Busplatiene Sein Loader ist so vor doppelter verwendung geschützt.
Ich frage mich gerade ob ein 2.EEPROM auf der Karte für die Konfiguration dieser von nutzen ist. :?:
RegnatixMaximus_LP.png
Loader.spin
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: Größenwahn

Beitrag von PIC18F2550 »

:shock: Jetzt hab ich mir ein Ei gelegt. :shock:

Da jetzt 2COG's auf die print routine zugreifen können passieren ja die tollsten sachen. :mrgreen: :mrgreen:

Um eine Vorrang verriegelung brauch ich mir keine sorgen zu machen das Wird schon über die Slots geregelt :lol:
DSCI0174.JPG
Start des 3.VGA-COG's

Code: Alles auswählen

....
  'if both COGs launched, return true
  if cog[0] and cog[1]
    pr_chr($E)
    cog[2] := cognew(slotr(slotvec), @stack)
    if cog[0] and cog[1] and cog[2]
      return true
    'else, stop any launched COG and return false
    else
    stop
  'else, stop any launched COG and return false
  else
    stop
Horchroutine sie dient nur zur Anzeige der Daten im Slot.

Code: Alles auswählen

PUB slotr(slotvec)| t
    pr_str(string(" ******************", $A))
    pr_str(string(" * Monitor v. 0.1 *", $A))
    pr_str(string(" * (c) PIC18F2550 *", $A))
    pr_str(string(" ******************", $A, $A))
    pr_str(string(" Slotvector  : ", $A,$A,))
    pr_str(string(" ## Eingangspuffer ## ", $A,))
    pr_str(string(" Status       : ", $A,))
    pr_str(string(" Eigene    ID : ", $A,))
    pr_str(string(" Absender  ID : ", $A,))
    pr_str(string(" Datenlänge   : ", $A,))
    pr_str(string(" Daten        : ", $A,$A,))
    pr_str(string(" ## Ausgangspuffer ## ", $A,))
    pr_str(string(" Status       : ", $A,))
    pr_str(string(" Empfänger ID : ", $A,))
    pr_str(string(" Eigene    ID : ", $A,))
    pr_str(string(" Datenlänge   : ", $A,))
    pr_str(string(" Daten        : ", $A,$A,))
    repeat
        pr_strat( 5,16,str.integerToHexadecimal(slotvec,4))
        pr_strat( 8,16,str.integerToHexadecimal(byte[slotvec][0],2))
        pr_strat( 9,16,str.integerToHexadecimal(byte[slotvec][1],2))
        pr_strat(10,16,str.integerToHexadecimal(byte[slotvec][2],2))
        pr_strat(11,16,str.integerToHexadecimal(byte[slotvec][3],2))
        repeat t from 0 to 15
            pr_strat(12,16 + t * 3 ,str.integerToHexadecimal(byte[slotvec][4 + t],2))
            pr_chr(" ")
        pr_strat( 15,16,str.integerToHexadecimal(byte[slotvec][20],2))
        pr_strat( 16,16,str.integerToHexadecimal(byte[slotvec][21],2))
        pr_strat( 17,16,str.integerToHexadecimal(byte[slotvec][22],2))
        pr_strat( 18,16,str.integerToHexadecimal(byte[slotvec][23],2))
        repeat t from 0 to 15
            pr_strat(19,16 + t * 3 ,str.integerToHexadecimal(byte[slotvec][24 + t],2))
            pr_chr(" ")
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
kuroneko
Beiträge: 202
Registriert: Sa 22. Okt 2011, 13:05
Wohnort: FN, Germany

Re: Größenwahn

Beitrag von kuroneko »

PIC18F2550 hat geschrieben:Start des 3.VGA-COG's

Code: Alles auswählen

....
  'if both COGs launched, return true
  if cog[0] and cog[1]
    pr_chr($E)
    cog[2] := cognew(slotr(slotvec), @stack)
    if cog[0] and cog[1] and cog[2]
      return true
    ...
When kein cog verfuegbar ist wird -1 (TRUE) als Ergebnis geliefert. Andererseits ist 0 (FALSE) ein gueltiges Resultat.

Code: Alles auswählen

if ID := cognew(...) +1
  ...

if ID
  cogstop(ID~ -1)
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: Größenwahn

Beitrag von PIC18F2550 »

:shock: Oh hab wol das +1 vergessen Danke
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Antworten