Ram Upgrade mit Hinternissen

Erlebnisse und Schilderungen über die Arbeiten an eurem HIVE.
drohnie
Beiträge: 20
Registriert: So 8. Jul 2018, 08:20

Ram Upgrade mit Hinternissen

Beitrag 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
Benutzeravatar
zille9
Beiträge: 399
Registriert: Do 4. Okt 2012, 21:56
Wohnort: Berlin

Re: Ram Upgrade mit Hinternissen

Beitrag 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
Computer lösen die Probleme, die man ohne sie gar nicht hätte!
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Ram Upgrade mit Hinternissen

Beitrag 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
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
drohnie
Beiträge: 20
Registriert: So 8. Jul 2018, 08:20

Re: Ram Upgrade mit Hinternissen

Beitrag 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
Zuletzt geändert von drohnie am Fr 4. Jun 2021, 13:27, insgesamt 1-mal geändert.
Benutzeravatar
zille9
Beiträge: 399
Registriert: Do 4. Okt 2012, 21:56
Wohnort: Berlin

Re: Ram Upgrade mit Hinternissen

Beitrag 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
Computer lösen die Probleme, die man ohne sie gar nicht hätte!
drohnie
Beiträge: 20
Registriert: So 8. Jul 2018, 08:20

Re: Ram Upgrade mit Hinternissen

Beitrag 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
Benutzeravatar
zille9
Beiträge: 399
Registriert: Do 4. Okt 2012, 21:56
Wohnort: Berlin

Re: Ram Upgrade mit Hinternissen

Beitrag 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
Computer lösen die Probleme, die man ohne sie gar nicht hätte!
drohnie
Beiträge: 20
Registriert: So 8. Jul 2018, 08:20

Re: Ram Upgrade mit Hinternissen

Beitrag 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
drohnie
Beiträge: 20
Registriert: So 8. Jul 2018, 08:20

Re: Ram Upgrade mit Hinternissen

Beitrag 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:
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: Ram Upgrade mit Hinternissen

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