Neue Cogs in PASM starten?
Verfasst: Do 17. Sep 2009, 18:57
Wie startet man in Assembler einen neuen COG (nich die gleiche Instanz) ?
CogNew in Spin kopiert ja immer 496 Long's ab einem "@Label" vom HUBRAM in den nächstenb freien COG und startet ihn dann aber in Assembler kann der laufende COG keine 496 Longs vom HUBRAM in einem anderen freien COG kopieren.
Z.Z. mach ich das so das in jedem COG (am Speicherende) eine Minischleife (mit stromsparendem WAITCNT) läuft die nur darauf wartet vom OS den Befehl zu bekommen ab einem Label X vom HUBRAM N Longs zu kopieren und dann zu Adresse Y zu springen.
Der laufende COG welches das "neue" Programm abarbeitet kann wiederum vom OS den Befehl bekommen den aktuellen Task zu beenden dann verhart er wieder in der Dornröschenschleife und wartet bis er erneut geknutscht wird.
COGINIT in PASM macht nicht das was ich erwarten würde.
Es kann doch nicht sein das in jedem Chip ein COG immer mit dem Spininterpreter laufen muss nur um neue COG's mit PASM Code zu starten dann hätte man ja "nur" 7 COG's zur freien Verfügung ODER ?
Grüsse Joshy
CogNew in Spin kopiert ja immer 496 Long's ab einem "@Label" vom HUBRAM in den nächstenb freien COG und startet ihn dann aber in Assembler kann der laufende COG keine 496 Longs vom HUBRAM in einem anderen freien COG kopieren.
Z.Z. mach ich das so das in jedem COG (am Speicherende) eine Minischleife (mit stromsparendem WAITCNT) läuft die nur darauf wartet vom OS den Befehl zu bekommen ab einem Label X vom HUBRAM N Longs zu kopieren und dann zu Adresse Y zu springen.
Der laufende COG welches das "neue" Programm abarbeitet kann wiederum vom OS den Befehl bekommen den aktuellen Task zu beenden dann verhart er wieder in der Dornröschenschleife und wartet bis er erneut geknutscht wird.

COGINIT in PASM macht nicht das was ich erwarten würde.
Es kann doch nicht sein das in jedem Chip ein COG immer mit dem Spininterpreter laufen muss nur um neue COG's mit PASM Code zu starten dann hätte man ja "nur" 7 COG's zur freien Verfügung ODER ?
Grüsse Joshy