Hallo *, mal ne Frage an die Freunde des guten alten MC68000: Ich habe hier ein Gerät mit einem 68000 dessen Firmware ich disassembliert vorliegen habe. Die Firmware bietet die Möglichkeit über einen eingebauten Bootloader eigenen Code ins RAM zu laden und von dort auszuführen (es wird mit JSR an die angegeben Stelle gesprungen). Leider funktioniert das relativ leidlich bzw. habe ich so komische Effekte wie den folgenden. Es existiert eine kleine Funktion im EPROM bei 0x4ad508 um das Statusregister ins RAM zu sichern: 004ad508 40 f9 00 11 34 9c move SR,(0x0011349c) 004ad50e 00 7c 07 00 ori #0x700,SR 004ad512 4e 75 rts Wenn ich diese Funktion mit JSR $4ad508 aufrufe stürzt das System ab. Baue ich die Funktion jedoch nach und rufe sie an der neuen Adresse auf funktioniert alles einwandfrei. Was übersehe ich?
C. W. schrieb: > Wenn ich diese Funktion mit JSR $4ad508 aufrufe stürzt das System ab. > Baue ich die Funktion jedoch nach und rufe sie an der neuen Adresse auf > funktioniert alles einwandfrei. Konntest Du den ins RAM geladenen Code wieder erfolgreich zurücklesen? Schreibt Dein Bootloader byte- oder wortweise? Falls byteweise, ist das RAM im Zielbereich byteweise decodiert, also werden /UDS und /LDS ausgewertet? Grüßle, Volker
C. W. schrieb: > Baue ich die Funktion jedoch nach und rufe sie an der neuen Adresse auf > funktioniert alles einwandfrei. Weißt du was zu den Hintergründen über die Original Funktion?
:
Bearbeitet durch User
C. W. schrieb: > Was übersehe ich? SR modifizieren nur im Supervisor-Mode Im User Mode führt ORI #...,SR zu einer Privilege Violation Exception (Vector 8).
"ist das RAM im Zielbereich byteweise decodiert, also werden /UDS und /LDS ausgewertet?" - ja! "Weißt du was zu den Hintergründen über die Original Funktion?" - nicht wirklich. Sie wird von eine anderen Funktion aufgerufen die ich gerne verwenden würde "SR modifizieren nur im Supervisor-Mode" - gutes Argument was jedoch nicht erklärt warum ich die gleiche Manipulation im SR in eigenem Code, der im RAM läuft, machen kann Eine andere Funktion ohne die SR Manipulation macht die gleichen Probleme. Es sieht aus als ob irgendetwas nicht will das ich Code aus dem EPROM-/FLASHbereich ausführe. Ich habe beispielsweise zwei quasi identische Funktionen die einen Ton ausgeben. Die eine ist vom Bootloader und läuft im RAM und die andere gehört zum Gerät selbst und ist im EPROM/FLASH. Die im RAM kann ich aufrufen, die andere nicht.
> Wenn ich diese Funktion mit JSR $4ad508 aufrufe stürzt das System ab. Da musste mal spezifischer werden und gerade die vielen Exceptions des MC68k bitten viele Möglichkeiten "System-Abstürze" ein spezifische Erscheinungsbild zu geben. Falls es wie bereits genannt eine Exceptions wegen Verletzung des Supervisormodes ist, sollte das durch die angesprungenen Addresse während des Absturzes deutlich werden. Busfehler wäre auch so erkennbar. Da mal a bisserl genauer wie Abstürze im 68k implementiert sind: https://reversing.pl/literatura/68k/Exception_Handling_in_68000.pdf (Anhang daraus) Bei JSR ist im Unterschied zu JMP noch der "Zustand" des stacks wichtig und wenn ich die mnemonics richtig interpretiere werden in dem Schnipsel die Interupt Mask bits gesetzt. Falsch initialisierte Ineterrupts sind auch ein "Quell ew'ger Freude" ;-) > Die eine ist vom > Bootloader und läuft im RAM und die andere gehört zum Gerät selbst und > ist im EPROM/FLASH. Die im RAM kann ich aufrufen, die andere nicht. Dann schau dir mal den Adressdecoder für die einzelnen Chipselects CS an.
:
Bearbeitet durch User
C. W. schrieb: > "ist das RAM im Zielbereich byteweise decodiert, also werden /UDS und > /LDS ausgewertet?" - ja! Ein Tipp: das Forum bietet zwei Zitierfunktionen: 1. Text markieren und auf "Makrierten Text zitieren" klicken 2. den gesamten Post zitieren mit "Antwort mit Zitat" Der Gimmick ist, dass dann ein Link zum zitierten Post eingefügt wird. Aber wie man einen Post über diesem hier sieht: das schaffen selbst einige langjährige Forenmitglieder nicht...
:
Bearbeitet durch Moderator
Die Funktion ist durchaus bekannt aber soll ich drei Posts erzeugen nur weil bei jedem der drei Posts auf die ich reagieren will nur einmal markieren und zietieren kann?
C. W. schrieb: > Die Funktion ist durchaus bekannt Man lernt nie aus. > aber soll ich drei Posts erzeugen nur weil bei jedem der drei Posts > auf die ich reagieren will nur einmal markieren und zietieren kann? Man kann das mehrfach machen. Volker B. schrieb: > ... irgendwas ... Und das alles in 1 Post. Bradward B. schrieb: > ... irgendwas anderes ... Beliebig oft... Und vor allem: markiert hattest du den Text ja schon. Du hättest dir also das Kopieren und Einfügen und Inanführungszeichensetzen sparen könnnen. BTW: wenn du das schon händisch machst, dann mach wenigstens ein ">" an den Zeilenanfang, damit man das Zitat leicht erkennt.
:
Bearbeitet durch Moderator
Lothar M. schrieb: > BTW: wenn du das schon händisch machst, dann mach wenigstens ein ">" an > den Zeilenanfang, damit man das Zitat leicht erkennt. Und den eigenen Kommentar dazu dann bitte in eine neue Zeile, da sonst Zitat und Kommentar/Antwort nicht auseinanderzuhalten sind. Beispiele: Lothar M. schrieb: > Man lernt nie aus. Das ist mein Kommentar in der selben Zitatzeile. Lothar M. schrieb: > Man lernt nie aus. Das ist mein Kommentar in einer neuen Zeile.
Lothar M. schrieb: > Der Gimmick ist, dass dann ein Link zum zitierten Post eingefügt wird. > Aber wie man einen Post über diesem hier sieht: das schaffen selbst > einige langjährige Forenmitglieder nicht.. Probier das mal bei den News-Artikeln.
Magnus M. schrieb: > Lothar M. schrieb: >> Man lernt nie aus. Das ist mein Kommentar in der selben Zitatzeile. > > Lothar M. schrieb: >> Man lernt nie aus. > > Das ist mein Kommentar in einer neuen Zeile. Eine Leerzeile ist nicht nötig. Ein Zeilenumbruch reicht, wenn es kein "zitiertes Zitat" ist, denn sonst geht es (zumindest in der Mobilansicht) schief... :-/ Oder kurz: - mit 1 > am Zeilenanfang braucht es keine Leerzeile - ab 2 > am Zeilenanfang muss eine Leerzeile rein It's not a bug, it's a feature! Rbx schrieb: > Probier das mal bei den News-Artikeln. Hab es grade mal in deinem letzten Post "probiert": es funktioniert auch dort.
Beitrag #8021271 wurde vom Autor gelöscht.
Lothar M. schrieb: > Hab es grade mal in deinem letzten Post "probiert": es funktioniert auch > dort. Prinzipiell ja - nur - mach mal was anderes als schnell mit der Maus herunterscrollen bei der Seite. Sogar den Scrollbalken zu nutzen könnte schon zuviel sein. Könnte auch am Browser liegen (Firefox) - jedenfalls habe ich Mühe, dass beim Zitat-Kopieren, wenn ich unten angekommen bin (mit dem Mauszeiger) nicht gleich die Kopie des ganzen Artikels in der Antwort liegt. Wenn ich aber hier auf der Seite nach ganz oben gehe, Antworttext markiere und auf die Zitat-Antwort klicke, da lande ich sofort unten mit dem Zitat in der Antwortmaske. Das funktioniert allerdings bei den Artikeln nicht, und so muss man halt (oder muss ich) weit von Hand runterscrollen. Das stört insbesondere dann, wenn die News-Artikel länger sind als üblich.
Rbx schrieb: > mach mal was anderes als schnell mit der Maus > herunterscrollen bei der Seite. Sogar den Scrollbalken zu nutzen könnte > schon zuviel sein. Man kann auch die Tastatur nutzen ...
Magnus M. schrieb: > Und den eigenen Kommentar dazu dann bitte in eine neue Zeile, da sonst > Zitat und Kommentar/Antwort nicht auseinanderzuhalten sind. Danach sehne ich mich bei Loddar schon lange. Manche Leute kapieren es einfach nicht sich wirklich lesbar auszudrücken.
Harald K. schrieb: > Man kann auch die Tastatur nutzen ... Danke, probier ich aus. Ist aber trotzdem nervig bei langen Artikeln.
Rbx schrieb: > Ist aber trotzdem nervig bei langen Artikeln. Ein Tastendruck (zwei Tasten gleichzeitig) springt ans Seitenende, ein anderer an den Seitenanfang. Nervig ist anders. Allerdings: Die Forensoftware springt schon an die vermeintlich richtige Stelle, bevor sie den Artikel fertig geladen hat, und da keine Platzhalter für Bilder verwendet werden, scrollt einem die "richtige" Stelle nach unten weg, wenn nach und nach die eingeblendeten Bilder geladen werden. Das ist nervig, aber ich habe nicht den Eindruck, als hätte Andreas viel Lust, noch irgendwas an der Forensoftware zu ändern. Diskussionen über dies und das, was alles nötig wäre, gabs hier schon vor über 15 Jahren ... Immerhin schreibt jetzt jemand häufiger Artikel, auch wenn Tams Wortwahl manchmal sehr merkwürdig ist, ist das zu begrüßen. Der Mann ist halt ein in Ungarn lebender Syrer, der hantiert mit mehr verschiedenen Sprachen als die meisten von uns hier.
Harald K. schrieb: > Ein Tastendruck (zwei Tasten gleichzeitig) springt ans Seitenende, ein > anderer an den Seitenanfang. Nervig ist anders. Ich weiß jetzt zwar nicht wie du das meinst (welche Tasten?) - aber wenn ich den nach unten Cursor gedrückt halte, und dann bei der Stelle mit dem "Markierten Text zitieren" klicke, dann landet zumindest nicht der ganze Artikel in der Antwort. Harald K. schrieb: > Immerhin schreibt jetzt jemand häufiger Artikel, auch wenn Tams Wortwahl > manchmal sehr merkwürdig ist, ist das zu begrüßen. Ich finde das auch sehr gut, so gibt es immer ein paar interessante Neuigkeiten und kein Gestreite ;) Allerdings bleibt einiges eher oberflächlich - beispielsweise bei dieser "Rust-Hardware" könnte man den Entwicklern und den Verkäufern auf der Messe schon etwas mehr ein Loch in den Bauch fragen ;) Die KI hat mir diesbezüglich (also wenn die Artikel wieder mal nur andeuten) schon etliche gute Zusammenhänge aufgezeigt. Zuletzt hatte die KI (jetzt kein Technik Bezug, aber egal) sogar einen wirtschaftlichen Zusammenhang bei den Exporten aus Deutschland nach Iran und Israel aufgezeigt. Während Israel viel Waffen bekommt, importiert der Iran Getreide aus Deutschland. Netter Unterschied oder?
Problem-Lokalisierung: Gut möglich das es nicht im Prozessor an sich liegt sondern am System aus Prozessor und Speicher-devices. Insbesonders da erst dargestellt wird, im System wäre vorgesehen, das initial ROM-Inhalt in den RAM kopiert wird und anschließend im RAM (jsr [RAM-Addresse]) ausgeführt. Dagegen versucht der TO erfolglos Programm-Code direkt vom EEPROM auszuführen, also ohne vorheriges Kopieren zum RAM (JSR [ROM-Adresse]), neudeutsch XIP (Execute in Place). * https://en.wikipedia.org/wiki/Execute_in_place XIP ist nicht selbstverständlich, erst recht nicht zu Zeiten des MC68000 (Achtziger/Neunziger). Firmware ins ROM kopieren galt als schneller, manche ROM's der damaligen Zeit, insbesonders die EPROM's hatten schon mal Zugriffszeiten um 500 ns, würden also den Prozessor auf ca. 2 MHz einbremsen. Die Bus-Zugriffs Signale unterscheiden sich jetzt nicht ob Daten- oder Befehls-Holen, spontan fallen da nur die drei FCO Outputs auf, die aber nur Status sind und nicht notwendigerweise Buszugriffe steuern. Also es könnte schlicht so sein, das das System nicht ausgelegt ist, (beliebigen) Programmcode aus dem EPROM direkt auszuführen sondern das es erst in den RAM kopiert werden muss, aus dem RAM heraus funktioniert es ja. Schaltplan o.ä. wäre hilfreich. Beispielsweise könnten die erwähnten FCO-Signale bei dem nicht näher benannten System mit den Steuersignalen für ROM und RAM verbunden sein. Man kann so den Adressbereich über 16Mb hinaus erweitern und ohne MMU eine Speicherverwaltung auf bauen. Im Anhang eine Realisierung mit 74LS138 (aus ISBN: 3-89362-080-X) Offtopic: Von den vorhergehenden 18 Beiträgen beschäftigen sich sechse (inkl. Eingangs-Frage) mit dem Thema und elf drehen sich lediglich um eine Moderator-genehme Form von Beiträgen. Effizientes Arbeiten am Thema geht anders.
Bradward B. schrieb: > Effizientes Arbeiten am Thema geht anders. Da müssten TOs dann aber auch viel mehr mitmachen. Nützt ja nicht viel, wenn man oft im Peephole-Modus auf Zusammenhänge schließen muss. Da hilft ja oft das Horchen auf der Motorhaube beim Auto, wenn was nicht stimmt viel besser weiter.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.

