bel-dateien werden geladen aber nicht korrekt gestartet

Du hast ein Betriebssystem für den Hive geschrieben oder beschäftigst dich mit den grundlegenden Systemfunktionen, dann bist du hier richtig!
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

bel-dateien werden geladen aber nicht korrekt gestartet

Beitrag von PIC18F2550 »

im belflasch.spin gefunden.

Code: Alles auswählen

  repeat i from 1 to 7                                  'alle anderen cogs anhalten
    ifnot i == cogid
      cogstop(i)
Sollte vieleicht so sein.

Code: Alles auswählen

repeat i from 0 to 7
Sonnst bleibt COG0 immer aktiv, das könnte das Problem beim laden von bin datein erklären.
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
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: bel-dateien werden geladen aber nicht korrekt gestartet

Beitrag von drohne235 »

Code: Alles auswählen

  repeat i from 1 to 7                                  'alle anderen cogs anhalten
    ifnot i == cogid
      cogstop(i)

  dira := 0                                             'diese cog vom bus trennen
  cognew(@loader, plen)

  cogstop(cogid)                                        'cog 0 anhalten
Der Code geht ja noch weiter... ;) Mein Gedanke dabei: auf COG 0 läuft ja dieser Code, welcher alle anderen COG's anhält, in der nächsten freien COG dann den Loader startet (cognew(@loader, plen)) und zuletzt sich selbst beendet (cogstop(cogid) ).

Müsste doch so funktionieren, oder? Mach mal bitte als Test folgendes: erzeuge mal einen EEPROM-Code mit 32 KB und schau ob der läuft.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: bel-dateien werden geladen aber nicht korrekt gestartet

Beitrag von PIC18F2550 »

Deine Routine geht davon aus das der Spinnteil immer auf COG0 läuft.

Das ist bei einem hartware reset warscheinlich immer der fall.

Bei einem Software reset scheint der prop alle COG's zu killen und dann aber den nächsten freien zu verwenden.
Das ist nicht immer COG0.
danngeht das nicht mehr auf.

Mal eine kleine frage :?: Auf welchen COG läuft "mgr_load" nach dem es das neue File geladen und gestartet hatt?

Ich hatte ein etwas ähniches problem und habe es so besser in den Griff bekommen.
Muss aber immernoch einige im eeprom format behandeln.

mal ein auszug aus meinem Loder

Code: Alles auswählen

CON
_CLKMODE     = XTAL1 + PLL16X
_XINFREQ     = 5_000_000

PUB mgr_load|i                                          'cmgr: bellatrix-loader
  cognew(@L000, 0)

DAT
L000                    org     0
                        mov     dira,   LDIN                'bus auf eingabe schalten
                        mov     outa,   LM_0                'bus inaktiv
                        ' clear hRAM
                        mov     Lreg_a,  LCLS               '32k löschen
                        mov     Lreg_b,  #0                 'adresse ab 0
L001                    rdlong  Lreg_b,  #0
                        add     Lreg_b,  #1                 'adresse + 1
                        djnz    Lreg_a,  #L001
#ifdef Zerberus
                        ' COG-ID als info für Gesperrte COG's
                        cogid   Lreg_a
                        wrbyte  LSLOT,   Lreg_a
                        ' SLOT-Basis setzen
                        add     LSLOT,   #3
                        call    #Lget1                       'M1-wert(adresse) einlesen
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
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: bel-dateien werden geladen aber nicht korrekt gestartet

Beitrag von drohne235 »

Bei einem Software reset scheint der prop alle COG's zu killen und dann aber den nächsten freien zu verwenden.
Das ist nicht immer COG0.
danngeht das nicht mehr auf.

