Das U-Boot für Zapmaster
Moderator: LaSAT
Das U-Boot für Zapmaster
Ich habe jetzt eine erste Version des bekannten Bootloaders für embedded systems "Das U-Boot" fertig.
Was kann man damit machen:
- Wiederherstellbare Umgebungsvariablen
- Flash und RAM-Manipulation, z.b. Test, Checksum, Kopieren, Löschen
- Booten/Start einer Applikation aus dem Flash
- Booten/Start einer Applikation aus dem RAM
- Laden von Binär-, Elf- oder S-Record-Dateien über die serielle Schnittstelle (Kermit-Protokoll) ins RAM
Im Moment geht noch nicht:
- Zugriff auf Festplatten-Partitionen, um von dort zu booten/Programme zu laden
- I2C-EEprom (müsste man sowieso erstmal selbst einbauen)
- Zugriff auf 8-Bit-PCCards (im PCMCIA-Slot)
Was leider nie gehen wird:
- Ethernet Bootp,...
Für letzteres hätte ich zwar die Idee, den PCMCIA-Slot mit Adress- und Datenbus als Schnittstelle zu einem Ethernet-Chip zu nutzen. Aber dazu bräuchte ich jemanden, der sich besser mit Hardware auskennt als ich.
"Das U-Boot" für Zapmaster habe ich jetzt sogar als "out.app" erstellt. Ich konnte es auf meinen Zapmaster flashen und es wird quasi als Second-Level-Bootloader nach dem Lasat-Bootloader gestartet. Leider kann ich aber noch nicht die Zapmaster-Applikation starten, dafür müsste ich das Datei-Format erst in U-Boot einbauen. Man kann aber die Original "out.app" der Lasat-Firmware jederzeit wieder flashen.
Wenn Interesse besteht, kann ich das "U-Boot" als Download hier im Forum ablegen.
Was kann man damit machen:
- Wiederherstellbare Umgebungsvariablen
- Flash und RAM-Manipulation, z.b. Test, Checksum, Kopieren, Löschen
- Booten/Start einer Applikation aus dem Flash
- Booten/Start einer Applikation aus dem RAM
- Laden von Binär-, Elf- oder S-Record-Dateien über die serielle Schnittstelle (Kermit-Protokoll) ins RAM
Im Moment geht noch nicht:
- Zugriff auf Festplatten-Partitionen, um von dort zu booten/Programme zu laden
- I2C-EEprom (müsste man sowieso erstmal selbst einbauen)
- Zugriff auf 8-Bit-PCCards (im PCMCIA-Slot)
Was leider nie gehen wird:
- Ethernet Bootp,...
Für letzteres hätte ich zwar die Idee, den PCMCIA-Slot mit Adress- und Datenbus als Schnittstelle zu einem Ethernet-Chip zu nutzen. Aber dazu bräuchte ich jemanden, der sich besser mit Hardware auskennt als ich.
"Das U-Boot" für Zapmaster habe ich jetzt sogar als "out.app" erstellt. Ich konnte es auf meinen Zapmaster flashen und es wird quasi als Second-Level-Bootloader nach dem Lasat-Bootloader gestartet. Leider kann ich aber noch nicht die Zapmaster-Applikation starten, dafür müsste ich das Datei-Format erst in U-Boot einbauen. Man kann aber die Original "out.app" der Lasat-Firmware jederzeit wieder flashen.
Wenn Interesse besteht, kann ich das "U-Boot" als Download hier im Forum ablegen.
Re: Das U-Boot für Zapmaster
So wie ich das verstanden habe, ist das also ein Tool, welches zunächst einmal die LaSat-Firmware ersetzt um danach sowas wie eine "Entwicklungsumgebung" für eigene Applikationen/Betriebssysteme bereitzustellen.
Ist es damit möglich, das von Ihnen erstellte uClinux zu booten? Und zum Flashen, kann man dazu die originale Flash-Applikation von LaSat verwenden?
Ist es damit möglich, das von Ihnen erstellte uClinux zu booten? Und zum Flashen, kann man dazu die originale Flash-Applikation von LaSat verwenden?
Re: Das U-Boot für Zapmaster
Genau so ist es.Kosi2801 hat geschrieben:So wie ich das verstanden habe, ist das also ein Tool, welches zunächst einmal die LaSat-Firmware ersetzt um danach sowas wie eine "Entwicklungsumgebung" für eigene Applikationen/Betriebssysteme bereitzustellen.
Zum Flashen des u-Boot habe ich das Original-Flash-Programm von Lasat (Loader.exe) verwendet.Kosi2801 hat geschrieben: Ist es damit möglich, das von Ihnen erstellte uClinux zu booten? Und zum Flashen, kann man dazu die originale Flash-Applikation von LaSat verwenden?
Wenn U-Boot läuft, kann man uClinux per seriell ins RAM laden und dann ausführen. Das dauert zwar bei einem 1,2 MB Kernel mit 115200 ein bisschen, ist aber "rückstandsfrei", d.h. der Flash wird nicht angetastet.
-
- Beiträge: 115
- Registriert: 13.03.2007, 19:55
Re: Das U-Boot für Zapmaster
Hallo,
klasse Sache.
Gruss Miqueldecielo
klasse Sache.
Wenn der Proz. noch ein SPI+IRQ hätte, gäbe es eine nette Möglichkeit mit einem einfachen Ethernet-Chip von Microchip: ENC28J60, für den gibt es kleine Platinen mit Ethernetbuchse (z.B. Mikrocontroller.net). Durch den SPI ist es zwar abgebremst, aber bietet zumindest einen schnelleren Weg als Seriell.GDRGuy69 hat geschrieben:Was leider nie gehen wird: Ethernet Bootp...
Für letzteres hätte ich zwar die Idee, den PCMCIA-Slot mit Adress- und Datenbus als Schnittstelle zu einem Ethernet-Chip zu nutzen. Aber dazu bräuchte ich jemanden, der sich besser mit Hardware auskennt als ich.
Gruss Miqueldecielo
Re: Das U-Boot für Zapmaster
es gibt auch nen netten chip von smsc, der kann paralell ueber motorola-bus.
Re: Das U-Boot für Zapmaster
@GDRGuy69, 1.2Mbyte sind ja schon ziemlich viel. kann man das eigendlich noch keiner bekommen? welche funktionalitaeten sind bei den 1.2Mbyte denn enthalten ?
Re: Das U-Boot für Zapmaster
Genauer gesagt ist das ELF File 1,2 MB, nach objcopy sind es dann nur noch 900kb. Ich habe beim Compiler noch keine Optimierung eingestellt, da lässt sich bestimmt noch einiges rausholen. Beispielsweise baut der arc-elf32-gcc noch zu viele NOP's hinter flag-Befehle ein.tibor hat geschrieben:@GDRGuy69, 1.2Mbyte sind ja schon ziemlich viel. kann man das eigendlich noch keiner bekommen? welche funktionalitaeten sind bei den 1.2Mbyte denn enthalten ?
Als Funktionalitäten sind im Moment im Kernel Device-Treiber für LinuxTV DVB und IDE + Filesysteme enthalten. Wenn der Kernel gestartet ist, stehen noch 2,5 MB für User-Programme zur Verfügung. Zur Zeit sind das neben der Busybox + Tools, Consolen-Programme zum Frontend-Tune und DVB-Section-Decoding.
Re: Das U-Boot für Zapmaster
ok, weshalb uebertraegst du dann 1.2Mbyte ? in deiner berechnung sollte noch eingehen, dass man nicht alle baenke richtig nutzen kann. auf bank 3 und 4 geht
ja die haelfte fuer MPEG-decoding weg und 24bit OSD braucht auch nochmal einiges(16bit SDRAM).desweiteren funktioniert section-buffer auch nur auf bank 1 richtig. weiterhin sollte sich auf bank 1 auch ABV,VBV,AC-3 befinden.wenn du mal was in TS auf deine HD aufnehmen willst, muss es auch noch einen schnellen record- und play- buffer geben. beim kopieren aus dem VBV wuerde dies zumindest entfallen. wie schaut es eigendlich mit der implementierung und anpassung des intrrupt-system aus ?
ja die haelfte fuer MPEG-decoding weg und 24bit OSD braucht auch nochmal einiges(16bit SDRAM).desweiteren funktioniert section-buffer auch nur auf bank 1 richtig. weiterhin sollte sich auf bank 1 auch ABV,VBV,AC-3 befinden.wenn du mal was in TS auf deine HD aufnehmen willst, muss es auch noch einen schnellen record- und play- buffer geben. beim kopieren aus dem VBV wuerde dies zumindest entfallen. wie schaut es eigendlich mit der implementierung und anpassung des intrrupt-system aus ?
Re: Das U-Boot für Zapmaster
Ist das wirklich so? Ich dachte immer, dass die tsd-Buffer beliebig in Bank 1-4 liegen können. Im Moment habe ich sie in Bank 3 (ab 0x400000 bei 8MB SDRAM), und ich hatte noch keine Probleme. Ich weiss nur, dass Code nur in den Bänken 1+2 stehen darf und man damit nur 4MB hat, so dass ich möglichst alle Datenbereiche aus diesen beiden Bänken raus haben will.tibor hat geschrieben:desweiteren funktioniert section-buffer auch nur auf bank 1 richtig. weiterhin sollte sich auf bank 1 auch ABV,VBV,AC-3 befinden.
Das ist fertig, alle Interrupts laufen in der uClinux-Interrupt-Verwaltung auf und wenn sich ein Treiber darauf registriert hat, wird seine Callback-Funktion aufgerufen. Funktioniert im Moment für Timer, UART, GPIO (IDE), TSD/BM und DISP0. Allerdings musste ich vom originalen uClinux-Code den Software-Interrupt, der für System-Calls auf 8 (DISP0) gelegt war, nach 23 abändern. Dann durfte ich auch die uClibC noch mal neuen bauentibor hat geschrieben:wie schaut es eigendlich mit der implementierung und anpassung des intrrupt-system aus ?
Re: Das U-Boot für Zapmaster
@GDR, is so. netzwerk ueber PCMCIA ? wuerde sicher gehen. poll auf SensGPIO dann VCC und VPP enable und reset. UPI fuer attribut_mem konfigurieren CIS-lesen und dann muss linux doch alles koennen