Seite 1 von 4

Ram Upgrade mit Hinternissen

Verfasst: So 30. Mai 2021, 17:56
von drohnie
Hallo zusammen,
ich hab mal Fragen zum Ram-Upgrade. Ich hab das hardwareseitig aufgebaut. Aber leider, wie so oft, tut es nicht richtig. Ich hab Forth als Start Option, das läuft auch mit der Erweiterung, wenn ich aber über „regime“ auf Plexus 2.1 wechseln will, kommt noch der Welcome to... Bildschirm und der blaue Hintergrund danach. Aber dabei bleibt es. Wo könnte es da fehlen?
Gruß Gerd

Re: Ram Upgrade mit Hinternissen

Verfasst: Do 3. Jun 2021, 22:19
von zille9
Hallo Gerd,
um Plexus aus regime heraus zu starten, muss in Bellatrix eine leicht angepasste Version geflasht werden.
Die Änderungen betreffen die PORT-BIT - Masken.
Schau mal bitte in die Belflash.spin und suche die Portmasken (im Kopfteil).
So müssen sie aussehen, wenn nicht, bitte ändern
' hbeat --------+
' clk -------+|
' /wr ------+ ||
' /hs -----+||| +------------------------- /cs
' |||| | -------- d0..d7
DB_IN = %00001000_00000000_00000000_00000000 'maske: dbus-eingabe
DB_OUT = %00001000_00000000_00000000_11111111 'maske: dbus-ausgabe

M1 = %00000010_00000000_00000000_00000000
M2 = %00000010_10000000_00000000_00000000 'busclk=1? & /cs=0?

M3 = %00000000_00000000_00000000_00000000
M4 = %00000010_00000000_00000000_00000000 'busclk=0?

scrolle etwas nach unten und such den PASM-Teil des Loaders:
Im unteren Teil stehen ebenfalls Port-Masken, welche angepasst werden müssen.
DAT
org 0

loader
mov outa, M_0 'bus inaktiv
mov dira, DINP 'bus auf eingabe schalten
mov reg_a, PAR 'parameter = plen
mov reg_b, #0 'adresse ab 0

' datenblock empfangen
loop
call #get 'wert einlesen
wrbyte in, reg_b 'wert --> hubram
add reg_b, #1 'adresse + 1
djnz reg_a, #loop

' neuen code starten

rdword reg_a, #$A ' Setup the stack markers.
sub reg_a, #4 '
wrlong SMARK, reg_a '
sub reg_a, #4 '
wrlong SMARK, reg_a '

rdbyte reg_a, #$4 ' Switch to new clock mode.
clkset reg_a '

coginit SINT ' Restart running new code.


cogid reg_a
cogstop reg_a 'cog hält sich selbst an


get
waitpeq M_1, M_2 'busclk=1? & /cs=0?
mov in, ina 'daten einlesen
and in, DMASK 'wert maskieren
mov outa, M_3 'hs=0
waitpeq M_3, M_4 'busclk=0?
mov outa, M_0 'hs=1
get_ret ret

' ------------------- Hier muss geändert werden -----------------
' hbeat --------+
' clk -------+|
' /wr ------+||
' /hs -----+|||+------------------------- /cs
' ||||| -------- d0..d7
DINP long %00001000000000000000000000000000 'constant dinp hex \ bus input
DOUT long %00001000000000000000000011111111 'constant dout hex \ bus output
M_0 long %00001000000000000000000000000000 'bus inaktiv
M_1 long %00000010000000000000000000000000
M_2 long %00000010100000000000000000000000 'busclk=1? & /cs=0?
M_3 long %00000000000000000000000000000000
M_4 long %00000010000000000000000000000000 'busclk=0?


DMASK long %00000000000000000000000011111111 'datenmaske

SINT long ($0001 << 18) | ($3C01 << 4) ' Spin interpreter boot information.
SMARK long $FFF9FFFF ' Stack mark used for spin code.

in res 1
reg_a res 1
reg_b res 1

Wenn das erledigt ist, bitte compilieren und in Bellatrix flashen.
Jetzt sollte es funktionieren.
PS:sorry für die miserable Formatierung aber der Kommentareditor verschluckt offensichtlich Tabulatoren.
Gruß Zille9

Re: Ram Upgrade mit Hinternissen

Verfasst: Fr 4. Jun 2021, 01:14
von yeti
PS:sorry für die miserable Formatierung aber der Kommentareditor verschluckt offensichtlich Tabulatoren.
In code-Tags isses nicht perfekt, aber schaut schon etwas weniger gruselich aus:

Code: Alles auswählen

'                hbeat   --------+                            
'                  clk     -------+|                            
'               /wr     ------+ ||                            
'                /hs     -----+|||  +------------------------- /cs
'                                ||||  |                                 -------- d0..d7
DB_IN            = %00001000_00000000_00000000_00000000 'maske: dbus-eingabe
DB_OUT           = %00001000_00000000_00000000_11111111 'maske: dbus-ausgabe

M1               = %00000010_00000000_00000000_00000000
M2               = %00000010_10000000_00000000_00000000 'busclk=1? & /cs=0?

M3               = %00000000_00000000_00000000_00000000
M4               = %00000010_00000000_00000000_00000000 'busclk=0?

scrolle etwas nach unten und such den PASM-Teil des Loaders:
Im unteren Teil stehen ebenfalls Port-Masken, welche angepasst werden müssen.
DAT
                        org     0

loader
                        mov     outa,    M_0               'bus inaktiv
                        mov     dira,    DINP              'bus auf eingabe schalten
                        mov     reg_a,   PAR               'parameter = plen
                        mov     reg_b,   #0                'adresse ab 0

                        ' datenblock empfangen
loop
                        call    #get                       'wert einlesen
                        wrbyte  in,      reg_b             'wert --> hubram
                        add     reg_b,   #1                'adresse + 1
                        djnz    reg_a,   #loop

                        ' neuen code starten

                        rdword  reg_a,   #$A               ' Setup the stack markers.
                        sub     reg_a,   #4                '
                        wrlong  SMARK,   reg_a             '
                        sub     reg_a,   #4                '
                        wrlong  SMARK,   reg_a             '

                        rdbyte  reg_a,   #$4               ' Switch to new clock mode.
                        clkset  reg_a                                             '

                        coginit SINT                       ' Restart running new code.


                        cogid   reg_a
                        cogstop reg_a                      'cog hält sich selbst an


get
                        waitpeq M_1,      M_2              'busclk=1? & /cs=0?
                        mov     in,       ina              'daten einlesen
                        and     in,       DMASK            'wert maskieren
                        mov     outa,     M_3              'hs=0
                        waitpeq M_3,      M_4              'busclk=0?
                        mov     outa,     M_0              'hs=1
get_ret                 ret

' ------------------- Hier muss geändert werden -----------------
'            hbeat   --------+
'              clk     -------+|
'            /wr     ------+||
'            /hs     -----+|||+------------------------- /cs
'                            |||||                               -------- d0..d7
DINP    long  %00001000000000000000000000000000  'constant dinp hex  \ bus input
DOUT   long  %00001000000000000000000011111111  'constant dout hex  \ bus output
M_0     long  %00001000000000000000000000000000  'bus inaktiv
M_1     long  %00000010000000000000000000000000
M_2     long  %00000010100000000000000000000000  'busclk=1? & /cs=0?
M_3     long  %00000000000000000000000000000000
M_4     long  %00000010000000000000000000000000  'busclk=0?


DMASK long  %00000000000000000000000011111111  'datenmaske

SINT    long    ($0001 << 18) | ($3C01 << 4)                       ' Spin interpreter boot information.
SMARK   long    $FFF9FFFF                                          ' Stack mark used for spin code.

in      res   1
reg_a   res   1
reg_b   res   1

Re: Ram Upgrade mit Hinternissen

Verfasst: Fr 4. Jun 2021, 10:24
von drohnie
Hallo Zille9,

sowas hatte ich mir gedacht... nur keinen Hinweis dazu gefunden... und für's selber finden, kenne ich mich noch zu wenig aus.

Allerdings finde ich die erste Änderungsstelle DB_IN... betreffend nicht in belflash.spin sondern in bel-bus.spin sowie admflash.spin, admay.spin, admnet.spin, admsid.spin, g0key.spin, htext.spin gefunden. Nun ja, verwendet wird es aber nirgens, oder?

Ich vermute, dann ist es überflüssig oder müssen die anderen Stellen auch geändert werden?

Ich habe die Sourcen von https://hive-project.de/downloads

Zu allem Überfluss bekomme ich beim Compilieren von belflash.spin mit F8 folgenden Fehler
F8-Error.JPG
F8-Error1.JPG
Aber immerhin, der Gesamt-make ging. Gibt es dazu noch Anmerkungen... weitere Tests muss ich erst mal auf Abend oder morgen verschieben.

Vielen Dank schon mal
Gruß Gerd

Re: Ram Upgrade mit Hinternissen