Mal eine kleine frage Auf welchen COG läuft "mgr_load" nach dem es das neue File geladen und gestartet hatt?
Gute Frage. Ich denke der Loader wird in COG1 gestartet (hab ich aber nie geprüft) empfängt den neuen Code über den Bus und startet ihn in COG 0? Hab ich auch nie geprüft und das könnte wirklich Ursache von Problemen sein. Müsste man mal einen kleinen Testdriver schreiben, der die eigene COGID ausgibt. Wenn man den per bload startet, kann man ja mit Gewissheit sagen wo er landet. Kann ich aber grad nicht probieren, hab hier in der Firma leider (noch) keinen Hive... ;)
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: bel-dateien werden geladen aber nicht korrekt gestartet

Beitrag von PIC18F2550 »

Ich habe gerade mein bellflash.spin von 1 auf 0 geändert.
Jetzt kann ich auch die bin datei'n von meinem neuen Treiber laden und muss nicht mehr als EEPROM datei abspeichern. :D
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
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: bel-dateien werden geladen aber nicht korrekt gestartet

Beitrag von drohne235 »

PIC18F2550 hat geschrieben:Ich habe gerade mein bellflash.spin von 1 auf 0 geändert.
Rätselhafte Worte in der Dunkelheit... ;)

Was meinst du konkret?
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: bel-dateien werden geladen aber nicht korrekt gestartet

Beitrag von PIC18F2550 »

Kiste auf Glaskugel raus -->>belflash.spin
drohne235 hat geschrieben:

Code: Alles auswählen

  repeat i from 1 to 7                                  'alle anderen cogs anhalten
    ifnot i == cogid
      cogstop(i)

  dira := 0                                             'diese cog vom bus trennen
  cognew(@loader, plen)

  cogstop(cogid)                                        'cog 0 anhalten
aus

Code: Alles auswählen

  repeat i from 1 to 7                                  'alle anderen cogs anhalten
wird

Code: Alles auswählen

  repeat i from 0 to 7                                  'alle anderen cogs anhalten
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
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: bel-dateien werden geladen aber nicht korrekt gestartet

Beitrag von drohne235 »

Hmm, wenn das funktioniert, was ja nach deinem Test nicht zu bezweifeln ist: Warum funktioniert es? Im Prinzip beendet sich die COG ja dabei selbst und der Loader sollte überhaupt nicht gestartet werden!?
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: bel-dateien werden geladen aber nicht korrekt gestartet

Beitrag von PIC18F2550 »

Wenn i nicht COG0 ist kann dieser wesentlich schneller arbeitete Code den frisch geladenen Code noch vor dessen Abschaltung beschädigen.
Daher erst alle COG'S. Stop dann Code laden dann diesen starten und im Anschluss Selbstmord. :twisted:
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
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: bel-dateien werden geladen aber nicht korrekt gestartet

Beitrag von drohne235 »

PIC18F2550 hat geschrieben:Wenn i nicht COG0 ist kann dieser wesentlich schneller arbeitete Code den frisch geladenen Code noch vor dessen Abschaltung beschädigen.
Daher erst alle COG'S. Stop dann Code laden dann diesen starten und im Anschluss Selbstmord. :twisted:
Versteh ich nicht: Wenn ich alle COG's stoppe, dann läuft auch der Code nicht mehr, welcher die neue COG mit dem Loader starten soll.

Code: Alles auswählen

  repeat i from 0 to 7                                  'alle anderen cogs anhalten
    ifnot i == cogid
      cogstop(i)
Nehmen wir an, der Maincode nach einem Reset läuft auf COG0 (was wahrscheinlich ist), so wird schon beim ersten Schleifendurchlauf cogstop(0) ausgeführt, und der Hauptcode (damit auch obige Schleife selbst) wird beendet. Schon beim ersten Durchlauf sollte also einfach Ruhe sein.

Der folgende Code...

Code: Alles auswählen

  dira := 0                                             'diese cog vom bus trennen
  cognew(@loader, plen)

  cogstop(cogid)                                        'cog 0 anhalten
...wird also normalerweise überhaupt nicht ausgeführt und somit der Loader auch nicht geladen werden.

Oder stehe ich da auf dem Schlauch?
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Antworten