Hardware > Hardware (Classic 16-/32-Bit)
TOS206 mit 68030 CPU
udo:
Oh - besten Dank. Das Verhalten meines Systems ist schon recht nah an dem Zitat aus der ct.
Werd mir gleich mal den Artikel anschauen.
mfro:
--- Zitat von: udo am Sa 06.02.2021, 17:52:11 ---Oh - besten Dank. Das Verhalten meines Systems ist schon recht nah an dem Zitat aus der ct.
Werd mir gleich mal den Artikel anschauen.
--- Ende Zitat ---
Ich glaube nicht, dass dir das weiterhilft. TOS2.06 gilt eigentlich (im Gegensatz zu den älteren Versionen als weitgehend "warteschleifenbereinigt" - also von der CPU-Geschwindigkeit unabhängig gemacht). Dafür spricht auch, dass anscheinend (?) alles funktioniert, wenn Du die Caches ausschaltest (wie machst Du das eigentlich - TOS2.06 kann das m.E. bei einer '030 CPU nicht?).
Dein Problem ist m.E. die nicht initialisierte MMU - bei eingeschalteten Caches wird dann der gesamte Adressraum gecached. Zugriffe auf Hardware- (also z.B. die ACIA-) Register lesen so lange "alte" Werte aus dem Cache (anstatt direkt von der Hardware), bis die aus Platzmangel rausfliegen und der Cache neu befüllt wird. Anscheinend liegen die "entscheidenden" Zugriffe bei Pure C eben so dicht beieinander, dass das nicht passiert (verwunderlich, dass Du das anscheinend nur dort bemerkst).
Du brauchst (mindestens) eine rudimentäre MMU-Initialisierung, die der CPU sagt, wo im Adressraum Hardware-Register liegen (was also nicht gecached werden darf).
Zusätzlich ein Remapping, das die Hardware ab $FFF00000 auch im 24-bittigen ($F00000) Adressraum zugänglich macht (oder andersrum, je nachdem wo bei dir die Hardware sitzt).
Der Code dafür findet sich im EmuTOS - sollte nicht allzu schwierig sein, daraus ein Auto-Ordner Programm zusammenzuschustern.
Was ich nicht verstehe ist, warum das gepatchte PAK-TOS dasselbe Verhalten zeigt (aber ansonsten anscheinend läuft?). Das sollte eigentlich genau das machen?
udo:
Danke für die ausführliche Antwort.
Ausschalten kann ich den Cache am Suska-Board per Schalter :-).
Kann natürlich auch sein, daß noch ein Bug in der MMU ist, Ich werde mir
mal den PAK-306 Patch und die EMUTOS Initialisierung anschauen.
mfro:
--- Zitat von: udo am Sa 06.02.2021, 19:49:57 ---Danke für die ausführliche Antwort.
Ausschalten kann ich den Cache am Suska-Board per Schalter :-).
Kann natürlich auch sein, daß noch ein Bug in der MMU ist, Ich werde mir
mal den PAK-306 Patch und die EMUTOS Initialisierung anschauen.
--- Ende Zitat ---
Ich meine auch, irgendwo aufgeschnappt zu haben (weiss nicht mehr wann und wo, kann also auch falsch sein), dass Wolfgang seiner '030 CPU wesentlich grössere Caches verpasst hätte als Motorola?
Wenn das tatsächlich der Fall sein sollte, kann es natürlich sehr gut sein, dass Code darauf angepasst werden muss.
Thorsten Otto:
--- Zitat von: KarlMüller am Sa 06.02.2021, 17:31:46 ---Da habe ich mich vertan und dachte ein 030 hätte keine MMU intern. Wobei das TOS 2.06 diese dann nicht initallisiert.
--- Ende Zitat ---
Es gibt auch 68030 ohne MMU (68EC030), die sind aber wohl eher die Ausnahme. Ausserdem müssen, wenn ich mich richtig erinnere, selbst ohne MMU mind. die TransparentTranslation-register initialisiert werden weil sonst der Zugriff auf die Shadow-IO-Register im Bereich $FF0000-$FFFFFF nicht funktioniert, oder (wie mfro schrieb) gecachet wird.
Du kanst ja mal versuchen, ein Programm in den Auto-Ordner zu packen, das folgende Befehle (im Super-Visor-modus) ausführt:
--- Code: --- pmove mmu_tt0,ttr0
pmove mmu_tt1,ttr1
rts
mmu_tt0:
dc.l $017e8107
mmu_tt1:
dc.l $807e8507
--- Ende Code ---
Vlt. hilft es.
--- Zitat von: mfro ---Anscheinend liegen die "entscheidenden" Zugriffe bei Pure C eben so dicht beieinander, dass das nicht passiert (verwunderlich, dass Du das anscheinend nur dort bemerkst).
--- Ende Zitat ---
Er schreibt ja daß das bei anderen Programmen wohl auch auftritt. Pure-C verwendet jedenfalls keine direkten Hardware-Zugriffe (vlt. der Debugger, aber nicht die IDE). Die Sache mit dem Cache würde jedenfalls auch erklären warum EmuTOS "normal" läuft, zum einen müsste die MMU dort initialisiert werden wenn ein 030 erkannt wird, zum anderen sind die BIOS-Routinen ja ganz anders organisiert, was die Wahrscheinlichkeit grösser macht, daß die Hardware-Zugriffe nicht gecachet werden.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln