Hi,
ich habe Linux auf einige alte ThinClients mit echtem Bios und DiskOnChip installiert. Jetzt habe ich Geräte hier, an die ich mich bisher nicht getraut habe, weil sie eben kein eigenes Bios haben. Vielmehr gibt es einen speziellen Bootcode, der wohl die Hardware initialisiert und das Win CE aus dem NAND-Flash lädt. Das System ist das typische MediaGX x86 mit CX5530-Chipset.
Ich wollte jetzt den Boot-Flash auslesen und einen Bootcode mit U-Boot darauf bringen, um Linux booten und den Flash via serieller Schnittstelle neu beschreiben zu können.
Ich möchte jetzt wissen, was an Hardware initialisiert werden muss, bevor Uboot gestartet werden kann (es kann evtl. vorhandener Code weiter verwendet werden, denke ich mal). Inwieweit muss UBoot dann noch für die Hardware angepasst werden?
Freue mich über jeden Hinweis!
Gruß Stephan
OT: Frage an die Embedded Linux/U-Boot-Spezialisten
-
- Einsteiger
- Beiträge: 145
- Registriert: Sonntag 27. Juni 2004, 18:09
-
- Developer
- Beiträge: 2183
- Registriert: Mittwoch 10. Dezember 2003, 07:59
uboot läuft normalerweise aus dem reset vektor, d.h. der erste Befehl nach einem reset ist schon im uboot. Demzufolge muss uboot auch alles an der Hardware initialisieren (Clock/Ram/Flash/Seriell/Eth). Dazu muss man natürlich uboot an die Hardware anpassen.Ich möchte jetzt wissen, was an Hardware initialisiert werden muss, bevor Uboot gestartet werden kann (es kann evtl. vorhandener Code weiter verwendet werden, denke ich mal). Inwieweit muss UBoot dann noch für die Hardware angepasst werden?
Bei der Dbox gibts noch den BR Bootloader, da wird der uboot oben draufgesetzt, der brauch denn nicht mehr so viel machen
Houdini
-
- Einsteiger
- Beiträge: 145
- Registriert: Sonntag 27. Juni 2004, 18:09
Danke für deine Antwort!
Eine Frage kommt mir jetzt noch in den Sinn: Wie sieht das eigentlich mit den Interrupts aus; genauer gesagt mit der Interruptvektortabelle?
Muss der Bootloader sich darum überhaupt nicht kümmern? Nachdem der Rechner gestartet wird steht da ja wahrscheinlich irgendwas drin... und was passiert, wenn dann ein Interrupt ausgelöst wird? Oder sind die alle gesperrt?
Fragen über Fragen....
Gruß Stephan
Eine Frage kommt mir jetzt noch in den Sinn: Wie sieht das eigentlich mit den Interrupts aus; genauer gesagt mit der Interruptvektortabelle?
Muss der Bootloader sich darum überhaupt nicht kümmern? Nachdem der Rechner gestartet wird steht da ja wahrscheinlich irgendwas drin... und was passiert, wenn dann ein Interrupt ausgelöst wird? Oder sind die alle gesperrt?
Fragen über Fragen....
Gruß Stephan
-
- Developer
- Beiträge: 2183
- Registriert: Mittwoch 10. Dezember 2003, 07:59
Ein Prozessor kommt normalerweise mit Interrupts disabled aus dem reset. Der Bootloader muss natürlich auch die interrupt vector table initialisieren, wenn er interrupts nutzen will.
Die Interruptvektoren sind beim PPC an den Adressen n*0x100. Wen uboot aus dem Flash läuft, sind im Flash schon diese Adressen mit den interrupt routinen belegt (vgl. uboot-1.1.4/cpu/mpc8xx/start.s Zeilen 212ff). wenn dann das Ram an die Addresse 0 gemappt wird, dann muss auch die ivt ins Ram kopiert werden (Zeilen 635ff)(oder eine andere generiert werden)
Die Interruptvektoren sind beim PPC an den Adressen n*0x100. Wen uboot aus dem Flash läuft, sind im Flash schon diese Adressen mit den interrupt routinen belegt (vgl. uboot-1.1.4/cpu/mpc8xx/start.s Zeilen 212ff). wenn dann das Ram an die Addresse 0 gemappt wird, dann muss auch die ivt ins Ram kopiert werden (Zeilen 635ff)(oder eine andere generiert werden)