Verfasst: Fr 4. Jun 2021, 13:10
von zille9
Die bel-Bus.spin ist ein Extrakt aus der ehemaligen belflash und wird auf jeden Fall gebraucht.Die Änderungen betreffen auch nur die belflash bzw.bel-Bus.Spin. Die admflash.Spin muss nicht geändert werden, da die RAM-Erweiterung ja auf Bellatrix sitzt.
Ändere mal die angegebenen Stellen und berichte mal , wir werden das Teil schon zum Laufen bekommen, hab schon 3Hive‘s mit RAM-Erweiterung und jede hat Zicken gemacht :LACHEN

Re: Ram Upgrade mit Hinternissen

Verfasst: Fr 4. Jun 2021, 19:26
von drohnie
Tata, immer wenn man es richtig macht, tuts auch. Vielen Dank!

Also Plexus 2.1 läuft - meine DCF77 hat die Zeit wieder synchronisiert. Okay, das wäre auch ohne Ram- Erweiterung gegangen ;) Aber nun gehts mit.

Fast toll, weil, ich habe mal das Plexus 2.5.1 versucht zu starten - ging aber auch schon nicht ohne Ram- Erweiterung. Das kommt wieder bis zum Welcome-Bilschirm, der Fortschrittsbalken ganz unten rattert bis rechts durch... aber dann gehts nicht weiter.

Ich habe die funktionierende SD-Karte mit dem 2.1 (also eine Kopie) genommen und in das Plexus- Verzeichnis die Version 2.5.1 vom 13.2.21 von Github geworfen - kann man das so machen? Gestartet habe ich es im Plexus-Verzeichnis mit dem Kommando "Plexus". Dann geht es bis zum Welcome... Wenn ich im Stammverzeichnis "goplexus" eingebe, bekomme ich die Meldungen:
Fehlernummer : 4 : $04
Fehler : not found
Also irgendwas mache ich falsch. Die Plexus 2.5.1 Dateien ins Stammverzeichnis der SD-Karte schreiben, wie in der Installationsanleitung steht führt zu einem Bildschirm wo oben "SD-Karte einlegen !" steht. Tja, und da ist Ende. Ich denke aber, auch das bekomme ich erklärt :EIEI :)

Gruß Gerd

Re: Ram Upgrade mit Hinternissen

Verfasst: Sa 5. Jun 2021, 10:29
von zille9
Hallo Gerd,
Hast Du auch die sd Version genommen?
Die Modulversion startet Plexus aus einem optionalen Flash an Administra, nur die SD Version lädt auch von SD. Da der Balken durchläuft hängt er offensichtlich beim starten von Plexus aus dem RAM. Kann also nichts schwerwiegendes sein. Zur Sicherheit kannst Du testweise die admsid.spin aus dem Library Verzeichnis in Administra flashen .
Und auch immer die Dateien im SD Ordner auf SD Karte benutzen.

Gruß zille9

Re: Ram Upgrade mit Hinternissen

Verfasst: Sa 5. Jun 2021, 13:26
von drohnie
Hallo Zille,

ja, ich habe das SD_Card Verzeichnis genommen - wenn's schon dran steht. ;)
Aber auch mit der SD_Variante hab ich es probiert - endet im selben Zustand dauert nur um einiges länger.

So, dann wollte ich wie vorgeschlagen admsid.spin in Administra flashen... nachdem ich das PropellerSignalGenerator.spin aus den Erweiterungen der SD_Variante in das Library Verzeichnis kopiert habe, das fehlte da - kam dann im Propeller Tool die Meldung "limit of 64 cases exceeded".

Hm, das gabs schon mal 2014 "Erfahrung mit simpleIDE" hier im Forum. Ist das immer noch ein Problem? Ich benutze das Propeller Tool 2.5.3 aber auch das 1.2.3 gibt den gleichen Fehler.

Gibt es da einen Ausweg - muss doch bei dir auch irgendwie gehen...

Gruß Gerd

Re: Ram Upgrade mit Hinternissen

Verfasst: Sa 5. Jun 2021, 15:42
von drohnie
Also, die PropellerIDE kann admsid.spin in den EEPROM laden. Keine Problem mit dem Limit für die cases.
Schon etwas verwirrend.
Aber leider geht das Plexus trotzdem nicht weiter. :roll:

Re: Ram Upgrade mit Hinternissen

Verfasst: Sa 5. Jun 2021, 19:06
von PIC18F2550
limit of 64 cases exceeded

Heist das im Quelltext eine case Anweisung mehr als 64 verschiedene zustandswerte erkennen soll, was die IDE nicht kann.

Probier mal das mit BST zu übersetzen.