Sourcecode Fortschritt
-
Die neue Revision baut bei mir nicht (letzten Zeilen der log-Datei):
..\user_tools\prettylib.a(userlib.o) : In function
vsnprintf': userlib.c: (.text.vsnprintf+0x0): multiple definition of
vsnprintf'
..\stdlibc\stdlibc.a(stdio.o):stdio.c : (.text.vsnprintf+0x0): first defined here
..\user_tools\prettylib.a(userlib.o): In functionsnprintf': userlib.c: (.text.snprintf+0x0): multiple definition of
snprintf'
..\stdlibc\stdlibc.a(stdio.o):stdio.c: (.text.snprintf+0x0): first defined here
mingw32-make[1]: *** [browser.ELF] Error 1
mingw32-make: *** [other_userprogs] Error 2
-
woran das liegt, kann ich gerade nicht erkennen.
normalerweise gibt es solche fehlermeldungen, wenn man funktionen oder prototypen doppelt schreibt.
was mir aber auffällt: in "userlib.h" fehlt der prototyp für vsnprintf und snprintf.
-
Ich habe wohl vergessen, die Implementation in der userlib zu löschen. Danke für den Hinweis.
-
Version 0.0.4.23 - Revision 1409:
- Compilerfehler behoben - doppelte vsnprintf/snprintf-Implementation gelöscht
-
Version 0.0.4.24:
- Schreibschutz im Paging aktiviert - Kernel-Code gegen Überschreiben geschützt
- Bootloader optimiert: BL2 übernimmt Daten von BL1, anstatt sie selbst noch einmal zu speichern
- Fehlendes Register-Clobbering ergänzt (führte zu Problemen, wenn mit O3 kompiliert wird)
- Größere Objekte auf den Heap gelegt (Verkleinert den Kernel um mehrere KB)
- Zugriff auf uninitialisierte Variable entfernt (cppcheck-Fund)
- Einheitliche NULL-Definition
-
Mr X schrieb:
- Einheitliche NULL-Definition
Anscheinend hat man meine Ratschläge doch nich ein bisschen ernst genommen.
-
Version 0.0.4.25:
- Bessere Trennung von usb und usb-MSD
- Neue Funktion strdup im Kernel - Ersetzt mehrere malloc+strcpy durch effizienteres memcpy
- Const-correctness erhöht
- Lizenztext in stdlibc eingebaut
-
Version: 0.0.4.26 - rev. 1412:
usb.c: Prüfen auf usb-Hub und erste Verhinderung sinnloser Maßnahmen am "Device".bool hub = IsUsbHub(device)
Edit: Fehler wurde in rev. 1413 korrigiert.
-
Version: 0.0.4.27 - rev. 1413:
Wichtige Korrektur: reset von success ergänzt, damit die Idee von rev. 1412 wirklich funktioniert.Weitere erste Informationen zur korrekten Behandlung von Hubs:
http://www.lowlevel.eu/wiki/USB#Enumeration_beim_Hochfahren
http://www.beyondlogic.org/usbnutshell/usb4.shtml#Interrupt
http://en.wikipedia.org/wiki/USB_hub#Protocol
http://www.beyondlogic.org/usbnutshell/usb5.shtml
http://www.usb.org/developers/defined_class
-
Version 0.0.4.28:
- Speicherlecks in GUI und USB beseitigt
- strcpy durch memcpy oder strdup ersetzt, wo möglich
- USB/*HCI-Abstraktion weiter verbessert
- deleteNode in IPC implementiert
- Kleinere Verbesserungen im Netzwerkbereich
-
Version: 0.0.4.29 - rev. 1415:
Der Hub wird nun wie ein anderes usb-Gerät nummeriert.Hubs are also USB devices, and the host enumerates a newly attached hub in the same way as other devices. If the hub has devices attached, the host enumerates these after the hub informs the host of their presence.
Quelle: http://www.lvr.com/usbcenum.htm
Abfragen weiterer am Hub angeschlossener Geräte führen wir momentan noch nicht durch (interrupt Transfer notwendig).
-
Erstlings-Commit
Version 0.0.4.30 - Rev: 1416
- ATA-Treiber aufgeraeumt, LBA48-Unterstuetzung eingebaut (momentan noch deaktiviert, da nicht praktisch getestet), mehrere Sektoren unterstuetzt, LOG-Ausgaben durch
_HDD_DIAGNOSTICS_
explizit de- und aktivierbar - HDDPIODISK in HDDDISK umbenannt; DMA soll spaeter transparent ansprechbar sein
- HDD-Screenshot-Funktion in
ckernel.c
an eingeschalteten HDD-Support geknuepft - Um Benutzung von
HDDDISK
bei abgeschaltetem HDD-Support vorzubeugen Definition vonHDDDISK
an ein definiertes_ENABLE_HDD_
geknuepft (gibt Linker-Error bei versehentlicher Benutzung) - Helper repinsb/w/l und repoutsb/w/l
util.h
hinzugefuegt - Tab in
usb.c
korrigiert
- ATA-Treiber aufgeraeumt, LBA48-Unterstuetzung eingebaut (momentan noch deaktiviert, da nicht praktisch getestet), mehrere Sektoren unterstuetzt, LOG-Ausgaben durch
-
Version 0.0.4.31 - Rev: 1417
Änderungen in usb.c bez. Hub.
Vgl. usb2 spec, Table 11-14. Hub Responses to Standard Device Requests
-
Version 0.0.4.32 - Rev: 1418
usb_hub.h/c ergänzt und erste Versuche bez. HubDescriptor in usb.c
-
Version 0.0.4.33:
- UHCI: Reagiere auf Geräte, die beim Boot schon angeschlossen sind
- Floppy: flpydsk_checkInt vor Calibrate ausgeführt (behebt Timeout auf echter Hardware - Beschleunigung)
- USB: Fehlerbehebung wieder eingefügt (wurde gelöscht)
- Linux-bochsrc aktualisiert
-
Mit qemu und folgenden usb-Kommandos
-usb -device piix4-usb-uhci -device usb-hub,bus=usb-bus.0,port=1
kann man die Detektion und Abfrage des Hub-Descriptors emulieren. Leider beherrscht qemu diesbezüglich nur Hubs mit USB 1.1, aber für die Entwicklung von Descriptoren und Abfragen ist das hilfreich. Bei Hardware gibt es noch Zeitprobleme.
-
Version 0.0.4.34 - Rev: 1420
Ergebnisse aus einem kurzen Code Review. usb_hub.h/c und usb.c ergänzt. Der Zeiger auf den HubDescriptor wird via device->data gespeichert, analog dem MSD-Modul.
-
Version 0.0.4.35:
- Speicherverwaltungsproblem bei usb_hub gelöst (JonasOSDever)
- Struktur von usb.c, insbesondere usb_setupDevice verbessert
- Compilerfehler bei aktivierten USB-Diagnoseflags behoben
-
Version 0.0.4.36 - Rev: 1422
Nun funktioniert das Abfragen des Hub Descriptors auch auf Hardware mit EHCI und Highspeed Hub (hi/lo Val war verdreht!).
-
Version 0.0.4.37 - Rev: 1423
usb-HubDescriptor von 7 auf 9 byte erweitert und Abfrage angepasst.
SetConfig vor Abfrage des usb-HubDescriptors.Tests (alles Hardware) mit Hispeed usb slots (EHCI) und drei usb2 Hubs liefen erfolgreich!
Einstieg geschafft.