Sourcecode Fortschritt
-
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...
-
Rev. 170:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=170- video.c/os.h und userlib.c/.h: puts nimmt nun const char* statt char* (puts sollte den String nicht verändern und const char* ist besser für C++-Userprogs)
- user/user_test_cpp: Skeleton für C++-Userprogs
- user/user_tools/userlib.hpp: userlib-Header für C++
mfg
Mr. X
-
Rev. 171:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=171- Diverse Änderungen bezüglich const char* statt char*
- u.a. Anpassung der "Deklaration" der Syscalls (nicht sicher, ob richtig (compiliert aber); Wurde jedenfalls in 170 vergessen)
Diese Revision nimmt keine Änderungen am OS vor, es handelt sich eher um "Schönheitskorrekturen"
mfg
Mr. X
-
Rev. 172:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=172ehci.h/.c: Konstanten (define) eingebaut, Port-Nummerierung korrigiert
-
XanClic schrieb:
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..
Oh Ja, Du hast natürlich recht.
-
Rev. 173:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=173- ehci.c Zwischenschritt (INT-Handler implementiert, Problem: INT aktivieren: Absturz)
-
Rev. 174:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=174- ehci.c Zwischenschritt (Code vereinfacht: Strukturen direkt aufgesetzt. Thx to Tobiking)
Real PC geht
Falls sich dies bewährt, wird der überflüssige Code entfernt.
-
Rev. 175
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=175- Kernel verkleinert (weniger Files in initrd.dat: nur noch "info.txt")
- ehci.c bereinigt
- makefile bei initrd angepasstkernel.bin: 50.624 Bytes
siehe: http://www.c-plusplus.net/forum/viewtopic-var-t-is-260731-and-start-is-68.html (thx to +gjm+)
-
Rev. 176
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=176PortStatus wird bei Änderungen in Zeile 46-48 "Info-Bereich" ausgegeben.
Test auf Real PC i.O., VBox hängt bei mir.
-
Rev. 177
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=177Wie 176, nur notdürftig via Polling (in kernel-schleife den handler aufrufen)
PortStatus wird bei Änderungen in Zeile 46-48 "Info-Bereich" ausgegeben.
Test auf Real PC i.O., VBox läuft.
-
Rev. 178
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=178- math.c: power "überarbeitet"
- keyboard.c: Einsatz von memset
- nasmw.exe/nasm.exe: nasm statt nasmw, zugleich auf 2.08rc10 aktualisiert
- makefiles auf nasm.exe angepasst
- userlib.hpp: Einrückungen korrigiert
http://www.henkessoft.de/OS_Dev/Bilder/rev178.PNG <--- mit Sun VBox (funktioniert aber einfach nicht zuverlässig, geht immer wieder verloren an den Host)
-
Rev. 179
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=179ehci.c: wieder zurück gebaut auf Interrupt-Technik, also kein Poliing mehr in der Kernel-Loop!
Dank VMWare.
-
Rev. 180
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=180ehci.c: DeactivateLegacySupport eingebaut