Sourcecode Fortschritt
-
Rev. 150
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=150neues makefile: geht (nur) ohne msys
MSYS unbedingt aus dem PATH nehmen!
-
Rev. 151:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=151- kernel_pd in task.c verwendet (bisher war dort NULL verwendet worden für das kernel PD)
-
Rev. 152:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=152- TTT 0.41: Macht Gebrauch von der Compileroption -Wshadow, entsprechende Änderungen am Code
-
Erhard Henkes schrieb:
- kernel_pd in task.c verwendet (bisher war dort NULL verwendet worden für das kernel PD)
War aber kein Bug, sondern ein Feature.. Ne im Ernst, wollte das Kernel-PD private lassen. Ist aber irgendwie doch doof, ich ändere es die Tage mal, macht auch den Code ein bissl kürzer.
-
Rev. 153:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=153Dank des Hinweises von +gjm+ wurde endlich das Sun VB / MS VPC Problem gefunden.
Ich habe Datum/Zeit auskommentiert, bis die Funktion in Ordnung gebracht ist.InitEHCI habe ich ebenfalls auskommentiert, da ich dies für meine Tests benötige.
Wenn jemand da mithelfen will, in pci.c aktivieren.
-
Rev. 154:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=154- makefile aufgeräumt
- user_tools ausgelagert nach user/user_tools und makefiles darauf angepasst
Anmerkung (ehenkes): Super! Nun muss man nicht nach jeder Änderung die userlib.h/c kopieren. Arbeitserleichterung und eine Fehlerquelle weniger.
-
Rev. 155:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=155- Fehler in time.c in Fkt. getCurrentDateAndTime behoben.
Damit ist ein wichtiger Fehler (buffer overflow) verschwunden, der von Sun VB und MS VPC sensibel detektiert wurde.
Dank an +gjm+ für den Fehlerhinweis!
-
Rev. 156:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=156- Fehler in ehci.c behoben
- ehci.c: die 6 Interrupt-Bits in USBINTR auf 0 gesetzt (wenn alle 6 gesetzt sind, kommen keine Tastenanschläge mehr durch)Tests auf realem PC und Sun VB bezüglich USB EHCI: ok
Rev. 157:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=157
Zwischenschritt bei ehci.cRev. 158:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=158
Zwischenschritt bei ehci.cRev. 159:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=159
Zwischenschritt bei ehci.c
-
Rev. 160:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=160EHCI USB- und Port-Status ausgewertet
-
Rev. 161:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=161ehci.c Korrekturen
-
Rev. 162:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=162- Veränderungen ehci.c (hängt allerdings noch bei Einstecken von USB-Devices ??)
- util.c: memsetl (32-Bit-Werte)
-
Rev. 163:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=163ehci.c Zwischenschritt Port enablen (VBox klappt (leider nicht sicher), real PC noch nicht)
-
Rev. 164:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=164timer.c: Hinweis von +gjm+ umgesetzt, damit Sun VirtualBox die richtige Zeit seit Start anzeigt.
-
Rev. 165:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=165ehci.c: PortStatus 1005h (EHCI-owned, PowerOn, Enabled, DeviceOnPort)
-
Rev. 166:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=166ehci.c
Folgendes wurde vor dem HC Init eingebaut:
stoppen - warten - resetbit auf 1 setzen - warten bis resetbit 0 wird - weiter
-
Rev. 167:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=167Port Changes werden nun korrekt behandelt.
(Die Interrupts sind noch lahm gelegt, wir pollen)Bitte heftig USB-Sticks und sonstige USB 2.0 Devices rein/raus.
-
Rev. 168:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=168ehci.c Korrekturen??
-
Rev. 169:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=169ehci.c
Ports: (zusätzlich: wait und set reset bit to 0)
for(uint8_t j=1; j<=numPorts; j++) { pOpRegs->PORTSC[j] = (*((volatile uint32_t*)(opregs + 0x44 + 4*(j-1))) |= (1<<12)); // power on pOpRegs->PORTSC[j] = (*((volatile uint32_t*)(opregs + 0x44 + 4*(j-1))) &= ~(1<<2)); // set bit2 to 0 pOpRegs->PORTSC[j] = (*((volatile uint32_t*)(opregs + 0x44 + 4*(j-1))) |= (1<<8)); // set reset bit to 1 sleepMilliSeconds(50); // wait pOpRegs->PORTSC[j] = (*((volatile uint32_t*)(opregs + 0x44 + 4*(j-1))) &= ~(1<<8)); // set reset bit to 0 }
-
Erhard Henkes schrieb:
for(uint8_t j=1; j<=numPorts; j++) { pOpRegs->PORTSC[j] = (*((volatile uint32_t*)(opregs + 0x44 + 4*(j-1))) |= (1<<12)); // power on pOpRegs->PORTSC[j] = (*((volatile uint32_t*)(opregs + 0x44 + 4*(j-1))) &= ~(1<<2)); // set bit2 to 0 pOpRegs->PORTSC[j] = (*((volatile uint32_t*)(opregs + 0x44 + 4*(j-1))) |= (1<<8)); // set reset bit to 1 sleepMilliSeconds(50); // wait pOpRegs->PORTSC[j] = (*((volatile uint32_t*)(opregs + 0x44 + 4*(j-1))) &= ~(1<<8)); // set reset bit to 0 }
Kleiner Verbesserungsvorschlag um den Code "schöner" zu machen (ungetestet)
for(uint8_t j=1; j<=numPorts; j++) { volatile uint32_t *p = (volatile uint32_t*)(opregs + 0x44 + 4*(j-1)) pOpRegs->PORTSC[j] = (*p |= (1<<12)); // power on pOpRegs->PORTSC[j] = (*p &= ~(1<<2)); // set bit2 to 0 * Schlechter Kommentar. Was macht dieses Bit? * pOpRegs->PORTSC[j] = (*p |= (1<<8)); // set reset bit to 1 sleepMilliSeconds(50); // wait pOpRegs->PORTSC[j] = (*p &= ~(1<<8)); // set reset bit to 0 }
Spart das mehrfache und fehleranfällige Hinschreiben dieses langen Ausdrucks.
Nachtrag: Um 1-Bit Werte lesbarer zu machen, könntest Du folgendes tun und zu den System-Headers hinzufügen...
#define BIT0 (1<<1) #define BIT1 (1<<2) #define BIT2 (1<<3) /* usw */
-
Z schrieb:
Nachtrag: Um 1-Bit Werte lesbarer zu machen, könntest Du folgendes tun und zu den System-Headers hinzufügen...
#define BIT0 (1<<1) #define BIT1 (1<<2) #define BIT2 (1<<3) /* usw */
Bit 0 ist aber (1<<0), wenn ich dich richtig verstehe, und Bit 1 wäre (1<<1) usw..
Erhard Henkes schrieb:
for(uint8_t j=1; j<=numPorts; j++) { pOpRegs->PORTSC[j] = (*((volatile uint32_t*)(opregs + 0x44 + 4*(j-1))) |= (1<<12)); // power on pOpRegs->PORTSC[j] = (*((volatile uint32_t*)(opregs + 0x44 + 4*(j-1))) &= ~(1<<2)); // set bit2 to 0 pOpRegs->PORTSC[j] = (*((volatile uint32_t*)(opregs + 0x44 + 4*(j-1))) |= (1<<8)); // set reset bit to 1 sleepMilliSeconds(50); // wait pOpRegs->PORTSC[j] = (*((volatile uint32_t*)(opregs + 0x44 + 4*(j-1))) &= ~(1<<8)); // set reset bit to 0 }
Sieht übrigens kaputt aus. Ich wage einfach mal zu bezweifeln, dass der erste Rootport nicht genommen werden darf, denn du fängst ja hier mit dem zweiten an, wie es aussieht...