| Autor |
Nachricht |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
22:52:17 22.11.2009 Titel: |
Sourcecode Fortschritt |
Zitieren |
Ich würde diesen Thread gerne nutzen, um die Fortschritte festzuhalten.
Prä-Geschehenes:
Badestrand hat das Paging-Modul und Heap überarbeitet (*klick*)
Erhard hat Uhrzeit und Datum (von Cuervo und Erhard) eingebaut (*klick*) |
Zuletzt bearbeitet von Erhard Henkes am 14:15:03 28.11.2009, insgesamt 1-mal bearbeitet |
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
22:56:31 22.11.2009 Titel: |
|
Zitieren |
Version 26: Hauptsächlich ELF-Loader, sonst einige kleine Sachen:
- Simpler (!) ELF-Loader setzt bei User-Programm Einstiegsadresse bei 0x01400000 (20 MB) voraus, lädt den Source dahin und erstellt den Task.
- Die Build.bat-Datei angepasst, dass sie auch den stage1- und stage2- bootloader miterstellt.
- Interrupt-Krams zusammengefasst, bitte um Rückmeldung. Ich wollte es vor allem übersichtlicher machen, sind auch zwei Dateien rausgeflogen.
- Key-Queue aus der ODA-Struktur nach keyboard.c verlegt
- Ausgabe der Memory Map in paging.c, wenn der Diagnose-Schalter an ist
- Zur Memory Map wird nicht mehr die Anzahl der Einträge gespeichert, die Liste endet mit einem Eintrag der Größe 0. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:27:29 23.11.2009 Titel: |
|
Zitieren |
Version 27: Kleine Korrektur in flpydsk.c
with real floppy: qemu runs 'fdir' correctly, bochs runs fdir now until return values (rev 17 works, but I do not know why), problems on real hardware still ongoing
Version 28:
changes in cmos.c for weekday (there have been problems at some hardware)
switch_context (syscall) uses 0x7E as interrupt no.
task switch now works with 0x20 or 0x7E |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:14:53 23.11.2009, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:30:06 24.11.2009 Titel: |
|
Zitieren |
Version 29:
Floppy disk driver a little bit improved (qemu, virtualBox runs smoothly)
But still problems with bochs, virtualPC and real hardware.
On real hardware there are time critical steps (now transfer repeated until size=2 (512K sectors size) is returned), and there is a read-sector stop at track limit ( stops at C H S 0 1 18 (LBA 35), does not go to 1 0 2 (LBA 37) ).
Version 30:
Little bug fixes
rotating asterisk got green color |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:48:46 24.11.2009, insgesamt 2-mal bearbeitet |
|
 |
SchnippeSchnapp
Mitglied
Benutzerprofil
Anmeldungsdatum: 07.10.2009
Beiträge: 23
|
SchnippeSchnapp Mitglied
19:30:29 25.11.2009 Titel: |
|
Zitieren |
Verzeih die kurze Frage hier - aber weswegen denn auf einmal Englisch in nem eher deutschen Forum wo doch auch all die anderen Diskussionen auf Deutsch geführt werden?
Is das ned eher Sinnfrei?
(Und wenn die Frage hier ner reinpasst büdde abspalten oder so ) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:07:08 25.11.2009 Titel: |
|
Zitieren |
Sorry, bei mir Gewohnheit. Merke das manchmal garnicht mehr. Hier ist übrigens Englisch und Deutsch akzeptiert.
http://www.c-plusplus.de/forum/viewtopic-var-t-is-252232.html
| Zitat: | Sprachen in diesem Subforum: Deutsch und Englisch
Languages at this sub-forum: German and English | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:32:32 28.11.2009, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:09:02 26.11.2009 Titel: |
|
Zitieren |
Version 31:
Floppy-Treiber etwas optimiert,
Problem in timer.c behoben (war Ursache für das fdir Problem)
Nun läuft fdir auf Bochs, VirtualBox, qemu und 2 von 3 PCs (also noch Verbesserungsbedarf); VirtualPC geht auch noch nicht |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:28:34 27.11.2009, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:28:09 27.11.2009 Titel: |
|
Zitieren |
Version 32:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=32
- getCurrentSeconds() eingebaut: liefert Zeit in Sekunden seit PrettyOS-Start (allerdings ticks-abhängig, funktioniert nicht zwischen cli/sti)
- Statusleiste (status bar) implementiert; Scrolling, Cursor- und Tasksteuerung angepasst
- Floppy-Treiber beim Warten auf Interrupt und auf Read/Write-Transfer um einen Timeout (5 sec) erweitert, damit Kernel hier nicht mehr dauerhaft bei ausbleibendem Interrupt o.ä. hängen bleibt (auf 2 von 3 PCs wird das root directory mit fdir gelesen, ansonsten geht es nach 5 sec weiter im Code mit Fehlermeldung "timeout"). VirtualPC bleibt jetzt auch nicht mehr hängen, funktioniert aber noch nicht richtig bezüglich root dir Ausgabe.
Auf VMWare läuft PrettyOS auch (Aussage Cuervo). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 14:18:33 28.11.2009, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:24:42 28.11.2009 Titel: |
|
Zitieren |
Version 33:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=33
Auf mancher Hardware klappt das Auslesen von Floppy-Inhalten nur jedes zweite Mal (Grund noch nicht klar). Work-around:
- User-Funktion floppy_dir() und Kernel-Funktion flpydsk_read_directory() erhielten einen Rückgabewert. fdir liest nun noch ein zweites Mal, wenn der Rückgabewert keine Inhalte anzeigt.
- DMA-Puffer wird vor dem Auslesen der root dir gelöscht, damit man die echten gelesenen Inhalte und keine alten Daten sieht.
- Timeout wurde von 5 auf 2 Sekunden verkürzt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:28:10 28.11.2009, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
05:26:10 29.11.2009 Titel: |
|
Zitieren |
Version 34:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=34
- time.h/time.c ergänzt, Datum/Zeit aus cmos.h/c in dieses Modul überführt
- Statusleiste: Datum und Zeit, zusätzlich vergangene Sekunden seit dem Start
- aktuelles FloppyImage.bin
- einiges wurde ausgeblendet (Ausdruck nach 'Diagnose' verlagert)
FloppyImage (im Verzeichnis 'kernel') wurde mitgeliefert, damit man die neuesten Features sofort ansehen kann, z.B. mit Qemu (batch-Datei für Windows):
| Code: | | qemu-system-x86_64.exe -usbdevice mouse -fda FloppyImage.bin -boot a -localtime | |
| Code: | | qemu-system-x86_64.exe -usbdevice mouse -fda FloppyImage.bin -boot a -localtime | |
| Code: | | qemu-system-x86_64.exe -usbdevice mouse -fda FloppyImage.bin -boot a -localtime | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 05:53:55 29.11.2009, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:02:36 29.11.2009 Titel: |
|
Zitieren |
Version 35:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=35
- NULL als (void*) 0 redefiniert, wie in C üblich (vorher nur 0)
- NULL in paging.c ausgetauscht gegen 0 (wegen error: cast pointer to integer)
- itoa und reverse von K&R (siehe wikipedia), strcpy von wikipedia
- Rotierender ASCII Stern wurde umgefärbt und nach unten rechts in Statusleiste verschoben
- 2-Klausel-BSD-Lizenz und Disclaimer in os.h und ckernel.c für weitere Diskussionen erstmalig eingefügt, aber ganz unten wie abgesprochen (einmalig!)
Offenes Problem:
In char* getCurrentDateAndTime(char* pStr) muss wie folgt
| C/C++ Code: | | int i; for(i=0;i<80;++i){pStr[i] = 0;} | |
| C/C++ Code: | | int i; for(i=0;i<80;++i){pStr[i] = 0;} | |
| C/C++ Code: | | int i; for(i=0;i<80;++i){pStr[i] = 0;} | |
der als Zeiger übergebene DateAndTime-String gelöscht werden. Ansonsten geht die Ausgabe schief und das OS stürzt wegen buffer overflow ab. Der Fehler liegt nicht in strcpy oder itoa, soweit ich das bisher sehe, also entweder in der Funktion selbst oder in strcat.
Der work-around funktioniert aber gut. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:05:16 29.11.2009, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:41:07 29.11.2009 Titel: |
|
Zitieren |
Version 36:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=36
- Kleiner Bug beim Auslesen von Root Dir behoben (Punkt zwischen Name und Extension wurde immer beim ersten Mal nicht gesetzt, jetzt dann, wenn Eintrag nicht Volume Label ist)
Lob an unseren Chef-Tester Cuervo, dem aufgefallen ist, dass da BOOT2SYS steht anstelle BOOT2.SYS, wenn das Label leer war
Screenshot: http://www.henkessoft.de/OS_Dev/Bilder/PrettyOS_rev36.PNG |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 02:27:21 30.11.2009, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:30:12 29.11.2009 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:31:58 30.11.2009 Titel: |
|
Zitieren |
Version 38:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=38
Heute ist mal wieder Spaß angesagt:
- Modul gags.h/c mit fahrendem Zug (aus wikipedia) <--- unbedingt ansehen!
Dass dieses Modul nichts in einem "bare bone" Kernel zu suchen hat, ist mir selbstverständlich klar! Das war nur ein Test für das Feature Laufband. Ich habe eine einfache Idee - ohne großen API-Aufwand - gesucht für ein Programm, das man von der Floppy Disk laden und im User-Space laufen lassen kann. Das kam dabei heraus.
Screenshot: http://www.henkessoft.de/OS_Dev/Bilder/FahrenderZug.PNG
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include "os.h"
#include "gags.h"
// Zug als Beispiel übernommen aus
// http://de.wikipedia.org/wiki/ASCII-Art#Allgemeine_Beispiele
// TODO: eigene ASCII-Art erzeugen
char* line1 = " _______ _______ <>_<> " ;
char* line2 = " (_______) |_|_|_|_|_|_|| [] [] | .---|'\"`|---. " ;
char* line3 = "`-oo---oo-'`-oo-----oo-'`-o---o-'`o\"O-OO-OO-O\"o' " ;
void showTrain(int8_t val)
{
int i;
char temp1,temp2,temp3;
switch(val)
{
case 1:
temp1 = line1[79];
temp2 = line2[79];
temp3 = line3[79];
for(i=79;i>0;--i)
{
line1[i] = line1[i-1];
line2[i] = line2[i-1];
line3[i] = line3[i-1];
}
line1[0] = temp1;
line2[0] = temp2;
line3[0] = temp3;
k_printf(line1,46,0xE);
k_printf(line2,47,0xE);
k_printf(line3,48,0xE);
break;
default:
break;
}
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include "os.h"
#include "gags.h"
// Zug als Beispiel übernommen aus
// http://de.wikipedia.org/wiki/ASCII-Art#Allgemeine_Beispiele
// TODO: eigene ASCII-Art erzeugen
char* line1 = " _______ _______ <>_<> " ;
char* line2 = " (_______) |_|_|_|_|_|_|| [] [] | .---|'\"`|---. " ;
char* line3 = "`-oo---oo-'`-oo-----oo-'`-o---o-'`o\"O-OO-OO-O\"o' " ;
void showTrain(int8_t val)
{
int i;
char temp1,temp2,temp3;
switch(val)
{
case 1:
temp1 = line1[79];
temp2 = line2[79];
temp3 = line3[79];
for(i=79;i>0;--i)
{
line1[i] = line1[i-1];
line2[i] = line2[i-1];
line3[i] = line3[i-1];
}
line1[0] = temp1;
line2[0] = temp2;
line3[0] = temp3;
k_printf(line1,46,0xE);
k_printf(line2,47,0xE);
k_printf(line3,48,0xE);
break;
default:
break;
}
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include "os.h"
#include "gags.h"
// Zug als Beispiel übernommen aus
// http://de.wikipedia.org/wiki/ASCII-Art#Allgemeine_Beispiele
// TODO: eigene ASCII-Art erzeugen
char* line1 = " _______ _______ <>_<> " ;
char* line2 = " (_______) |_|_|_|_|_|_|| [] [] | .---|'\"`|---. " ;
char* line3 = "`-oo---oo-'`-oo-----oo-'`-o---o-'`o\"O-OO-OO-O\"o' " ;
void showTrain(int8_t val)
{
int i;
char temp1,temp2,temp3;
switch(val)
{
case 1:
temp1 = line1[79];
temp2 = line2[79];
temp3 = line3[79];
for(i=79;i>0;--i)
{
line1[i] = line1[i-1];
line2[i] = line2[i-1];
line3[i] = line3[i-1];
}
line1[0] = temp1;
line2[0] = temp2;
line3[0] = temp3;
k_printf(line1,46,0xE);
k_printf(line2,47,0xE);
k_printf(line3,48,0xE);
break;
default:
break;
}
}
| |
-----------------------------------------------
Version 39:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=39
- Laufband ("fahrender Zug") im Kernel aus Effizienzgründen entfernt (auskommentiert) :xmas1:
| C/C++ Code: | | // showTrain(1); // TODO: transfer to user space as elf exec format; k_printf as syscall | |
| C/C++ Code: | | // showTrain(1); // TODO: transfer to user space as elf exec format; k_printf as syscall | |
| C/C++ Code: | | // showTrain(1); // TODO: transfer to user space as elf exec format; k_printf as syscall | |
-----------------------------------------------
Version 40:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=40
- gags.h/c im Kernel entfernt
- syscalls ergänzt
- showInfo(val) testweise im User-Bereich eingebaut; Laufband-Funktion noch nicht vorhanden (TODO: separate Task)
- makefile korrigiert im User-Bereich |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:31:55 06.12.2009, insgesamt 5-mal bearbeitet |
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
16:54:14 12.12.2009 Titel: |
|
Zitieren |
Der Zug ist mega cool!
Version 41: Unterstriche in den Ordnernamen und das Präfix "k_" in Funktionsnamen entfernt. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:04:01 13.12.2009 Titel: |
|
Zitieren |
Version 42:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=42
- getCurrentSeconds() in userlib.h/c nachgerüstet (program.c wird jetzt kompiliert) <--- Dank an Cuervo für das Auffinden dieses Fehlers
- gags.h/c im Kernel gelöscht (Funktion ist in program.c)
| Zitat: | | Der Zug ist mega cool! | Thanks! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:18:45 13.12.2009, insgesamt 1-mal bearbeitet |
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
17:43:38 13.12.2009 Titel: |
|
Zitieren |
Version 43:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=43
- In start.asm aus user/user_program_c das Ausnullen der BSS entfernt, ist afaik sowieso schon auf 0 und ergab bei mir wegen Integer-Underflow in ecx 'nen fiesen Fehler.
- Noch zwei oder drei Funktionen mit "k_"-Präfix gefunden und korrigiert.
- kernel/gdt.inc gelöscht, da anscheinend ungenutzt (dann auch stage2_bootloader/gdt2.inc wieder in gdt.inc umbenannt)
- mingw32-make.exe, nasmw.exe, CreateFloppyImage.exe, BootDisk2BootStick.exe, dd.exe und bochs.bxrc in Ordner "tools"
- Das Erstellen des Images, Entfernen aller .o-Dateien jetzt in globalem makefile
- Aufrufen von Bochs, Qemu oder das Bauen der Diskette in Batch-File. Die Batch-Datei kann "einfach so" aufgerufen werden, dann kompiliert alles. Wird als Parameter "bochs" übergeben, wird das Image in Bochs ausgeführt. Wird (evtl zusätzlich) "disc" übergeben, wird alles auf die Diskette geschrieben. Für Qemu und anderes können wir auch noch was basteln. Und das ganze noch als Shellskript für die Linuxer schreiben, ist bisher nur als Stub vorhanden.
TODO:
Der Stack der User-Prozesse muss vom Kernel gesetzt werden, jeder braucht auch seinen eigenen Stack. In unserem User-Programm zumindest wird der Stack händisch auf 0x60000 gesetzt. Erhard, du kennst dich in dem Tasking-Modul doch aus, magst du mal probieren, jedem Prozess seinen eigenen Stack zu geben? Irgendwo unter 0xC0000000 oder so..
@Erhard: Wird "quickformat_Floppy_A.bat" noch gebraucht? |
Zuletzt bearbeitet von Badestrand am 17:44:35 13.12.2009, insgesamt 1-mal bearbeitet |
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
17:58:39 13.12.2009 Titel: |
|
Zitieren |
Version 44 & 45: Minimale Änderungen. U.a. die Linux-Version von CreateFloppyImage hinzugefügt. Ging aber nicht so einfach, weil einmal ein Ordner mit demselben Namen existiert hatte, schien SVN zu stören. Egal, es heißt jetzt CreateFloppyImage2. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:52:57 13.12.2009 Titel: |
|
Zitieren |
Version 45 baut so nicht auf:
| Zitat: |
G:\OSDev\PrettyOS\trunk\Source>tools\mingw32-make OS=WINDOWS
nasmw -f bin stage1_bootloader/boot.asm -Istage1_bootloader/ -o stage1_bootloader/boot.bin
nasmw -f bin stage2_bootloader/boot2.asm -Istage2_bootloader/ -o stage1_bootloader/boot2.bin
rm *.o -f
i586-elf-gcc user/user_program_c/*.c -c -Iuser/user_program_c -Werror -Wall -O -ffreestanding -fleading-underscore -nostdlib -nostdinc -fno-builtin
i586-elf-ld *.o -T user/user_program_c/user.ld -Map user/user_program_c/kernel.map -nostdinc -o user/user_program_c/program.elf
c:\crosstools\bin\i586-elf-ld.exe: warning: cannot find entry symbol _start; defaulting to 01400000
rm *.o -f
tools/make_initrd user/init_rd_img/test1.txt file1 user/init_rd_img/test2.txt file2 user/init_rd_img/test3.txt file3 user/user_program_c/program.elf shell
writing file user/init_rd_img/test1.txt->file1 at 0x1304
writing file user/init_rd_img/test2.txt->file2 at 0x1327
writing file user/init_rd_img/test3.txt->file3 at 0x134a
writing file user/user_program_c/program.elf->shell at 0x1910
mv initrd.dat kernel/initrd.dat
rm *.o -f
i586-elf-gcc kernel/*.c -c -Ikernel/include -std=c99 -march=i386 -mtune=i386 -Werror -Wall -O -ffreestanding -fleading-underscore -nostdlib -nostdinc -fno-builtin -fno-stack-protector -Iinclude
nasmw -O32 -f elf kernel/data.asm -Ikernel/ -o data.o
nasmw -O32 -f elf kernel/flush.asm -Ikernel/ -o flush.o
nasmw -O32 -f elf kernel/interrupts.asm -Ikernel/ -o interrupts.o
nasmw -O32 -f elf kernel/kernel.asm -Ikernel/ -o kernel.o
nasmw -O32 -f elf kernel/process.asm -Ikernel/ -o process.o
i586-elf-ld *.o -T kernel/kernel.ld -Map kernel/kernel.map -nostdinc -o kernel/kernel.bin
rm *.o -f
tools/CreateFloppyImage2 PrettyOS FloppyImage.bin stage1_bootloader/boot.bin stage2_bootloader/boot2.bin kernel/kernel.bin
Cannot open the file 'stage2_bootloader/boot2.bin'
mingw32-make: *** [ckernel] Error -1
|
Wenn ich build.bat disc in der Konsole eingebe, wird boot2.sys nicht kopiert.
boot2.bin landet in stage1_bootloader :xmas2:
---------------------------------------------------------
Notwendige Korrektur:
makefile, , Zeile 26/27:
| Code: | boot2: $(wildcard $(STAGE2DIR)/*.asm $(STAGE2DIR)/*.inc)
$(NASM) -f bin $(STAGE2DIR)/boot2.asm -I$(STAGE2DIR)/ -o $(STAGE2DIR)/boot2.bin | |
| Code: | boot2: $(wildcard $(STAGE2DIR)/*.asm $(STAGE2DIR)/*.inc)
$(NASM) -f bin $(STAGE2DIR)/boot2.asm -I$(STAGE2DIR)/ -o $(STAGE2DIR)/boot2.bin | |
| Code: | boot2: $(wildcard $(STAGE2DIR)/*.asm $(STAGE2DIR)/*.inc)
$(NASM) -f bin $(STAGE2DIR)/boot2.asm -I$(STAGE2DIR)/ -o $(STAGE2DIR)/boot2.bin | |
boot.asm, Zeile 264:
| Assembler Code: | | ImageName db "BOOT2 BIN' | |
| Assembler Code: | | ImageName db "BOOT2 BIN' | |
| Assembler Code: | | ImageName db "BOOT2 BIN' | |
boot.asm, Zeile 268:
| Assembler Code: | | msgFailure db 0x0D, 0x0A, "BOOT2.BIN MISSING', 0x0D, 0x0A, 0 | |
| Assembler Code: | | msgFailure db 0x0D, 0x0A, "BOOT2.BIN MISSING', 0x0D, 0x0A, 0 | |
| Assembler Code: | | msgFailure db 0x0D, 0x0A, "BOOT2.BIN MISSING', 0x0D, 0x0A, 0 | |
boot2.asm, Zeile 26:
| Assembler Code: | | msgFailure db 0x0D, 0x0A, "Missing KERNEL.BIN', 0x0D, 0x0A, 0x0A, 0 | |
| Assembler Code: | | msgFailure db 0x0D, 0x0A, "Missing KERNEL.BIN', 0x0D, 0x0A, 0x0A, 0 | |
| Assembler Code: | | msgFailure db 0x0D, 0x0A, "Missing KERNEL.BIN', 0x0D, 0x0A, 0x0A, 0 | |
Dann startet aber der Kernel immer noch nicht! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:54:57 13.12.2009, insgesamt 9-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:03:34 13.12.2009 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:45:26 13.12.2009 Titel: |
|
Zitieren |
Version 47:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=47
Nun überall Großschrift in den asm für die Dateinamen (BL1, BL2)
Alles auf BIN gesetzt (nicht mehr SYS)
Fehler im makefile berichtigt: start.asm (user) wurde nicht assembliert
Nun gibt es einen ASSERTION Fehler:
ASSERTION FAILED((const void*)(header->entry) == USERCODE_VADDR) at kernel/elf.c
:153OPERATING SYSTEM HALTED |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:55:23 13.12.2009, insgesamt 1-mal bearbeitet |
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
21:18:42 13.12.2009 Titel: |
|
Zitieren |
Sorry für die Verwirrung! Bin auch gerade online gegangen weil ich die Fehler bemerkt hatte, beim Übertragen auf den INet-Rechner ist wohl was schief gelaufen.
Die meisten Sachen hast du ja erfolgreich behoben, die start.asm aus dem User-Prozess muss noch mitkompiliert werden (ist irgendwie aus dem Makefile rausgeflutscht) und ein assert muss aus elf.c raus:
ASSERT( (const void*)(header->entry) == USERCODE_VADDR );
Das User-Programm startet nämlich nicht bei 0x01400000, sondern 0x200 Bytes später. Warum auch immer. Funktioniert aber trotzdem.
=> Version 48 |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:25:20 13.12.2009 Titel: |
|
Zitieren |
Folgendes geht bei mir lokal:
- ASSERTION in Zeile 153 auskommentiert, damit die shell startet (Grund für diese Maßnahme momentan unklar)
- readelf und batch-Datei in User
- floppy_build.bat für direktes Starten des Build-Prozesses im Explorers
Momentan kann ich nicht committen wegen Konflikt
Super! Badestrand und ich haben das gleiche gemacht. Ich schieb mal meine Luxusklasse-Ausführung für faule Windows-Anwender hinterher:
Version 49
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=49
In bochs bevorzuge ich übrigens | Zitat: | | floppya: 1_44=a:, status=inserted |
Vielleicht sollte man auf Dauer zwei verschiedene versionen anbieten. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:23:55 14.12.2009, insgesamt 7-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:24:19 14.12.2009 Titel: |
|
Zitieren |
Version 50:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=50
Nun ist BOOT2.BIN und KERNEL.BIN im makefile groß geschrieben, damit es auch unter Linux problemlos läuft.
elf.c:
Zeile 129: ASSERT( header->phnum == 1 );
Zeile 152: ASSERT( (const void*)(ph->vaddr) == USERCODE_VADDR );
müssen evtl. unter Linux noch auskommentiert werden.
In Windows klappt das mit dem Cross-Compiler auch mit den ASSERTs. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:09:56 23.12.2009 Titel: |
|
Zitieren |
Version 51: (badestrand)
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=51
- Run the build.bat file with qemufloppy or qemuimage as parameter to start qemu.
Version 52: (Erhard Henkes)
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=52
- Systemfrequenz auf 1000 Hz erhöht
- getCurrentMilliseconds() ergänzt (syscall)
- "Zug" bewegt sich alle 20 Millisekunden flüssig nach vorne
Es war mir ein Bedürfnis den "Zug" (Beispielanwendung für das dreizeilige Laufband) zu :xmas1: Weihnachten :xmas2: betriebsbereit zu haben. Er läuft im User-Bereich (z.Z. noch in der Shell) lässt sich durch den neuen Millisekunden-Timer und die neue System-Frequenz von 1000 Hz ziemlich rasant über den Bildschirm bewegen. Leider ist er noch keine eigene Task. Daher kann man ihn z.B. mit langwierigen Aktionen wie 'fdir' ausstoppen.
Anstelle des Zuges könnte auch Ihre Werbung stehen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 02:39:14 23.12.2009, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:41:35 23.12.2009 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:23:04 24.12.2009 Titel: |
|
Zitieren |
Version 54:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=54
- build.sh für Linux ergänzt
- tools/bochsrc ergänzt
- Zug auf vielfachen Wunsch etwas ausgebremst (40 Zeichen/sec) :xmas1:
Der "Zug" steht nur stellvertretend für das zukünftige Informationsband, in dem Diagnosedaten angegeben werden. Wir wollen ja ein Lehr-OS schaffen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 15:40:28 24.12.2009, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:38:50 25.12.2009 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:50:56 16.01.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:50:22 24.01.2010 Titel: |
|
Zitieren |
Rev. 57:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=57
- fat12.h/.c: Quickformat für die FloppyDisk implementiert ("fformat")
läuft noch nicht fehlerfrei (FAT2 wird nicht analog zu FAT1 geschrieben), funktioniert aber bereits. Kann auch mit FloppyImage.bin getestet werden. Als Hex-Editor empfehle ich für die echte Floppy den Hex-Editor Neo, da dieser direkt Volumes auslesen kann.
Screenshot: http://www.henkessoft.de/OS_Dev/Bilder/Rev57.PNG
Leider fehlte in dieser Version (vielleicht auch schon vorher in 56) die fat12.c! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:57:58 24.01.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:58:51 24.01.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:45:25 24.01.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:55:31 25.01.2010 Titel: |
|
Zitieren |
Rev. 60:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=60
In fat12.c - testweise - noch ein "Preformat" eingefügt, das die ersten 32 Sektoren komplett auf eine Zahl (0xAA) setzt, bevor die eigentliche Fortmatierung startet.
Die Routine muss noch auf das Track-weise Schreiben (18 Sektoren auf einmal) angepasst werden.
EDIT: das fformat ist bisher leider nur qemu-fähig. Auf echten PCs wird bisher nicht formatiert. Fehler wird durch Debuggen (ohne Preformat) gesucht. Die Funktion steigt bereits ganz vorne aus:
| C/C++ Code: | /// write bootsector
retVal = flpydsk_write_boot_sector(&b);
if(retVal != 0)
{
printformat("E_Disk - flpydsk_write_boot_sector");
return E_DISK;
} | |
| C/C++ Code: | /// write bootsector
retVal = flpydsk_write_boot_sector(&b);
if(retVal != 0)
{
printformat("E_Disk - flpydsk_write_boot_sector");
return E_DISK;
} | |
| C/C++ Code: | /// write bootsector
retVal = flpydsk_write_boot_sector(&b);
if(retVal != 0)
{
printformat("E_Disk - flpydsk_write_boot_sector");
return E_DISK;
} | |
Problem liegt hier (um timeout-Routine ergänzt für Fehlersuche):
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | int32_t flpydsk_write_sector_ia( int32_t i, void* a)
{
memcpy((void*)DMA_BUFFER, a , 0x200);
uint32_t timeout = 2; // limit
int32_t retVal = 0;
while( flpydsk_write_sector(i) != 0 )
{
retVal = -1;
timeout--;
printformat("error write_sector. left: %d\n",timeout);
if(timeout<=0)
{
printformat("timeout\n");
break;
}
}
if(retVal==0)
{
printformat("success write_sector.\n");
}
return retVal;
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | int32_t flpydsk_write_sector_ia( int32_t i, void* a)
{
memcpy((void*)DMA_BUFFER, a , 0x200);
uint32_t timeout = 2; // limit
int32_t retVal = 0;
while( flpydsk_write_sector(i) != 0 )
{
retVal = -1;
timeout--;
printformat("error write_sector. left: %d\n",timeout);
if(timeout<=0)
{
printformat("timeout\n");
break;
}
}
if(retVal==0)
{
printformat("success write_sector.\n");
}
return retVal;
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | int32_t flpydsk_write_sector_ia( int32_t i, void* a)
{
memcpy((void*)DMA_BUFFER, a , 0x200);
uint32_t timeout = 2; // limit
int32_t retVal = 0;
while( flpydsk_write_sector(i) != 0 )
{
retVal = -1;
timeout--;
printformat("error write_sector. left: %d\n",timeout);
if(timeout<=0)
{
printformat("timeout\n");
break;
}
}
if(retVal==0)
{
printformat("success write_sector.\n");
}
return retVal;
}
| |
Das Problem mit echter Hardware liegt also in flpydsk_write_sector(i).
qemu läuft anstandslos.
Ich lade diese Version mit Fehlerroutine hoch. Vielleicht findet jemand die Lösung für flpydsk_write_sector(i).
Rev. 61:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=61 |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:11:05 26.01.2010, insgesamt 8-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:04:06 27.01.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:04:27 27.01.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
05:38:48 29.01.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:07:35 30.01.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
04:19:16 31.01.2010 Titel: |
|
Zitieren |
Rev.68:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=68
fformat: Änderung im Algorithmus von "sectorenweisem" Schreiben auf Schreiben von ganzen Tracks. Nun ist das Quickformat (Bootsector, FAT1 u. FAT2, RootDir) viel schneller. Bei manchen Disketten gibt es die Fehlermeldung: No ID address mark
Ursache bisher nicht klar (hat vielleicht etwas mit quickformat zu schaffen).
Frage: was muss man machen, damit die Diskette als brauchbar/lesbar akzeptiert wird (nur wichtig für Lesen mit Hex-Editor via Windows-Laufwerk a: )
Links:
http://technet.microsoft.com/en-us/library/cc776720%28WS.10%29.aspx
http://www.microsofttranslator.com/BV.aspx?ref=CSS ....... =http://support.microsoft.com/kb/130627/en-us?fr=1
| Zitat: | | When you quick format an unformatted floppy disk, correct data structures are placed; however, no media test and verification of cluster usability are performed. |
Was ist der "media test"?
Wie wird die "verification of cluster usability" durchgeführt?
Vor allem: wie wird dies auf der Diskette dargestellt? (dies könnte man ja antäuschen.
Die normale Kennung für Format im Datenbereich seit MSDOS ist 0xF6. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 04:20:25 31.01.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:35:28 31.01.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:09:19 31.01.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:50:23 31.01.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:53:32 02.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:04:56 03.02.2010 Titel: |
|
Zitieren |
Rev. 72:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=72
Erkennung von Filename/extension stabilisiert (bei einigen Versuchen hatte es Probleme gegeben. strncpy ok?)
FAT parsen beschleunigt.
Später soll man z.B. 'kernel.bin' in der shell eingeben. Dann wird zunächst in der shell selbst nach dem Befehl gesucht und falls nicht vorhanden, das File auf der Floppy Disk gesucht und entweder geladen/ausgeführt (z.B. xxx.elf) oder nach dem Finden als nicht ausführbar dargestellt (z.B. bin oder sys oder ...). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 02:07:26 03.02.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
07:56:50 04.02.2010 Titel: |
|
Zitieren |
Rev. 73:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=73
Zwischenschritt: File wird probeweise mittels FirstCluster und zugehöriger FAT-Chain in einem Array file[...] aufgebaut.
Der Algorithmus ist allerdings nicht brauchbar, da der zweite Cluster via FAT-entry[i] gefunden wird (siehe Rev.74). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:35:04 05.02.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:42:30 05.02.2010 Titel: |
|
Zitieren |
Rev. 74:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=74
Zwischenschritt:
Algorithmus zum Auffinden der Cluster-Kette mittels 2nd_Cluster = FAT[1st_Cluster] als Start.
1) File 'program.elf' auf die Diskette kopieren, da dieses File gesucht wird
2) Testet den Algo mittels 'fformat' |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:54:36 05.02.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:52:56 05.02.2010 Titel: |
|
Zitieren |
Rev. 75:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=75
Zwischenschritt:
Suche nach 'kernel.bin' und "Laden" in ein Array file[...].
Noch immer in den fformat-Befehl eingebunden.
Nächster Schritt: Auslagern in eigene Load-Funktion und Start via Eingabe des Filenamens in der Shell. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:56:05 05.02.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:28:07 05.02.2010 Titel: |
|
Zitieren |
Rev. 76:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=76
fdir: file ohne Extension nun auch ohne Punkt
makefile: rm -f .o
fat12.c: algorithmus korrigiert, FAT-Clusterkette wird zu langsam gelesen
Problem: Unterschiedliche Inhalte in File-Array bei real PC (1./2. Cluster identisch eingelesen) und qemu (klappt gut). Lesevorgang? DMA?
Anmerkung:
noch bei 'fformat' testweise untergebracht, bis es richtig läuft, dann separate Load-Funktion mit Start durch die shell. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:30:44 05.02.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:10:33 06.02.2010 Titel: |
|
Zitieren |
Rev. 77:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=77
Meilenstein: (noch eingebettet in 'fformat')
Separate Load-Funktion: flpydsk_load(char* name, char* ext):
In dieser Version gelingt erstmalig das Laden und Ausführen einer Datei (hello.elf, 3 Cluster) von Floppy Disk!
Screenshot:
http://www.henkessoft.de/OS_Dev/Bilder/Load_Process_from_Floppy.PNG
(Anmerkung: Der dritte Cluster besteht nicht nur aus lauter Nullen, sondern enthält genau ab Byte 21 Daten unterschieldich zu 0x00. Es werden allerdings jeweils die ersten 20 Byte eines Clusters zur Kontrolle angezeigt. Der beste Beweis, dass der Vorgang klappt, ist selbstverständlich, wenn ein Programm ordnungsgemäß startet.) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:29:55 06.02.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
03:14:46 06.02.2010 Titel: |
|
Zitieren |
Rev. 78:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=78
Nun kann man den Dateinamen, z.B. "hello.elf" oder einfach "hello", auch "hello." direkt in der Shell eingeben.
Läuft allerdings noch nicht völlig rund - Zeichendarstellung verschoben, ab und zu #PF(beim Ausführen des Programms?) - aber es ist unser Einstieg in die bunte Landschaft der User-Programme, mal abgesehen von der im Kernel mittels "incbin" mitgelieferten Shell.
Zur Zeit kann nur das elf-Format "seziert" werden. Ideen für kleine Programme sind bereits genügend vorhanden.
Die hoffentlich ausgeführte Datei befindet sich übrigens hier:
...\PrettyOS\trunk\Source\user\user_test_c\
Sourcecode:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | 1 2 3 4 5 6 7 8 9 10 | #include "userlib.h"
int main()
{
settextcolor(12,0);
puts("Hello, Pretty Operating System World!\n");
puts("This piece of software was loaded by PrettyOS from your floppy disk.\n");
settextcolor(15,0);
return 0;
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | #include "userlib.h"
int main()
{
settextcolor(12,0);
puts("Hello, Pretty Operating System World!\n");
puts("This piece of software was loaded by PrettyOS from your floppy disk.\n");
settextcolor(15,0);
return 0;
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | #include "userlib.h"
int main()
{
settextcolor(12,0);
puts("Hello, Pretty Operating System World!\n");
puts("This piece of software was loaded by PrettyOS from your floppy disk.\n");
settextcolor(15,0);
return 0;
}
| |
Nun können wir entsprechende User-Programmideen umsetzen (makefile und Umgebung muss noch entsprechend erweitert werden. Ich habe das Programm hello.elf einfach durch Substitution von program.c und anschließendem Rücktausch erzeugt, denn wir müssen ja start.asm und das passende Linkerskript beim Compilieren/Linken verwenden.). Damit lenkt sich der Blick auch auf die vorhandene und noch zu erweiternde API (syscalls) und die magere/fehlende C-Bibliothek im User-Bereich.
Vielleicht findet jemand die Gründe, warum es manchmal zu #PF kommt und warum echte Hardware in einigen Fällen (auf meinem Entwicklungsrechner von ca. 2004 funktioniert es) noch Lese-Probleme macht, während es dagegen mit qemu problemlos funktioniert.
Am besten mit qemu probieren (FloppyImage.bin wird ja mitgeliefert bzw. beim Compilieren erzeugt), da es auf echter Hardware noch eindeutig zu wenig performant abläuft (im 5-10 Minuten-Bereich). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:48:41 06.02.2010, insgesamt 9-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:28:28 06.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:28:34 06.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:01:28 07.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:29:16 07.02.2010 Titel: |
|
Zitieren |
Rev. 82:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=82
timer.c: Systemfrequenz reduziert von 1000 Hz (wie bei Linux) auf 100 Hz (wie früher; führt wieder zu geordneter Bildschirm-Darstellung)
fat.c: log_task_list() vor und nach dem auszuführenden Programm dargestellt, damit die Tasks demonstriert werden
Screenshot:
http://www.henkessoft.de/OS_Dev/Bilder/Rev82.PNG
Rev. 83:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=83
Zwischenversion nur für Fehlersuche (Probleme in neuestem Sun Virtual Box und einigen qemu-Versionen)
Rev. 84:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=84
Zusätzlich Erstellungswerkzeuge für HELLO.ELF im Unterordner für eigene Experimente. TODO: alles abändern auf übergeordnet Ordner (nasm, make, userlib, ...). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 03:25:50 08.02.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
03:25:32 08.02.2010 Titel: |
|
Zitieren |
Rev. 85:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=85
Veränderungen in program.c
Läuft bei mir absturzfrei mit qemu, Sun Virtual Box, MS Virtual PC (dort allerdings Leseprobleme von Floppy)
Bitte prüfen!
Die roten Punkte stellen die Durchläufe durch die innere Schleife der shell dar.
Hier kann man das abstellen:
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 1 2 3 4 5 6 7 8 | while(true)
{
///TEST
settextcolor(4,0);
puts(".");
settextcolor(15,0);
///TEST
...
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | while(true)
{
///TEST
settextcolor(4,0);
puts(".");
settextcolor(15,0);
///TEST
...
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | while(true)
{
///TEST
settextcolor(4,0);
puts(".");
settextcolor(15,0);
///TEST
...
| |
TODO: Gibt man "kernel.bin" ein, so wird nur ".bin" gesucht (geht nur mit "kernel .bin")
Die Systemfrequenz wurde wieder auf 1000 Hz eingestellt, da dies anfänglich Vorteile mit Sun VB brachte. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 03:33:27 08.02.2010, insgesamt 3-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
08:40:24 08.02.2010 Titel: |
Rev. 85 |
Zitieren |
Revision 85 geht bei mir nur auf einem einzigen Computer fehlerfrei, und zwar PC 2.
PC 1 gibt einen GPF in der PCI-Liste aus und PC 3 startet neu (das ist der, der früher IMMER ging aber kaputt war und ich gestern wieder zusammengebaut habe).
In qemu läuft es, in VirtualBox auch, MS VPC hab ich nicht. In VitualBox läuft es allerdings SEHR langsam... da kann man die roten Punkte mitzählen^^ |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:55:05 08.02.2010 Titel: |
|
Zitieren |
Rev. 86:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=86
- getch() in user.c umgebaut, so dass auf eine Eingabe gewartet wird.
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | 1 2 3 4 5 6 7 8 9 10 | unsigned char getch()
{
unsigned char ret;
do
{
__asm__ volatile( "int $0x7F" : "=a"(ret): "a"(6) );
}
while(ret==0);
return ret;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | unsigned char getch()
{
unsigned char ret;
do
{
__asm__ volatile( "int $0x7F" : "=a"(ret): "a"(6) );
}
while(ret==0);
return ret;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | unsigned char getch()
{
unsigned char ret;
do
{
__asm__ volatile( "int $0x7F" : "=a"(ret): "a"(6) );
}
while(ret==0);
return ret;
} | |
- DEBUG-Ausgaben entfernt (motor on/off; rote Punkte)
@Cuervo: bei meinen PCs läuft es |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:57:12 08.02.2010, insgesamt 1-mal bearbeitet |
|
 |
anubis2k5
Mitglied
Benutzerprofil
Anmeldungsdatum: 14.09.2009
Beiträge: 26
|
anubis2k5 Mitglied
21:19:08 08.02.2010 Titel: |
|
Zitieren |
Revision 86: bei Eingabe von HELLO.ELF wird -->.ELF<-- nicht gefunden.
Bei Eingabe von "hello" hingegen funktioniert es - gewollt?!
Nachtrag: Besteht die Möglichkeit einen extra Threat zum Testen der Revisionen zu öffnen? Ich glaube hier wird's langsam voll...
Nachtrag 2: Nachdem ich alle *.bin;*.map;*.elf - Dateien gelöscht habe, um ein "sauberes" System zu bekommen, musste ich feststellen, dass die Datei "HELLO.ELF" nicht gefunden wird. Wirklich aussagekräftige Fehlermeldung erhalte ich nicht. Habt ihr eine Idee?
| Code: | tools/CreateFloppyImage2 PrettyOS FloppyImage.bin stage1_bootloader/boot.bin sta
ge2_bootloader/BOOT2.BIN kernel/KERNEL.BIN user/user_test_c/HELLO.ELF
Cannot open the file 'user/user_test_c/HELLO.ELF'
mingw32-make: *** [ckernel] Error -1 | |
| Code: | tools/CreateFloppyImage2 PrettyOS FloppyImage.bin stage1_bootloader/boot.bin sta
ge2_bootloader/BOOT2.BIN kernel/KERNEL.BIN user/user_test_c/HELLO.ELF
Cannot open the file 'user/user_test_c/HELLO.ELF'
mingw32-make: *** [ckernel] Error -1 | |
| Code: | tools/CreateFloppyImage2 PrettyOS FloppyImage.bin stage1_bootloader/boot.bin sta
ge2_bootloader/BOOT2.BIN kernel/KERNEL.BIN user/user_test_c/HELLO.ELF
Cannot open the file 'user/user_test_c/HELLO.ELF'
mingw32-make: *** [ckernel] Error -1 | |
|
Zuletzt bearbeitet von anubis2k5 am 21:29:42 08.02.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:30:41 08.02.2010 Titel: |
|
Zitieren |
Im Unterverzeichnis ...\PrettyOS\trunk\Source\user\user_test_c build.bat ausführen.
==> HELLO.ELF |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:31:19 08.02.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:17:55 09.02.2010 Titel: |
|
Zitieren |
Rev. 87:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=87
Zwischenschritt (leider noch Fehler enthalten) mit Bitte um Fehlersuche.
task.c: exit als syscall eingebaut (beendet Prozess)
user.c: gets eingefügt
User-Programm mit gets (altes Programm in "zzz_alternative_User-Programme", falls die Fehler nerven, das sollte wiederholbarer laufen)
Systemfrequenz: 100 Hz
Diese Version sollten wir nun erstmal stabilisieren, da ich an mehreren Stellen kleine Ungenauigkeiten vermute, die nun zuschlagen.
Bei MT kann es auch zu races kommen, sodass wir noch einiges gegeneinander abschotten müssen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:41:56 09.02.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:22:43 11.02.2010 Titel: |
|
Zitieren |
Rev 88:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=88
Zwischenschritt mit Bitte um Fehlersuche / Ideen.
Diagnose aktiviert (PID der tasks werden angezeigt)
Absturz bei Überschreiten von exit (wird durch test-Funktion angezeigt) in start.asm verhindert durch jmp $
User-Programm mit gets <--- richtig schlimm, lange namen eingeben
Systemfrequenz: 10 Hz
Was muss durch cli/sti abgeschottet werden?
Wo sind kritische Abschnitte notwendig? |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:07:17 11.02.2010 Titel: |
|
Zitieren |
Rev. 89:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=89
Fehler gefunden! Wie erwartet im Multitasking.
Während der Ausführung von gets wurde der task gewechselt. Damit fing die shell Zeicheneingaben und vor allem das ENTER (Line Feed: 10) des User-Programms ab, das dann auf das Ende des Strings wartete.
Abhilfe: Das Taskswitching wurde während gets(...) deaktiviert (wohl keine dauerhafte Lösung). Hierzu wurde ein syscall settaskflag geschaffen.
siehe: task.c, syscall.c, userlib.c
Wenn man das nachvollziehen will:
Diagnose in os.h aktivieren, dann sieht man die PID der Tasks. Einfach in gets das taskswitching zulassen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:31:02 11.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:45:58 11.02.2010 Titel: |
|
Zitieren |
Rev. 91
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=90
userlib.h/c: itoa, atoi
Beispielprogramm hello.elf mit Collatz-Folge (3n+1)
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include "userlib.h"
int main()
{
char s[1000];
unsigned long start; // Beginn der Berechnung bei 'start'
unsigned long end; // Ende der Berechnung bei 'end'
unsigned long zahl; // Element der Folge
unsigned long i,j; // Zählvariable für die Folgenlänge
settextcolor(11,0);
puts("--------------------------------------------------------------------\n");
puts("Bitte geben Sie ihren Namen ein:\n");
gets(s);
puts("This piece of software was loaded by PrettyOS from the floppy disk of ");
puts(s);
putch('\n');
puts("--------------------------------------------------------------------\n");
puts("--- Collatz-Folge 3n+1 ---\n");
puts("--------------------------------------------------------------------\n");
/**************************** Eingabebereich ****************************/
puts("Erste Zahl: ");
gets(s);
start = atoi(s);
puts("Letzte Zahl: ");
gets(s);
end = atoi(s);
/**************************** Eingabebereich ****************************/
for(j=start; j<end+1; j++)
{
zahl=j;
i=1;
putch('\n');
itoa(j,s); // begin value
puts(s);
putch(' ');
while(zahl != 1) // test on cycle 4-2-1
{
if( zahl % 2 == 0 ) zahl /= 2 ; // Collatz
else zahl = 3 * zahl + 1 ; // Collatz
itoa(zahl,s);
puts(s); // element of the series
putch(' ');
i++ ;
}
if(zahl == 1)
{
puts("\tH(n): ");
itoa(i,s);
puts(s); // H(n) length of the series
putch('\n');
}
}
settextcolor(15,0);
return 0;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include "userlib.h"
int main()
{
char s[1000];
unsigned long start; // Beginn der Berechnung bei 'start'
unsigned long end; // Ende der Berechnung bei 'end'
unsigned long zahl; // Element der Folge
unsigned long i,j; // Zählvariable für die Folgenlänge
settextcolor(11,0);
puts("--------------------------------------------------------------------\n");
puts("Bitte geben Sie ihren Namen ein:\n");
gets(s);
puts("This piece of software was loaded by PrettyOS from the floppy disk of ");
puts(s);
putch('\n');
puts("--------------------------------------------------------------------\n");
puts("--- Collatz-Folge 3n+1 ---\n");
puts("--------------------------------------------------------------------\n");
/**************************** Eingabebereich ****************************/
puts("Erste Zahl: ");
gets(s);
start = atoi(s);
puts("Letzte Zahl: ");
gets(s);
end = atoi(s);
/**************************** Eingabebereich ****************************/
for(j=start; j<end+1; j++)
{
zahl=j;
i=1;
putch('\n');
itoa(j,s); // begin value
puts(s);
putch(' ');
while(zahl != 1) // test on cycle 4-2-1
{
if( zahl % 2 == 0 ) zahl /= 2 ; // Collatz
else zahl = 3 * zahl + 1 ; // Collatz
itoa(zahl,s);
puts(s); // element of the series
putch(' ');
i++ ;
}
if(zahl == 1)
{
puts("\tH(n): ");
itoa(i,s);
puts(s); // H(n) length of the series
putch('\n');
}
}
settextcolor(15,0);
return 0;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include "userlib.h"
int main()
{
char s[1000];
unsigned long start; // Beginn der Berechnung bei 'start'
unsigned long end; // Ende der Berechnung bei 'end'
unsigned long zahl; // Element der Folge
unsigned long i,j; // Zählvariable für die Folgenlänge
settextcolor(11,0);
puts("--------------------------------------------------------------------\n");
puts("Bitte geben Sie ihren Namen ein:\n");
gets(s);
puts("This piece of software was loaded by PrettyOS from the floppy disk of ");
puts(s);
putch('\n');
puts("--------------------------------------------------------------------\n");
puts("--- Collatz-Folge 3n+1 ---\n");
puts("--------------------------------------------------------------------\n");
/**************************** Eingabebereich ****************************/
puts("Erste Zahl: ");
gets(s);
start = atoi(s);
puts("Letzte Zahl: ");
gets(s);
end = atoi(s);
/**************************** Eingabebereich ****************************/
for(j=start; j<end+1; j++)
{
zahl=j;
i=1;
putch('\n');
itoa(j,s); // begin value
puts(s);
putch(' ');
while(zahl != 1) // test on cycle 4-2-1
{
if( zahl % 2 == 0 ) zahl /= 2 ; // Collatz
else zahl = 3 * zahl + 1 ; // Collatz
itoa(zahl,s);
puts(s); // element of the series
putch(' ');
i++ ;
}
if(zahl == 1)
{
puts("\tH(n): ");
itoa(i,s);
puts(s); // H(n) length of the series
putch('\n');
}
}
settextcolor(15,0);
return 0;
} | |
Jede Start-Zahl endet in der Folge auf 4-2-1. Das ist die Behauptung.
siehe:
http://www.ericr.nl/wondrous/index.html
http://www.henkessoft.de/C++/C++/cpp_konsole.htm (Kap. 1.5)
Ein kleiner Meilenstein. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:59:35 11.02.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:44:22 12.02.2010 Titel: |
|
Zitieren |
Rev. 92:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=92
fat.h/c: FAT-Lesen/nach 12-Bit transferieren signifikant beschleunigt
(FATMAXINDEX testweise auf 300 eingestellt; das muss noch umgestellt werden)
Cuervo stellt Probleme beim Lesen von echter Floppy fest.
Bei mir klappt es auf einem PC mit der FAT, dann allerdings #PF, d.h. die gelesenen/errechneten FAT-Einträge stimmen nicht;
auf dem anderen stimmen die FAT-Einträge nicht (alles 0).
Da das bisher geklappt hat, liegt das an der Code-Änderung in fat12.c (Beschleunigung durch trackweises Lesen in ein Array).
Also leider noch nicht in Ordnung bei realer Hardware
==> Debuggen auf echter Hardware |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:31:47 12.02.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:55:21 12.02.2010 Titel: |
|
Zitieren |
Rev. 93:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=93
Fehler bei der Analyse der Eingabe von Filenamen in der shell behoben (Eingabe von hello.elf usw. funktioniert nun).
Dank an XanClic für den Hinweis auf die Lösung.
Bis zur Lösung der Probleme mit echter Hardware bitte auf Simulationen testen (MS Virtual PC liest nicht, aber Bochs, Qemu, Sun Virtual Box funktionieren gut). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 08:39:46 13.02.2010, insgesamt 5-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:18:19 13.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:20:22 13.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:13:08 13.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:54:08 13.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:03:43 13.02.2010 Titel: |
|
Zitieren |
Rev. 98:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=98
- Testversion for correctness of int32_t flpydsk_read_sector_ia( int32_t i, void* a) at real hardware
Currently, only each second time the read procedure to the DMA Buffer really overwrites the contents (manipulated from us to AAAA...) there.
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | int32_t flpydsk_read_sector_ia( int32_t i, void* a)
{
/// TEST: change DMA before write/read
printformat("DMA manipulation\n");
memset((void*)DMA_BUFFER, 0x41, 0x200); // 0x41 is in ASCII the 'A'
/// TEST: motor on/off
flpydsk_control_motor(true);
int32_t n, retVal;
for(n=0;n<2;n++) // two times should be enough to overwrite the AAAA...
{
retVal = flpydsk_read_sector(i,0);
if(retVal!=0)
{
printformat("\nread error: %d\n",retVal);
}
}
memcpy( a, (void*)DMA_BUFFER, 0x200);
return retVal;
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | int32_t flpydsk_read_sector_ia( int32_t i, void* a)
{
/// TEST: change DMA before write/read
printformat("DMA manipulation\n");
memset((void*)DMA_BUFFER, 0x41, 0x200); // 0x41 is in ASCII the 'A'
/// TEST: motor on/off
flpydsk_control_motor(true);
int32_t n, retVal;
for(n=0;n<2;n++) // two times should be enough to overwrite the AAAA...
{
retVal = flpydsk_read_sector(i,0);
if(retVal!=0)
{
printformat("\nread error: %d\n",retVal);
}
}
memcpy( a, (void*)DMA_BUFFER, 0x200);
return retVal;
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | int32_t flpydsk_read_sector_ia( int32_t i, void* a)
{
/// TEST: change DMA before write/read
printformat("DMA manipulation\n");
memset((void*)DMA_BUFFER, 0x41, 0x200); // 0x41 is in ASCII the 'A'
/// TEST: motor on/off
flpydsk_control_motor(true);
int32_t n, retVal;
for(n=0;n<2;n++) // two times should be enough to overwrite the AAAA...
{
retVal = flpydsk_read_sector(i,0);
if(retVal!=0)
{
printformat("\nread error: %d\n",retVal);
}
}
memcpy( a, (void*)DMA_BUFFER, 0x200);
return retVal;
}
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:35:40 13.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:20:11 14.02.2010 Titel: |
|
Zitieren |
Rev. 100:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=100
Es wurde versuchsweise ein User-TaskCounter (exit in task.c, load in fat12.c, syscall.c) eingeführt, um die shell steuern zu können. Die Shell geht nur dann in die Eingabeschleife ($>), wenn keine User-Tasks laufen.
Die Userlib wurde mit weiteren Funktionen (bereits im Kernel vorhanden) bestückt.
TODO: das Durchsuchen der rootdir muss beschleunigt werden (z.Z. sehr lahm wegen motor on und Diagnose) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:20:50 14.02.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:35:30 14.02.2010 Titel: |
|
Zitieren |
Rev. 101:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=101
Floppy-Motor-Steuerung verbessert (siehe flag in ODA, os.h)
Sun VB "unterbricht" nach ca. 20 mal Task 2 (shell); real PCs und qemu laufen.
Fragen:
warum bricht Sun VB ab?
warum läuft Floppy ---> DMA nicht zuverlässig (teilweise zwischen 1 bis 16 fails, gerade bei höheren Sektoren)?
Zur Zeit kann nur ein zusätzlicher Task durch Eingabe in die Shell gestartet werden, weil diese solange wartet, bis dieser wieder beendet ist (Task-Zähler). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:22:14 14.02.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:24:53 14.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:09:54 15.02.2010 Titel: |
|
Zitieren |
Rev 103:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=103
fat12.c: kleine Veränderungen
video.c: printformat um %y erweitert (gibt hexadezimal nur 2 Stellen aus, ideal für die Byte-orientierte Ausgabe von Dateiinhalten )
Diese Version läuft mit Sun Virtual Box 3.1.2, Qemu, Bochs 2.4.2 und auf realer Hardware, prinzipiell auch mit MS Virtual PC, dort jedoch mit unüberwindlichem read error (liegt angeblich an DMA autoinit). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 02:35:50 15.02.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:51:38 15.02.2010 Titel: |
|
Zitieren |
Rev 104:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=104
fat12.c: Vereinfachungen (sector/track) durch Zusammenlegen von Funktionen
irq.c: Ausgabe der Fehlermeldungen (#PF, #GPF) in hellrot
Diese Version läuft mit:
Sun Virtual Box 3.1.2,
Qemu 0.11.50,
Bochs 2.4.2,
realem PC mit Floppy Disk.
MS VPC macht noch Probleme (läuft nicht mit autoinit von DMA). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:40:40 15.02.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:13:25 15.02.2010 Titel: |
|
Zitieren |
Rev 105: Durchbruch bei Floppy/DMA
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=105
Einige wesentlich Verbesserungen im Bereich Floppy/DMA/FAT12:
DMA nun ohne autoinit bit (wird von osdev.org für floppy mit autoinit empfohlen!), dafür jeweils ein erneutes DMA-Init vor dem Lesen von Floppy:
Funktioniert nun endlich sicher (Hardware unterstützt autoinit offensichtlich nicht ausreichend) und erlaubt nun auch den Einsatz von MS Virtual PC (bug: simuliert autoinit nicht).
Beim Schreiben ist autoinit noch aktiv. Das stellen wir ebenfalls um, wenn sich das Lesen von Floppy via DMA auf diese Art bewährt.
Die Motor-Steuerung wurde nun auch optimiert, sodass es nun wirklich schneller läuft.
Der Floppy-Motor wird bei #PF und #GPF nun auch ausgeschaltet (Hinweis von Cuervo).
TODO: Schreibvorgang checken (z.B. fformat)! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:51:44 15.02.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:18:15 16.02.2010 Titel: |
|
Zitieren |
Rev 106:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=106
- Read and Write Floppy via DMA ohne autoinit läuft nun zuverlässig
- Läuft auf realer Hardware und zumindest mit folgenden PC-Simulationen: Bochs, Qemu, Sun Virtual Box, MS Virtual PC.
- Solide Basis für Weiterentwicklung
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | *************
| | X | O |
*************
| X | O | X |
*************
| | | |
*************
*************
| 0 | 1 | 2 |
*************
| 3 | 4 | 5 |
*************
| 6 | 7 | 8 |
*************
6
*************
| | X | O |
*************
| X | O | X |
*************
| O | | |
*************
Spieler 2 hat gewonnen!
GAME OVER
$> fdir <--
<Floppy Disc Directory>
PrettyOS 0 byte (vol) 1st sector: 31
BOOT2.BIN 922 byte (arc) 1st sector: 33
KERNEL.BIN 45816 byte (arc) 1st sector: 35
HELLO.ELF 5564 byte (arc) 1st sector: 125
$>
-
_______ _______ <>_<>
(_______) |_|_|_|_|_|_|| [] [] | .---|'"`|---.
`-oo---oo-'`-oo-----oo-'`-o---o-'`o"O-OO-OO-O"o'
Wednesday, February 17, 2010, 00:13:51 69 seconds since start. /
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | *************
| | X | O |
*************
| X | O | X |
*************
| | | |
*************
*************
| 0 | 1 | 2 |
*************
| 3 | 4 | 5 |
*************
| 6 | 7 | 8 |
*************
6
*************
| | X | O |
*************
| X | O | X |
*************
| O | | |
*************
Spieler 2 hat gewonnen!
GAME OVER
$> fdir <--
<Floppy Disc Directory>
PrettyOS 0 byte (vol) 1st sector: 31
BOOT2.BIN 922 byte (arc) 1st sector: 33
KERNEL.BIN 45816 byte (arc) 1st sector: 35
HELLO.ELF 5564 byte (arc) 1st sector: 125
$>
-
_______ _______ <>_<>
(_______) |_|_|_|_|_|_|| [] [] | .---|'"`|---.
`-oo---oo-'`-oo-----oo-'`-o---o-'`o"O-OO-OO-O"o'
Wednesday, February 17, 2010, 00:13:51 69 seconds since start. /
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | *************
| | X | O |
*************
| X | O | X |
*************
| | | |
*************
*************
| 0 | 1 | 2 |
*************
| 3 | 4 | 5 |
*************
| 6 | 7 | 8 |
*************
6
*************
| | X | O |
*************
| X | O | X |
*************
| O | | |
*************
Spieler 2 hat gewonnen!
GAME OVER
$> fdir <--
<Floppy Disc Directory>
PrettyOS 0 byte (vol) 1st sector: 31
BOOT2.BIN 922 byte (arc) 1st sector: 33
KERNEL.BIN 45816 byte (arc) 1st sector: 35
HELLO.ELF 5564 byte (arc) 1st sector: 125
$>
-
_______ _______ <>_<>
(_______) |_|_|_|_|_|_|| [] [] | .---|'"`|---.
`-oo---oo-'`-oo-----oo-'`-o---o-'`o"O-OO-OO-O"o'
Wednesday, February 17, 2010, 00:13:51 69 seconds since start. /
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:15:29 17.02.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:34:05 18.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:11:28 19.02.2010 Titel: |
|
Zitieren |
Rev. 108:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=108
pci.c: Erkennen von Netzwerkkarte RTL 8139 eingebaut (thx to "tty")
Testen mit Qemu:
| Code: | | qemu-system-x86_64.exe -soundhw pcspk -usbdevice mouse -net nic,model=rtl8139,macaddr=00:12:12:12:12:12 -fda FloppyImage.bin -boot a -localtime | |
| Code: | | qemu-system-x86_64.exe -soundhw pcspk -usbdevice mouse -net nic,model=rtl8139,macaddr=00:12:12:12:12:12 -fda FloppyImage.bin -boot a -localtime | |
| Code: | | qemu-system-x86_64.exe -soundhw pcspk -usbdevice mouse -net nic,model=rtl8139,macaddr=00:12:12:12:12:12 -fda FloppyImage.bin -boot a -localtime | |
Wer den IRQ-Handler testen will, gibt nach dem PCI-Scan folgenden Code ein (qemu wählt bei mir IRQ 11):
| C/C++ Code: | ///TEST
printformat("Test with IRQ 32+11: ");
settextcolor(14,0);
__asm__ volatile( "int $43" : : "a"(0) );
settextcolor(15,0);
///TEST
| |
| C/C++ Code: | ///TEST
printformat("Test with IRQ 32+11: ");
settextcolor(14,0);
__asm__ volatile( "int $43" : : "a"(0) );
settextcolor(15,0);
///TEST
| |
| C/C++ Code: | ///TEST
printformat("Test with IRQ 32+11: ");
settextcolor(14,0);
__asm__ volatile( "int $43" : : "a"(0) );
settextcolor(15,0);
///TEST
| |
Leider ist es bisher nicht gelungen, den IRQ durch "anpingen" über das Netz auszulösen.
Siehe auch Links bei:
http://www.c-plusplus.de/forum/viewtopic-var-t-is-251851.html (unten)
EDIT: Sun Virtual Box, MS Virtual PC laufen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:46:10 22.02.2010, insgesamt 8-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
03:28:04 20.02.2010 Titel: |
|
Zitieren |
Rev. 109:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=109
Den von tty erstellten Code auf die Vorgaben von http://lowlevel.brainsware.org/wiki/index.php/RTL8139 erweitert/angepasst:
| Zitat: | 1. Vom PCI-Treiber den IRQ und die I/O-Ports holen
2. IRQ-Handler und ggf. I/O-Ports registrieren
3. Einen Reset der Karte durchführen: Bit 4 im Befehlsregister (0x37, 1 Byte) setzen. Wenn ich hier Portnummern von Registern angebe, ist damit der Offset zum ersten Port der Karte gemeint, der durch die PCI-Funktionen ermittelt werden muss.
4. Aktivieren des Transmitters und des Receivers: Setze Bits 2 und 3 (TE bzw. RE) im Befehlsregister (0x37, 1 Byte). Dies darf angeblich nicht erst später geschehen, da die folgenden Befehle ansonsten ignoriert würden.
5. TCR (Transmit Configuration Register, 0x40, 4 Bytes) und RCR (Receive Configuration Register, 0x44, 4 Bytes) setzen. An dieser Stelle nicht weiter kommentierter Vorschlag: TCR = 0x03000700, RCR = 0x0000070a
6. Puffer für den Empfang (evtl auch zum Senden, das kann aber auch später passieren) initialisieren. Wir brauchen für bei den vorgeschlagenen Werten 8K + 16 Bytes für den Empfangspuffer und einen ausreichend großen Sendepuffer. Was ausreichend bedeutet, ist dabei davon abhängig, welche Menge wir auf einmal absenden wollen. Anschließend muss die physische (!) Adresse des Empfangspuffers nach RBSTART (0x30, 4 Bytes) geschrieben werden.
7. Interruptmaske setzen (0x3C, 2 Bytes). In diesem Register können die Ereignisse ausgewählt werden, die einen IRQ auslösen sollen. Wir nehmen der Einfachkeit halber alle und setzen 0xffff. | umgesetzt in pci.c
IRQ konnte aber bisher nicht über Netzwerk ausgelöst werden.
Bisheriger Versuch: Mac-Adresse ermittelt von der Netzwerkkarte mit RTL 8139, statisch in den Router (LAN, DHCP) eingetragen und IP 192.168.10.97 vergeben, dann ein "ping". Kein Erfolg, weder durch IRQ in PrettyOS noch durch erfolgreiche Rückmeldung des Pings ("Zeitüberschreitung der Anforderung", alle Pakete verloren). arp -a zeigt die IP ebenfalls nicht.
Was fehlt hier noch für diesen ersten Schritt des Auslösens des Interrupts via Netzwerk?
http://prettyos.svn.sourceforge.net/viewvc/prettyos/trunk/Source/kernel/pci.c?view=markup&pathrev=109
EDIT: Sun Virtual Box, MS Virtual PC laufen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:48:11 22.02.2010, insgesamt 7-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:03:57 20.02.2010 Titel: |
|
Zitieren |
Rev. 110:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=110
Überarbeiteter Zwischenschritt:
- bleibt in qemu hängen (keine Zurücksetzung des Reset-Bit)
- mac address wird nicht korrekt ausgegeben ?
wie kommt man korrekt an folgende Strukturen:
http://www.digitale-elektronik.de/shopsystem/rtl8139d-datasheet.pdf (S.14/15)
http://svn.rot13.org/index.cgi/pearpc/view/src/io/rtl8139/rtl8139.cc?rev=1
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | /* registers */
struct Registers {
uint8 id0; // 0x00 (mac address)
uint8 id1;
uint8 id2;
uint8 id3;
uint8 id4;
uint8 id5;
uint16 rsvd0; // 0x06-0x07
uint8 mar0;
uint8 mar1;
uint8 mar2;
uint8 mar3;
uint8 mar4;
uint8 mar5;
uint8 mar6;
uint8 mar7;
uint32 TxStatusD0; // 0x10
uint32 TxStatusD1; // 0x14
uint32 TxStatusD2; // 0x18
uint32 TxStatusD3; // 0x1c
uint32 TxStartAddrD0; // 0x20
uint32 TxStartAddrD1; // 0x24
uint32 TxStartAddrD2; // 0x28
uint32 TxStartAddrD3; // 0x2c
uint32 RxBufferStartAddr; // 0x30
uint16 EarlyRxByteCount; // 0x34
uint8 EarlyRxStatus; // 0x36
uint8 CommandRegister; // 0x37
uint16 CAPR; // 0x38 initial 0xfff0
uint16 CBA; // 0x3a initial 0x0000
uint16 InterruptMask; // 0x3c
uint16 InterruptStatus; // 0x3e
uint32 TxConfiguration; // 0x40
uint32 RxConfiguration; // 0x44
uint32 TimerCount; // 0x48
uint32 MissedPacketCounter; // 0x4c
uint8 Command93C46; //0x50
uint8 Config0; // 0x51
uint8 Config1; // 0x52
uint8 rsvd1 ; // 0x53
uint32 TimerInterrupt; // 0x54
uint8 MediaStatus; // 0x58
uint8 Config3; // 0x59
uint8 Config4; // 0x5a
uint8 rsvd2; // 0x5b
uint16 MultipleInterruptSelect; // 0x5c
uint8 PCIRevisionID; // 0x5e should be 0x10
uint8 rsvd3; // 0x5f
uint16 TSAD; // 0x60 Transmit Status of All Descriptors
uint16 BMCR; // 0x62 Basic Mode Control
uint16 BMSR; // 0x64 Basic Mode Status
uint16 ANAR; // 0x66 Auto-Negotiation Advertisement
uint16 ANLPAR; // 0x68 "" Link Partner
uint16 ANER; // 0x6a "" Expansion
uint16 DisconnectCounter; // 0x6c
uint16 FalseCarrierSenseCounter; // 0x6e
uint16 NWayTest; // 0x70
uint16 RX_ER_Counter; //0x72
uint16 CSConfiguration; // 0x74
uint16 rsvd4;
uint32 PHY1; //0x78
uint32 Twister; // 0x7c
uint8 PHY2; // 0x80
} PACKED;
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | /* registers */
struct Registers {
uint8 id0; // 0x00 (mac address)
uint8 id1;
uint8 id2;
uint8 id3;
uint8 id4;
uint8 id5;
uint16 rsvd0; // 0x06-0x07
uint8 mar0;
uint8 mar1;
uint8 mar2;
uint8 mar3;
uint8 mar4;
uint8 mar5;
uint8 mar6;
uint8 mar7;
uint32 TxStatusD0; // 0x10
uint32 TxStatusD1; // 0x14
uint32 TxStatusD2; // 0x18
uint32 TxStatusD3; // 0x1c
uint32 TxStartAddrD0; // 0x20
uint32 TxStartAddrD1; // 0x24
uint32 TxStartAddrD2; // 0x28
uint32 TxStartAddrD3; // 0x2c
uint32 RxBufferStartAddr; // 0x30
uint16 EarlyRxByteCount; // 0x34
uint8 EarlyRxStatus; // 0x36
uint8 CommandRegister; // 0x37
uint16 CAPR; // 0x38 initial 0xfff0
uint16 CBA; // 0x3a initial 0x0000
uint16 InterruptMask; // 0x3c
uint16 InterruptStatus; // 0x3e
uint32 TxConfiguration; // 0x40
uint32 RxConfiguration; // 0x44
uint32 TimerCount; // 0x48
uint32 MissedPacketCounter; // 0x4c
uint8 Command93C46; //0x50
uint8 Config0; // 0x51
uint8 Config1; // 0x52
uint8 rsvd1 ; // 0x53
uint32 TimerInterrupt; // 0x54
uint8 MediaStatus; // 0x58
uint8 Config3; // 0x59
uint8 Config4; // 0x5a
uint8 rsvd2; // 0x5b
uint16 MultipleInterruptSelect; // 0x5c
uint8 PCIRevisionID; // 0x5e should be 0x10
uint8 rsvd3; // 0x5f
uint16 TSAD; // 0x60 Transmit Status of All Descriptors
uint16 BMCR; // 0x62 Basic Mode Control
uint16 BMSR; // 0x64 Basic Mode Status
uint16 ANAR; // 0x66 Auto-Negotiation Advertisement
uint16 ANLPAR; // 0x68 "" Link Partner
uint16 ANER; // 0x6a "" Expansion
uint16 DisconnectCounter; // 0x6c
uint16 FalseCarrierSenseCounter; // 0x6e
uint16 NWayTest; // 0x70
uint16 RX_ER_Counter; //0x72
uint16 CSConfiguration; // 0x74
uint16 rsvd4;
uint32 PHY1; //0x78
uint32 Twister; // 0x7c
uint8 PHY2; // 0x80
} PACKED;
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | /* registers */
struct Registers {
uint8 id0; // 0x00 (mac address)
uint8 id1;
uint8 id2;
uint8 id3;
uint8 id4;
uint8 id5;
uint16 rsvd0; // 0x06-0x07
uint8 mar0;
uint8 mar1;
uint8 mar2;
uint8 mar3;
uint8 mar4;
uint8 mar5;
uint8 mar6;
uint8 mar7;
uint32 TxStatusD0; // 0x10
uint32 TxStatusD1; // 0x14
uint32 TxStatusD2; // 0x18
uint32 TxStatusD3; // 0x1c
uint32 TxStartAddrD0; // 0x20
uint32 TxStartAddrD1; // 0x24
uint32 TxStartAddrD2; // 0x28
uint32 TxStartAddrD3; // 0x2c
uint32 RxBufferStartAddr; // 0x30
uint16 EarlyRxByteCount; // 0x34
uint8 EarlyRxStatus; // 0x36
uint8 CommandRegister; // 0x37
uint16 CAPR; // 0x38 initial 0xfff0
uint16 CBA; // 0x3a initial 0x0000
uint16 InterruptMask; // 0x3c
uint16 InterruptStatus; // 0x3e
uint32 TxConfiguration; // 0x40
uint32 RxConfiguration; // 0x44
uint32 TimerCount; // 0x48
uint32 MissedPacketCounter; // 0x4c
uint8 Command93C46; //0x50
uint8 Config0; // 0x51
uint8 Config1; // 0x52
uint8 rsvd1 ; // 0x53
uint32 TimerInterrupt; // 0x54
uint8 MediaStatus; // 0x58
uint8 Config3; // 0x59
uint8 Config4; // 0x5a
uint8 rsvd2; // 0x5b
uint16 MultipleInterruptSelect; // 0x5c
uint8 PCIRevisionID; // 0x5e should be 0x10
uint8 rsvd3; // 0x5f
uint16 TSAD; // 0x60 Transmit Status of All Descriptors
uint16 BMCR; // 0x62 Basic Mode Control
uint16 BMSR; // 0x64 Basic Mode Status
uint16 ANAR; // 0x66 Auto-Negotiation Advertisement
uint16 ANLPAR; // 0x68 "" Link Partner
uint16 ANER; // 0x6a "" Expansion
uint16 DisconnectCounter; // 0x6c
uint16 FalseCarrierSenseCounter; // 0x6e
uint16 NWayTest; // 0x70
uint16 RX_ER_Counter; //0x72
uint16 CSConfiguration; // 0x74
uint16 rsvd4;
uint32 PHY1; //0x78
uint32 Twister; // 0x7c
uint8 PHY2; // 0x80
} PACKED;
| |
EDIT: Sun Virtual Box, MS Virtual PC laufen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:50:43 22.02.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:42:32 20.02.2010 Titel: |
|
Zitieren |
Rev. 111:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=111
IRQ kann jetzt über Netz ausgelöst werden!
BAR[1].baseAddress ist die richtige! (MMIO anstelle I/O)
Ich habe folgendes gemacht:
- im Router bei DHCP die mac-Adresse fest an eine IP gekoppelt (statisch)
- PING geschickt, "RTL8139 IRQ" kommt
TODO: hängt komplett da fest (da fehlt: 16 bit von 003Eh bis 003Fh lesen und genauso wieder zurück schreiben. "writing a 1 to any bit will reset that bit")
TODO: Basis-Adresse noch mit & 0xFFFC bearbeitet werden (analog USB-Treiber)
TODO: Ping wird nicht sauber bearbeitet, löst nur IRQ aus
Aber immerhin, Netzwerkkarte wurde erkannt und angesprochen. (thx to tty and homix)
Warum geht das mit qemu nicht?
Beim real PC gibt es jetzt ständig IRQ-Alarm
http://www.digitale-elektronik.de/shopsystem/rtl8139d-datasheet.pdf (S. 19 von 67)?
EDIT: Sun Virtual Box, MS Virtual PC laufen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:53:02 22.02.2010, insgesamt 5-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:04:57 20.02.2010 Titel: |
|
Zitieren |
Rev. 112:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=112
Einige Verbesserungen in pci.c
Der IRQ muss im Handler noch zurück gesetzt werden. Dazu brauchen wir aber eine Funktion: phys. Addr. ---> virt. Addr. (gilt auch für USB)
Wir verwenden momentan die MMIO-Adresse der RTL8139 Netzwerkkarte. Mit der IO-Adresse klappt es nicht (warum? sollte gehen!).
EDIT: Sun Virtual Box, MS Virtual PC laufen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:54:53 22.02.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:42:48 20.02.2010 Titel: |
|
Zitieren |
Rev. 113:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=113
Netzwerk IRQ bei RTL8139 funktioniert, der Install-Handler wurde aber wieder deaktiviert, weil wir momentan den Interrupt nicht wieder abstellen können (Paging-Problem). Erst, wenn das Design stimmt, wird daran weiter entwickelt.
EDIT: Sun Virtual Box, MS Virtual PC laufen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:56:30 22.02.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:05:22 21.02.2010 Titel: |
|
Zitieren |
Rev. 114:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=114
Netzwerk IRQ bei RTL8139 funktioniert, der Install-Handler wurde wieder aktiviert, nachdem wir den Interrupt abstellen können, geht über out(...,data) also über den IO anstelle MMIO. Wir fahren momentan zweigleisig.
User-Lib: auf Wunsch von tty wurde strchr(...) hinzu gefügt (bitte testen)
EDIT: Sun Virtual Box, MS Virtual PC laufen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:58:23 22.02.2010, insgesamt 2-mal bearbeitet |
|
 |
Baba Yaga
Mitglied
Benutzerprofil
Anmeldungsdatum: 12.02.2010
Beiträge: 132
|
Baba Yaga Mitglied
00:31:10 21.02.2010 Titel: |
|
Zitieren |
Wieso haust Du die Register des Ethernernet-Controllers in eine Struktur? Das ist doch Blödsinn. Mach Dir Makros dafür |
Zuletzt bearbeitet von Erhard Henkes am 01:40:26 22.02.2010, insgesamt 1-mal bearbeitet |
|
 |
XanClic
Mitglied
Benutzerprofil
Anmeldungsdatum: 13.10.2009
Beiträge: 95
|
XanClic Mitglied
01:20:10 21.02.2010 Titel: |
|
Zitieren |
| Baba Yaga schrieb: | | Wieso haust Du die Register des Ethernernet-Controllers in eine Struktur? Das ist doch Blödsinn. Mach Dir Makros dafür |
Für MMIO ist das kein Blödsinn, für I/O-Space dann schon eher. Aber bis jetzt wird MMIO ja noch fleißig benutzt. |
_________________ http://www.lowlevel.eu/
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:34:52 21.02.2010 Titel: |
|
Zitieren |
Rev. 115:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=115
Weitere Verbesserungen in pci.c bezüglich RTL8139.
Die gelesenen Inhalte (receiving buffer) werden angezeigt (Länge der Eingangsdaten (Bit 2 u.3), auf max. 300 Byte begrenzt).
Realer PC, Bochs, Qemu laufen.
MS VPC und Sun VB brechen nach dem Start der Shell ab.
Analyse der Daten im Receiving Buffer:
"Bytes 0-1: Paketheader (Bit 0 = ROK)"
"Bytes 2-3: Länge des Pakets"
Dann geht es mit der MAC-Adresse des Empfängers weiter (Präambel, SFD ignorieren):
http://lowlevel.brainsware.org/wiki/index.php/RTL8139#Empfangen
http://lowlevel.brainsware.org/wiki/index.php/Ethernet
Screenshot:
http://www.henkessoft.de/OS_Dev/Bilder/rev115.png
EDIT: 22.feb. Sun VB und MS VPC laufen mit dem FloppyImage (SVN) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 02:01:18 22.02.2010, insgesamt 6-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:04:16 21.02.2010 Titel: |
|
Zitieren |
| Zitat: | | Wieso haust Du die Register des Ethernernet-Controllers in eine Struktur? | Habe ich nicht gemacht, wollte das nur beispielhaft zeigen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:24:39 21.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:46:12 21.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:35:10 21.02.2010 Titel: |
|
Zitieren |
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
18:13:28 21.02.2010 Titel: |
|
Zitieren |
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
20:01:51 21.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:29:47 21.02.2010 Titel: |
|
Zitieren |
Rev. 121:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=121
Einige Korrekturen:
- in kernel.ld stand noch shared.o
- user/user_test_c/userlib..h/c und user/user_program_c/... waren verschieden (muss leider immer von Hand von user_program nach user_test kopiert werden.
- hello.c ist nun TTT 0.3
EDIT: Version läuft mit Sun VB und MS VPC. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:30:13 22.02.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:49:34 21.02.2010 Titel: |
|
Zitieren |
Problem: stellt man in ckernel.c pciScan nach Installation von Paging und versucht in pci.c
paging_do_idmapping( BaseAddressRTL8139_MMIO );
dann erhält man einen #PF.
Debugging ergibt folgendes:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | bool paging_do_idmapping( uint32_t phys_addr )
{
// TODO: Ensure that the physical memory is not used otherwise
// TODO: The page table entry may point to a different address
// TODO: Create solution for addreses != 0xF...
// Adress must be a 0xF...-address
if ( (phys_addr & 0xF0000000) != 0xF0000000 )
return false;
printformat("\tDEBUG: phys addr OK\n");
const uint32_t pagenr = phys_addr/PAGESIZE;
const uint32_t aligned = phys_addr & ~4095;
// Setup the page
page_table_t* pt = kernel_pd->tables[pagenr/1024];
printformat("DEBUG: behind page_table_t* pt = kernel_pd->tables[pagenr/1024];\n");
ASSERT( pt );
printformat("DEBUG: behind ASSERT. pt = %X\n", &pt);
printformat("DEBUG: pt->pages[pagenr%1024] = %X\n", &(pt->pages[pagenr%1024]));
pt->pages[pagenr%1024] = aligned | MEM_PRESENT | MEM_WRITE | MEM_KERNEL; //<--- #PF entsteht hier
printformat("DEBUG: behind pt->pages[pagenr%1024] = aligned | MEM_PRESENT | MEM_WRITE | MEM_KERNEL;\n");
// Reserve the physical memory
phys_set_bits( aligned, aligned+PAGESIZE, true );
printformat("DEBUG: behind phys_set_bits( aligned, aligned+PAGESIZE, true );\n");
return true;
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | bool paging_do_idmapping( uint32_t phys_addr )
{
// TODO: Ensure that the physical memory is not used otherwise
// TODO: The page table entry may point to a different address
// TODO: Create solution for addreses != 0xF...
// Adress must be a 0xF...-address
if ( (phys_addr & 0xF0000000) != 0xF0000000 )
return false;
printformat("\tDEBUG: phys addr OK\n");
const uint32_t pagenr = phys_addr/PAGESIZE;
const uint32_t aligned = phys_addr & ~4095;
// Setup the page
page_table_t* pt = kernel_pd->tables[pagenr/1024];
printformat("DEBUG: behind page_table_t* pt = kernel_pd->tables[pagenr/1024];\n");
ASSERT( pt );
printformat("DEBUG: behind ASSERT. pt = %X\n", &pt);
printformat("DEBUG: pt->pages[pagenr%1024] = %X\n", &(pt->pages[pagenr%1024]));
pt->pages[pagenr%1024] = aligned | MEM_PRESENT | MEM_WRITE | MEM_KERNEL; //<--- #PF entsteht hier
printformat("DEBUG: behind pt->pages[pagenr%1024] = aligned | MEM_PRESENT | MEM_WRITE | MEM_KERNEL;\n");
// Reserve the physical memory
phys_set_bits( aligned, aligned+PAGESIZE, true );
printformat("DEBUG: behind phys_set_bits( aligned, aligned+PAGESIZE, true );\n");
return true;
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | bool paging_do_idmapping( uint32_t phys_addr )
{
// TODO: Ensure that the physical memory is not used otherwise
// TODO: The page table entry may point to a different address
// TODO: Create solution for addreses != 0xF...
// Adress must be a 0xF...-address
if ( (phys_addr & 0xF0000000) != 0xF0000000 )
return false;
printformat("\tDEBUG: phys addr OK\n");
const uint32_t pagenr = phys_addr/PAGESIZE;
const uint32_t aligned = phys_addr & ~4095;
// Setup the page
page_table_t* pt = kernel_pd->tables[pagenr/1024];
printformat("DEBUG: behind page_table_t* pt = kernel_pd->tables[pagenr/1024];\n");
ASSERT( pt );
printformat("DEBUG: behind ASSERT. pt = %X\n", &pt);
printformat("DEBUG: pt->pages[pagenr%1024] = %X\n", &(pt->pages[pagenr%1024]));
pt->pages[pagenr%1024] = aligned | MEM_PRESENT | MEM_WRITE | MEM_KERNEL; //<--- #PF entsteht hier
printformat("DEBUG: behind pt->pages[pagenr%1024] = aligned | MEM_PRESENT | MEM_WRITE | MEM_KERNEL;\n");
// Reserve the physical memory
phys_set_bits( aligned, aligned+PAGESIZE, true );
printformat("DEBUG: behind phys_set_bits( aligned, aligned+PAGESIZE, true );\n");
return true;
}
| |
Problematische Zeile: pt->pages[pagenr%1024] = aligned | MEM_PRESENT | MEM_WRITE | MEM_KERNEL;
Screenshot: http://www.henkessoft.de/OS_Dev/Bilder/rev121a_PF.JPG |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:10:18 21.02.2010, insgesamt 4-mal bearbeitet |
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
23:53:12 21.02.2010 Titel: |
|
Zitieren |
Das ist wirklich merkwürdig, die Pages für 3 GB bis 4 GB sind alle von vornherein gemappt; hier dürfte es eigentlich keinen Page Fault geben (siehe Funktion paging_install). |
|
|
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
23:55:14 21.02.2010 Titel: |
|
Zitieren |
Also, die Page Table Einträge sind nicht auf physische Adressen gemappt, die Page Tables an sich haben aber ihren Platz. 0xC9028004 erscheint mir aber auch ein wenig hoch. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:01:01 22.02.2010 Titel: |
|
Zitieren |
Ich habe es auch unter Sun VB mit EHCI versucht (0xF08.....), gleiches Resultat.
Wir haben noch zwei Probleme (rev 121):
Sun VB: VERR_REM_VIRTUAL_CPU_ERROR
MS VPC: Interner Fehler auf virtuellem Computer
Beim Start der Shell (versteht momentan keiner, hat irgendwas mit dem Task-Wechsel zu tun)
Adressen mit #PF:
Adresse MMIO: in http://www.henkessoft.de/OS_Dev/Bilder/rev121a_PF.JPG zu sehen: 0xF2001000
Bei EHCI hatte ich 0xF1800000, dort knallte es auch.
pci.c line 285, falls vendor verschieden:
| C/C++ Code: | | if( (pciDev_Array[number].deviceID == 0x8139) && (pciDev_Array[number].vendorID == 0x10EC) )
| |
| C/C++ Code: | | if( (pciDev_Array[number].deviceID == 0x8139) && (pciDev_Array[number].vendorID == 0x10EC) )
| |
| C/C++ Code: | | if( (pciDev_Array[number].deviceID == 0x8139) && (pciDev_Array[number].vendorID == 0x10EC) )
| |
können wir den vendorID-Zweig da raus nehmen? |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:14:16 22.02.2010, insgesamt 1-mal bearbeitet |
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
00:09:57 22.02.2010 Titel: |
|
Zitieren |
Ok, hab den Fehler ausfindig gemacht. Sorry, war mein Bug. Hab's eingecheckt
Edit: Rev 124
- Einen Bug gefixt, läuft bei mir jetzt unter Bochs und Qemu.
Edit2: Das war ja ein wirklich bescheuerter Fehler. Und merkwürdig/schade, dass er sich nicht früher bemerkbar gemacht hat. Ich hatte
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | 1 2 3 4 5 6 7 8 9 | // Setup the page tables for the kernel heap (3GB-4GB), unmapped
page_table_t* heap_pts = malloc( 256*sizeof(page_table_t), PAGESIZE );
memset( heap_pts, 0, 256*sizeof(page_table_t) );
for ( uint32_t i=0; i<256; ++i )
{
kernel_pd->tables[768+i] = heap_pts;
kernel_pd->codes[768+i] = (uint32_t)kernel_pd->tables[768+i] | MEM_PRESENT | MEM_WRITE;
heap_pts += sizeof(page_table_t); //<-----
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | // Setup the page tables for the kernel heap (3GB-4GB), unmapped
page_table_t* heap_pts = malloc( 256*sizeof(page_table_t), PAGESIZE );
memset( heap_pts, 0, 256*sizeof(page_table_t) );
for ( uint32_t i=0; i<256; ++i )
{
kernel_pd->tables[768+i] = heap_pts;
kernel_pd->codes[768+i] = (uint32_t)kernel_pd->tables[768+i] | MEM_PRESENT | MEM_WRITE;
heap_pts += sizeof(page_table_t); //<-----
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | // Setup the page tables for the kernel heap (3GB-4GB), unmapped
page_table_t* heap_pts = malloc( 256*sizeof(page_table_t), PAGESIZE );
memset( heap_pts, 0, 256*sizeof(page_table_t) );
for ( uint32_t i=0; i<256; ++i )
{
kernel_pd->tables[768+i] = heap_pts;
kernel_pd->codes[768+i] = (uint32_t)kernel_pd->tables[768+i] | MEM_PRESENT | MEM_WRITE;
heap_pts += sizeof(page_table_t); //<-----
} | |
An der Stelle mit dem Pfeil wurde der Zeiger natürlich um das Quadrat der Größe weiterbewegt - ich hatte "heap_pts" wie einen char-Pointer behandelt. Natürlich wird der Zeiger bei +X um X*Größe weiterbewegt. Ein += 1 wäre richtiger gewesen.. |
Zuletzt bearbeitet von Badestrand am 00:20:11 22.02.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:24:18 22.02.2010 Titel: |
|
Zitieren |
bei mir ist bisher nur rev 123 verfügbar? (in ckernel.c: rev. 124)
| Zitat: | | Das war ja ein wirklich bescheuerter Fehler. | Fehler sind immer bescheuert.
Super! Rev. 123 läuft schon gut. Nun können wir endlich den pciScan hinter Paging und Heap ausführen. Danke! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:32:39 22.02.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:48:37 22.02.2010 Titel: |
|
Zitieren |
Rev. 124:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=124
pci.c: EHCI (USB) MMIO ebenfalls in das ID mapping eingebunden
Revisions-Nr. wieder identisch!
Real Hardware läuft (von Cuervo kommen da allerdings Problemmeldungen, sollten verschwinden, sobald das MS VPC u. Sun VB Problem gelöst wird).
Status bei den Simulationen:
Bochs 2.4.2: läuft
Qemu: läuft
MS VPC 6.0.192.0: läuft!
Sun VB 3.1.2 und 3.1.4: läuft!
@Badestrand: was hast Du da genau gerade gebogen? (wichtig, weil wir immer wieder in diese Grube fallen, ohne es zu merken)
EDIT: Ich denke, Du bist unschuldig an dieser Sache mit MS VPC und Sun VB.
EDIT (aus IRC):
- bei 115 hatte ich notiert, MS VPC und Sun VB brechen nach dem Start der Shell ab.
- test mit dem FloppyImage aus dem SVN: ok
- da soll man nicht durchknallen
- Die Probleme mit Sun VB und MS VPC lassen sich nicht nachvollziehen!
- alles geht plötzlich
- so liest sich das auch oft im Internet: "durch Neuinstallation von VB behoben"
- das würde ich wirklich gerne verstehen
- XanClic hat beim Suchen und Vergleichen auch nie was gefunden
Wie bekommt man das Thema "Tests mit Simulationen und realer Hardware" in den Griff? |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 02:36:38 22.02.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:04:37 22.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:42:26 22.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:25:32 23.02.2010 Titel: |
|
Zitieren |
Rev. 128:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=128
userlib.c: gets(char*) funktionsfähig gemacht, aber irgendwie merkwürdig.
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | char* gets(char* s)
{
int i=0,flag=0;
char c;
//settaskflag(0);
do
{
c = getch();
if(c=='\b') // Backspace
{
if(i>0)
{
putch(c);
s[i-1]='\0';
--i;
}
else
{
beep(50,20);
if(flag==false)
{
putch('\n');
flag=true;
}
}
}
else
{
s[i] = c;
putch(c);
flag=false;
i++;
}
}
while(c!=10); // Linefeed
s[i]='\0';
//settaskflag(1);
return s;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | char* gets(char* s)
{
int i=0,flag=0;
char c;
//settaskflag(0);
do
{
c = getch();
if(c=='\b') // Backspace
{
if(i>0)
{
putch(c);
s[i-1]='\0';
--i;
}
else
{
beep(50,20);
if(flag==false)
{
putch('\n');
flag=true;
}
}
}
else
{
s[i] = c;
putch(c);
flag=false;
i++;
}
}
while(c!=10); // Linefeed
s[i]='\0';
//settaskflag(1);
return s;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | char* gets(char* s)
{
int i=0,flag=0;
char c;
//settaskflag(0);
do
{
c = getch();
if(c=='\b') // Backspace
{
if(i>0)
{
putch(c);
s[i-1]='\0';
--i;
}
else
{
beep(50,20);
if(flag==false)
{
putch('\n');
flag=true;
}
}
}
else
{
s[i] = c;
putch(c);
flag=false;
i++;
}
}
while(c!=10); // Linefeed
s[i]='\0';
//settaskflag(1);
return s;
} | |
Vielleicht liegt es auch daran, das settaskflag ausgeschaltet wurde, bitte testen. Obiges gets ist nur work-around, aber auch gut zum Testen.
Die ausführliche Version ist hier: http://www.c-plusplus.de/forum/viewtopic-var-t-is-260731-and-start-is-50.html
Ich habe es am realen PC getestet: Da kommt man nicht mehr in die obere Zeile.
Bei qemu geht das ab und zu, also "unsauber".
Das hat mit der Task-/Video-Steuerung zu tun.
ich hoffe, dass dieses gets zunächst die Wünsche von MrX und Cuervo befriedigen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:40:28 23.02.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:53:45 23.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:51:30 23.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:25:42 23.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:19:04 24.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:59:19 24.02.2010 Titel: |
|
Zitieren |
Rev. 133:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=133
- paging.c: bool paging_do_idmapping( uint32_t phys_addr ) versuchsweise ab 0xC0000000 (Grund: manche MMIO beginnen ab 0xD....... oder 0xE.......)
- ckernel.c:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | 1 2 3 4 5 6 7 8 9 | int main()
{
init();
pODA->Memory_Size = paging_install();
printformat( "\n\nMemory size: %d KB\n", pODA->Memory_Size/1024 );
heap_install();
pciScan(); // scan of pci bus; results go to: pciDev_t pciDev_Array[50]; (cf. pci.h)
tasking_install();
sti(); | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | int main()
{
init();
pODA->Memory_Size = paging_install();
printformat( "\n\nMemory size: %d KB\n", pODA->Memory_Size/1024 );
heap_install();
pciScan(); // scan of pci bus; results go to: pciDev_t pciDev_Array[50]; (cf. pci.h)
tasking_install();
sti(); | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | int main()
{
init();
pODA->Memory_Size = paging_install();
printformat( "\n\nMemory size: %d KB\n", pODA->Memory_Size/1024 );
heap_install();
pciScan(); // scan of pci bus; results go to: pciDev_t pciDev_Array[50]; (cf. pci.h)
tasking_install();
sti(); | |
pciScan direkt hinter heap_install(). In pciScan() werden MMIO (USB EHCI, Netzwerkarte ID-gemappt.
Mal sehen, ob es klappt oder #PF hagelt? |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:38:12 25.02.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:31:46 25.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
07:39:41 26.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:07:07 26.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:33:04 26.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:59:03 26.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:21:56 26.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:42:28 26.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:53:09 26.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:56:50 27.02.2010 Titel: |
|
Zitieren |
Rev. 144:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=144
ehci.h/c: initEHCIHostController() TEST-Version (erste Gehversuche )
pci.c, Zeilen 187/188:
| C/C++ Code: | analyzeEHCI(bar);
initEHCIHostController(); | |
| C/C++ Code: | analyzeEHCI(bar);
initEHCIHostController(); | |
| C/C++ Code: | analyzeEHCI(bar);
initEHCIHostController(); | |
siehe EHCI Spec Rev. 1.0, Kap. 4 "Operational Model"
Ideal: Sun VB oder reale Hardware mit EHCI USB und Netzwerkkarte 8139
(Anm:: rev. 141-143 war fehlerhaft bezüglich rtl8139.c) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 03:11:42 27.02.2010, insgesamt 6-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:32:36 27.02.2010 Titel: |
|
Zitieren |
|
 |
Z
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.02.2010
Beiträge: 773
|
Z Mitglied
00:24:40 28.02.2010 Titel: |
|
Zitieren |
Jede Quellcodedatei die ich bisher von euch gesehen habe (diese z.B.) sieht so furchtbar unvollständig aus. ihr arbeitet wohl an 100 Baustellen gleichzeitig. |
_________________ a = b << c; /* shift happens */
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:33:20 28.02.2010 Titel: |
|
Zitieren |
Es gibt derzeit auch viele Baustellen... Vlt. hast Du konkrete Vorschläge, wo man was verbessern könnte? :-) |
|
|
|
 |
Z
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.02.2010
Beiträge: 773
|
Z Mitglied
00:50:51 28.02.2010 Titel: |
|
Zitieren |
| Mr X schrieb: | | Es gibt derzeit auch viele Baustellen... Vlt. hast Du konkrete Vorschläge, wo man was verbessern könnte? :-) |
Mir fällt z.B. auf, dass der Netzwerktreiber keine Sendefunktion hat, dass er direkt TCP aufruft, dass TCP nur eine Empfangsfunktion hat, die noch nicht mal TCP kann. dass TCP irgendwie auch ARP teilweise behandelt, dass alles mit printformat und settextcolor durchsetzt ist, usw.
Nicht dass ich euch reinreden will, aber das sieht für mich alles sehr nach unkoordinierter Bastelei aus. |
_________________ a = b << c; /* shift happens */
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:57:03 28.02.2010 Titel: |
|
Zitieren |
Der Netzwerktreiber wird grad erst geschrieben; Dass der nicht besonders "schön"/funktiosfähig ist ist daher wohl eher nicht verwunderlich. Wenn Du dich damit auszukennst, wärst Du sicher eine große Hilfe bei der Entwicklung dieses Treibers...
Das settextcolor und printformat wird wohl der Übersichtlichkeit dienen.
| Zitat: | | Nicht dass ich euch reinreden will |
Was heißt reinreden... Du kannst gerne mitmachen Schau doch mal im IRC vorbei... |
|
|
|
 |
Z
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.02.2010
Beiträge: 773
|
Z Mitglied
01:21:54 28.02.2010 Titel: |
|
Zitieren |
| Mr X schrieb: |
Der Netzwerktreiber wird grad erst geschrieben; Dass der nicht besonders "schön"/funktiosfähig ist ist daher wohl eher nicht verwunderlich. Wenn Du dich damit auszukennst, wärst Du sicher eine große Hilfe bei der Entwicklung dieses Treibers...
|
Ich kenne mich ein wenig damit aus, zwar nicht mit dem RTL, aber Netzwerk-Treiber funktionieren nach oben hin alle ähnlich: sie haben alle eine Init, eine Send und eine Receive Funktion. Interrupt-Handling und das Weiterreichen von Paketen sollte der Treiber besser nicht selbst übernehmen. In diesem Sinne vermisse ich auch Modularität in eurem Projekt, ohne die ihr irgenwann den Überblick verlieren werdet. Gleiches gilt für Protokollstacks. Hier wird Modularität und Layering extrem wichtig, weil z.B. IP/TCP auch von WLAN, PPP, und anderen Paketdiensten "gefüttert" werden kann. Üblich für sowas sind Dispatcher-Module, also Code der dynamisch Protokolle an die Netzwerkinterfaces ankoppelt.
| Mr X schrieb: |
Das settextcolor und printformat wird wohl der Übersichtlichkeit dienen.
|
Nicht der Übersichtlichkeit des Codes
Debug-Ausgaben könnt ihr z.B. über define oder Flags steuern. So wie es jetzt ist, müsst ihr später alles auskommentieren.
| Mr X schrieb: |
| Zitat: | | Nicht dass ich euch reinreden will |
Was heißt reinreden... Du kannst gerne mitmachen Schau doch mal im IRC vorbei...
|
Danke für die Einladung, aber ich bin kein IRC-Fan und ausserdem ein sehr schlechter Teamplayer. Ich beschränke mich darauf, euch zu kritisieren, wenn mir etwas auffällt.
Edit: die schlimmsten Typos beseitigt |
_________________ a = b << c; /* shift happens */
Zuletzt bearbeitet von Z am 01:40:52 28.02.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
09:26:27 28.02.2010 Titel: |
|
Zitieren |
@Z: Wir schätzen konstruktive Kritik. Daher bitte weiter machen. Zuständig für den Bereich Netzwerktreiber ist momentan übrigens 'tty'.
Wenn Du die Übersicht hast, könntest Du deine Kraft auf den USB-EHCI-Treiber lenken (ehci.c). Da schätze ich jede konkrete Unterstützung.
| Zitat: | Debug-Ausgaben könnt ihr z.B. über define oder Flags steuern. So wie es jetzt ist, müsst ihr später alles auskommentieren.
|
Das ist richtig. Dafür verwenden wir folgenden Mechanismus:
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 1 2 3 4 5 6 7 8 | #ifdef _DIAGNOSIS_
settextcolor(2,0);
printformat("%X dev: %x vend: %x\t",
( pciDev_t*)element,
((pciDev_t*)element)->deviceID,
((pciDev_t*)element)->vendorID);
settextcolor(15,0);
#endif | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | #ifdef _DIAGNOSIS_
settextcolor(2,0);
printformat("%X dev: %x vend: %x\t",
( pciDev_t*)element,
((pciDev_t*)element)->deviceID,
((pciDev_t*)element)->vendorID);
settextcolor(15,0);
#endif | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | #ifdef _DIAGNOSIS_
settextcolor(2,0);
printformat("%X dev: %x vend: %x\t",
( pciDev_t*)element,
((pciDev_t*)element)->deviceID,
((pciDev_t*)element)->vendorID);
settextcolor(15,0);
#endif | |
_DIAGNOSIS_ wird momentan in os.h gesetzt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:36:39 28.02.2010 Titel: |
|
Zitieren |
Rev. 146:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=146
in ehci.c und paging Änderungen.
Dieses merkwürdige Phänomen, das MS VPC und Sun VB nach einigen Taskwechseln stoppen, obwohl real hardware tapfer läuft, ist wieder da! Bitte suchen helfen.
Ich habe den Diagnosis-Modus angeschaltet (kann man in os.h abschalten). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:39:21 28.02.2010, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
13:42:23 28.02.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
14:18:06 28.02.2010 Titel: |
|
Zitieren |
Rev. 148
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=148
user/user_test_c/makefile geändert, sodass es ohne msys funktioniert und die userlib nicht mehr im gleichen Ordner liegen muss
user/user_test_c/userlib.c/.h gelöscht, da nicht mehr nötig
EDIT: Das makefile macht auf manchen Systemen derzeit noch Probleme... |
Zuletzt bearbeitet von Mr X am 14:30:48 28.02.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:30:09 28.02.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:39:55 28.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:40:25 28.02.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:12:45 28.02.2010 Titel: |
|
Zitieren |
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
20:32:50 28.02.2010 Titel: |
|
Zitieren |
| 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. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:24:40 28.02.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
22:12:23 28.02.2010 Titel: |
|
Zitieren |
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. |
Zuletzt bearbeitet von Erhard Henkes am 23:55:30 28.02.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:49:08 28.02.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:15:06 01.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:47:25 02.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:30:05 02.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:48:57 02.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:14:10 02.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:41:27 02.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:31:02 03.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:20:20 03.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:09:01 03.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:37:30 03.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:43:58 03.03.2010 Titel: |
|
Zitieren |
Rev. 169:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=169
ehci.c
Ports: (zusätzlich: wait und set reset bit to 0)
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 1 2 3 4 5 6 7 8 | 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
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 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
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 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
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:57:04 03.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Z
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.02.2010
Beiträge: 773
|
Z Mitglied
00:40:38 04.03.2010 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 1 2 3 4 5 6 7 8 | 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
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 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
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 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)
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | 1 2 3 4 5 6 7 8 9 | 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
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | 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
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | 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...
| C/C++ Code: | #define BIT0 (1<<1)
#define BIT1 (1<<2)
#define BIT2 (1<<3)
/* usw */
| |
| C/C++ Code: | #define BIT0 (1<<1)
#define BIT1 (1<<2)
#define BIT2 (1<<3)
/* usw */
| |
| C/C++ Code: | #define BIT0 (1<<1)
#define BIT1 (1<<2)
#define BIT2 (1<<3)
/* usw */
| |
|
_________________ a = b << c; /* shift happens */
Zuletzt bearbeitet von Z am 00:50:37 04.03.2010, insgesamt 2-mal bearbeitet |
|
 |
XanClic
Mitglied
Benutzerprofil
Anmeldungsdatum: 13.10.2009
Beiträge: 95
|
XanClic Mitglied
16:43:53 04.03.2010 Titel: |
|
Zitieren |
| Z schrieb: | Nachtrag: Um 1-Bit Werte lesbarer zu machen, könntest Du folgendes tun und zu den System-Headers hinzufügen...
| C/C++ Code: | #define BIT0 (1<<1)
#define BIT1 (1<<2)
#define BIT2 (1<<3)
/* usw */
| |
| C/C++ Code: | #define BIT0 (1<<1)
#define BIT1 (1<<2)
#define BIT2 (1<<3)
/* usw */
| |
| C/C++ Code: | #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: | | C/C++ Code: | 1 2 3 4 5 6 7 8 | 1 2 3 4 5 6 7 8 | 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
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 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
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 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... |
_________________ http://www.lowlevel.eu/
Zuletzt bearbeitet von XanClic am 16:44:25 04.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:12:00 04.03.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:40:32 04.03.2010 Titel: |
|
Zitieren |
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 |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:22:10 04.03.2010 Titel: |
|
Zitieren |
|
 |
Z
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.02.2010
Beiträge: 773
|
Z Mitglied
00:05:18 05.03.2010 Titel: |
|
Zitieren |
| XanClic schrieb: | | Z schrieb: | Nachtrag: Um 1-Bit Werte lesbarer zu machen, könntest Du folgendes tun und zu den System-Headers hinzufügen...
| C/C++ Code: | #define BIT0 (1<<1)
#define BIT1 (1<<2)
#define BIT2 (1<<3)
/* usw */
| |
| C/C++ Code: | #define BIT0 (1<<1)
#define BIT1 (1<<2)
#define BIT2 (1<<3)
/* usw */
| |
| C/C++ Code: | #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. |
_________________ a = b << c; /* shift happens */
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
03:09:12 05.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
04:04:33 05.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:09:35 05.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:08:03 05.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:04:13 05.03.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
22:23:08 05.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:00:09 06.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:22:51 06.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:52:19 06.03.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:36:58 06.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:15:34 06.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:43:43 06.03.2010 Titel: |
|
Zitieren |
Rev. 184:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=184
ehci.c: Korrektur (eecp und eecp_id)
jetzt kommt bei mir: eecp = 0070h, eecp_id = 0001h
Bei Cuervo und Tobiking gehen nun real PCs endlich!
Hier noch ein work-around für MM-Probleme:
http://www.c-plusplus.de/forum/viewtopic-var-t-is-260731-and-start-is-67.html
Sind mehrere EHCI-Host-Controller vorhanden, kann momentan nur der erste beim PCI-Scan initialisiert werden.
pci.c, line 202-206
| C/C++ Code: | if(!EHCIflag)
{
analyzeEHCI(bar);
initEHCIHostController(number);
} | |
| C/C++ Code: | if(!EHCIflag)
{
analyzeEHCI(bar);
initEHCIHostController(number);
} | |
| C/C++ Code: | if(!EHCIflag)
{
analyzeEHCI(bar);
initEHCIHostController(number);
} | |
Sun VirtualBox geht auch nicht! (seit Interrupts, Polling aus USBSTS ging leidlich)
Qemu, Bochs und MS VPC bieten uns momentan kein USB EHCI. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:07:05 06.03.2010, insgesamt 7-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
22:51:26 06.03.2010 Titel: |
|
Zitieren |
Rev. 185:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=185
- Intelligenteres Caching der Eingaben: Wiedergenutzte Einträge werden nach vorne geholt
- Scope von Variablen verkleinert
- Länge der Strings für die Eingabe auf 70+1 reduziert von 70+10
- Kommentare nun alle auf English (Ich hatte ausversehen Teile auf Deutsch kommentiert)
- Tabs durch Space ersetzt (Noch ein Versehen von mir aus dem letzten Update der Shell)
- Uralte User-Prog Versionen aktualisiert
|
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:00:42 07.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
03:15:58 07.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:16:09 07.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:08:35 07.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:56:40 07.03.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:39:05 07.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:11:44 07.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:21:04 08.03.2010 Titel: |
|
Zitieren |
Rev. 194:
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=194
ehci.c: Zwischenschritt USB 2.0 EHCI Async-Transfer
Ein großes Lob an Tobiking für die Ausdauer bei diesem schwierigen Thema und an Max Reitz (XanClic) für seine hervorragende Dokumentation - eigentlich ein Opus - im LowLevel wiki: http://lowlevel.brainsware.org/wiki/index.php/USB
Man ist in PrettyOS bei USB 2.0 an einem Punkt angekommen, wo das ergänzende Heranziehen der USB Specification Rev. 2.0, April 27, 2000 (622 Seiten) notwendig wird. XanClic legt gesteigerten Wert darauf, dass jeder der an USB 2.0 arbeitet, sich hier ebenfalls vertieft. Zur Zeit befinden wir uns nach meiner Abschätzung dort im Abschnitt 9.4. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:58:42 08.03.2010, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
10:36:24 08.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:26:29 08.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:35:26 08.03.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:46:46 08.03.2010 Titel: |
|
Zitieren |
Ich möchte noch den Dank an +gjm+ für den Hotfix ergänzen... |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:59:21 08.03.2010 Titel: |
|
Zitieren |
Ja, echt klasse! +gjm+ lebe hoch! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:59:38 08.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:38:49 08.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:15:01 09.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:32:37 09.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:45:11 10.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:19:20 10.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:10:43 10.03.2010 Titel: |
|
Zitieren |
Rev. 203:
ehci.c Analyse-Zwischenschritt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:18:12 10.03.2010 Titel: |
|
Zitieren |
|
 |
Z
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.02.2010
Beiträge: 773
|
Z Mitglied
20:50:11 10.03.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:42:49 10.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:32:16 10.03.2010 Titel: |
|
Zitieren |
@Z: Tobiking und ich quälen uns momentan etwas herum, aber wir kommen vorwärts.
Diesen MS-Code kennen wir schon, bringt mich aber nicht wirklich weiter.
Was soll ich z.B. damit?
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /* Initialize the aperiodic list
* NB: This is the endpoint #0 used during configuration, we only
* initialize here only the fields that will not change.
*/
EhciWriteRegister(&Qhead->Ed.Next,
VirtualToPhysical(Qhead) | EHCI_POINTER_TYPE_QH);
EhciWriteRegister(&Qhead->Ed.EndpointCaps,
(1 << EHCI_QH_RL_SHIFT)
| (8 << EHCI_QH_MPS_SHIFT)
| EHCI_QH_H
| EHCI_QH_DTC
| EHCI_QH_480Mbps
);
EhciWriteRegister(&Qhead->Ed.TransferOverlay.Next,
EHCI_POINTER_TYPE_TERMINATOR);
EhciWriteRegister(&Qhead->Ed.TransferOverlay.Alternate,
EHCI_POINTER_TYPE_TERMINATOR);
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /* Initialize the aperiodic list
* NB: This is the endpoint #0 used during configuration, we only
* initialize here only the fields that will not change.
*/
EhciWriteRegister(&Qhead->Ed.Next,
VirtualToPhysical(Qhead) | EHCI_POINTER_TYPE_QH);
EhciWriteRegister(&Qhead->Ed.EndpointCaps,
(1 << EHCI_QH_RL_SHIFT)
| (8 << EHCI_QH_MPS_SHIFT)
| EHCI_QH_H
| EHCI_QH_DTC
| EHCI_QH_480Mbps
);
EhciWriteRegister(&Qhead->Ed.TransferOverlay.Next,
EHCI_POINTER_TYPE_TERMINATOR);
EhciWriteRegister(&Qhead->Ed.TransferOverlay.Alternate,
EHCI_POINTER_TYPE_TERMINATOR);
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /* Initialize the aperiodic list
* NB: This is the endpoint #0 used during configuration, we only
* initialize here only the fields that will not change.
*/
EhciWriteRegister(&Qhead->Ed.Next,
VirtualToPhysical(Qhead) | EHCI_POINTER_TYPE_QH);
EhciWriteRegister(&Qhead->Ed.EndpointCaps,
(1 << EHCI_QH_RL_SHIFT)
| (8 << EHCI_QH_MPS_SHIFT)
| EHCI_QH_H
| EHCI_QH_DTC
| EHCI_QH_480Mbps
);
EhciWriteRegister(&Qhead->Ed.TransferOverlay.Next,
EHCI_POINTER_TYPE_TERMINATOR);
EhciWriteRegister(&Qhead->Ed.TransferOverlay.Alternate,
EHCI_POINTER_TYPE_TERMINATOR);
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Z
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.02.2010
Beiträge: 773
|
Z Mitglied
00:11:06 11.03.2010 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: |
Was soll ich z.B. damit?
|
Als Beispiel verwenden, analysieren und verstehen.
Sonst seid ihr nächstes Jahr noch nicht fertig. |
_________________ a = b << c; /* shift happens */
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:15:11 11.03.2010 Titel: |
|
Zitieren |
Ich zitiere mal Tobiking aus dem IRC:
| Zitat: | | Gerade MS Code würde ich nicht nehmen ^^ |
Dennoch, wenn es hakt, schauen wir da schon rein. ehci.h fand ich dort ganz gut, weil man ein Gefühl für die notwendigen Strukturen und Defines bekommt. Sind aber auch Fehler drinnen, die ich bereits gesehen habe.
Wir wühlen uns durch die Specs von EHCI und USB 2.0. Das reicht erstmal an Infos. Eher zuviel als zu wenig. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:16:30 11.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:01:22 11.03.2010 Titel: |
|
Zitieren |
|
 |
XanClic
Mitglied
Benutzerprofil
Anmeldungsdatum: 13.10.2009
Beiträge: 95
|
XanClic Mitglied
17:32:04 11.03.2010 Titel: |
|
Zitieren |
Ich möchte ja kein Spielverderber oder Schwarzseher sein, aber vom Microsoftcode würde ich wirklich die Finger lassen. Inwieweit Linuxcode ansehen und den als Anleitung für ein BSD-OS zu nehmen schlimm ist, weiß ich nicht (denke nicht allzu schlimm), aber der MS-Code ist mit einem "All rights reserved" gekennzeichnet. Ich denke zwar nicht, dass MS euch deshalb verfolgen wird, aber trotzdem ist es rechtlich eher problematisch, sich den vorzunehmen, könnte ich mir vorstellen... |
_________________ http://www.lowlevel.eu/
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:04:11 11.03.2010 Titel: |
|
Zitieren |
Wir möchten das ja auch selbst verstehen und lösen. Bei EHCI und USB 2.0 kommt es echt auf den Durchblick und das Verstehen der Abläufe an. Irgendwo haben wir einen Mechanismus - vermutlich bei EHCI - noch nicht verstanden.
Einer meiner PCs zeigt ja auch noch J-State anstelle 0x1004 oder 0x1005 (high speed enabled). VBox läuft nicht richtig.
Ich hoffe nur, dass die physikalische Adresse, die VMM zurück gibt, ok ist. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:11:09 11.03.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:54:07 11.03.2010 Titel: |
|
Zitieren |
|
 |
Z
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.02.2010
Beiträge: 773
|
Z Mitglied
23:14:02 11.03.2010 Titel: |
|
Zitieren |
| XanClic schrieb: | | Ich möchte ja kein Spielverderber oder Schwarzseher sein, aber vom Microsoftcode würde ich wirklich die Finger lassen. Inwieweit Linuxcode ansehen und den als Anleitung für ein BSD-OS zu nehmen schlimm ist, weiß ich nicht (denke nicht allzu schlimm), aber der MS-Code ist mit einem "All rights reserved" gekennzeichnet. Ich denke zwar nicht, dass MS euch deshalb verfolgen wird, aber trotzdem ist es rechtlich eher problematisch, sich den vorzunehmen, könnte ich mir vorstellen... |
Du sollst ihn auch nicht kopieren, sondern davon lernen. |
_________________ a = b << c; /* shift happens */
|
|
 |
XanClic
Mitglied
Benutzerprofil
Anmeldungsdatum: 13.10.2009
Beiträge: 95
|
XanClic Mitglied
23:14:43 11.03.2010 Titel: |
|
Zitieren |
| Z schrieb: | | XanClic schrieb: | | Ich möchte ja kein Spielverderber oder Schwarzseher sein, aber vom Microsoftcode würde ich wirklich die Finger lassen. Inwieweit Linuxcode ansehen und den als Anleitung für ein BSD-OS zu nehmen schlimm ist, weiß ich nicht (denke nicht allzu schlimm), aber der MS-Code ist mit einem "All rights reserved" gekennzeichnet. Ich denke zwar nicht, dass MS euch deshalb verfolgen wird, aber trotzdem ist es rechtlich eher problematisch, sich den vorzunehmen, könnte ich mir vorstellen... |
Du sollst ihn auch nicht kopieren, sondern davon lernen. |
Ich weiß nicht, ob es das besser macht. |
_________________ http://www.lowlevel.eu/
|
|
 |
Z
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.02.2010
Beiträge: 773
|
Z Mitglied
23:22:27 11.03.2010 Titel: |
|
Zitieren |
| XanClic schrieb: | | Z schrieb: | | XanClic schrieb: | | Ich möchte ja kein Spielverderber oder Schwarzseher sein, aber vom Microsoftcode würde ich wirklich die Finger lassen. Inwieweit Linuxcode ansehen und den als Anleitung für ein BSD-OS zu nehmen schlimm ist, weiß ich nicht (denke nicht allzu schlimm), aber der MS-Code ist mit einem "All rights reserved" gekennzeichnet. Ich denke zwar nicht, dass MS euch deshalb verfolgen wird, aber trotzdem ist es rechtlich eher problematisch, sich den vorzunehmen, könnte ich mir vorstellen... |
Du sollst ihn auch nicht kopieren, sondern davon lernen. |
Ich weiß nicht, ob es das besser macht.
|
Kommt wohl auf die Person an. Ich jedenfalls finde fremde Code-Beispiele oft sehr hilfreich. |
_________________ a = b << c; /* shift happens */
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:30:31 11.03.2010 Titel: |
|
Zitieren |
@Z: in welcher Funktion läuft ein Control Transfer auf der asynchronen Liste ab? |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
XanClic
Mitglied
Benutzerprofil
Anmeldungsdatum: 13.10.2009
Beiträge: 95
|
XanClic Mitglied
23:34:47 11.03.2010 Titel: |
|
Zitieren |
| Z schrieb: | | Kommt wohl auf die Person an. Ich jedenfalls finde fremde Code-Beispiele oft sehr hilfreich. |
Hm, solche Sätze kenne ich noch von jemand anderem... Egal.
Ich natürlich auch. Mein OS steht nicht ohne Grund unter der GPL, damit ich vollkommen legal GPL-Code ansehen und mich davon (unbegrenzt weit) inspirieren lassen kann. Aber PrettyOS steht erstens nicht unter der GPL und zweitens sind bei diesem Code sogar alle Rechte vorbehalten. Und Lizenzen verletzen ist eher doof.
(Das Problem ist halt immer: Angucken ist an sich wohl kein Problem, aber wer garantiert am Ende, dass man nicht doch unbewusst kopiert hat?) |
_________________ http://www.lowlevel.eu/
|
|
 |
Z
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.02.2010
Beiträge: 773
|
Z Mitglied
23:39:02 11.03.2010 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: | | @Z: in welcher Funktion läuft ein Control Transfer auf der asynchronen Liste ab? |
Was fragst Du mich? Ich habe mich mit USB noch nie beschäftigt. Es gibt aber IMHO ohne Ende Literatur zu USB, Bücher und Spezifikationen.
Vielleichst sucht Du mal nach einem Minimalbeispiel, etwa einer USB-Host Implementation für Mikrokontroller. Solche Codes sind weniger durchsetzt von Systemaufrufen. Im Internet solltest Du einiges finden.
Edit: Ist möglicherweise wertlos, weil zu hardwareabhängig. |
_________________ a = b << c; /* shift happens */
Zuletzt bearbeitet von Z am 23:53:08 11.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:36:02 12.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:48:19 12.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:06:32 12.03.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:49:04 12.03.2010 Titel: |
|
Zitieren |
Revision 212:
- Ausgabe der Memory-Größe in Bytes, sowie in KiB/MiB/GiB (je nach Größe) und KB/MB/GB
- weekday wird nicht mehr aus cmos ausgelesen. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:00:15 12.03.2010 Titel: |
|
Zitieren |
Revision 213:
Veränderungen in ehci.c
testtransfer auch bei Anschluss eines Hispeed-Gerätes |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:42:42 12.03.2010 Titel: |
|
Zitieren |
Revision 214:
Veränderungen in ehci.c:
void* createQTD(uint32_t next, uint8_t pid, bool toggle, uint32_t tokenBytes)
zusätzlicher Parameter tokenBytes |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:28:51 12.03.2010 Titel: |
|
Zitieren |
Rev. 215:
ehci.c: kleine Veränderungen um Statusbyte der qTD anzuzeigen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:37:48 12.03.2010 Titel: |
|
Zitieren |
Rev. 216:
ehci.c: kleine Veränderungen, um Packet der qTD anzuzeigen
(Funktion ergibt allerdings #PF ??) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
00:05:14 13.03.2010 Titel: |
|
Zitieren |
Rev. 217: Einige Mini-Änderungen, z.B. Kommentare und dergleichen. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:21:22 13.03.2010 Titel: |
|
Zitieren |
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
00:49:11 13.03.2010 Titel: |
|
Zitieren |
rev. 219: Das MMIO der Netzwerkkarte sollte jetzt über virtuellen Speicher laufen. Bitte mal checken! |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:59:41 13.03.2010 Titel: |
|
Zitieren |
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
17:01:38 13.03.2010 Titel: |
|
Zitieren |
Revision 220: User Heap, malloc/free in der User-Lib. Bisher einfacher Placement-Allokator, wer einen "richtigen" Allokator bauen will, ist herzlich eingeladen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:03:46 13.03.2010 Titel: |
|
Zitieren |
Badstrand: wir geben normalerweise die FloppyImage.bin mit, falls jemand das nicht selbst kompilieren kann.
Danke für das Feature. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:05:14 13.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
17:17:54 13.03.2010 Titel: |
|
Zitieren |
Ok, Rev 221: FloppyImage.bin ist mit dabei. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:39:56 13.03.2010 Titel: |
|
Zitieren |
Rev. 222:
ehci.c:
- Virtual Box läuft nun auch (Work-around für IRQ)
- Status-Byte des QTD wird analysiert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
19:21:11 13.03.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:22:42 13.03.2010 Titel: |
|
Zitieren |
Rev. 224:
ehci.c: Veränderungen in resetPort |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:23:07 13.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:20:07 13.03.2010 Titel: |
|
Zitieren |
Rev. 225:
- userlib.hpp: free und malloc ergänzt
- Bugfix: Auswahl der passenden Speichergrößeneinheit verbessert (folgendes passiert nicht mehr: "0 GiB / 1 GB", bzw. "0 MiB / 1 MB")
|
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:58:41 13.03.2010 Titel: |
|
Zitieren |
Rev. 226:
ehci.c und ckernel.c:
work-around für das sleepMilliSeconds(...) Problem in resetPort(...)
Der Zähler (sehr schlechter hotfix) ist verschwunden.
Folgerung: Multithreading wird benötigt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:06:38 14.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:19:57 14.03.2010 Titel: |
|
Zitieren |
Rev. 227:
ehci.c
usb2.h/c Analyse des device-Descriptors |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:26:12 14.03.2010 Titel: |
|
Zitieren |
Rev. 228:
ehci.c
Handshake in testTransfer ergänzt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:49:21 14.03.2010 Titel: |
|
Zitieren |
Rev. 229:
kleine verbesserungen, usb.h/.c war vergessen worden |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:21:11 14.03.2010 Titel: |
|
Zitieren |
Rev. 230:
USB testTransfer von ehci.c nach usb2.c verlagert
Variablen-Deklarationen von ehci.c nach ehci.h |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:02:39 14.03.2010 Titel: |
|
Zitieren |
Rev. 231:
CDI-Header implementiert; Anpassungsaufwand notwendig
Bisher nur: in time.c cmos_read ausgetauscht gegen cdi_cmos_read
wrapper implementation: cdi_cmos.c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:13:17 14.03.2010 Titel: |
|
Zitieren |
Rev. 232:
- CDI-Ordner angelegt, Header umbenannt und einsortiert
- time.c: CDI-Test auskommentiert
- cmos.h wird nun in time.c includiert statt in time.h
|
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:33:00 14.03.2010 Titel: |
|
Zitieren |
Rev. 233:
Mehrfacher testTransfer beim Hochfahren mit eingestecktem USB-Device verhindert durch initEHCIFlag |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
22:06:58 14.03.2010 Titel: |
|
Zitieren |
Rev. 234 (versehentlich 235 in ckernel.c):
- os.h: uintptr_t ergänzt
- Zeilenenden der cdi-Header vereinheitlicht
- Source-files für CDI hinzugefügt, nach kernel/cdi verschoben
- makefile angepasst
EDIT: Übrigens nicht nur in ckernel.c... Auch in der Anmerkung beim Commit ists falsch. |
Zuletzt bearbeitet von Mr X am 22:13:14 14.03.2010, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:14:26 14.03.2010 Titel: |
|
Zitieren |
Rev. 235:
- CDI-Dateien aufgeräumt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:30:01 15.03.2010 Titel: |
|
Zitieren |
Versuch die blöde händische Rev.-Angabe automatisch seitens SVN zu ersetzen ist leider misslungen:
Rev. 236-238
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | static void init()
47 {
48 clear_screen();
49 settextcolor(14,0);
50 char buf[40];
51 const char* revStr = "$Rev$"; //SVN <--- 3 verschiedene Versuche, nix klappt
52 strcpy(buf,"PrettyOS [");
53 strcat(buf,revStr);
54 strcat(buf,"]\n");
55 printformat(buf);
56 //printformat("PrettyOS [Version 0.0.0.235]\n");
57 gdt_install();
58 idt_install();
59 timer_install();
60 keyboard_install();
61 syscall_install();
62 settextcolor(15,0);
63 }
64
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | static void init()
47 {
48 clear_screen();
49 settextcolor(14,0);
50 char buf[40];
51 const char* revStr = "$Rev$"; //SVN <--- 3 verschiedene Versuche, nix klappt
52 strcpy(buf,"PrettyOS [");
53 strcat(buf,revStr);
54 strcat(buf,"]\n");
55 printformat(buf);
56 //printformat("PrettyOS [Version 0.0.0.235]\n");
57 gdt_install();
58 idt_install();
59 timer_install();
60 keyboard_install();
61 syscall_install();
62 settextcolor(15,0);
63 }
64
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | static void init()
47 {
48 clear_screen();
49 settextcolor(14,0);
50 char buf[40];
51 const char* revStr = "$Rev$"; //SVN <--- 3 verschiedene Versuche, nix klappt
52 strcpy(buf,"PrettyOS [");
53 strcat(buf,revStr);
54 strcat(buf,"]\n");
55 printformat(buf);
56 //printformat("PrettyOS [Version 0.0.0.235]\n");
57 gdt_install();
58 idt_install();
59 timer_install();
60 keyboard_install();
61 syscall_install();
62 settextcolor(15,0);
63 }
64
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 02:43:37 15.03.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:32:18 15.03.2010 Titel: |
|
Zitieren |
|
 |
Tobiking2
Mitglied
Benutzerprofil
Anmeldungsdatum: 12.04.2009
Beiträge: 705
|
Tobiking2 Mitglied
08:21:23 15.03.2010 Titel: |
|
Zitieren |
Das mit $Rev$ einzubauen ist kein Problem, allerdings tut es nicht das was du dir vorstellst. Das ist nämlich nur die Revision der Datei in der es steht und nicht die des ganzen Repository. Also solange sich die ckernel.c nicht ändert zählt das nicht hoch. Das steht bei deinem ersten Link auch in dem großen gelben Kasten. Da steht zudem auch das es keine SVN Möglichkeit gibt eine globale Revision einzutragen. Das muss immer extern über ein Programm/Script erledigt werden. Ein commit Hook wäre dafür z.B. ganz passend, aber das lässt Sourceforge glaube ich nicht zu. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:31:23 15.03.2010 Titel: |
|
Zitieren |
Rev. 240: kernel.bin: 57.856 Bytes
http://prettyos.svn.sourceforge.net/viewvc/prettyos?view=rev&revision=240
ehci.c: restart bei Host System Error (klappt endlich bei meinem störrischen PC!)
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | 1 2 3 4 5 6 7 8 9 10 11 12 | 179 if( pOpRegs->USBSTS & STS_HOST_SYSTEM_ERROR )
180 {
181 settextcolor(4,0);
182 printformat("\nHost System Error Interrupt");
183 settextcolor(15,0);
184 pOpRegs->USBCMD &= ~CMD_ASYNCH_ENABLE;
185 pOpRegs->USBSTS |= STS_INTMASK;
186 printformat("\nRestart HC after fatal error");
187 initEHCIFlag = false;
188 startHostController();
189 enablePorts();
190 }
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | 179 if( pOpRegs->USBSTS & STS_HOST_SYSTEM_ERROR )
180 {
181 settextcolor(4,0);
182 printformat("\nHost System Error Interrupt");
183 settextcolor(15,0);
184 pOpRegs->USBCMD &= ~CMD_ASYNCH_ENABLE;
185 pOpRegs->USBSTS |= STS_INTMASK;
186 printformat("\nRestart HC after fatal error");
187 initEHCIFlag = false;
188 startHostController();
189 enablePorts();
190 }
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | 179 if( pOpRegs->USBSTS & STS_HOST_SYSTEM_ERROR )
180 {
181 settextcolor(4,0);
182 printformat("\nHost System Error Interrupt");
183 settextcolor(15,0);
184 pOpRegs->USBCMD &= ~CMD_ASYNCH_ENABLE;
185 pOpRegs->USBSTS |= STS_INTMASK;
186 printformat("\nRestart HC after fatal error");
187 initEHCIFlag = false;
188 startHostController();
189 enablePorts();
190 }
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:39:33 15.03.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:36:30 15.03.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:54:02 15.03.2010 Titel: |
|
Zitieren |
Revision 242:
- Keyboard-Belegungsheader neu formatiert (Die waren so unübersichtlich)
- keyboard_GER.h: ³ wurde nicht angezeigt -> vorerst durch 0 ersetzt
- keyboard_US.h funktioniert nun (AltGr-Belegung fehlte)
- NASM auf 2.08 aktualisiert (Unterschied zu rc10 nur Versionsnummer)
- fs.h: Zeilenenden vereinheitlicht |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:26:29 16.03.2010 Titel: |
|
Zitieren |
Revision 243:
- Shift-AltGr-Keycodes freigeschaltet
- keyboard.c überarbeitet -> Wenn kein Key für z.B. Shift-AltGr vorhanden -> "Downgrade" zu AltGr u.s.w. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:27:04 16.03.2010 Titel: |
|
Zitieren |
Rev. 244:
ckernel.c und ehci.c: Flags werden in ckernel.c jetzt nicht in sek-Schleife, sondern direkt bearbeitet, aber noch keine brauchbare Lösung für alle Fälle. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:40:49 16.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:36:58 17.03.2010 Titel: |
|
Zitieren |
Rev. 245:
- fat12, floppy, file modular etwas besser getrennt (neu: file.h/.c)
- Speicher für file wird per malloc geholt und anschließend wieder frei gegeben. Dies bietet nun auch die Möglichkeit andere Module als executable elf-Dateien zu laden (mal mit kernel.bin oder boot2.bin Reaktion ausprobieren). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:01:54 17.03.2010 Titel: |
|
Zitieren |
Revision 246:
Bugfixes:
- Fehlerhafte Dateibenennung der CDI-Implementation
- Fehler in keyboard_US.h
- Key-Downgradereihenfolge korrigiert
- US-Layout wird verwendet, wenn keines definiert ist. Standard natürlich weiterhin: Deutsch |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:55:49 18.03.2010 Titel: |
|
Zitieren |
Rev. 247:
ehci.c, ckernel.c und usb2.c: Versuch, den Host System Error durch mehrfachen Restart zu umgehen. Durchlauf etwas beschleunigt. Hoffentlich klappt es nun besser, damit wir mit USB 2.0 und anderen Feinheiten weiter machen können. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:44:10 18.03.2010 Titel: |
|
Zitieren |
Rev. 248: ehci.c: Zwischenschritt ( zwei zusätzliche Zeitschleifen )
Bringt aber nix, eher schlechter (Test auf meinem Entw.-PC und bei Tobiking) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 15:55:54 18.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:14:24 18.03.2010 Titel: |
|
Zitieren |
Rev. 249:
Diese Version wurde mit Basis rev. 240 bei ehci.c wieder aufgebaut, da die letzten Veränderungen keinen wirklichen Vorteil brachten. Nun fährt zumindest mein "störrischer PC" nach einigen Fehlversuchen (Host System Error) in die richtige Spur. Die Details der übertragenen Daten werden nur bei length != 0 angezeigt, um den Bildschirm nicht mit Nullen zu überladen.
Cuervo - unser Cheftester - sieht keine Fehler auf seinem Test-PC. Bei Tobiking läuft es leider noch nicht.
Hier ein Screenshot zum vergleich mit dem eigenen Ergebnis:
http://www.henkessoft.de/OS_Dev/Bilder/rev249.PNG |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:33:59 18.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:03:54 19.03.2010 Titel: |
|
Zitieren |
Rev. 250:
- Bessere Hi-Speed-Erkennung (vs. J-State)
- Systemfrequenz erhöht von 100 Hz auf 1000 Hz |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:33:43 19.03.2010 Titel: |
|
Zitieren |
Rev. 251:
ckernel.c, util.c: Testversion für rdtsc-Messung pro Millisekunde (Ziel: sleep ohne Interrupt)
http://en.wikipedia.org/wiki/Time_Stamp_Counter
| Zitat: | | 64-bit register present on all x86 processors since the Pentium. It counts the number of ticks since reset. Instruction RDTSC returns the TSC in EDX:EAX. |
Test wird momentan in der Zeitanzeige der kernel-idle-loop durchgeführt, weil wir dort einen Messabstand von jeweils einer Sekunde haben.
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | while( true )
{
//...
OldRdtscValue = CurrentRdtscValue;
if( CurrentSeconds != CurrentSecondsOld )
{
// all values 64 bit
CurrentRdtscValue = rdtsc();
RdtscDiffValue = CurrentRdtscValue - OldRdtscValue;
uint64_t RdtscKCounts = RdtscDiffValue>>10; // divide by 1024
uint32_t RdtscKCountsHi = RdtscKCounts >> 32;
uint32_t RdtscKCountsLo = RdtscKCounts & 0xFFFFFFFF;
if(RdtscKCountsHi==0)
{
printformat("\nRdtsc/ms: %d\n",(RdtscKCountsLo/1000)<<10 );
}
else
{
printformat("\nRdtscKCountsHi: %d RdtscKCountsLo: %d\n",
RdtscKCountsHi, RdtscKCountsLo );
}
//...
}
//...
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | while( true )
{
//...
OldRdtscValue = CurrentRdtscValue;
if( CurrentSeconds != CurrentSecondsOld )
{
// all values 64 bit
CurrentRdtscValue = rdtsc();
RdtscDiffValue = CurrentRdtscValue - OldRdtscValue;
uint64_t RdtscKCounts = RdtscDiffValue>>10; // divide by 1024
uint32_t RdtscKCountsHi = RdtscKCounts >> 32;
uint32_t RdtscKCountsLo = RdtscKCounts & 0xFFFFFFFF;
if(RdtscKCountsHi==0)
{
printformat("\nRdtsc/ms: %d\n",(RdtscKCountsLo/1000)<<10 );
}
else
{
printformat("\nRdtscKCountsHi: %d RdtscKCountsLo: %d\n",
RdtscKCountsHi, RdtscKCountsLo );
}
//...
}
//...
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | while( true )
{
//...
OldRdtscValue = CurrentRdtscValue;
if( CurrentSeconds != CurrentSecondsOld )
{
// all values 64 bit
CurrentRdtscValue = rdtsc();
RdtscDiffValue = CurrentRdtscValue - OldRdtscValue;
uint64_t RdtscKCounts = RdtscDiffValue>>10; // divide by 1024
uint32_t RdtscKCountsHi = RdtscKCounts >> 32;
uint32_t RdtscKCountsLo = RdtscKCounts & 0xFFFFFFFF;
if(RdtscKCountsHi==0)
{
printformat("\nRdtsc/ms: %d\n",(RdtscKCountsLo/1000)<<10 );
}
else
{
printformat("\nRdtscKCountsHi: %d RdtscKCountsLo: %d\n",
RdtscKCountsHi, RdtscKCountsLo );
}
//...
}
//...
}
| |
Funktioniert bestens!
Allerdings benötigen wir da einen Mittelwert aus mehreren Messsungen, wobei man die ersten verwerfen muss, wie man im Test sehr gut sieht. Das könnten wir im EHCI-Modul einsetzen, um unabhängig vom Timer-Interrupt Delays durchführen zu können.
Anmerkung:
uint64_t RdtscKCounts = RdtscDiffValue>>10; // divide by 1024
Diese Zeile anstelle direkte Division durch 1000 ist notwendig, weil der x86 hier keine Funktionen zur Verfügung stellt für unsigned long long. Die Korrektur (RdtscKCountsLo/1000)<<10 erfolgt dann auf 32-Bit-Niveau. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 09:38:49 19.03.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:24:59 19.03.2010 Titel: |
|
Zitieren |
Rev. 252:
ckernel.c: CPU Frequenz (MHz) in Statuszeile ergänzt. Ausdruck im normalen Bildschirmbereich ausgeblendet. Bitte prüfen, ob es überall stimmt. Was passiert, wenn man PCs vor Pentium verwendet? |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:46:28 19.03.2010 Titel: |
|
Zitieren |
Rev. 253:
Zwischenschritt zum Test von delay(...µs) anstelle sleepMilliSeconds(...ms).
Hat irgendwo noch eine Loop zuviel in ehci.c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:49:45 19.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:10:39 19.03.2010 Titel: |
|
Zitieren |
Rev. 254:
in usb2.c waren auch noch sleepMilliSeconds(...), die im INT geblockt haben.
Zwar immer noch nicht rund, aber jetzt stimmt die Basis zum Experimentieren, zumindest halbwegs. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:01:22 19.03.2010 Titel: |
|
Zitieren |
Rev. 255:
Zwischenlösung.
Hauptproblem: Host System Error bei Aktivieren der asychronen Liste, der bisher nicht sicher überwunden werden kann. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:01:46 19.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Z
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.02.2010
Beiträge: 773
|
Z Mitglied
22:04:46 19.03.2010 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: |
Zwar immer noch nicht rund, aber jetzt stimmt die Basis zum Experimentieren, zumindest halbwegs. |
Sorry dass ich mich nochmal einmische.
Aber vor einigen Tagen hat jemand ein Entwicklungskit für USB empfohlen, ich glaube mit einem ARM-Prozessor. Ich vermute, dass ihr es mit sowas einfacher hättet. Wenn nicht, betrachtet dieses Posting bitte als hinfällig. |
_________________ a = b << c; /* shift happens */
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:19:50 20.03.2010 Titel: |
|
Zitieren |
Rev. 256:
Eine Version, in der jede Funktion bei EHCI und USB in der Abfolge angezeigt und mit 2 sec Pausen (delay 2000000) versehen wird, um das Debuggen zu erleichtern.
Diese Version läuft OHNE "Host System Error" auf meinem Entwicklungs-PC hoch!
Tobiking und Cuervo et. al.:
Bitte testen! Bin gespannt. Tobiking hat leider immer noch unerklärlichen Host System Error.
Wenn der Fehler auch bei euch verschwindet oder die Ursache gefunden wird, müssen wir gemeinsam heraus finden, was der wesentliche Punkt ist, um den Host System Error sicher zu vermeiden.
@Z: das Problem liegt eher im Bereich EHCI, evtl. sogar PCI. USB liegt im Wesentlichen noch vor uns. Wir quälen uns mit EHCI, um möglichst viele Mitstreiter mitzunehmen, aber wir sind auf dem richtigen Weg, auch wenn er etwas serpentinenreich ist. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 03:33:47 20.03.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:18:27 20.03.2010 Titel: |
|
Zitieren |
Rev. 258: (Rev. 257 fehlerhaft)
pciDev_t pciDev_Array[PCIARRAYSIZE];
DeactivateLegacySupport(uint32_t num) mit Debug-Prints bereichert. Offenbar Problem beim "Wait for BIOS-Semaphore being not set". EHCI muss dem Pre-OS (BIOS) entrissen werden!
Wenn sowohl BIOS als OS dern HC beherrschen dürfen, muss es zwangsläufig krachen! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:27:06 20.03.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:44:35 20.03.2010 Titel: |
|
Zitieren |
Rev. 259:
pci_write_byte-Fkt. korrigiert (Danke an XanClic )
BIOS ---> OS geht jetzt bei EHCI ext. cap.
Leider immer noch HostSystemError nach dem Einschalten der AsyncList bei meinem PC mit Ext.Cap. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:45:57 20.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:21:28 21.03.2010 Titel: |
|
Zitieren |
Rev. 260:
usb2.c: ohne "doorbell" läuft es besser
| Zitat: | | Interrupt on Async Advance Doorbell R/W. This bit is used as a doorbell by software to tell the host controller to issue an interrupt the next time it advances asynchronous schedule. Software must write a 1 to this bit to ring the doorbell. When the host controller has evicted all appropriate cached schedule state, it sets the Interrupt on Async Advance status bit in the USBSTS register. If the Interrupt on Async Advance Enable bit in the USBINTR register is a one then the host controller will assert an interrupt at the next interrupt threshold. See Section 4.8.2 for operational details. The host controller sets this bit to a zero after it has set the Interrupt on Async Advance status bit in the USBSTS register to a one. Software should not write a one to this bit when the asynchronous schedule is disabled. Doing so will yield undefined results. | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:52:25 21.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:44:54 21.03.2010 Titel: |
|
Zitieren |
Rev. 261:
ehci.c: Fehler in DeactivateLegacySupport korrigiert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:19:28 21.03.2010 Titel: |
|
Zitieren |
Rev. 262:
nur kleine Veränderungen
Der "Host System Error", der bei einigen Systemen noch kommt, kann wie folgt unterdrückt werden:
in ehci.c, Funktion void createQH(void* address, void* firstQTD, uint32_t device)
| C/C++ Code: | // uint32_t physNext = paging_get_phys_addr(kernel_pd, firstQTD);
// head->qtd.next = physNext;
/// TEST
head->qtd.next = 0x1; | |
| C/C++ Code: | // uint32_t physNext = paging_get_phys_addr(kernel_pd, firstQTD);
// head->qtd.next = physNext;
/// TEST
head->qtd.next = 0x1; | |
| C/C++ Code: | // uint32_t physNext = paging_get_phys_addr(kernel_pd, firstQTD);
// head->qtd.next = physNext;
/// TEST
head->qtd.next = 0x1; | |
Damit sind die QTD vom QH entkoppelt. Was das bedeutet, ist bisher unklar. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 15:57:22 21.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:07:11 21.03.2010 Titel: |
|
Zitieren |
Rev. 263:
ehci.c: QTD kann nun auch NULL anstelle firstQTD annehmen, damit man QH ohne QTD erzeugen kann. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:29:08 21.03.2010 Titel: |
|
Zitieren |
Rev. 264:
ehci.c: Fehler in DeactivateLegacySupport behoben
jetzt: if(failed){/* manueller Versuch */} <--- könnte das Problem BIOS=1 && OS=1 bei störrischem BIOS lösen. Macht es aber offensichtlich nicht (Test bei Tobiking). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:43:02 21.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:47:21 21.03.2010 Titel: |
|
Zitieren |
Revision 265:
- Hello-Programm auf 0.5 aktualisiert (kleiner Zeilenfehler behoben)
- makefile: clear-target ergänzt, clear.bat beigelegt
- Shell wird jetzt mit der start.asm der Usertools kompiliert
- HELLO.ELF statt hello.elf |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:03:02 21.03.2010 Titel: |
|
Zitieren |
Revision 266:
- printf -> kprintf;
- printformat -> printf (Deswegen sind so viele Dateien geändert)
- Das neue printf und i2hex in userlib übernommen; my_stdarg.h mit userlib mitgeliefert
- typedefs aus os.h in userlib übernommen
- TTT auf Version 5.1 aktualisiert (Man kann nicht mehr gewinnen und zugleich Remis spielen, mglw. Verbesserung der Lauffähigkeit auf manchen PCs) |
Zuletzt bearbeitet von Erhard Henkes am 01:35:49 22.03.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
03:05:09 22.03.2010 Titel: |
|
Zitieren |
Revision 267:
ehci.c: Vereinfachungen in der Ausgabe zur besseren Übersicht
interrupts.asm:
DO_IDT_ENTRY SYSCALL_NUMBER, 0x0008, 0xEE00
DO_IDT_ENTRY CONTEXT_SWITCH_CALL, 0x0008, 0x8E00 <---
syscall.c, video.c: nur Formatierung/Kommentare
User-Programm: TTT (hello.elf) Zahleneingabe wird abgebrochen
(Prompt (=Totalabbruch) bzw. unerwartete Fehlermeldung, dass Zahl bereits verwendet wird).
Irgendwas bei der Ausführung der User-Programme ist "kaputt".
DO_IDT_ENTRY CONTEXT_SWITCH_CALL, 0x0008, 0xEE00 hilft auch nichts, also OK. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 03:46:55 22.03.2010, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
16:34:14 22.03.2010 Titel: |
|
Zitieren |
Ja, irgendwas ist da kaputt. Das müssen wir alles nochmal durchgehen, u.a. video.c, wie ehenkes im IRC schon sagte.
Ich hab übrigens mal die printf etwas erweitert&korrigiert, gibts bald... |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:42:13 22.03.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:49:42 22.03.2010 Titel: |
|
Zitieren |
Rev. 269:
- printf: Ausgabe korrigiert, Funktion vereinfacht, Buffer verkleinert
- os.h/descriptor_tables.h: extern vor Funktionsdeklarationen zwecks Vereinheitlichung entfernt
- min und max von util.c nach math.c verlegt
- Klammern bei via Präprozessor definierten Fkts. ergänzt
- clear.bat: pause entfernt (Relikt vom testen der Funktionsfähigkeit) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:44:20 22.03.2010 Titel: |
|
Zitieren |
Rev. 270:
file.c: (floppy disk motor off)
| C/C++ Code: | printf("file not found in root directory\n");
flpydsk_control_motor(false); | |
| C/C++ Code: | printf("file not found in root directory\n");
flpydsk_control_motor(false); | |
| C/C++ Code: | printf("file not found in root directory\n");
flpydsk_control_motor(false); | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:55:18 23.03.2010 Titel: |
|
Zitieren |
Rev. 271:
ehci.c:
Umsortierung entsprechend:
Intel® 82801EB (ICH5), 82801ER (ICH5R), and 82801DB (ICH4) Enhanced Host Controller Interface (EHCI)
Programmer’s Reference Manual (PRM) April 2003
Entsprechende Kommentare eingefügt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Badestrand
Mitglied
Benutzerprofil
Anmeldungsdatum: 29.08.2006
Beiträge: 4342
|
Badestrand Mitglied
18:14:58 23.03.2010 Titel: |
|
Zitieren |
Hey Leute,
bin ab Montag dreieinhalb Monate im Ausland, deshalb erstmal nichts mehr von mir (ich war hier in letzter Zeit ja leider eh kaum präsent).
Bin auf den dann vorherrschenden Stand gespannt, geht ja echt voran
Viele Grüße |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:34:33 23.03.2010 Titel: |
|
Zitieren |
Schade, das Du dann erstmal nicht weiterarbeiten kannst, an PrettyOS.
Aber natürlich trotzdem viel Vergnügen im Ausland. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:33:14 23.03.2010 Titel: |
|
Zitieren |
Rev. 272:
kleinere Veränderungen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:53:17 23.03.2010 Titel: |
|
Zitieren |
Rev. 273:
Vorschlag von +gjm+ im Fehler-Thread umgesetzt (keine Kernel-Ausgaben nach dem User-Programmstart im gescrollten Ausgabebereich ):
// printf("\n\n"); // <- ... sollte auf ausgaben ab hier verzichtet werden |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:58:41 23.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:19:53 24.03.2010 Titel: |
|
Zitieren |
Revision 274:
- makefile komplett neu (Dank auch an mastamind und Tobiking für die Hilfe)
- clean.bat statt clear.bat |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:24:07 24.03.2010 Titel: |
|
Zitieren |
Superjob!
kleiner Fehler:
| Code: | nasm kernel/data.asm -O32 -f elf -Ikernel/ -o object_files/kernel/data.o
kernel/data.asm:5: error: `incbin': unable to open file `initrd.dat'
mingw32-make: *** [kernel/data.o] Error 1
| |
| Code: | nasm kernel/data.asm -O32 -f elf -Ikernel/ -o object_files/kernel/data.o
kernel/data.asm:5: error: `incbin': unable to open file `initrd.dat'
mingw32-make: *** [kernel/data.o] Error 1
| |
| Code: | nasm kernel/data.asm -O32 -f elf -Ikernel/ -o object_files/kernel/data.o
kernel/data.asm:5: error: `incbin': unable to open file `initrd.dat'
mingw32-make: *** [kernel/data.o] Error 1
| |
Kopiert man initrd.dat aus einer alten Vorlage nach ...\kernel\ dann klappts, es fehlt also dort. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:56:32 24.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
23:11:29 24.03.2010 Titel: |
|
Zitieren |
Revision 275:
Styleguide-Anpassungen (Tabs ersetzen, "if ("s usw.) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:44:58 25.03.2010 Titel: |
|
Zitieren |
Rev. 276: kleine Veränderungen, pci_write_byte getestet in ehci.c (auskommentiert)
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 | void pci_config_write_byte( uint8_t bus, uint8_t device, uint8_t func, uint8_t reg, uint8_t val )
{
outportl(PCI_CONFIGURATION_ADDRESS,
0x80000000
| (bus << 16)
| (device << 11)
| (func << 8)
| (reg & 0xFC) );
outportb(PCI_CONFIGURATION_DATA + (reg & 0x03), val);
} /// correctness of function pci_config_write_byte checked with bar0 from EHCI - ehenkes, 2010-03-24 | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | void pci_config_write_byte( uint8_t bus, uint8_t device, uint8_t func, uint8_t reg, uint8_t val )
{
outportl(PCI_CONFIGURATION_ADDRESS,
0x80000000
| (bus << 16)
| (device << 11)
| (func << 8)
| (reg & 0xFC) );
outportb(PCI_CONFIGURATION_DATA + (reg & 0x03), val);
} /// correctness of function pci_config_write_byte checked with bar0 from EHCI - ehenkes, 2010-03-24 | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | void pci_config_write_byte( uint8_t bus, uint8_t device, uint8_t func, uint8_t reg, uint8_t val )
{
outportl(PCI_CONFIGURATION_ADDRESS,
0x80000000
| (bus << 16)
| (device << 11)
| (func << 8)
| (reg & 0xFC) );
outportb(PCI_CONFIGURATION_DATA + (reg & 0x03), val);
} /// correctness of function pci_config_write_byte checked with bar0 from EHCI - ehenkes, 2010-03-24 | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:50:51 25.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
01:09:36 25.03.2010 Titel: |
|
Zitieren |
Revision 277:
- Style-Korrekturen
- Überflüssige Binaries entfernt. Darunter auch nasm! (Muss nun extra installiert werden, PATH setzen nicht vergessen)
- makefile-Fehler bezüglich initrd.dat behoben, target für user_test_c ergänzt (derzeit deaktiviert) |
Zuletzt bearbeitet von Mr X am 01:09:52 25.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:40:43 25.03.2010 Titel: |
|
Zitieren |
Rev. 278:
file.c: flpydsk_write(const char* name, const char* ext, void* memory, uint32_t size) <--- begonnen
flag in ehci.c, mit dem man den USB-Testtransfer einschalten kann, standard: aus |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:01:39 25.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:37:43 26.03.2010 Titel: |
|
Zitieren |
Rev. 279:
file.c: flpydsk_write(const char* name, const char* ext, void* memory, uint32_t size) weiter ausgebaut.
TODO:
1) FAT1 u. FAT2 aus FAT-Indices berechnen und in track0[...] übertragen.
2) File aus Memory in 512 Byte Paketen in die durch die FAT1 beschriebenen Sektoren schreiben. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:41:06 26.03.2010 Titel: |
|
Zitieren |
Rev. 280:
file.c: flpydsk_write(const char* name, const char* ext, void* memory, uint32_t size) funktioniert
Test mit Bildschirmausdruck (jede Sekunde)
Das überfordert reale Systeme. (Endung txt kommt nicht an)
Daher bitte noch mit Sim testen, z.B. mit Hex-Editor ab ca. 0x15000 auf Floppy Disk nachschauen.
Am besten mit Wordpad o.ä. anschauen und Umbruch auf Fenster oder Lineal einstellen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:25:01 26.03.2010 Titel: |
|
Zitieren |
Rev. 281:
Zeilenumbruch (CR LF) eingebaut (stimmt aber noch nicht), nur noch alle 40 sec ein "screenshot". Reale Diskette: TXT wird nicht angezeigt; File kann nicht geöffnet werden. Offenbar noch fehlerhafter Aufbau. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:45:06 26.03.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:49:02 26.03.2010 Titel: |
|
Zitieren |
Rev. 282:
Zeilenumbruch nun korrekt, Bild alle 2 Sekunden für tests mit Qemu. Öffnen der FloppyImage.bin z.B. mit MS WordPad. Nun muss man bei realer Floppy Disk nach FAT und Root Dir schauen, damit man dort auch öffnen und anzeigen kann. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:21:51 28.03.2010 Titel: |
|
Zitieren |
Was sich während des Ausfalls des Forums getan hat (Wir sind nicht ausgefallen ):
Revision 283:
- jetzt geht es endlich, lag an Nullen im Namen (8+3)
Revision 284:
- kprintf nimmt nun (wie printf) zusätzlich ... an.
- Versionsstring in Variable ausgelagert
- clear_userscreen heißt nun clear_console
- keyboard unterstützt nun Alt und Ctrl
- Weitere Vorbereitungen für "Multikonsolen"
Revision 285:
Revision 286:
- Multikonsolen! Umfangreiche Änderungen an video.c.
- putch (und kputch dadurch auch) überarbeitet
- Kleinere Korrekturen
mfg
Mr X
rev. 287:
styles |
Zuletzt bearbeitet von Erhard Henkes am 01:03:09 28.03.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:02:35 28.03.2010 Titel: |
|
Zitieren |
Rev. 288:
ckernel.c: setupFPU implementiert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:39:17 28.03.2010 Titel: |
|
Zitieren |
Rev. 289:
ehci.c: etwas vereinfachte Vorgehensweise bis zum USB-Transfer (wieder erlaubt)
Hier übrigens ein Bildschirmausdruck auf Diskette als TIME0.TXT:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | PrettyOS [Version 0.0.0.289] Shell
Memory size: 512 MiB / 536 MB (536870912 Bytes)
#0 0:0.0 dev:0746h vend:1039h IRQ:0
#1 0:1.0 dev:0002h vend:1039h IRQ:0
#2 0:2.0 dev:0008h vend:1039h IRQ:0
#3 0:2.5 dev:5513h vend:1039h IRQ:0
#4 0:2.7 dev:7012h vend:1039h IRQ:10
#5 0:3.0 dev:7001h vend:1039h IRQ:5 USB OHCI CFFFD000h MMIO sz:4096
#6 0:3.1 dev:7001h vend:1039h IRQ:11 USB OHCI CFFFE000h MMIO sz:4096
#7 0:3.2 dev:7002h vend:1039h IRQ:5 USB EHCI CFFFF000h MMIO sz:4096
>>> >>> function: analyzeEHCI
HCIVERSION: 0100h HCSPARAMS: 00102306h Ports: 6
HCCPARAMS: 00007070h
OpRegs Address: CFFFF020h
#8 0:4.0 dev:0900h vend:1039h IRQ:11
#9 0:12.0 dev:4300h vend:1186h IRQ:11
#10 1:0.0 dev:4150h vend:1002h IRQ:11
#11 1:0.1 dev:4170h vend:1002h IRQ:--
1.44 MB FDD device 0
<RAM Disk at C0005000h DIR> dev
35 info
12115 shell
$> | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | PrettyOS [Version 0.0.0.289] Shell
Memory size: 512 MiB / 536 MB (536870912 Bytes)
#0 0:0.0 dev:0746h vend:1039h IRQ:0
#1 0:1.0 dev:0002h vend:1039h IRQ:0
#2 0:2.0 dev:0008h vend:1039h IRQ:0
#3 0:2.5 dev:5513h vend:1039h IRQ:0
#4 0:2.7 dev:7012h vend:1039h IRQ:10
#5 0:3.0 dev:7001h vend:1039h IRQ:5 USB OHCI CFFFD000h MMIO sz:4096
#6 0:3.1 dev:7001h vend:1039h IRQ:11 USB OHCI CFFFE000h MMIO sz:4096
#7 0:3.2 dev:7002h vend:1039h IRQ:5 USB EHCI CFFFF000h MMIO sz:4096
>>> >>> function: analyzeEHCI
HCIVERSION: 0100h HCSPARAMS: 00102306h Ports: 6
HCCPARAMS: 00007070h
OpRegs Address: CFFFF020h
#8 0:4.0 dev:0900h vend:1039h IRQ:11
#9 0:12.0 dev:4300h vend:1186h IRQ:11
#10 1:0.0 dev:4150h vend:1002h IRQ:11
#11 1:0.1 dev:4170h vend:1002h IRQ:--
1.44 MB FDD device 0
<RAM Disk at C0005000h DIR> dev
35 info
12115 shell
$> | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | PrettyOS [Version 0.0.0.289] Shell
Memory size: 512 MiB / 536 MB (536870912 Bytes)
#0 0:0.0 dev:0746h vend:1039h IRQ:0
#1 0:1.0 dev:0002h vend:1039h IRQ:0
#2 0:2.0 dev:0008h vend:1039h IRQ:0
#3 0:2.5 dev:5513h vend:1039h IRQ:0
#4 0:2.7 dev:7012h vend:1039h IRQ:10
#5 0:3.0 dev:7001h vend:1039h IRQ:5 USB OHCI CFFFD000h MMIO sz:4096
#6 0:3.1 dev:7001h vend:1039h IRQ:11 USB OHCI CFFFE000h MMIO sz:4096
#7 0:3.2 dev:7002h vend:1039h IRQ:5 USB EHCI CFFFF000h MMIO sz:4096
>>> >>> function: analyzeEHCI
HCIVERSION: 0100h HCSPARAMS: 00102306h Ports: 6
HCCPARAMS: 00007070h
OpRegs Address: CFFFF020h
#8 0:4.0 dev:0900h vend:1039h IRQ:11
#9 0:12.0 dev:4300h vend:1186h IRQ:11
#10 1:0.0 dev:4150h vend:1002h IRQ:11
#11 1:0.1 dev:4170h vend:1002h IRQ:--
1.44 MB FDD device 0
<RAM Disk at C0005000h DIR> dev
35 info
12115 shell
$> | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:46:38 28.03.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:10:39 28.03.2010 Titel: |
|
Zitieren |
Rev. 290:
file.c: bei Löschkennung 0xE5 (momentan nur mit anderen OS oder Hex-Editor eintragbar) wird ein root dir entry jetzt auch überschrieben.
screenshot hexeditor in root dir (224 Einträge ab 0x2600): http://www.henkessoft.de/OS_Dev/Bilder/rev290_rootdir.PNG
Man sieht sehr gut die Löschkennung 0xE5 alter File-Einträge, die jetzt überschrieben werden.
Hier ein Ausschnitt aus TIME80.TXT:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | $> test file written to FDD: 4100 bytes, 9 sectors needed.
free root dir entry nr. 2
>>> >>> function: initEHCIHostController
>>> >>> function: startHostController
reset HC
>>> >>> function: DeactivateLegacySupport
DeactivateLegacySupport: eecp = 0070h
eecp = 0070h, eecp_id = 0001h
BIOS did not own the EHCI. No action needed.
HCHalted bit set to 0 (OK), ports can be enabled now.
>>> >>> function: enablePorts
>>> >>> function: resetPort 1
>>> >>> function: resetPort 2
>>> >>> function: resetPort 3
>>> >>> function: resetPort 4
>>> >>> function: resetPort 5
>>> >>> function: resetPort 6
Sunday, March 28, 2010, 12:07:21 80 s runtime. CPU: 1099 MHz | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | $> test file written to FDD: 4100 bytes, 9 sectors needed.
free root dir entry nr. 2
>>> >>> function: initEHCIHostController
>>> >>> function: startHostController
reset HC
>>> >>> function: DeactivateLegacySupport
DeactivateLegacySupport: eecp = 0070h
eecp = 0070h, eecp_id = 0001h
BIOS did not own the EHCI. No action needed.
HCHalted bit set to 0 (OK), ports can be enabled now.
>>> >>> function: enablePorts
>>> >>> function: resetPort 1
>>> >>> function: resetPort 2
>>> >>> function: resetPort 3
>>> >>> function: resetPort 4
>>> >>> function: resetPort 5
>>> >>> function: resetPort 6
Sunday, March 28, 2010, 12:07:21 80 s runtime. CPU: 1099 MHz | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | $> test file written to FDD: 4100 bytes, 9 sectors needed.
free root dir entry nr. 2
>>> >>> function: initEHCIHostController
>>> >>> function: startHostController
reset HC
>>> >>> function: DeactivateLegacySupport
DeactivateLegacySupport: eecp = 0070h
eecp = 0070h, eecp_id = 0001h
BIOS did not own the EHCI. No action needed.
HCHalted bit set to 0 (OK), ports can be enabled now.
>>> >>> function: enablePorts
>>> >>> function: resetPort 1
>>> >>> function: resetPort 2
>>> >>> function: resetPort 3
>>> >>> function: resetPort 4
>>> >>> function: resetPort 5
>>> >>> function: resetPort 6
Sunday, March 28, 2010, 12:07:21 80 s runtime. CPU: 1099 MHz | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 14:54:08 28.03.2010, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
16:22:33 28.03.2010 Titel: |
|
Zitieren |
Revision 291:
- Scroll-Begrenzung durch User eingefügt (Syscall)
- Shell macht davon Gebrauch (Ehenkes Infoleiste gerettet)
- Begrenzung von Status und Titelleiste nun mit grauer Trennlinie
- sprintf (von Iteem), wird auch nun benutzt statt manuellem Zusammenbau im kernel.
- Kleinigkeiten |
|
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
16:28:44 28.03.2010 Titel: |
|
Zitieren |
Rev. 292:
Style-Anpassungen^^ (schonwieder) in ckernel.c, ehci.c, file.c, syscall.c, video.c usw. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
09:43:44 29.03.2010 Titel: |
|
Zitieren |
Revision 293:
- Umfangreiche Änderungen an der shell
-- Infobereich restauriert
-- Feste Eingabezeile
-- Neues Design
- Syscall zum Begrenzen des Scroll-Bereichs mangels Nutzen & Konformität mit gutem Design wieder entfernt; Größe nun durch Kernel festgelegt |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:11:16 29.03.2010 Titel: |
|
Zitieren |
Revision 294:
- Nun gehen auch mehrere Userprogs gleichzeitig
- KQs der Konsolen getrennt.
Problem: gelegentlich #PFs in Userprogrammen |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:03:21 30.03.2010 Titel: |
|
Zitieren |
Revision 295:
- PF-Ursache behoben (Shell auf anderen Stackpointer als Userprogs)
- Umsortierung in task.c
- HELLO.ELF in Version 0.52; Üblen "Hack" beseitigt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:04:46 30.03.2010 Titel: |
|
Zitieren |
Rev. 296:
file.c: Zwischenschritt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
09:35:39 31.03.2010 Titel: |
|
Zitieren |
Revision 297:
- C++-Userprogramm kompiliert wieder, c++-Sourcefile für Userlib beigelegt (für C++-spezifische Features)
- Kleinere Umbauten und Formatierungskorrekturen
PS: Ich bin dann bis Sonntag im Urlaub und von der Außenwelt abgeschnitten... |
|
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
10:48:42 31.03.2010 Titel: |
|
Zitieren |
Revision 298:
* Bootscreen |
|
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
11:05:58 31.03.2010 Titel: |
|
Zitieren |
Revision 299:
* Bootscreen: W spitzer
* ckernel.c: auskommentieren des Screenshot-Codes |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:22:48 31.03.2010 Titel: |
|
Zitieren |
Revision 300:
- BS wird nun vor der restlichen Ausgabe angezeigt, damit man diese vollständig sieht.
- BS in Funktion ausgelagert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:21:27 31.03.2010 Titel: |
|
Zitieren |
Rev. 301:
paging.c: 0x400000 bis 0x600000 wird nicht mehr für User frei gegeben
ehci.c: beschleunigte Ausgabe
os.h/start.asm: USER-Stack 0x1420000 |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
19:16:43 31.03.2010 Titel: |
|
Zitieren |
Revision 302:
* Leichte optische Anpassungen bei einem Systemfehler, dient der besseren Übersicht
Leider verweigert mein SVN-Client grundsätzlich das Hochladen des Diskettenimages. Ich bitte diesbezüglich um Verständnis. |
Zuletzt bearbeitet von Cuervo am 19:19:44 31.03.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:49:59 31.03.2010 Titel: |
|
Zitieren |
Version 0.0.0.302 läuft auf VMWare, VBox, VPC, Qemu, Bochs
Bitte beachten, dass alte elf-Dateien, die mit esp 0x500000 oder 0x600000 in start.asm compiliert wurden, jetzt nicht mehr laufen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:58:28 31.03.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:43:58 01.04.2010 Titel: |
|
Zitieren |
Rev. 303:
task.c: nun den user-esp richtig übergeben in create_task
| C/C++ Code: | if (privilege == 3)
{
// general information: Intel 3A Chapter 5.12
*(--kernel_stack) = new_task->ss = 0x23; // ss
*(--kernel_stack) = USER_STACK; // esp
code_segment = 0x1B; // 0x18|0x3=0x1B
} | |
| C/C++ Code: | if (privilege == 3)
{
// general information: Intel 3A Chapter 5.12
*(--kernel_stack) = new_task->ss = 0x23; // ss
*(--kernel_stack) = USER_STACK; // esp
code_segment = 0x1B; // 0x18|0x3=0x1B
} | |
| C/C++ Code: | if (privilege == 3)
{
// general information: Intel 3A Chapter 5.12
*(--kernel_stack) = new_task->ss = 0x23; // ss
*(--kernel_stack) = USER_STACK; // esp
code_segment = 0x1B; // 0x18|0x3=0x1B
} | |
start.asm: kein setzen des esp mehr notwendig, damit mehr Freiheit im OS
| Assembler Code: | _start:
; mov esp, 0x1420000 ; stackpointer <--- nicht mehr notwendig
call _main
call _exit | |
| Assembler Code: | _start:
; mov esp, 0x1420000 ; stackpointer <--- nicht mehr notwendig
call _main
call _exit | |
| Assembler Code: | _start:
; mov esp, 0x1420000 ; stackpointer <--- nicht mehr notwendig
call _main
call _exit | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:46:45 01.04.2010, insgesamt 2-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
10:07:28 01.04.2010 Titel: |
|
Zitieren |
Revision 304:
* Neue Startmelodie
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // Melody
// C Es F G F Es
// C E F G F E C
// http://www.flutepage.de/deutsch/goodies/frequenz.shtml (German)
// http://www.flutepage.de/englisch/goodies/frequenz.shtml (English)
beep(523,200); // C
beep(622,200); // Es
beep(689,200); // F
beep(784,200); // G
beep(689,200); // F
beep(622,200); // Es
beep(523,200); // C
beep(659,200); // E
beep(689,200); // F
beep(784,200); // G
beep(689,200); // F
beep(659,200); // E
beep(523,1000); // C | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // Melody
// C Es F G F Es
// C E F G F E C
// http://www.flutepage.de/deutsch/goodies/frequenz.shtml (German)
// http://www.flutepage.de/englisch/goodies/frequenz.shtml (English)
beep(523,200); // C
beep(622,200); // Es
beep(689,200); // F
beep(784,200); // G
beep(689,200); // F
beep(622,200); // Es
beep(523,200); // C
beep(659,200); // E
beep(689,200); // F
beep(784,200); // G
beep(689,200); // F
beep(659,200); // E
beep(523,1000); // C | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // Melody
// C Es F G F Es
// C E F G F E C
// http://www.flutepage.de/deutsch/goodies/frequenz.shtml (German)
// http://www.flutepage.de/englisch/goodies/frequenz.shtml (English)
beep(523,200); // C
beep(622,200); // Es
beep(689,200); // F
beep(784,200); // G
beep(689,200); // F
beep(622,200); // Es
beep(523,200); // C
beep(659,200); // E
beep(689,200); // F
beep(784,200); // G
beep(689,200); // F
beep(659,200); // E
beep(523,1000); // C | |
* Makefile verändert: Es werden jetzt FloppyImage.bin und FloppyImage.img erstellt => Kompatibilität verbessert und KERNEL.BIN wird beim clean gelöscht, weil der ab und zu noch das alte verwendet hat^^
* const char* version = "0.0.0.303"; wurde zu const char* version = "0.0.0.304";
Leider läuft diese Version (bzw. die vorherigen) auf keinem meiner PCs.. einmal PF nach starten der Shell, einman GPF nach laden des Kernels (direkt GPF als erste Ausgabe)... |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:41:46 01.04.2010 Titel: |
|
Zitieren |
Rev. 305:
- Korrekturen in console.c (Hinweis +gjm+) integriert
- flush.asm (Kommentar verbessert)
Ein PC stürzt noch bei der Eingabe einer gültigen Zahl in TTT ab. Das könnte aber auch am User-Programm liegen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:42:52 01.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:49:11 01.04.2010 Titel: |
|
Zitieren |
Rev. 306:
initEHCIflag auf false initialisiert (Dank an Cuervo für den Hinweis!) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
03:22:32 02.04.2010 Titel: |
|
Zitieren |
Rev. 307:
TTT: atoi aus userlib verwendet, geringe Veränderungen bei Eingabe (auf einem PC stürzt das Programm allerdings immer noch nach Eingabe einer gültigen Ziffer ab, auf einem anderen läuft es). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
04:06:30 02.04.2010 Titel: |
|
Zitieren |
Rev. 308:
TTT 0.54 (hello.c): Globale Variablen beseitigt --> Kein Absturz mehr bei Eingabe valider Daten!
Wieso können auf manchen PCs keine globalen Variablen verwendet werden im User-Programm? Wo liegt das genaue Problem? |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 04:07:52 02.04.2010, insgesamt 1-mal bearbeitet |
|
 |
abc.w
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2008
Beiträge: 1364
|
abc.w Mitglied
11:40:50 02.04.2010 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: | | Wieso können auf manchen PCs keine globalen Variablen verwendet werden im User-Programm? Wo liegt das genaue Problem? |
Die Funktionen sind nicht mehr reentrant |
|
|
|
 |
taljeth
Mitglied
Benutzerprofil
Anmeldungsdatum: 11.09.2009
Beiträge: 148
|
taljeth Mitglied
12:00:43 02.04.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:28:42 02.04.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:17:11 02.04.2010 Titel: |
|
Zitieren |
Rev. 309:
elf.c: set bss to zero http://en.wikipedia.org/wiki/.bss
TTT (hello.c): memset((void*)tictactoe, 0, 18); // tictactoe has two bytes!
Dank an XanClic, der beide Probleme auf Anhieb gefunden hat! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 13:18:10 02.04.2010, insgesamt 1-mal bearbeitet |
|
 |
taljeth
Mitglied
Benutzerprofil
Anmeldungsdatum: 11.09.2009
Beiträge: 148
|
taljeth Mitglied
13:48:30 02.04.2010 Titel: |
|
Zitieren |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
16:10:02 02.04.2010 Titel: |
|
Zitieren |
Revision 310:
* Bootscreen verbessert und verschoben nach util.c |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:12:12 02.04.2010 Titel: |
|
Zitieren |
| Zitat: | | Jepp, das war mein Verdacht. |
Wir hatten das sogar schon mal irgendwo drinnen, ist aber wieder verschwunden.
@Cuervo: Großes Lob! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:12:50 02.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:04:23 02.04.2010 Titel: |
|
Zitieren |
Rev. 311:
FPU-Sicherung Experimenteller Zwischenschritt
#NM kommt noch zu oft
Hier mal die Doku der neuen Schritte:
os.h
| C/C++ Code: | struct oda
{
//...
uintptr_t curTask; // Address of currentTask
//...
}__attribute__((packed)); | |
| C/C++ Code: | struct oda
{
//...
uintptr_t curTask; // Address of currentTask
//...
}__attribute__((packed)); | |
| C/C++ Code: | struct oda
{
//...
uintptr_t curTask; // Address of currentTask
//...
}__attribute__((packed)); | |
ckernel.c:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | void setup_x87_fpu()
{
//...
// set TS in cr0
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 |= 0x8; // set the TS bit (no. 3) in CR0 to enable #NM (exception no. 7)
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
}
//...
while (true) // kernel idle loop
{
/// FPU-TEST
float number1 = 2.5;
float number2 = 2.5;
float number3 = number1 * number2;
char str[40];
float2string(number3,3,str);
printf("float result: %s\n",str);
/// TEST
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | void setup_x87_fpu()
{
//...
// set TS in cr0
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 |= 0x8; // set the TS bit (no. 3) in CR0 to enable #NM (exception no. 7)
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
}
//...
while (true) // kernel idle loop
{
/// FPU-TEST
float number1 = 2.5;
float number2 = 2.5;
float number3 = number1 * number2;
char str[40];
float2string(number3,3,str);
printf("float result: %s\n",str);
/// TEST
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | void setup_x87_fpu()
{
//...
// set TS in cr0
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 |= 0x8; // set the TS bit (no. 3) in CR0 to enable #NM (exception no. 7)
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
}
//...
while (true) // kernel idle loop
{
/// FPU-TEST
float number1 = 2.5;
float number2 = 2.5;
float number3 = number1 * number2;
char str[40];
float2string(number3,3,str);
printf("float result: %s\n",str);
/// TEST
| |
irq.c:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | task_t* pCurrentTask = (task_t*)(pODA->curTask);
if ( (r->int_no < 32) && (r->int_no == 7) ) //exception #NM (number 7)
{
settextcolor(12,0);
printf("#NM: FPU is used\n");
settextcolor(15,0);
// current task uses FPU
pCurrentTask->FPU_flag = true;
// save FPU ...
// ...
// restore FPU ...
// ...
// set TS in cr0 to zero
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 &= ~0x8; // reset the TS bit (no. 3) in CR0 to disable #NM
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | task_t* pCurrentTask = (task_t*)(pODA->curTask);
if ( (r->int_no < 32) && (r->int_no == 7) ) //exception #NM (number 7)
{
settextcolor(12,0);
printf("#NM: FPU is used\n");
settextcolor(15,0);
// current task uses FPU
pCurrentTask->FPU_flag = true;
// save FPU ...
// ...
// restore FPU ...
// ...
// set TS in cr0 to zero
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 &= ~0x8; // reset the TS bit (no. 3) in CR0 to disable #NM
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | task_t* pCurrentTask = (task_t*)(pODA->curTask);
if ( (r->int_no < 32) && (r->int_no == 7) ) //exception #NM (number 7)
{
settextcolor(12,0);
printf("#NM: FPU is used\n");
settextcolor(15,0);
// current task uses FPU
pCurrentTask->FPU_flag = true;
// save FPU ...
// ...
// restore FPU ...
// ...
// set TS in cr0 to zero
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 &= ~0x8; // reset the TS bit (no. 3) in CR0 to disable #NM
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
} | |
task.c:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | void tasking_install()
{
//...
pODA->curTask = (uintptr_t)current_task;
current_task->FPU_flag = false;
//...
}
task_t* create_task(page_directory_t* directory, void* entry, uint8_t privilege, const char* programName)
{
//...
pODA->curTask = (uintptr_t)new_task;
new_task->FPU_flag = false;
}
uint32_t task_switch (uint32_t esp)
{
//...
// write active task struct address to ODA
pODA->curTask = (uintptr_t)current_task;
//...
// set TS in cr0, if the task has not used the FPU before
if (current_task->FPU_flag == false);
{
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 |= 0x8; // set the TS bit (no. 3) in CR0 to enable #NM (exception no. 7)
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | void tasking_install()
{
//...
pODA->curTask = (uintptr_t)current_task;
current_task->FPU_flag = false;
//...
}
task_t* create_task(page_directory_t* directory, void* entry, uint8_t privilege, const char* programName)
{
//...
pODA->curTask = (uintptr_t)new_task;
new_task->FPU_flag = false;
}
uint32_t task_switch (uint32_t esp)
{
//...
// write active task struct address to ODA
pODA->curTask = (uintptr_t)current_task;
//...
// set TS in cr0, if the task has not used the FPU before
if (current_task->FPU_flag == false);
{
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 |= 0x8; // set the TS bit (no. 3) in CR0 to enable #NM (exception no. 7)
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | void tasking_install()
{
//...
pODA->curTask = (uintptr_t)current_task;
current_task->FPU_flag = false;
//...
}
task_t* create_task(page_directory_t* directory, void* entry, uint8_t privilege, const char* programName)
{
//...
pODA->curTask = (uintptr_t)new_task;
new_task->FPU_flag = false;
}
uint32_t task_switch (uint32_t esp)
{
//...
// write active task struct address to ODA
pODA->curTask = (uintptr_t)current_task;
//...
// set TS in cr0, if the task has not used the FPU before
if (current_task->FPU_flag == false);
{
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 |= 0x8; // set the TS bit (no. 3) in CR0 to enable #NM (exception no. 7)
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
}
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:14:12 02.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:21:53 02.04.2010 Titel: |
|
Zitieren |
Rev. 312:
Rahmen für FPU-Nutzung bezüglich TS-Bit und #NM stehen, jetzt fehlt noch save und restore (Dank an Tobiking für das Mitdenken!)
in task_switch:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // set TS
if (pODA->curTask == pODA->TaskFPU)
{
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 &= ~0x8; // reset the TS bit (no. 3) in CR0 to disable #NM (exception no. 7)
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
}
else
{
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 |= 0x8; // set the TS bit (no. 3) in CR0 to enable #NM (exception no. 7)
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // set TS
if (pODA->curTask == pODA->TaskFPU)
{
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 &= ~0x8; // reset the TS bit (no. 3) in CR0 to disable #NM (exception no. 7)
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
}
else
{
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 |= 0x8; // set the TS bit (no. 3) in CR0 to enable #NM (exception no. 7)
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // set TS
if (pODA->curTask == pODA->TaskFPU)
{
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 &= ~0x8; // reset the TS bit (no. 3) in CR0 to disable #NM (exception no. 7)
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
}
else
{
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 |= 0x8; // set the TS bit (no. 3) in CR0 to enable #NM (exception no. 7)
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
} | |
kernel:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 | /// FPU-TEST
if ((CurrentSeconds%5)==0)
{
float number1 = 2.5;
float number2 = 2.5;
float number3 = number1 * number2;
char str[40];
float2string(number3,3,str);
printf("float result: %s\n",str);
}
/// TEST | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | /// FPU-TEST
if ((CurrentSeconds%5)==0)
{
float number1 = 2.5;
float number2 = 2.5;
float number3 = number1 * number2;
char str[40];
float2string(number3,3,str);
printf("float result: %s\n",str);
}
/// TEST | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | /// FPU-TEST
if ((CurrentSeconds%5)==0)
{
float number1 = 2.5;
float number2 = 2.5;
float number3 = number1 * number2;
char str[40];
float2string(number3,3,str);
printf("float result: %s\n",str);
}
/// TEST | |
TTT (hello.c) als Test:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | 1 2 3 4 5 6 7 8 9 10 11 12 13 | void Zug(uint16_t Player, char* str, uint16_t* tictactoe, bool ende)
{
memset((void*)str, 0, 80);
for (; ; gets(str))
{
/// FLOAT-TEST
float number1 = 2.5;
float number2 = 2.5;
float number3 = number1 * number2;
char floatStr[40];
float2string(number3,3,floatStr);
/// TEST | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | void Zug(uint16_t Player, char* str, uint16_t* tictactoe, bool ende)
{
memset((void*)str, 0, 80);
for (; ; gets(str))
{
/// FLOAT-TEST
float number1 = 2.5;
float number2 = 2.5;
float number3 = number1 * number2;
char floatStr[40];
float2string(number3,3,floatStr);
/// TEST | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | void Zug(uint16_t Player, char* str, uint16_t* tictactoe, bool ende)
{
memset((void*)str, 0, 80);
for (; ; gets(str))
{
/// FLOAT-TEST
float number1 = 2.5;
float number2 = 2.5;
float number3 = number1 * number2;
char floatStr[40];
float2string(number3,3,floatStr);
/// TEST | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:24:53 02.04.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:39:52 03.04.2010 Titel: |
|
Zitieren |
Rev. 313:
FPU: fnsave / frstor eingebaut (Danke an Tobiking und taljeth für die Unterstützung)
In den einzelnen Konsolen erkennt man jetzt sehr schön die bei den einzelnen Tasks anfallenden #NM beim Verwenden einer FPU-Operation.
Hier der Part im irq-handler für #NM:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | if ( r->int_no == 7 ) //exception #NM (number 7)
{
// set TS in cr0 to zero
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 &= ~0x8; // reset the TS bit (no. 3) in CR0 to disable #NM
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
settextcolor(12,0);
printf("#NM: FPU is used. pCurrentTask: %X\n",pCurrentTask);
settextcolor(15,0);
// current task uses FPU
pCurrentTask->FPU_flag = true;
// save FPU data ...
if(pODA->TaskFPU)
{
// fsave or fnsave to pODA->TaskFPU->FPU_ptr
__asm__ volatile("fnsave %0" :: "m" (*(char*)(((task_t*)pODA->TaskFPU)->FPU_ptr)));
}
// store the last task using FPU
pODA->TaskFPU = (uintptr_t)pCurrentTask;
// restore FPU data ...
if(pCurrentTask->FPU_ptr)
{
// frstor from pCurrentTask->FPU_ptr
__asm__ volatile("frstor %0" :: "m" (*(char*)(pCurrentTask->FPU_ptr)));
}
else
{
// allocate memory to pCurrentTask->FPU_ptr
pCurrentTask->FPU_ptr = (uintptr_t)malloc(108,4);
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | if ( r->int_no == 7 ) //exception #NM (number 7)
{
// set TS in cr0 to zero
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 &= ~0x8; // reset the TS bit (no. 3) in CR0 to disable #NM
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
settextcolor(12,0);
printf("#NM: FPU is used. pCurrentTask: %X\n",pCurrentTask);
settextcolor(15,0);
// current task uses FPU
pCurrentTask->FPU_flag = true;
// save FPU data ...
if(pODA->TaskFPU)
{
// fsave or fnsave to pODA->TaskFPU->FPU_ptr
__asm__ volatile("fnsave %0" :: "m" (*(char*)(((task_t*)pODA->TaskFPU)->FPU_ptr)));
}
// store the last task using FPU
pODA->TaskFPU = (uintptr_t)pCurrentTask;
// restore FPU data ...
if(pCurrentTask->FPU_ptr)
{
// frstor from pCurrentTask->FPU_ptr
__asm__ volatile("frstor %0" :: "m" (*(char*)(pCurrentTask->FPU_ptr)));
}
else
{
// allocate memory to pCurrentTask->FPU_ptr
pCurrentTask->FPU_ptr = (uintptr_t)malloc(108,4);
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | if ( r->int_no == 7 ) //exception #NM (number 7)
{
// set TS in cr0 to zero
uint32_t cr0;
__asm__ volatile("mov %%cr0, %0": "=r"(cr0)); // read cr0
cr0 &= ~0x8; // reset the TS bit (no. 3) in CR0 to disable #NM
__asm__ volatile("mov %0, %%cr0":: "r"(cr0)); // write cr0
settextcolor(12,0);
printf("#NM: FPU is used. pCurrentTask: %X\n",pCurrentTask);
settextcolor(15,0);
// current task uses FPU
pCurrentTask->FPU_flag = true;
// save FPU data ...
if(pODA->TaskFPU)
{
// fsave or fnsave to pODA->TaskFPU->FPU_ptr
__asm__ volatile("fnsave %0" :: "m" (*(char*)(((task_t*)pODA->TaskFPU)->FPU_ptr)));
}
// store the last task using FPU
pODA->TaskFPU = (uintptr_t)pCurrentTask;
// restore FPU data ...
if(pCurrentTask->FPU_ptr)
{
// frstor from pCurrentTask->FPU_ptr
__asm__ volatile("frstor %0" :: "m" (*(char*)(pCurrentTask->FPU_ptr)));
}
else
{
// allocate memory to pCurrentTask->FPU_ptr
pCurrentTask->FPU_ptr = (uintptr_t)malloc(108,4);
}
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:15:32 03.04.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:39:26 03.04.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:08:39 03.04.2010 Titel: |
|
Zitieren |
Rev. 315:
- fsave anstelle fnsave (FPU context)
- FPU_flag entfernt (nicht benötigt) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:39:25 03.04.2010 Titel: |
|
Zitieren |
Rev. 316:
gdt.c: "speaking values" as parameters of gdt_set_gate(...)
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | PrettyOS [Version 0.0.0.316] Console 0: HELLO .ELF
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Mr.X TicTacToe 3x3 v0.56
--------------------------------------------------------------------------------
*************
| 0 | 1 | 2 |
*************
| 3 | 4 | 5 |
*************
| 6 | 7 | 8 |
*************
*************
| | | X |
*************
| O | X | O |
*************
| X | | |
*************
Please type in a number betwen 0 and 8.
FPU is used. pCurrentTask: C0000180h
#NM: FPU is used. pCurrentTask: C0000180h
Player X wins | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | PrettyOS [Version 0.0.0.316] Console 0: HELLO .ELF
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Mr.X TicTacToe 3x3 v0.56
--------------------------------------------------------------------------------
*************
| 0 | 1 | 2 |
*************
| 3 | 4 | 5 |
*************
| 6 | 7 | 8 |
*************
*************
| | | X |
*************
| O | X | O |
*************
| X | | |
*************
Please type in a number betwen 0 and 8.
FPU is used. pCurrentTask: C0000180h
#NM: FPU is used. pCurrentTask: C0000180h
Player X wins | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | PrettyOS [Version 0.0.0.316] Console 0: HELLO .ELF
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Mr.X TicTacToe 3x3 v0.56
--------------------------------------------------------------------------------
*************
| 0 | 1 | 2 |
*************
| 3 | 4 | 5 |
*************
| 6 | 7 | 8 |
*************
*************
| | | X |
*************
| O | X | O |
*************
| X | | |
*************
Please type in a number betwen 0 and 8.
FPU is used. pCurrentTask: C0000180h
#NM: FPU is used. pCurrentTask: C0000180h
Player X wins | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:17:01 04.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:33:55 04.04.2010 Titel: |
|
Zitieren |
Rev. 317:
Funktion "screenshot" aus ckernel.c ausgelagert nach console.c:
ckernel.c:
| C/C++ Code: | if (CurrentSeconds%120==3)
{
char timeStr[10];
sprintf(timeStr, "TIME%s", timeBuffer);
screenshot(timeStr);
} | |
| C/C++ Code: | if (CurrentSeconds%120==3)
{
char timeStr[10];
sprintf(timeStr, "TIME%s", timeBuffer);
screenshot(timeStr);
} | |
| C/C++ Code: | if (CurrentSeconds%120==3)
{
char timeStr[10];
sprintf(timeStr, "TIME%s", timeBuffer);
screenshot(timeStr);
} | |
console.c:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | int32_t screenshot(char* name)
{
// buffer for video screen
uint8_t videoscreen[4000+100]; // only signs, no attributes, 50 times CR LF (0xD 0xA) at line end
int32_t NewLine = 0;
for (uint16_t i=0; i<4000;i++)
{
uint16_t j=i+2*NewLine;
videoscreen[j] = *(uint8_t*)(0xB8000 + 2*i); // only signs, no attributes
if ((i%80) == 79)
{
// CR LF (0xD 0xA)
videoscreen[j+1]= 0xD;
videoscreen[j+2]= 0xA;
NewLine++;
}
}
return flpydsk_write(name, "TXT", (void*)videoscreen, 4100);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | int32_t screenshot(char* name)
{
// buffer for video screen
uint8_t videoscreen[4000+100]; // only signs, no attributes, 50 times CR LF (0xD 0xA) at line end
int32_t NewLine = 0;
for (uint16_t i=0; i<4000;i++)
{
uint16_t j=i+2*NewLine;
videoscreen[j] = *(uint8_t*)(0xB8000 + 2*i); // only signs, no attributes
if ((i%80) == 79)
{
// CR LF (0xD 0xA)
videoscreen[j+1]= 0xD;
videoscreen[j+2]= 0xA;
NewLine++;
}
}
return flpydsk_write(name, "TXT", (void*)videoscreen, 4100);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | int32_t screenshot(char* name)
{
// buffer for video screen
uint8_t videoscreen[4000+100]; // only signs, no attributes, 50 times CR LF (0xD 0xA) at line end
int32_t NewLine = 0;
for (uint16_t i=0; i<4000;i++)
{
uint16_t j=i+2*NewLine;
videoscreen[j] = *(uint8_t*)(0xB8000 + 2*i); // only signs, no attributes
if ((i%80) == 79)
{
// CR LF (0xD 0xA)
videoscreen[j+1]= 0xD;
videoscreen[j+2]= 0xA;
NewLine++;
}
}
return flpydsk_write(name, "TXT", (void*)videoscreen, 4100);
} | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | PrettyOS [Version 0.0.0.317] Shell
--------------------------------------------------------------------------------
##
##
Copyright (c) 2010 The PrettyOS Team
This bootscreen has been created by
Cuervo, member of the PrettyOS team
Memory size: 128 MiB / 134 MB (134217728 Bytes)
#0 0:0.0 dev:1237h vend:8086h IRQ:0
#1 0:1.0 dev:7000h vend:8086h IRQ:0
#2 0:1.1 dev:7010h vend:8086h IRQ:0
#3 0:1.2 dev:24CDh vend:8086h IRQ:11 USB EHCI F0000000h MMIO sz:4096
>>> >>> function: analyzeEHCI
HCIVERSION: 0100h HCSPARAMS: 00000004h Ports: 4
HCCPARAMS: 00000080h No ext. capabil.
OpRegs Address: F0000020h
#4 0:1.3 dev:7113h vend:8086h IRQ:9
#5 0:2.0 dev:00B8h vend:1013h IRQ:0
#6 0:3.0 dev:100Eh vend:8086h IRQ:11
1.44 MB FDD device 0
<RAM Disk at C0005000h DIR> dev
35 info
13108 shell
#NM: FPU is used. pCurrentTask: C0000070h
#NM: FPU is used. pCurrentTask: C0000000h
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | PrettyOS [Version 0.0.0.317] Shell
--------------------------------------------------------------------------------
##
##
Copyright (c) 2010 The PrettyOS Team
This bootscreen has been created by
Cuervo, member of the PrettyOS team
Memory size: 128 MiB / 134 MB (134217728 Bytes)
#0 0:0.0 dev:1237h vend:8086h IRQ:0
#1 0:1.0 dev:7000h vend:8086h IRQ:0
#2 0:1.1 dev:7010h vend:8086h IRQ:0
#3 0:1.2 dev:24CDh vend:8086h IRQ:11 USB EHCI F0000000h MMIO sz:4096
>>> >>> function: analyzeEHCI
HCIVERSION: 0100h HCSPARAMS: 00000004h Ports: 4
HCCPARAMS: 00000080h No ext. capabil.
OpRegs Address: F0000020h
#4 0:1.3 dev:7113h vend:8086h IRQ:9
#5 0:2.0 dev:00B8h vend:1013h IRQ:0
#6 0:3.0 dev:100Eh vend:8086h IRQ:11
1.44 MB FDD device 0
<RAM Disk at C0005000h DIR> dev
35 info
13108 shell
#NM: FPU is used. pCurrentTask: C0000070h
#NM: FPU is used. pCurrentTask: C0000000h
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | PrettyOS [Version 0.0.0.317] Shell
--------------------------------------------------------------------------------
##
##
Copyright (c) 2010 The PrettyOS Team
This bootscreen has been created by
Cuervo, member of the PrettyOS team
Memory size: 128 MiB / 134 MB (134217728 Bytes)
#0 0:0.0 dev:1237h vend:8086h IRQ:0
#1 0:1.0 dev:7000h vend:8086h IRQ:0
#2 0:1.1 dev:7010h vend:8086h IRQ:0
#3 0:1.2 dev:24CDh vend:8086h IRQ:11 USB EHCI F0000000h MMIO sz:4096
>>> >>> function: analyzeEHCI
HCIVERSION: 0100h HCSPARAMS: 00000004h Ports: 4
HCCPARAMS: 00000080h No ext. capabil.
OpRegs Address: F0000020h
#4 0:1.3 dev:7113h vend:8086h IRQ:9
#5 0:2.0 dev:00B8h vend:1013h IRQ:0
#6 0:3.0 dev:100Eh vend:8086h IRQ:11
1.44 MB FDD device 0
<RAM Disk at C0005000h DIR> dev
35 info
13108 shell
#NM: FPU is used. pCurrentTask: C0000070h
#NM: FPU is used. pCurrentTask: C0000000h
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:44:48 04.04.2010, insgesamt 4-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
17:14:19 04.04.2010 Titel: |
|
Zitieren |
Revision 318:
* Maus-Support (sogar mit Scrollwheel, falls von der Maus unterstützt)! IRQs werden angezeigt, mit Status! |
Zuletzt bearbeitet von Erhard Henkes am 01:25:17 05.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:34:12 04.04.2010 Titel: |
|
Zitieren |
Rev. 319:
- mouse.c: mouse print auf eine Zeile
- scheduler.c (Beginn der Auslagerung des Dispatchers/Schedulers, separat von task.c)
scheduler.h/c wurde versehentlich nicht committed. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:57:44 04.04.2010, insgesamt 3-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:16:24 04.04.2010 Titel: |
|
Zitieren |
Rev. 320:
- Stylekorrekturen
- makefile und build.bat auf FloppyImage.img umgestellt
- scheduler.c/.h jetzt dabei |
Zuletzt bearbeitet von Erhard Henkes am 19:19:58 04.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:21:00 05.04.2010 Titel: |
|
Zitieren |
Rev. 321:
Code review:
| Code: | 1 2 3 4 5 6 7 8 9 10 | 1 2 3 4 5 6 7 8 9 10 | BL1,
BL2,
ckernel:
gdt_install();
idt_install(); // cf. interrupts.asm
timer_install(1000); // Sets system frequency to ... Hz
keyboard_install();
//...
syscall_install();
fpu_install();
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 | BL1,
BL2,
ckernel:
gdt_install();
idt_install(); // cf. interrupts.asm
timer_install(1000); // Sets system frequency to ... Hz
keyboard_install();
//...
syscall_install();
fpu_install();
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 | BL1,
BL2,
ckernel:
gdt_install();
idt_install(); // cf. interrupts.asm
timer_install(1000); // Sets system frequency to ... Hz
keyboard_install();
//...
syscall_install();
fpu_install();
| |
next step: paging, heap, tasking, pci-scan, mouse, ehci, ...
Thx to MrX, Cuervo, Tobiking, Iteem |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:07:40 05.04.2010, insgesamt 4-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
12:39:38 05.04.2010 Titel: |
|
Zitieren |
Revision 322:
* Mausverbesserungen: Stabilisation, experimenteller Support für 5 Tasten (muss aktiviert werden, ist im Moment instabil und deswegen deaktiviert) und mouse_uninstall(), das sogar die Maus zurücksetzt.
EDIT:
* Des weiteren wurden einige Funktionen ausgelagert, z.B. die Funktion zum Setzen der Sample-Rate! |
Zuletzt bearbeitet von Cuervo am 12:41:40 05.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
14:11:47 05.04.2010 Titel: |
|
Zitieren |
Revision 323:
- makefile-Bug bezüglich Shell behoben
- rebuild.bat hinzugefügt: führt target clean vorm Build aus |
|
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
17:25:21 05.04.2010 Titel: |
|
Zitieren |
Revision 324:
* Kleinere Optimierungen
EDIT: Fehler, nicht-Windows nimmt jetzt i586-elf- gcc und binutils.. sry.. |
Zuletzt bearbeitet von Cuervo am 17:27:23 05.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:02:46 05.04.2010 Titel: |
|
Zitieren |
Rev. 325:
task.c überarbeitet (Code Review) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:22:56 06.04.2010 Titel: |
|
Zitieren |
Rev. 326:
weitere Funktionen nach scheduler.c ausgelagert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:12:05 06.04.2010 Titel: |
|
Zitieren |
Rev. 327:
Multithreading - erster Versuch.
Klappt noch ncht komplett, aber Bootscreen erscheint schon als Thread. Nach Laden von TTT hängt jedoch noch was. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:35:20 06.04.2010 Titel: |
|
Zitieren |
Rev. 328:
Jetzt geht es mit dem ersten Multithreading. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:05:58 06.04.2010 Titel: |
|
Zitieren |
Revision 329:
- build.sh auf FloppyImage.img umgestellt (In Ermangelung von Linux kann ich dennoch nicht beurteilen, ob diese Datei funktioniert)
- HELLO.ELF jetzt in version 0.5.7 (Zählweise geändert, Float-Test weg, Wartet am Ende auf Tastendruck)
- Shell: testch nicht mehr genutzt
- Float-Test im ckernel.c weg, #NM-Ausgabe in Diagnosis-Modus verlegt
- "Aufräumarbeiten" |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:25:26 07.04.2010 Titel: |
|
Zitieren |
Rev. 330:
Zwischenschritt: read/write-Sperre by Floppy Disk Transfer (noch nicht sicher)
in oda, os.h:
| C/C++ Code: | | bool flpy_ReadWriteFlag[4]; // 0: ready 1: busy (blocked) | |
| C/C++ Code: | | bool flpy_ReadWriteFlag[4]; // 0: ready 1: busy (blocked) | |
| C/C++ Code: | | bool flpy_ReadWriteFlag[4]; // 0: ready 1: busy (blocked) | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:27:00 07.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:57:18 07.04.2010 Titel: |
|
Zitieren |
Revision 331:
- DIAGNOSIS-Modus repariert
- Vergabe von Konsolen nicht mehr vom Namen der Konsole abhängig, sondern vom Aufruf von create_ctask oder create_task (analog auch bei threads) -> Nun wird der String in elf_exec geprüft. (Schiebt das Problem eine Ebene höher)
- HELLO.ELF grundlegend überarbeitet: Bemängelte Probleme behoben
- makefile: Unterscheidung zwischen WINDOWS, MACOSX und anderen. (Cuervo: Bitte testen)
- Altlasten aus der Shell entfernt
- Aufräumarbeiten (Formatierungen) |
|
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
16:14:42 07.04.2010 Titel: |
|
Zitieren |
Revision 332:
* Verbesserung des Makefiles (MrX hat einen Fehler gemacht, gcc wurde 2x gesetzt und somit das Auswahlverfahren umgangen)
Ansonsten war das Makefile wirklich gut^^ |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:07:10 07.04.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:13:46 08.04.2010 Titel: |
|
Zitieren |
Rev. 334:
task.c: address of exit at top of stack in create_thread (avoids exit in body of functions) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
09:42:37 08.04.2010 Titel: |
|
Zitieren |
Revision 335:
- "typedef-structs" in os.h eingesetzt
- start.asm von Altlasten befreit
- Screenshot nun auf Knopfdruck (Ctrl+s)
- Pointer-Typ-Änderungen (BT 2982518) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:37:35 09.04.2010 Titel: |
|
Zitieren |
Revision 336:
- ehci.c: Port-Info (Infobereich) korrigiert
- keyboard.c: Ausgabe von 's' unterdrückt bei Strg+s (screenshot)
- file.c: Textausgabe (Info) beim Abspeichern verbessert
Simulation mit Qemu:
| Code: | <Floppy Disc Directory>
PRETTYOS 0 byte (vol) 1st sector: 31
BOOT2.BIN 957 byte (arc) 1st sector: 33
KERNEL.BIN 79864 byte (arc) 1st sector: 35
HELLO.ELF 7791 byte (arc) 1st sector: 191
TIME4.TXT 4100 byte (arc) 1st sector: 207
| |
| Code: | <Floppy Disc Directory>
PRETTYOS 0 byte (vol) 1st sector: 31
BOOT2.BIN 957 byte (arc) 1st sector: 33
KERNEL.BIN 79864 byte (arc) 1st sector: 35
HELLO.ELF 7791 byte (arc) 1st sector: 191
TIME4.TXT 4100 byte (arc) 1st sector: 207
| |
| Code: | <Floppy Disc Directory>
PRETTYOS 0 byte (vol) 1st sector: 31
BOOT2.BIN 957 byte (arc) 1st sector: 33
KERNEL.BIN 79864 byte (arc) 1st sector: 35
HELLO.ELF 7791 byte (arc) 1st sector: 191
TIME4.TXT 4100 byte (arc) 1st sector: 207
| |
TIME4.TXT:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.336] Shell
--------------------------------------------------------------------------------
Mouse sent unknown package!
Memory size: 128 MiB / 134 MB (134217728 Bytes)
#0 0:0.0 dev:1237h vend:8086h IRQ:0
#1 0:1.0 dev:7000h vend:8086h IRQ:0
#2 0:1.1 dev:7010h vend:8086h IRQ:0
#3 0:1.2 dev:24CDh vend:8086h IRQ:11 USB EHCI F0000000h MMIO sz:4096
>>> >>> function: analyzeEHCI
HCIVERSION: 0100h HCSPARAMS: 00000004h Ports: 4
HCCPARAMS: 00000080h No ext. capabil.
OpRegs Address: F0000020h
#4 0:1.3 dev:7113h vend:8086h IRQ:9
#5 0:2.0 dev:00B8h vend:1013h IRQ:0
#6 0:31.0 dev:8139h vend:10ECh IRQ:11
BaseAddressRTL8139_MMIO mapped to virtual address FFF00000h
1.44 MB FDD device 0
<RAM Disk at C0007000h DIR> dev
35 info
12918 shell
>>> >>> function: initEHCIHostController
>>> >>> function: startHostController
reset HC
>>> >>> function: DeactivateLegacySupport
DeactivateLegacySupport: eecp = 0000h
No valid eecp found.
HCHalted bit set to 0 (OK), ports can be enabled now.
>>> >>> function: enablePorts
>>> >>> function: resetPort 1
$>
--------------------------------------------------------------------------------
_______ _______ <>_<>
(_______) |_|_|_|_|_|_|| [] [] | .---|'"`|---.
`-oo---oo-'`-oo-----oo-'`-o---o-'`o"O-OO-OO-O"o'
--------------------------------------------------------------------------------
Friday, April 09, 2010, ........ 3 s runtime. CPU: 7289 MHz / | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.336] Shell
--------------------------------------------------------------------------------
Mouse sent unknown package!
Memory size: 128 MiB / 134 MB (134217728 Bytes)
#0 0:0.0 dev:1237h vend:8086h IRQ:0
#1 0:1.0 dev:7000h vend:8086h IRQ:0
#2 0:1.1 dev:7010h vend:8086h IRQ:0
#3 0:1.2 dev:24CDh vend:8086h IRQ:11 USB EHCI F0000000h MMIO sz:4096
>>> >>> function: analyzeEHCI
HCIVERSION: 0100h HCSPARAMS: 00000004h Ports: 4
HCCPARAMS: 00000080h No ext. capabil.
OpRegs Address: F0000020h
#4 0:1.3 dev:7113h vend:8086h IRQ:9
#5 0:2.0 dev:00B8h vend:1013h IRQ:0
#6 0:31.0 dev:8139h vend:10ECh IRQ:11
BaseAddressRTL8139_MMIO mapped to virtual address FFF00000h
1.44 MB FDD device 0
<RAM Disk at C0007000h DIR> dev
35 info
12918 shell
>>> >>> function: initEHCIHostController
>>> >>> function: startHostController
reset HC
>>> >>> function: DeactivateLegacySupport
DeactivateLegacySupport: eecp = 0000h
No valid eecp found.
HCHalted bit set to 0 (OK), ports can be enabled now.
>>> >>> function: enablePorts
>>> >>> function: resetPort 1
$>
--------------------------------------------------------------------------------
_______ _______ <>_<>
(_______) |_|_|_|_|_|_|| [] [] | .---|'"`|---.
`-oo---oo-'`-oo-----oo-'`-o---o-'`o"O-OO-OO-O"o'
--------------------------------------------------------------------------------
Friday, April 09, 2010, ........ 3 s runtime. CPU: 7289 MHz / | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.336] Shell
--------------------------------------------------------------------------------
Mouse sent unknown package!
Memory size: 128 MiB / 134 MB (134217728 Bytes)
#0 0:0.0 dev:1237h vend:8086h IRQ:0
#1 0:1.0 dev:7000h vend:8086h IRQ:0
#2 0:1.1 dev:7010h vend:8086h IRQ:0
#3 0:1.2 dev:24CDh vend:8086h IRQ:11 USB EHCI F0000000h MMIO sz:4096
>>> >>> function: analyzeEHCI
HCIVERSION: 0100h HCSPARAMS: 00000004h Ports: 4
HCCPARAMS: 00000080h No ext. capabil.
OpRegs Address: F0000020h
#4 0:1.3 dev:7113h vend:8086h IRQ:9
#5 0:2.0 dev:00B8h vend:1013h IRQ:0
#6 0:31.0 dev:8139h vend:10ECh IRQ:11
BaseAddressRTL8139_MMIO mapped to virtual address FFF00000h
1.44 MB FDD device 0
<RAM Disk at C0007000h DIR> dev
35 info
12918 shell
>>> >>> function: initEHCIHostController
>>> >>> function: startHostController
reset HC
>>> >>> function: DeactivateLegacySupport
DeactivateLegacySupport: eecp = 0000h
No valid eecp found.
HCHalted bit set to 0 (OK), ports can be enabled now.
>>> >>> function: enablePorts
>>> >>> function: resetPort 1
$>
--------------------------------------------------------------------------------
_______ _______ <>_<>
(_______) |_|_|_|_|_|_|| [] [] | .---|'"`|---.
`-oo---oo-'`-oo-----oo-'`-o---o-'`o"O-OO-OO-O"o'
--------------------------------------------------------------------------------
Friday, April 09, 2010, ........ 3 s runtime. CPU: 7289 MHz / | |
TODO:
@Cuervo: Dieses "Mouse sent unknown package!" könnte man vielleicht noch untersuchen oder unterdrücken. Sieht unschön aus. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 03:32:00 09.04.2010, insgesamt 5-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
03:42:51 09.04.2010 Titel: |
|
Zitieren |
Es ist mir nicht gelungen, das screenshot in keyboard.c auf thread umzusetzen, weder mit noch ohne Konsole. Das Problem liegt vermutlich im Speicherbereich (#PF, manchmal auch #GPF oder Reboot je nach Versuchen).
Denkbare Möglichkeiten:
task.c: Konsole aufräumen (übrigens auch, wenn gar keine da ist, z.B. bei create_thread(...) ?? )
file.c: Speicher-Handling beim File schreiben
console.c: screenshot hat einen Parameter |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:47:27 09.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
06:54:20 09.04.2010 Titel: |
|
Zitieren |
Wir müssen "Mouse sent unknown package" nicht anzeigen, aber es tritt (theoretisch) nur auf, wenn die Maus wirklich einen Fehler macht.
Das ganze funktioniert in etwa so:
* Maus wird initialisiert
* Mausverhalten wird eingestellt
* Wenn möglich wird das Mausrad dazugeschaltet
* IRQ 12 Handler wird installiert
* Maus sendet 3 oder 4 Pakete auf einmal, jedes allerdings mit einem eigenen Interrupt
* Wenn der Zähler noch bei 0 ist wird überprüft, ob das erste empfangene Paket wirklich das erste ist.
(anscheinend fangen nicht alle Mäuse bei Paket 1 an. Das war auch der Fehler, den ich zuerst nicht gefunden habe)
* Wenn das nicht das 1. Paket ist, wird diese Fehlermeldung angezeigt, wenn doch, wird der Zähler erhöht und auf das nächste Paket gewartet.
d.h. Dieser Fehler tritt nur 1x am Anfang auf. Wenn er ständig auftritt (also nach jeder Maus-Statusausgabe), dann sendet die Maus 4 statt 3 oder 3 statt 4 Pakete, obwohl meine Initialisierung das ausschließen sollte. Aber bei Mäusen kann man nie wissen. Ausserdem tritt dieser 'Mouse sent unknown package' Fehler bei mir nur in Emulatoren auf, auf realen PCs hatte ich ihn nie... |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:40:19 09.04.2010 Titel: |
|
Zitieren |
Revision 337:
- Bugfix in task.c/.h: Console nur gelöscht, wenn sie dem Thread/Task gehört. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:38:02 09.04.2010 Titel: |
|
Zitieren |
Rev. 338:
Ctrl + t ==> Screenshot_easy (void, ohne Parameter) als Thread (macht noch Probleme von TTT aus, von Konsole M aus geht es gut!
Ctrl + s ==> normale Screenshot-Funktion |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:25:12 09.04.2010 Titel: |
|
Zitieren |
Revision 339:
- Ordnerstruktur Userprogramme umgebaut
- makefiles userprogramme aktualisiert
- Weitere Userprogs mitgeliefert.
- makefile bindet diese Userprogs ins FloppyImage ein.
- screenshot-Fkts. jetzt in video.c
- Hello-Programm nicht mehr TTT |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:48:52 09.04.2010 Titel: |
|
Zitieren |
ich finde Cuervo's wunderbarere Bootscreen sollte für die Nachwelt fest gehalten werden (natürlich Strg + t während des Bootens):
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | PrettyOS [Version 0.0.0.339] Console 0: Booting ...
--------------------------------------------------------------------------------
###### ## ## ##### ####
######## ### ### ####### ######
######## ### ### ######### #######
### ### ## ## #### ############## ## ### #### ### ##
### ### ###### ###################### ### ### ### ####
#### ## ##### ####################### ## ## ### #####
######## #### ######## ### ### #### ### ### ### ######
####### #### ######## ### ### #### ### ### ## #####
###### ### ###### ### #### ###### ### ### ###
### ### ### #### #### ###### #### ## ## ###
#### ### ######## ########### ##### ########## ########
### ### ######## ##### ##### #### ######## #######
## ## ###### ### ### ### ##### #####
##
##
##
Copyright (c) 2010 The PrettyOS Team
This bootscreen has been created by
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | PrettyOS [Version 0.0.0.339] Console 0: Booting ...
--------------------------------------------------------------------------------
###### ## ## ##### ####
######## ### ### ####### ######
######## ### ### ######### #######
### ### ## ## #### ############## ## ### #### ### ##
### ### ###### ###################### ### ### ### ####
#### ## ##### ####################### ## ## ### #####
######## #### ######## ### ### #### ### ### ### ######
####### #### ######## ### ### #### ### ### ## #####
###### ### ###### ### #### ###### ### ### ###
### ### ### #### #### ###### #### ## ## ###
#### ### ######## ########### ##### ########## ########
### ### ######## ##### ##### #### ######## #######
## ## ###### ### ### ### ##### #####
##
##
##
Copyright (c) 2010 The PrettyOS Team
This bootscreen has been created by
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | PrettyOS [Version 0.0.0.339] Console 0: Booting ...
--------------------------------------------------------------------------------
###### ## ## ##### ####
######## ### ### ####### ######
######## ### ### ######### #######
### ### ## ## #### ############## ## ### #### ### ##
### ### ###### ###################### ### ### ### ####
#### ## ##### ####################### ## ## ### #####
######## #### ######## ### ### #### ### ### ### ######
####### #### ######## ### ### #### ### ### ## #####
###### ### ###### ### #### ###### ### ### ###
### ### ### #### #### ###### #### ## ## ###
#### ### ######## ########### ##### ########## ########
### ### ######## ##### ##### #### ######## #######
## ## ###### ### ### ### ##### #####
##
##
##
Copyright (c) 2010 The PrettyOS Team
This bootscreen has been created by
| |
... und der USB-transfer ist auch ein "Foto" wert:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.339] Shell
--------------------------------------------------------------------------------
Enabling Async Schedule
>>> >>> function: showPacket
virtAddrBuf0: C0006000h
12h 01h 00h 02h 00h 00h 00h 40h 00h 00h 00h 00h 00h 00h 01h 02h 03h 01h
>>> >>>function: showDeviceDesriptor
length: 18
descriptor type: 1
USB specification: 2.0
USB class: 0000h
USB subclass: 0000h
USB protocol 0000h
max packet size: 64
vendor: 0000h
product: 0000h
release number: 0.0
manufacturer: 0001h
product: 0002h
serial number: 0003h
number of config.: 1
setup packet:
>>> >>> function: showPacket
virtAddrBuf0: C020B000h
80h 06h 00h 01h 00h 00h 12h 00h
setup:
>>> >>> function: showStatusbyteQTD
QTD: C020A000h Statusbyte: 00h
in:
>>> >>> function: showStatusbyteQTD
QTD: C0005000h Statusbyte: 00h
port 2: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 3: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 4: 00001004h, line: 00h SE0,power on, enabled, EHCI ownedScreenshot Test
$>
--------------------------------------------------------------------------------
Port: 4, device not attached
--------------------------------------------------------------------------------
Friday, April 09, 2010, 20:42:18 13 s runtime. CPU: 7571 MHz \
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.339] Shell
--------------------------------------------------------------------------------
Enabling Async Schedule
>>> >>> function: showPacket
virtAddrBuf0: C0006000h
12h 01h 00h 02h 00h 00h 00h 40h 00h 00h 00h 00h 00h 00h 01h 02h 03h 01h
>>> >>>function: showDeviceDesriptor
length: 18
descriptor type: 1
USB specification: 2.0
USB class: 0000h
USB subclass: 0000h
USB protocol 0000h
max packet size: 64
vendor: 0000h
product: 0000h
release number: 0.0
manufacturer: 0001h
product: 0002h
serial number: 0003h
number of config.: 1
setup packet:
>>> >>> function: showPacket
virtAddrBuf0: C020B000h
80h 06h 00h 01h 00h 00h 12h 00h
setup:
>>> >>> function: showStatusbyteQTD
QTD: C020A000h Statusbyte: 00h
in:
>>> >>> function: showStatusbyteQTD
QTD: C0005000h Statusbyte: 00h
port 2: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 3: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 4: 00001004h, line: 00h SE0,power on, enabled, EHCI ownedScreenshot Test
$>
--------------------------------------------------------------------------------
Port: 4, device not attached
--------------------------------------------------------------------------------
Friday, April 09, 2010, 20:42:18 13 s runtime. CPU: 7571 MHz \
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.339] Shell
--------------------------------------------------------------------------------
Enabling Async Schedule
>>> >>> function: showPacket
virtAddrBuf0: C0006000h
12h 01h 00h 02h 00h 00h 00h 40h 00h 00h 00h 00h 00h 00h 01h 02h 03h 01h
>>> >>>function: showDeviceDesriptor
length: 18
descriptor type: 1
USB specification: 2.0
USB class: 0000h
USB subclass: 0000h
USB protocol 0000h
max packet size: 64
vendor: 0000h
product: 0000h
release number: 0.0
manufacturer: 0001h
product: 0002h
serial number: 0003h
number of config.: 1
setup packet:
>>> >>> function: showPacket
virtAddrBuf0: C020B000h
80h 06h 00h 01h 00h 00h 12h 00h
setup:
>>> >>> function: showStatusbyteQTD
QTD: C020A000h Statusbyte: 00h
in:
>>> >>> function: showStatusbyteQTD
QTD: C0005000h Statusbyte: 00h
port 2: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 3: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 4: 00001004h, line: 00h SE0,power on, enabled, EHCI ownedScreenshot Test
$>
--------------------------------------------------------------------------------
Port: 4, device not attached
--------------------------------------------------------------------------------
Friday, April 09, 2010, 20:42:18 13 s runtime. CPU: 7571 MHz \
| |
Das gelingt übrigens nur mit:
| C/C++ Code: | | create_thread((task_t*)pODA->curTask, &screenshot_easy); | |
| C/C++ Code: | | create_thread((task_t*)pODA->curTask, &screenshot_easy); | |
| C/C++ Code: | | create_thread((task_t*)pODA->curTask, &screenshot_easy); | |
also ohne eigene Konsole (ckernel.c, line 246)
Bei den User-Programmen, jetzt übrigens deutlich zahlreicher im Floppy-Image (thx to MrX), kommt es mit Strg+t noch zum reboot, kA warum, mit Strg+s geht es. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:52:58 09.04.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:28:32 09.04.2010 Titel: |
|
Zitieren |
Rev. 340:
video.c:
- Thread-Problem bei screenshot gelöst durch verlagern von videoscreen[4000+98] vom stack in den globalen speicher!
- das newline bei Zeile 50 nicht mehr angefügt:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | static void catchVidmem()
{
int32_t NewLine = 0;
for (uint16_t i=0; i<4000;i++)
{
uint16_t j=i+2*NewLine;
videoscreen[j] = *(uint8_t*)(0xB8000 + 2*i); // only signs, no attributes
if ( (i%80 == 79) && (i!=3999) )
{
videoscreen[j+1]= 0xD; // CR
videoscreen[j+2]= 0xA; // LF
NewLine++;
}
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | static void catchVidmem()
{
int32_t NewLine = 0;
for (uint16_t i=0; i<4000;i++)
{
uint16_t j=i+2*NewLine;
videoscreen[j] = *(uint8_t*)(0xB8000 + 2*i); // only signs, no attributes
if ( (i%80 == 79) && (i!=3999) )
{
videoscreen[j+1]= 0xD; // CR
videoscreen[j+2]= 0xA; // LF
NewLine++;
}
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | static void catchVidmem()
{
int32_t NewLine = 0;
for (uint16_t i=0; i<4000;i++)
{
uint16_t j=i+2*NewLine;
videoscreen[j] = *(uint8_t*)(0xB8000 + 2*i); // only signs, no attributes
if ( (i%80 == 79) && (i!=3999) )
{
videoscreen[j+1]= 0xD; // CR
videoscreen[j+2]= 0xA; // LF
NewLine++;
}
}
} | |
TODO: Kernel-Stack vergörßern |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:37:35 09.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
02:10:04 10.04.2010 Titel: |
|
Zitieren |
Revision 341:
Ergebnisse des CodeReviews: fpu.c, ckernel.c, paging.c, kheap.c |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:22:15 10.04.2010 Titel: |
|
Zitieren |
Die Bildschirmfotos sind plötzlich unleserlich. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:55:25 10.04.2010 Titel: |
|
Zitieren |
Rev. 342:
now screenshot works correct again (ctrl+s: process, ctrl+t: thread) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:32:30 10.04.2010 Titel: |
|
Zitieren |
Rev. 343:
- pci.c: EHCI Basisadresse von ID-mapping auf freies mapping umgestellt
- ckernel.c: create_cthread((task_t*)pODA->curTask, &initEHCIHostController, "EHCI");
- os.h: uint32_t pciEHCInumber; // pci device number in ODA |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:07:37 10.04.2010 Titel: |
|
Zitieren |
Rev. 344:
build.bat angepasst, dass auch bei floppy_build.bat alle User-Programme auf der Floppy ankommen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:30:02 10.04.2010 Titel: |
|
Zitieren |
Rev. 345:
EHCI-Ablauf im EHCI-Interrupt beschleunigt: bisher bestens bewährte Methode mitttels Flag setzen und in kernel idle loop einen Thread starten
Ausgabe nun in eigenem "Fenster":
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.345] Console 0: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: createQTD
>>> >>> function: createQTD
>>> >>> function: createQH
>>> >>> function: createQH
Enabling Async Schedule
>>> >>> function: showPacket
virtAddrBuf0: C0213000h
12h 01h 00h 02h 00h 00h 00h 40h 00h 00h 00h 00h 00h 00h 01h 02h 03h 01h
>>> >>>function: showDeviceDesriptor
length: 18
descriptor type: 1
USB specification: 2.0
USB class: 0000h
USB subclass: 0000h
USB protocol 0000h
max packet size: 64
vendor: 0000h
product: 0000h
release number: 0.0
manufacturer: 0001h
product: 0002h
serial number: 0003h
number of config.: 1
Port: 4, device not attached
setup packet:
>>> >>> function: showPacket
virtAddrBuf0: C0215000h
80h 06h 00h 01h 00h 00h 12h 00h
setup:
>>> >>> function: showStatusbyteQTD
QTD: C0214000h Statusbyte: 00h
in:
>>> >>> function: showStatusbyteQTD
QTD: C0212000h Statusbyte: 00h
port 2: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 3: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 4: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
--------------------------------------------------------------------------------
Saturday, April 10, 2010, 20:27:33 9 s runtime. CPU: 7345 MHz -
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.345] Console 0: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: createQTD
>>> >>> function: createQTD
>>> >>> function: createQH
>>> >>> function: createQH
Enabling Async Schedule
>>> >>> function: showPacket
virtAddrBuf0: C0213000h
12h 01h 00h 02h 00h 00h 00h 40h 00h 00h 00h 00h 00h 00h 01h 02h 03h 01h
>>> >>>function: showDeviceDesriptor
length: 18
descriptor type: 1
USB specification: 2.0
USB class: 0000h
USB subclass: 0000h
USB protocol 0000h
max packet size: 64
vendor: 0000h
product: 0000h
release number: 0.0
manufacturer: 0001h
product: 0002h
serial number: 0003h
number of config.: 1
Port: 4, device not attached
setup packet:
>>> >>> function: showPacket
virtAddrBuf0: C0215000h
80h 06h 00h 01h 00h 00h 12h 00h
setup:
>>> >>> function: showStatusbyteQTD
QTD: C0214000h Statusbyte: 00h
in:
>>> >>> function: showStatusbyteQTD
QTD: C0212000h Statusbyte: 00h
port 2: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 3: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 4: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
--------------------------------------------------------------------------------
Saturday, April 10, 2010, 20:27:33 9 s runtime. CPU: 7345 MHz -
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.345] Console 0: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: createQTD
>>> >>> function: createQTD
>>> >>> function: createQH
>>> >>> function: createQH
Enabling Async Schedule
>>> >>> function: showPacket
virtAddrBuf0: C0213000h
12h 01h 00h 02h 00h 00h 00h 40h 00h 00h 00h 00h 00h 00h 01h 02h 03h 01h
>>> >>>function: showDeviceDesriptor
length: 18
descriptor type: 1
USB specification: 2.0
USB class: 0000h
USB subclass: 0000h
USB protocol 0000h
max packet size: 64
vendor: 0000h
product: 0000h
release number: 0.0
manufacturer: 0001h
product: 0002h
serial number: 0003h
number of config.: 1
Port: 4, device not attached
setup packet:
>>> >>> function: showPacket
virtAddrBuf0: C0215000h
80h 06h 00h 01h 00h 00h 12h 00h
setup:
>>> >>> function: showStatusbyteQTD
QTD: C0214000h Statusbyte: 00h
in:
>>> >>> function: showStatusbyteQTD
QTD: C0212000h Statusbyte: 00h
port 2: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 3: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 4: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
--------------------------------------------------------------------------------
Saturday, April 10, 2010, 20:27:33 9 s runtime. CPU: 7345 MHz -
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:30:56 10.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:21:53 10.04.2010 Titel: |
|
Zitieren |
Rev. 346:
EHCI Start und EHCI Port Change jetzt in eigenen Konsolen, die man mit Tastendruck schließen kann, so dass man diese in Ruhe beschauen oder "fotografieren" (strg+s oder strg+t) kann.
Die Vorgehensweise an einem Beispiel, damit wir das gemeinsam diskutieren/optimieren können:
in ckernel.c:
am anfang:
| C/C++ Code: | | portCheckFlag = false; // EHCI port change | |
| C/C++ Code: | | portCheckFlag = false; // EHCI port change | |
| C/C++ Code: | | portCheckFlag = false; // EHCI port change | |
später in der idle loop:
| C/C++ Code: | if ((portCheckFlag == true) && (CurrentSeconds >= 3) && pODA->pciEHCInumber)
{
portCheckFlag = false;
create_cthread((task_t*)pODA->curTask, &portCheck, "EHCI Ports");
} | |
| C/C++ Code: | if ((portCheckFlag == true) && (CurrentSeconds >= 3) && pODA->pciEHCInumber)
{
portCheckFlag = false;
create_cthread((task_t*)pODA->curTask, &portCheck, "EHCI Ports");
} | |
| C/C++ Code: | if ((portCheckFlag == true) && (CurrentSeconds >= 3) && pODA->pciEHCInumber)
{
portCheckFlag = false;
create_cthread((task_t*)pODA->curTask, &portCheck, "EHCI Ports");
} | |
in ehci.c:
der EHCI-Interrupthandler:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | void ehci_handler(registers_t* r)
{
//...
if (pOpRegs->USBSTS & STS_PORT_CHANGE)
{
settextcolor(9,0);
printf("Port Change");
settextcolor(15,0);
pOpRegs->USBSTS |= STS_PORT_CHANGE;
if (enabledPortFlag)
{
portCheckFlag = true;
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | void ehci_handler(registers_t* r)
{
//...
if (pOpRegs->USBSTS & STS_PORT_CHANGE)
{
settextcolor(9,0);
printf("Port Change");
settextcolor(15,0);
pOpRegs->USBSTS |= STS_PORT_CHANGE;
if (enabledPortFlag)
{
portCheckFlag = true;
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | void ehci_handler(registers_t* r)
{
//...
if (pOpRegs->USBSTS & STS_PORT_CHANGE)
{
settextcolor(9,0);
printf("Port Change");
settextcolor(15,0);
pOpRegs->USBSTS |= STS_PORT_CHANGE;
if (enabledPortFlag)
{
portCheckFlag = true;
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | 1 2 3 4 5 6 7 8 9 | void portCheck()
{
showPORTSC();
checkPortLineStatus();
settextcolor(13,0);
printf("\n>>> Press key to close this console. <<<");
settextcolor(15,0);
while(!checkKQ_and_return_char());
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | void portCheck()
{
showPORTSC();
checkPortLineStatus();
settextcolor(13,0);
printf("\n>>> Press key to close this console. <<<");
settextcolor(15,0);
while(!checkKQ_and_return_char());
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | void portCheck()
{
showPORTSC();
checkPortLineStatus();
settextcolor(13,0);
printf("\n>>> Press key to close this console. <<<");
settextcolor(15,0);
while(!checkKQ_and_return_char());
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:27:55 10.04.2010, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
01:17:43 11.04.2010 Titel: |
|
Zitieren |
Nach hartem "Kampf" im IRC nun Revision 347:
- Ergebnisse Code Review pci.c
- syscall zur Begrenzung des Scrollbereichs.
- Math-Fkts. von Iteem (Danke dafür!) eingebaut. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:46:33 11.04.2010 Titel: |
|
Zitieren |
Rev. 348:
- rtl8139.h geschaffen
- EHCI und RTL8139 Funktionen aus os.h entfernt
- kleine Verbesserungen (falscher Kommentar in rtl8139, Klammer)
Tests:
Bochs: alles ok (hat kein EHCI)
Qemu: alles ok (incl. EHCI)
VMWare: bricht im Bootscreen ab
VBox: USB devices lassen sich nicht einbinden, sonst alles ok
Auf real Hardware Probleme z.T. bei Memory-Erkennung und bei EHCI MMIO. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 11:35:02 11.04.2010, insgesamt 4-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
13:10:04 11.04.2010 Titel: |
|
Zitieren |
Revision 349:
- Flags durch Events ersetzt.
- -fno-common als gcc-schalter genutzt -> Der Kampf um "extern" ist vorbei, die pro-extern-Fraktion hat (zum Glück ) gewonnen
-- Daraus resultierende Fehler behoben
- "pause" nach dem compilieren in build.bat |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:58:54 11.04.2010 Titel: |
|
Zitieren |
Rev. 350:
os.h u. ckernel.c: kleine Aufräumarbeiten |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
16:39:03 11.04.2010 Titel: |
|
Zitieren |
Revision 351:
- Anderes Eventsystem: Fkt-Ptr. basiert
- pciList von überflüssigem _Diagnosis_ befreit.
- list.c: Fehler in listShowElement und listDeleteAll behoben |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:38:32 11.04.2010 Titel: |
|
Zitieren |
Rev. 352:
- zwischenschritt ehci.c (#PF bei thread "EHCI")
warum ist der thread zum EHCI init nur "user"?
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | PrettyOS [Version 0.0.0.352] Console 0: EHCI
--------------------------------------------------------------------------------
Page Fault ( - user-mode) at 00041D92h - EIP: 00041D92h
err_code: 00000005h address(eip): 00041D92h
edi: 00000000h esi: 00000000h ebp: 00000000h eax: 00000000h ebx: 00000000h ecx:
00000000h edx: 00000000h
cs: 0000001Bh ds: 00000023h es: 00000023h fs: 00000023h gs 00000023h ss 00000023
h
int_no 14 eflags 00010202h useresp 01420000h
Page Fault!
| <Exception - System Halted> Press key for exit from the task! | | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | PrettyOS [Version 0.0.0.352] Console 0: EHCI
--------------------------------------------------------------------------------
Page Fault ( - user-mode) at 00041D92h - EIP: 00041D92h
err_code: 00000005h address(eip): 00041D92h
edi: 00000000h esi: 00000000h ebp: 00000000h eax: 00000000h ebx: 00000000h ecx:
00000000h edx: 00000000h
cs: 0000001Bh ds: 00000023h es: 00000023h fs: 00000023h gs 00000023h ss 00000023
h
int_no 14 eflags 00010202h useresp 01420000h
Page Fault!
| <Exception - System Halted> Press key for exit from the task! | | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | PrettyOS [Version 0.0.0.352] Console 0: EHCI
--------------------------------------------------------------------------------
Page Fault ( - user-mode) at 00041D92h - EIP: 00041D92h
err_code: 00000005h address(eip): 00041D92h
edi: 00000000h esi: 00000000h ebp: 00000000h eax: 00000000h ebx: 00000000h ecx:
00000000h edx: 00000000h
cs: 0000001Bh ds: 00000023h es: 00000023h fs: 00000023h gs 00000023h ss 00000023
h
int_no 14 eflags 00010202h useresp 01420000h
Page Fault!
| <Exception - System Halted> Press key for exit from the task! | | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:26:19 11.04.2010 Titel: |
|
Zitieren |
Rev. 353:
work-around, bis das thema ring0/ring3 geklärt ist bei threads:
task.c, line 229/230:
| C/C++ Code: | // new_task->privilege = parentTask->privilege;
new_task->privilege = 0; /// TEST | |
| C/C++ Code: | // new_task->privilege = parentTask->privilege;
new_task->privilege = 0; /// TEST | |
| C/C++ Code: | // new_task->privilege = parentTask->privilege;
new_task->privilege = 0; /// TEST | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:42:06 11.04.2010 Titel: |
|
Zitieren |
Revision 354:
- create_thread nimmt keinen parentTask mehr, ist jetzt immer current_task
- Optimierungen in userlib.c
- list.c: Überflüssige (und m.E. falsche, mglw. Memory-Leaks produzierende) Fkt. entfernt
- abs heißt nun fabs, nimmt doubles und nutzt die FPU |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:53:32 11.04.2010 Titel: |
|
Zitieren |
Revision 355:
- Projektfile für VC++. Wer will kann auch welche für andere IDEs machen.
- pODA ist nun kein Pointer mehr und heißt somit ODA. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:09:16 12.04.2010 Titel: |
|
Zitieren |
Rev. 356:
Vor USB-Transfer wird gestoppt (Tastendruck), damit sind mehrere Konsolen bereit dazu.
USB-Transfer klappt aber bisher nur einmal erfolgreich bei real Hardware)
Da EHCI/USB2 noch ziemlich unübersichtlich ist durch die Vielzahl der Ports und Möglichkeiten, hier die Konsolen meines "Entwicklungs-PCs":
Konsole M:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.355] Shell
--------------------------------------------------------------------------------
1.44 MB FDD device 0
#0 0:0.0 dev:2774h vend:8086h IRQ:0
#1 0:1.0 dev:2775h vend:8086h IRQ:5
#2 0:27.0 dev:27D8h vend:8086h IRQ:3
#3 0:28.0 dev:27D0h vend:8086h IRQ:5
#4 0:28.4 dev:27E0h vend:8086h IRQ:5
#5 0:28.5 dev:27E2h vend:8086h IRQ:11
#6 0:29.0 dev:27C8h vend:8086h IRQ:11 USB UHCI 6000h I/O sz:-65504
#7 0:29.1 dev:27C9h vend:8086h IRQ:11 USB UHCI 6400h I/O sz:-65504
#8 0:29.2 dev:27CAh vend:8086h IRQ:11 USB UHCI 6800h I/O sz:-65504
#9 0:29.3 dev:27CBh vend:8086h IRQ:3 USB UHCI 7000h I/O sz:-65504
#10 0:29.7 dev:27CCh vend:8086h IRQ:11 USB EHCI CDBFF800h MMIO sz:1024
EHCI_MMIO CDBFF800h mapped to virt addr FF000000h, offset: 0800h
>>> >>> function: analyzeEHCI
EHCI bar get_phys_Addr: 0DBFF800h
HCIVERSION: 0100h HCSPARAMS: 00104208h Ports: 8
HCCPARAMS: 00006871h
OpRegs Address: FF000820h
#11 0:30.0 dev:244Eh vend:8086h IRQ:0
#12 0:31.0 dev:27B8h vend:8086h IRQ:0
#13 0:31.1 dev:27DFh vend:8086h IRQ:0
#14 0:31.2 dev:27C0h vend:8086h IRQ:5
#15 0:31.3 dev:27DAh vend:8086h IRQ:0
#16 1:3.0 dev:8023h vend:104Ch IRQ:11
#17 1:4.0 dev:8211h vend:1283h IRQ:3
#18 1:5.0 dev:4320h vend:11ABh IRQ:11
#19 2:0.0 dev:3132h vend:1095h IRQ:11
#20 3:0.0 dev:108Bh vend:8086h IRQ:5
<RAM Disk at C0002000h DIR> dev
35 info
9562 shell
>>> >>> function: ehci_handler: Port Change
>>> >>> function: ehci_handler: Port ChangeScreenshot (Thread)
$>
--------------------------------------------------------------------------------
_______ _______ <>_<>
(_______) |_|_|_|_|_|_|| [] [] | .---|'"`|---.
`-oo---oo-'`-oo-----oo-'`-o---o-'`o"O-OO-OO-O"o'
--------------------------------------------------------------------------------
Monday, April 12, 2010, 00:38:22 47 s runtime. CPU: 3753 MHz \ | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.355] Shell
--------------------------------------------------------------------------------
1.44 MB FDD device 0
#0 0:0.0 dev:2774h vend:8086h IRQ:0
#1 0:1.0 dev:2775h vend:8086h IRQ:5
#2 0:27.0 dev:27D8h vend:8086h IRQ:3
#3 0:28.0 dev:27D0h vend:8086h IRQ:5
#4 0:28.4 dev:27E0h vend:8086h IRQ:5
#5 0:28.5 dev:27E2h vend:8086h IRQ:11
#6 0:29.0 dev:27C8h vend:8086h IRQ:11 USB UHCI 6000h I/O sz:-65504
#7 0:29.1 dev:27C9h vend:8086h IRQ:11 USB UHCI 6400h I/O sz:-65504
#8 0:29.2 dev:27CAh vend:8086h IRQ:11 USB UHCI 6800h I/O sz:-65504
#9 0:29.3 dev:27CBh vend:8086h IRQ:3 USB UHCI 7000h I/O sz:-65504
#10 0:29.7 dev:27CCh vend:8086h IRQ:11 USB EHCI CDBFF800h MMIO sz:1024
EHCI_MMIO CDBFF800h mapped to virt addr FF000000h, offset: 0800h
>>> >>> function: analyzeEHCI
EHCI bar get_phys_Addr: 0DBFF800h
HCIVERSION: 0100h HCSPARAMS: 00104208h Ports: 8
HCCPARAMS: 00006871h
OpRegs Address: FF000820h
#11 0:30.0 dev:244Eh vend:8086h IRQ:0
#12 0:31.0 dev:27B8h vend:8086h IRQ:0
#13 0:31.1 dev:27DFh vend:8086h IRQ:0
#14 0:31.2 dev:27C0h vend:8086h IRQ:5
#15 0:31.3 dev:27DAh vend:8086h IRQ:0
#16 1:3.0 dev:8023h vend:104Ch IRQ:11
#17 1:4.0 dev:8211h vend:1283h IRQ:3
#18 1:5.0 dev:4320h vend:11ABh IRQ:11
#19 2:0.0 dev:3132h vend:1095h IRQ:11
#20 3:0.0 dev:108Bh vend:8086h IRQ:5
<RAM Disk at C0002000h DIR> dev
35 info
9562 shell
>>> >>> function: ehci_handler: Port Change
>>> >>> function: ehci_handler: Port ChangeScreenshot (Thread)
$>
--------------------------------------------------------------------------------
_______ _______ <>_<>
(_______) |_|_|_|_|_|_|| [] [] | .---|'"`|---.
`-oo---oo-'`-oo-----oo-'`-o---o-'`o"O-OO-OO-O"o'
--------------------------------------------------------------------------------
Monday, April 12, 2010, 00:38:22 47 s runtime. CPU: 3753 MHz \ | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.355] Shell
--------------------------------------------------------------------------------
1.44 MB FDD device 0
#0 0:0.0 dev:2774h vend:8086h IRQ:0
#1 0:1.0 dev:2775h vend:8086h IRQ:5
#2 0:27.0 dev:27D8h vend:8086h IRQ:3
#3 0:28.0 dev:27D0h vend:8086h IRQ:5
#4 0:28.4 dev:27E0h vend:8086h IRQ:5
#5 0:28.5 dev:27E2h vend:8086h IRQ:11
#6 0:29.0 dev:27C8h vend:8086h IRQ:11 USB UHCI 6000h I/O sz:-65504
#7 0:29.1 dev:27C9h vend:8086h IRQ:11 USB UHCI 6400h I/O sz:-65504
#8 0:29.2 dev:27CAh vend:8086h IRQ:11 USB UHCI 6800h I/O sz:-65504
#9 0:29.3 dev:27CBh vend:8086h IRQ:3 USB UHCI 7000h I/O sz:-65504
#10 0:29.7 dev:27CCh vend:8086h IRQ:11 USB EHCI CDBFF800h MMIO sz:1024
EHCI_MMIO CDBFF800h mapped to virt addr FF000000h, offset: 0800h
>>> >>> function: analyzeEHCI
EHCI bar get_phys_Addr: 0DBFF800h
HCIVERSION: 0100h HCSPARAMS: 00104208h Ports: 8
HCCPARAMS: 00006871h
OpRegs Address: FF000820h
#11 0:30.0 dev:244Eh vend:8086h IRQ:0
#12 0:31.0 dev:27B8h vend:8086h IRQ:0
#13 0:31.1 dev:27DFh vend:8086h IRQ:0
#14 0:31.2 dev:27C0h vend:8086h IRQ:5
#15 0:31.3 dev:27DAh vend:8086h IRQ:0
#16 1:3.0 dev:8023h vend:104Ch IRQ:11
#17 1:4.0 dev:8211h vend:1283h IRQ:3
#18 1:5.0 dev:4320h vend:11ABh IRQ:11
#19 2:0.0 dev:3132h vend:1095h IRQ:11
#20 3:0.0 dev:108Bh vend:8086h IRQ:5
<RAM Disk at C0002000h DIR> dev
35 info
9562 shell
>>> >>> function: ehci_handler: Port Change
>>> >>> function: ehci_handler: Port ChangeScreenshot (Thread)
$>
--------------------------------------------------------------------------------
_______ _______ <>_<>
(_______) |_|_|_|_|_|_|| [] [] | .---|'"`|---.
`-oo---oo-'`-oo-----oo-'`-o---o-'`o"O-OO-OO-O"o'
--------------------------------------------------------------------------------
Monday, April 12, 2010, 00:38:22 47 s runtime. CPU: 3753 MHz \ | |
Konsole 0:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | PrettyOS [Version 0.0.0.355] Console 0: EHCI
--------------------------------------------------------------------------------
>>> >>> function: initEHCIHostController
>>> >>> function: startHostController (reset HC)
waiting for HC reset
>>> >>> function: DeactivateLegacySupport
DeactivateLegacySupport: eecp = 0068h
eecp = 0068h, eecp_id = 0001h
set OS-Semaphore.
BIOS-Semaphore being not set.
OS-Semaphore being set.
Check: BIOSownedSemaphore: 0 OSownedSemaphore: 1
>>> >>> function: ehci_handler: Port Change
HCHalted bit set to 0 (OK), ports can be enabled now.
>>> >>> function: enablePorts
>>> >>> function: resetPort 1
>>> >>> function: resetPort 2
>>> >>> function: resetPort 3
>>> >>> function: resetPort 4
>>> >>> function: resetPort 5
>>> >>> function: resetPort 6
>>> >>> function: resetPort 7
>>> >>> function: resetPort 8
>>> Press key to close this console. <<< | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | PrettyOS [Version 0.0.0.355] Console 0: EHCI
--------------------------------------------------------------------------------
>>> >>> function: initEHCIHostController
>>> >>> function: startHostController (reset HC)
waiting for HC reset
>>> >>> function: DeactivateLegacySupport
DeactivateLegacySupport: eecp = 0068h
eecp = 0068h, eecp_id = 0001h
set OS-Semaphore.
BIOS-Semaphore being not set.
OS-Semaphore being set.
Check: BIOSownedSemaphore: 0 OSownedSemaphore: 1
>>> >>> function: ehci_handler: Port Change
HCHalted bit set to 0 (OK), ports can be enabled now.
>>> >>> function: enablePorts
>>> >>> function: resetPort 1
>>> >>> function: resetPort 2
>>> >>> function: resetPort 3
>>> >>> function: resetPort 4
>>> >>> function: resetPort 5
>>> >>> function: resetPort 6
>>> >>> function: resetPort 7
>>> >>> function: resetPort 8
>>> Press key to close this console. <<< | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | PrettyOS [Version 0.0.0.355] Console 0: EHCI
--------------------------------------------------------------------------------
>>> >>> function: initEHCIHostController
>>> >>> function: startHostController (reset HC)
waiting for HC reset
>>> >>> function: DeactivateLegacySupport
DeactivateLegacySupport: eecp = 0068h
eecp = 0068h, eecp_id = 0001h
set OS-Semaphore.
BIOS-Semaphore being not set.
OS-Semaphore being set.
Check: BIOSownedSemaphore: 0 OSownedSemaphore: 1
>>> >>> function: ehci_handler: Port Change
HCHalted bit set to 0 (OK), ports can be enabled now.
>>> >>> function: enablePorts
>>> >>> function: resetPort 1
>>> >>> function: resetPort 2
>>> >>> function: resetPort 3
>>> >>> function: resetPort 4
>>> >>> function: resetPort 5
>>> >>> function: resetPort 6
>>> >>> function: resetPort 7
>>> >>> function: resetPort 8
>>> Press key to close this console. <<< | |
Konsole 1:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | 1 2 3 4 5 6 7 8 9 10 11 12 | PrettyOS [Version 0.0.0.355] Console 1: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: showPORTSC
>>> >>> function: checkPortLineStatus
>>> Status of USB Ports <<<
port 1: 00001801h, line: 02h J-state
port 2: 00001005h, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to start USB-Test. <<< | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | PrettyOS [Version 0.0.0.355] Console 1: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: showPORTSC
>>> >>> function: checkPortLineStatus
>>> Status of USB Ports <<<
port 1: 00001801h, line: 02h J-state
port 2: 00001005h, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to start USB-Test. <<< | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | PrettyOS [Version 0.0.0.355] Console 1: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: showPORTSC
>>> >>> function: checkPortLineStatus
>>> Status of USB Ports <<<
port 1: 00001801h, line: 02h J-state
port 2: 00001005h, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to start USB-Test. <<< | |
Konsole 2:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | 1 2 3 4 5 6 7 8 9 10 11 12 13 | PrettyOS [Version 0.0.0.355] Console 2: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: showPORTSC
>>> >>> function: resetPort 8
>>> >>> function: checkPortLineStatus
>>> Status of USB Ports <<<
port 1: 00001801h, line: 02h J-state
port 2: 00001005h, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to start USB-Test. <<< | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | PrettyOS [Version 0.0.0.355] Console 2: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: showPORTSC
>>> >>> function: resetPort 8
>>> >>> function: checkPortLineStatus
>>> Status of USB Ports <<<
port 1: 00001801h, line: 02h J-state
port 2: 00001005h, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to start USB-Test. <<< | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | PrettyOS [Version 0.0.0.355] Console 2: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: showPORTSC
>>> >>> function: resetPort 8
>>> >>> function: checkPortLineStatus
>>> Status of USB Ports <<<
port 1: 00001801h, line: 02h J-state
port 2: 00001005h, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to start USB-Test. <<< | |
Taste auf Konsole 2 bringt einen korrekten USB-Transfer. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:48:52 12.04.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:24:41 12.04.2010 Titel: |
|
Zitieren |
Rev. 357:
read_directory: bei nur 3 Zeichen im Namen noch ein '\t' ausgeben
ehci: Restart nach Host System Error per Einschub einer Message in event loop getriggert
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | 1 2 3 4 5 6 7 8 9 10 11 12 | if (pOpRegs->USBSTS & STS_HOST_SYSTEM_ERROR)
{
settextcolor(4,0);
printf("\nHost System Error");
settextcolor(15,0);
pOpRegs->USBCMD &= ~CMD_ASYNCH_ENABLE; // necessary?
pOpRegs->USBSTS |= STS_HOST_SYSTEM_ERROR;
settextcolor(14,0);
printf("\nInit EHCI after fatal error");
settextcolor(15,0);
addEvent(&EHCI_INIT);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | if (pOpRegs->USBSTS & STS_HOST_SYSTEM_ERROR)
{
settextcolor(4,0);
printf("\nHost System Error");
settextcolor(15,0);
pOpRegs->USBCMD &= ~CMD_ASYNCH_ENABLE; // necessary?
pOpRegs->USBSTS |= STS_HOST_SYSTEM_ERROR;
settextcolor(14,0);
printf("\nInit EHCI after fatal error");
settextcolor(15,0);
addEvent(&EHCI_INIT);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | if (pOpRegs->USBSTS & STS_HOST_SYSTEM_ERROR)
{
settextcolor(4,0);
printf("\nHost System Error");
settextcolor(15,0);
pOpRegs->USBCMD &= ~CMD_ASYNCH_ENABLE; // necessary?
pOpRegs->USBSTS |= STS_HOST_SYSTEM_ERROR;
settextcolor(14,0);
printf("\nInit EHCI after fatal error");
settextcolor(15,0);
addEvent(&EHCI_INIT);
} | |
Hier mal ein dickes Lob an MrX für die Realisierung der Event Queue und Loop! Echt klasse das Teil. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:27:33 12.04.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:14:55 12.04.2010 Titel: |
|
Zitieren |
Rev. 358:
ehci.c / usb2.c: Debug-Ausgaben etwas verdichtet, damit das auf einen Bildschirm passt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:56:41 12.04.2010 Titel: |
|
Zitieren |
Revision 359:
- current_task weggemacht
- new_task wird nicht direkt aktiviert, sondern in der task-Queue am Ende eingefügt
- Projektfile aufgeräumt
- kleiner Shell-Fehler behoben. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:21:38 12.04.2010 Titel: |
|
Zitieren |
Rev. 360:
Damit wir mal mit float arbeiten können:
userlib:
- ftoa anstelle float2string
- atof
- hello: rechnet pq-formel
bitte testen, ob alles stimmt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:26:41 13.04.2010 Titel: |
|
Zitieren |
Rev. 361:
waren noch einige Korrekturen notwendig |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:23:51 13.04.2010 Titel: |
|
Zitieren |
Rev. 362:
- in PQEQ.ELF umbenannt und auch in FloppyImage eingebunden, damit man das überhaupt laden kann
- header für beep aus ckernel.c entfernt
Wer die Ergebnisse des pq-equation-programms überprüfen will, dem empfehle ich folgendes C++-Programm:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <iostream>
#include <limits> // wait()
#include <cmath> // sqrt(...)
using namespace std;
void wait()
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.get();
}
int main()
{
cout << "Calculation of quadratic equation of type x*x + p*x + q = 0"
<< endl << endl;
double p, q, x1, x2;
cout << "Please enter p: ";
cin >> p;
cout << "Please enter q: ";
cin >> q;
x1 = -p/2 + sqrt( p*p/4.0 - q );
x2 = -p/2 - sqrt( p*p/4.0 - q );
cout << endl << "x1 = " << x1 << endl << "x2 = " << x2 << endl;
wait();
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <iostream>
#include <limits> // wait()
#include <cmath> // sqrt(...)
using namespace std;
void wait()
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.get();
}
int main()
{
cout << "Calculation of quadratic equation of type x*x + p*x + q = 0"
<< endl << endl;
double p, q, x1, x2;
cout << "Please enter p: ";
cin >> p;
cout << "Please enter q: ";
cin >> q;
x1 = -p/2 + sqrt( p*p/4.0 - q );
x2 = -p/2 - sqrt( p*p/4.0 - q );
cout << endl << "x1 = " << x1 << endl << "x2 = " << x2 << endl;
wait();
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <iostream>
#include <limits> // wait()
#include <cmath> // sqrt(...)
using namespace std;
void wait()
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.get();
}
int main()
{
cout << "Calculation of quadratic equation of type x*x + p*x + q = 0"
<< endl << endl;
double p, q, x1, x2;
cout << "Please enter p: ";
cin >> p;
cout << "Please enter q: ";
cin >> q;
x1 = -p/2 + sqrt( p*p/4.0 - q );
x2 = -p/2 - sqrt( p*p/4.0 - q );
cout << endl << "x1 = " << x1 << endl << "x2 = " << x2 << endl;
wait();
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:07:06 15.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:35:13 13.04.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:56:53 13.04.2010 Titel: |
|
Zitieren |
Rev. 364:
gdt.c: |0xF bei granularity entfernt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:29:39 14.04.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:45:12 14.04.2010 Titel: |
|
Zitieren |
Revision 366:
- os.h auseinandergenommen und andere Header-Umsortierungen (Darum so ein Riesen-Commit)
- _template_header.h entfernt sowie readelf.exe + read_program_elf.bat entfernt
- Doppeltes PQ-EQ entfernt
- atof und ftoa statt float2string in util.c
- math.c -> util.c |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:07:44 15.04.2010 Titel: |
|
Zitieren |
Rev. 367:
ehci/usb variiert, so dass man bei QTD alle Parameter für einen Request übergeben kann; struct und show-Fkt. für ConfigurationDesriptor |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:38:47 15.04.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:38:12 15.04.2010 Titel: |
|
Zitieren |
rev. 368:
ehci/usb: zwei Abfragen hintereinander: erst device, dann configuration.
Allerdings läuft das auf qemu. Mit real PC gibt es noch Probleme, die mir aber bezüglich der Ursache noch nicht klar sind. Da bitte ich um Mithilfe bei der Ursachenfindung, damit wir uns von EHCI lösen und zu USB2 übergehen können.
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.368] Console 1: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: showPORTSC
>>> >>> function: checkPortLineStatus
>>> Status of USB Ports <<<
port 1: 0000100Dh, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to start USB-Test. <<<
>>> >>> function: testTransfer
Test transfer with device address: 0
Enabling Async Schedule
>>> >>> function: showPacket
virtAddrBuf0: C0218000h
12h 01h 00h 02h 00h 00h 00h 40h 00h 00h 00h 00h 00h 00h 01h 02h 03h 01h
>>> >>>function: showDeviceDesriptor
length: 18 descriptor type: 1
USB specification: 2.0 USB class: 0000h
USB subclass: 0000h USB protocol 0000h
max packet size: 64 vendor: 0000h
product: 0000h release number: 0.0
manufacturer: 0001h product: 0002h
serial number: 0003h number of config.: 1
>>> >>> function: testTransfer
Test transfer with device address: 0
Enabling Async Schedule
>>> >>> function: showPacket
virtAddrBuf0: C0220000h
09h 02h 20h 00h 01h 01h 00h C0h 00h
>>> >>>function: showConfigurationDesriptor
length: 9 descriptor type: 2
total length: 32 number of interfaces: 1
ID of config: 0001h ID of config name 0000h
Remote Wakeup: no Self-powered: yes
max power (mA): 0
port 2: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 3: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 4: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to close this console. <<<
--------------------------------------------------------------------------------
Thursday, April 15, 2010, 00:37:36 22 s runtime. CPU: 3746 MHz \ | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.368] Console 1: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: showPORTSC
>>> >>> function: checkPortLineStatus
>>> Status of USB Ports <<<
port 1: 0000100Dh, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to start USB-Test. <<<
>>> >>> function: testTransfer
Test transfer with device address: 0
Enabling Async Schedule
>>> >>> function: showPacket
virtAddrBuf0: C0218000h
12h 01h 00h 02h 00h 00h 00h 40h 00h 00h 00h 00h 00h 00h 01h 02h 03h 01h
>>> >>>function: showDeviceDesriptor
length: 18 descriptor type: 1
USB specification: 2.0 USB class: 0000h
USB subclass: 0000h USB protocol 0000h
max packet size: 64 vendor: 0000h
product: 0000h release number: 0.0
manufacturer: 0001h product: 0002h
serial number: 0003h number of config.: 1
>>> >>> function: testTransfer
Test transfer with device address: 0
Enabling Async Schedule
>>> >>> function: showPacket
virtAddrBuf0: C0220000h
09h 02h 20h 00h 01h 01h 00h C0h 00h
>>> >>>function: showConfigurationDesriptor
length: 9 descriptor type: 2
total length: 32 number of interfaces: 1
ID of config: 0001h ID of config name 0000h
Remote Wakeup: no Self-powered: yes
max power (mA): 0
port 2: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 3: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 4: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to close this console. <<<
--------------------------------------------------------------------------------
Thursday, April 15, 2010, 00:37:36 22 s runtime. CPU: 3746 MHz \ | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.368] Console 1: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: showPORTSC
>>> >>> function: checkPortLineStatus
>>> Status of USB Ports <<<
port 1: 0000100Dh, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to start USB-Test. <<<
>>> >>> function: testTransfer
Test transfer with device address: 0
Enabling Async Schedule
>>> >>> function: showPacket
virtAddrBuf0: C0218000h
12h 01h 00h 02h 00h 00h 00h 40h 00h 00h 00h 00h 00h 00h 01h 02h 03h 01h
>>> >>>function: showDeviceDesriptor
length: 18 descriptor type: 1
USB specification: 2.0 USB class: 0000h
USB subclass: 0000h USB protocol 0000h
max packet size: 64 vendor: 0000h
product: 0000h release number: 0.0
manufacturer: 0001h product: 0002h
serial number: 0003h number of config.: 1
>>> >>> function: testTransfer
Test transfer with device address: 0
Enabling Async Schedule
>>> >>> function: showPacket
virtAddrBuf0: C0220000h
09h 02h 20h 00h 01h 01h 00h C0h 00h
>>> >>>function: showConfigurationDesriptor
length: 9 descriptor type: 2
total length: 32 number of interfaces: 1
ID of config: 0001h ID of config name 0000h
Remote Wakeup: no Self-powered: yes
max power (mA): 0
port 2: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 3: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 4: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to close this console. <<<
--------------------------------------------------------------------------------
Thursday, April 15, 2010, 00:37:36 22 s runtime. CPU: 3746 MHz \ | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 09:19:57 15.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Z
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.02.2010
Beiträge: 773
|
Z Mitglied
00:49:38 15.04.2010 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: | rev. 368:
|
Erhard Henkes, ich prophezeihe: PrettyOS wird dein Lebenswerk. |
_________________ a = b << c; /* shift happens */
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:09:33 15.04.2010 Titel: |
|
Zitieren |
| Zitat: | ich prophezeihe: PrettyOS wird dein Lebenswerk.  |
Ja, es hat schon etwas Faszinierendes. Die Spannung lässt nicht nach. Gerade das Thema EHCI/USB oder später der Ausbau des Netzwerk-Codes stellen gewisse Anforderungen. Für viele sind aber auch die Themen Memory Management, Programming/Scheduling, Interprocess Communication oder Application Programming Interface reizvoller. Von den User-Programmen, eigenen Compilern usw. mal gar nicht anzufangen.
Das lässt sich aber nur im Team bewältigen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 09:28:49 15.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Z
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.02.2010
Beiträge: 773
|
Z Mitglied
09:38:24 15.04.2010 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: | | Zitat: | ich prophezeihe: PrettyOS wird dein Lebenswerk.  |
Ja, es hat schon etwas Faszinierendes. Die Spannung lässt nicht nach. Gerade das Thema EHCI/USB oder später der Ausbau des Netzwerk-Codes stellen gewisse Anforderungen. Für viele sind aber auch die Themen Memory Management, Programming/Scheduling, Interprocess Communication oder Application Programming Interface reizvoller. Von den User-Programmen, eigenen Compilern usw. mal gar nicht anzufangen.
Das lässt sich aber nur im Team bewältigen. |
Na, dann wünsche ich Dir und deinem Team weiterhin viel Spaß und Erfolg. |
_________________ a = b << c; /* shift happens */
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:44:05 15.04.2010 Titel: |
|
Zitieren |
@Z: wie wäre es, wenn Du bei uns mal mithilfst und auch Freude am Experimentieren/Tüfteln hast? Bei EHCI/USB könnte ich z.Z. einen Mitdenker/Tester gut brauchen.
Rev. 369:
- ehci/usb2: Debug-Prints reduziert, damit man die USB-Ergebisse besser sieht
Testen mit qemu: http://download.tyndur.org/temp/qemu-ehci.tgz
Konsole M (kernel/shell):
| Code: | Port Change
ehci_handler: USB Interrupt
ehci_handler: USB Interrupt | |
| Code: | Port Change
ehci_handler: USB Interrupt
ehci_handler: USB Interrupt | |
| Code: | Port Change
ehci_handler: USB Interrupt
ehci_handler: USB Interrupt | |
Konsole 0:
| Code: | 1 2 3 4 5 6 7 8 9 10 | 1 2 3 4 5 6 7 8 9 10 | >>> >>> function: initEHCIHostController
>>> >>> function: startHostController (reset HC)
DeactivateLegacySupport: eecp = 0000h
No valid eecp found.
>>> >>> function: enablePorts
>>> >>> function: resetPort 1
>>> >>> function: resetPort 2
>>> >>> function: resetPort 3
>>> >>> function: resetPort 4 | |
| Code: | 1 2 3 4 5 6 7 8 9 10 | >>> >>> function: initEHCIHostController
>>> >>> function: startHostController (reset HC)
DeactivateLegacySupport: eecp = 0000h
No valid eecp found.
>>> >>> function: enablePorts
>>> >>> function: resetPort 1
>>> >>> function: resetPort 2
>>> >>> function: resetPort 3
>>> >>> function: resetPort 4 | |
| Code: | 1 2 3 4 5 6 7 8 9 10 | >>> >>> function: initEHCIHostController
>>> >>> function: startHostController (reset HC)
DeactivateLegacySupport: eecp = 0000h
No valid eecp found.
>>> >>> function: enablePorts
>>> >>> function: resetPort 1
>>> >>> function: resetPort 2
>>> >>> function: resetPort 3
>>> >>> function: resetPort 4 | |
Konsole 1:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | >>> Status of USB Ports <<<
port 1: 0000100Dh, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to start USB-Test. <<<
USB2: GET_DESCRIPTOR device, dev: 0 endpoint: 0
12h 01h 00h 02h 00h 00h 00h 40h 00h 00h 00h 00h 00h 00h 01h 02h 03h 01h
length: 18 descriptor type: 1
USB specification: 2.0 USB class: 0000h
USB subclass: 0000h USB protocol 0000h
max packet size: 64 vendor: 0000h
product: 0000h release number: 0.0
manufacturer: 0001h product: 0002h
serial number: 0003h number of config.: 1
USB2: GET_DESCRIPTOR config, dev: 0 endpoint: 0
09h 02h 20h 00h 01h 01h 00h C0h 00h
length: 9 descriptor type: 2
total length: 32 number of interfaces: 1
ID of config: 0001h ID of config name 0000h
Remote Wakeup: no Self-powered: yes
max power (mA): 0
port 2: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 3: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 4: 00001004h, line: 00h SE0,power on, enabled, EHCI owned | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | >>> Status of USB Ports <<<
port 1: 0000100Dh, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to start USB-Test. <<<
USB2: GET_DESCRIPTOR device, dev: 0 endpoint: 0
12h 01h 00h 02h 00h 00h 00h 40h 00h 00h 00h 00h 00h 00h 01h 02h 03h 01h
length: 18 descriptor type: 1
USB specification: 2.0 USB class: 0000h
USB subclass: 0000h USB protocol 0000h
max packet size: 64 vendor: 0000h
product: 0000h release number: 0.0
manufacturer: 0001h product: 0002h
serial number: 0003h number of config.: 1
USB2: GET_DESCRIPTOR config, dev: 0 endpoint: 0
09h 02h 20h 00h 01h 01h 00h C0h 00h
length: 9 descriptor type: 2
total length: 32 number of interfaces: 1
ID of config: 0001h ID of config name 0000h
Remote Wakeup: no Self-powered: yes
max power (mA): 0
port 2: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 3: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 4: 00001004h, line: 00h SE0,power on, enabled, EHCI owned | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | >>> Status of USB Ports <<<
port 1: 0000100Dh, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to start USB-Test. <<<
USB2: GET_DESCRIPTOR device, dev: 0 endpoint: 0
12h 01h 00h 02h 00h 00h 00h 40h 00h 00h 00h 00h 00h 00h 01h 02h 03h 01h
length: 18 descriptor type: 1
USB specification: 2.0 USB class: 0000h
USB subclass: 0000h USB protocol 0000h
max packet size: 64 vendor: 0000h
product: 0000h release number: 0.0
manufacturer: 0001h product: 0002h
serial number: 0003h number of config.: 1
USB2: GET_DESCRIPTOR config, dev: 0 endpoint: 0
09h 02h 20h 00h 01h 01h 00h C0h 00h
length: 9 descriptor type: 2
total length: 32 number of interfaces: 1
ID of config: 0001h ID of config name 0000h
Remote Wakeup: no Self-powered: yes
max power (mA): 0
port 2: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 3: 00001004h, line: 00h SE0,power on, enabled, EHCI owned
port 4: 00001004h, line: 00h SE0,power on, enabled, EHCI owned | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:49:12 15.04.2010, insgesamt 2-mal bearbeitet |
|
 |
Z
Mitglied
Benutzerprofil
Anmeldungsdatum: 15.02.2010
Beiträge: 773
|
Z Mitglied
11:59:45 15.04.2010 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: |
@Z: wie wäre es, wenn Du bei uns mal mithilfst und auch Freude am Experimentieren/Tüfteln hast?
|
Danke, aber nein. Ich bin in meiner Freizeit schon voll ausgelastet.
Du schaffst das schon. |
_________________ a = b << c; /* shift happens */
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:39:51 15.04.2010 Titel: |
|
Zitieren |
Revision 370:
- Ergebnisse Codereview video.c
- Nicht-Multithreaded screenshot-Funktionen entfernt
- CDI-Header von Doxygen-Formatierung und für PrettyOS nicht relevanten Inhalten befreit
- bochs.bxrc: PANIC-Meldungen werden ignoriert -> Fehler beim Start fällt weg. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:21:13 16.04.2010 Titel: |
|
Zitieren |
Revision 371:
kdebug(...) eingeführt (verbesserte Übersichtlichkeit und zentrale Wartbarkeit).
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 | /// Diagnosis-Output - activates prints to the screen about some details and memory use
#define _DIAGNOSIS_
#ifdef _DIAGNOSIS_
#define kdebug(...) \
settextcolor(3,0); \
printf(__VA_ARGS__); \
settextcolor(15,0);
#else
#define kdebug(...)
#endif | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | /// Diagnosis-Output - activates prints to the screen about some details and memory use
#define _DIAGNOSIS_
#ifdef _DIAGNOSIS_
#define kdebug(...) \
settextcolor(3,0); \
printf(__VA_ARGS__); \
settextcolor(15,0);
#else
#define kdebug(...)
#endif | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | /// Diagnosis-Output - activates prints to the screen about some details and memory use
#define _DIAGNOSIS_
#ifdef _DIAGNOSIS_
#define kdebug(...) \
settextcolor(3,0); \
printf(__VA_ARGS__); \
settextcolor(15,0);
#else
#define kdebug(...)
#endif | |
Vielen Dank an noob_lolo für diesen konstruktiven und konkreten Ratschlag. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:23:08 16.04.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:10:15 16.04.2010 Titel: |
|
Zitieren |
Rev. 372:
erweiterte Abfrage via USB2.0: device, config, interface, endpoints
Test mit qemu:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | USB2: GET_DESCRIPTOR device, dev: 0 endpoint: 0
12h 01h 00h 02h 00h 00h 00h 40h 00h 00h 00h 00h 00h 00h 01h 02h 03h 01h
length: 18 descriptor type: 1
USB specification: 2.0 USB class: 0000h
USB subclass: 0000h USB protocol 0000h
max packet size: 64 vendor: 0000h
product: 0000h release number: 0.0
manufacturer: 0001h product: 0002h
serial number: 0003h number of config.: 1
USB2: GET_DESCRIPTOR config, dev: 0 endpoint: 0
09h 02h 20h 00h 01h 01h 00h C0h 00h 09h 04h 00h 00h 02h 08h 06h 50h 00h 07h 05h
81h 02h 40h 00h 00h 07h 05h 02h 02h 40h 00h 00h
length: 9 descriptor type: 2
total length: 32 number of interfaces: 1
ID of config: 0001h ID of config name 0000h
remote wakeup: no self-powered: yes
max power (mA): 0
length: 9 descriptor type: 4
interface number: 0 alternate Setting: 0
number of endpoints: 2 interface class: 8
interface subclass: 6 interface protocol: 80
interface: 0000h
length: 7 descriptor type: 5
endpoint in/out: in endpoint number: 1
attributes: 02h max packet size: 64
interval: 0
length: 7 descriptor type: 5
endpoint in/out: out endpoint number: 2
attributes: 02h max packet size: 64
interval: 0
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | USB2: GET_DESCRIPTOR device, dev: 0 endpoint: 0
12h 01h 00h 02h 00h 00h 00h 40h 00h 00h 00h 00h 00h 00h 01h 02h 03h 01h
length: 18 descriptor type: 1
USB specification: 2.0 USB class: 0000h
USB subclass: 0000h USB protocol 0000h
max packet size: 64 vendor: 0000h
product: 0000h release number: 0.0
manufacturer: 0001h product: 0002h
serial number: 0003h number of config.: 1
USB2: GET_DESCRIPTOR config, dev: 0 endpoint: 0
09h 02h 20h 00h 01h 01h 00h C0h 00h 09h 04h 00h 00h 02h 08h 06h 50h 00h 07h 05h
81h 02h 40h 00h 00h 07h 05h 02h 02h 40h 00h 00h
length: 9 descriptor type: 2
total length: 32 number of interfaces: 1
ID of config: 0001h ID of config name 0000h
remote wakeup: no self-powered: yes
max power (mA): 0
length: 9 descriptor type: 4
interface number: 0 alternate Setting: 0
number of endpoints: 2 interface class: 8
interface subclass: 6 interface protocol: 80
interface: 0000h
length: 7 descriptor type: 5
endpoint in/out: in endpoint number: 1
attributes: 02h max packet size: 64
interval: 0
length: 7 descriptor type: 5
endpoint in/out: out endpoint number: 2
attributes: 02h max packet size: 64
interval: 0
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | USB2: GET_DESCRIPTOR device, dev: 0 endpoint: 0
12h 01h 00h 02h 00h 00h 00h 40h 00h 00h 00h 00h 00h 00h 01h 02h 03h 01h
length: 18 descriptor type: 1
USB specification: 2.0 USB class: 0000h
USB subclass: 0000h USB protocol 0000h
max packet size: 64 vendor: 0000h
product: 0000h release number: 0.0
manufacturer: 0001h product: 0002h
serial number: 0003h number of config.: 1
USB2: GET_DESCRIPTOR config, dev: 0 endpoint: 0
09h 02h 20h 00h 01h 01h 00h C0h 00h 09h 04h 00h 00h 02h 08h 06h 50h 00h 07h 05h
81h 02h 40h 00h 00h 07h 05h 02h 02h 40h 00h 00h
length: 9 descriptor type: 2
total length: 32 number of interfaces: 1
ID of config: 0001h ID of config name 0000h
remote wakeup: no self-powered: yes
max power (mA): 0
length: 9 descriptor type: 4
interface number: 0 alternate Setting: 0
number of endpoints: 2 interface class: 8
interface subclass: 6 interface protocol: 80
interface: 0000h
length: 7 descriptor type: 5
endpoint in/out: in endpoint number: 1
attributes: 02h max packet size: 64
interval: 0
length: 7 descriptor type: 5
endpoint in/out: out endpoint number: 2
attributes: 02h max packet size: 64
interval: 0
| |
Erläuterung: descriptor type
1: device
2: configuration
3: string (oben noch nicht genutzt)
4: interface
5: endpoint
Abfrage ist noch nicht variabel eingerichtet, klappt zur Zeit nur mit einem Interface und zwei Endpoints.
Die Spezifikation ist hier am einfachsten erklärt: http://www.beyondlogic.org/usbnutshell/usb5.htm |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:13:37 16.04.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:16:56 17.04.2010 Titel: |
|
Zitieren |
Rev. 373:
port reset und USB-Transfer koordiniert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:11:36 17.04.2010 Titel: |
|
Zitieren |
Rev. 374:
TEST für ehci/usb2: nur zwischenschritt, um Host System Error auf real Hardware zu überwinden (noch re-init notwendig)
in ehci.c:
zeile 16-18:
| C/C++ Code: | /// TEST
const uint8_t PORTRESET = 3; /// TEST: only one port is reset!!! PORTRESET+1 is the indicated port
/// TEST | |
| C/C++ Code: | /// TEST
const uint8_t PORTRESET = 3; /// TEST: only one port is reset!!! PORTRESET+1 is the indicated port
/// TEST | |
| C/C++ Code: | /// TEST
const uint8_t PORTRESET = 3; /// TEST: only one port is reset!!! PORTRESET+1 is the indicated port
/// TEST | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:53:26 17.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
09:34:18 17.04.2010 Titel: |
|
Zitieren |
Unser SVN bei source forge ist an diesem Wochenende down. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
taljeth
Mitglied
Benutzerprofil
Anmeldungsdatum: 11.09.2009
Beiträge: 148
|
taljeth Mitglied
10:48:55 17.04.2010 Titel: |
|
Zitieren |
Wohl dem, der ein git hat.
Dann müsst ihr jetzt wohl ein Wochenende lang an tyndur basteln und euch dort Ideen holen. |
_________________ Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.
Lowlevel - die deutschsprachige OS-Dev-Community
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:32:22 17.04.2010 Titel: |
|
Zitieren |
Rev. 375:
TEST für ehci/usb2: nur zwischenschritt, um Host System Error bei mancher real Hardware zu überwinden (extended bei qtd eingefügt);
nur ein port, z.B. 7 (angezeigt 8), kann leicht umgestellt werden.
Zeile 16-19: ehci.c
| C/C++ Code: | /// TEST
//const uint8_t PORTRESET = 7; /// TEST: only one port is reset!!! PORTRESET+1 is the indicated port
#define PORTRESET j
/// TEST | |
| C/C++ Code: | /// TEST
//const uint8_t PORTRESET = 7; /// TEST: only one port is reset!!! PORTRESET+1 is the indicated port
#define PORTRESET j
/// TEST | |
| C/C++ Code: | /// TEST
//const uint8_t PORTRESET = 7; /// TEST: only one port is reset!!! PORTRESET+1 is the indicated port
#define PORTRESET j
/// TEST | |
@taljeth: danke für das nette Angebot. Wir holen uns gerne Ideen, nicht nur von týndur. Aber am liebsten basteln wir an unserem OS weiter.
Das kann sich aber noch ändern. Vor uns ist nichts sicher. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:54:14 17.04.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:41:58 17.04.2010 Titel: |
|
Zitieren |
Rev. 376:
nun auch mit SET_ADDRESS |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
10:13:57 18.04.2010 Titel: |
|
Zitieren |
Revision 377:
* Maustreiber Fehlerbehebung (ACK wird jetzt erwartet) |
|
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
11:40:25 18.04.2010 Titel: |
|
Zitieren |
Revision 378:
* Fehler bei Maus ohne Mausrad behoben
(EDIT: verdammt, kein neues Image hochgeladen..-.-) |
Zuletzt bearbeitet von Erhard Henkes am 12:08:12 18.04.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:07:55 18.04.2010 Titel: |
|
Zitieren |
Rev. 379:
nun läuft das mit SET_ADDRESS zumindest in qemu EHCI
--> nur noch QTD_SETUP und QTD_IO
zu qemu: ist aber Blödsinn, wenn das bei qemu mit nicht angeschlossenem Gerät klappt, daher Umbau auf reale Verhältnisse in rev. 380 |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:18:10 18.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:21:27 18.04.2010 Titel: |
|
Zitieren |
Rev. 380:
- jetzt nur bei attached device (also 0x1005), klappte bei einem ersten real PC Test noch nicht
Tests mit real PC:
anschließend noch mit device 0 getestet, ob SET_ADDRESS überhaupt geklappt hat:
brachte auch nur Nullen, das Adresse setzen könnte also auch dort geklappt haben! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:45:14 18.04.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:28:38 18.04.2010 Titel: |
|
Zitieren |
Rev. 381:
PCI Command Register, Bit 2 (Bus Master) zusätzlich gesetzt
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // pci bus data
uint32_t num = ODA.pciEHCInumber;
uint8_t bus = pciDev_Array[num].bus;
uint8_t dev = pciDev_Array[num].device;
uint8_t func = pciDev_Array[num].func;
uint8_t irq = pciDev_Array[num].irq;
// prepare PCI command register // offset 0x04
// bit 9 (0x0200): Fast Back-to-Back Enable // not necessary
// bit 2 (0x0004): Bus Master // cf. http://forum.osdev.org/viewtopic.php?f=1&t=20255&start=0
uint16_t pciCommandRegister = pci_config_read(bus, dev, func, 0x0204);
printf("\nPCI Command Register before: %x", pciCommandRegister);
pci_config_write_dword(bus, dev, func, 0x04, pciCommandRegister /*already set*/ | 1<<2 /* bus master */); // resets status register, sets command register
printf("\nPCI Command Register plus bus master: %x", pci_config_read(bus, dev, func, 0x0204));
irq_install_handler(32 + irq, ehci_handler);
/// irq_install_handler(32 + irq-1, ehci_handler); /// work-around for VirtualBox Bug!
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // pci bus data
uint32_t num = ODA.pciEHCInumber;
uint8_t bus = pciDev_Array[num].bus;
uint8_t dev = pciDev_Array[num].device;
uint8_t func = pciDev_Array[num].func;
uint8_t irq = pciDev_Array[num].irq;
// prepare PCI command register // offset 0x04
// bit 9 (0x0200): Fast Back-to-Back Enable // not necessary
// bit 2 (0x0004): Bus Master // cf. http://forum.osdev.org/viewtopic.php?f=1&t=20255&start=0
uint16_t pciCommandRegister = pci_config_read(bus, dev, func, 0x0204);
printf("\nPCI Command Register before: %x", pciCommandRegister);
pci_config_write_dword(bus, dev, func, 0x04, pciCommandRegister /*already set*/ | 1<<2 /* bus master */); // resets status register, sets command register
printf("\nPCI Command Register plus bus master: %x", pci_config_read(bus, dev, func, 0x0204));
irq_install_handler(32 + irq, ehci_handler);
/// irq_install_handler(32 + irq-1, ehci_handler); /// work-around for VirtualBox Bug!
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // pci bus data
uint32_t num = ODA.pciEHCInumber;
uint8_t bus = pciDev_Array[num].bus;
uint8_t dev = pciDev_Array[num].device;
uint8_t func = pciDev_Array[num].func;
uint8_t irq = pciDev_Array[num].irq;
// prepare PCI command register // offset 0x04
// bit 9 (0x0200): Fast Back-to-Back Enable // not necessary
// bit 2 (0x0004): Bus Master // cf. http://forum.osdev.org/viewtopic.php?f=1&t=20255&start=0
uint16_t pciCommandRegister = pci_config_read(bus, dev, func, 0x0204);
printf("\nPCI Command Register before: %x", pciCommandRegister);
pci_config_write_dword(bus, dev, func, 0x04, pciCommandRegister /*already set*/ | 1<<2 /* bus master */); // resets status register, sets command register
printf("\nPCI Command Register plus bus master: %x", pci_config_read(bus, dev, func, 0x0204));
irq_install_handler(32 + irq, ehci_handler);
/// irq_install_handler(32 + irq-1, ehci_handler); /// work-around for VirtualBox Bug!
| |
Tobiking und Cuervo haben schon vollständige Transfers (set_address, device 18 byte, config 9+9+7+7 byte) gesehen, allerdings erst beim zweiten Hochfahren. Bei mir blieb es stabil negativ auf einem Test-PC.
Ob und inweiweit die sogenannten PCI Capabilities List (angezeigt beo 0x34) eine Rolle spielen, ist mir unklar.
capabilities list: 0x50
eecp: 0x68 (das haben wir zum BIOS/OS-Umschalten verwendet)
Weiß jemand mehr über diese "pci capabilities list" bei EHCI (unterhalb eecp)? |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:41:32 18.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:38:14 18.04.2010 Titel: |
|
Zitieren |
Rev. 382:
code review usb.c
TODO:
- abwarten bis Transfer wirklich beendet (USB-Status abfragen)
- array anlegen für adressen/infos von usb-devices
- neue Adresse vergeben: erste frei Adresse verwenden |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:40:41 18.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:56:19 19.04.2010 Titel: |
|
Zitieren |
Rev. 383:
Testvariante für USB_Transfer bezüglich dem ersten TODO topic (s. Rev. 382):
1) Adresse ändern
2) device abfragen
3) config abfragen (statisch aufgebaut: 1 interface mit 2 endpoints)
Technik für warten:
USBINT (wird gesetzt bei complete transfer) setzt USBINTflag, erst dann weiter (mit timeout).
Nach SET_ADDRESS wird 1 sec gewartet (war nicht sicher, ob da STS_USBINT überhaupt kommt, da kein Datentransfer)
Nun sieht man, wie lange der erfolgreiche Transfer dauert (#-zeichen * 20 ms) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:57:49 19.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:21:08 19.04.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:08:09 19.04.2010 Titel: |
|
Zitieren |
Rev. 385: (ohne FloppyImage.img, weil SVN das nicht wollte)
jetzt auch SET_ADDRESS mit abwarten auf STS_USBINT
hier der Host Sytem Error bei meinem Development PC:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | PrettyOS [Version 0.0.0.385] Console 1: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: resetPort 4
>>> Status of USB Ports <<<
port 4: 00001005h, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to start USB-Test. <<<
USB2: SET_ADDRESS
Reset STS_USBINT and enable Async Schedule
.#
SETUP:
QTD: C0217000h Statusbyte: 00h
USB2: GET_DESCRIPTOR device, dev: 4 endpoint: 0
ehci_handler: Host System Error
PCI status word: 2290h
Capabilities List
Fast Back-to-Back Transactions Capable
Received Master-Abort
>>> Init EHCI after fatal error: <<<
>>> Press key for EHCI (re)initialization. <<< | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | PrettyOS [Version 0.0.0.385] Console 1: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: resetPort 4
>>> Status of USB Ports <<<
port 4: 00001005h, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to start USB-Test. <<<
USB2: SET_ADDRESS
Reset STS_USBINT and enable Async Schedule
.#
SETUP:
QTD: C0217000h Statusbyte: 00h
USB2: GET_DESCRIPTOR device, dev: 4 endpoint: 0
ehci_handler: Host System Error
PCI status word: 2290h
Capabilities List
Fast Back-to-Back Transactions Capable
Received Master-Abort
>>> Init EHCI after fatal error: <<<
>>> Press key for EHCI (re)initialization. <<< | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | PrettyOS [Version 0.0.0.385] Console 1: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: resetPort 4
>>> Status of USB Ports <<<
port 4: 00001005h, line: 00h SE0,power on, enabled, EHCI owned
>>> Press key to start USB-Test. <<<
USB2: SET_ADDRESS
Reset STS_USBINT and enable Async Schedule
.#
SETUP:
QTD: C0217000h Statusbyte: 00h
USB2: GET_DESCRIPTOR device, dev: 4 endpoint: 0
ehci_handler: Host System Error
PCI status word: 2290h
Capabilities List
Fast Back-to-Back Transactions Capable
Received Master-Abort
>>> Init EHCI after fatal error: <<<
>>> Press key for EHCI (re)initialization. <<< | |
Man sieht aber, dass der SET_ADDRESS sauber durchgeht:
USB2: SET_ADDRESS
Reset STS_USBINT and enable Async Schedule
.#
SETUP:
QTD: C0217000h Statusbyte: 00h
Der Punkt stammt vom interrupt, der das USBINTflag setzt, und nach 20 ms (ein #) ist der USB-Transfer erledigt.
Der nachfolgende pci master abort error bei GET_DESCRIPTOR device sollte von einem fehlerhaften Speicherzugriff herrühren. Ursache unklar. Wir sind für jeden Hinweis dankbar, da dieses Problem die Weiterentwicklung der EHCI/USB2-Treiber im Hardwarebereich behindert. Bei Qemu, VMWare und VBox kein Problem.
Wie sieht das bei Cuervo und Tobiking aus? Auch dieses 0Ah?
PCI Capabilities List: first Pointer: 0050h
PCI Capabilities List: ID: 01h, next Pointer: 58h
PCI Capabilities List: ID: 0Ah, next Pointer: 00h |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:17:42 19.04.2010, insgesamt 3-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:30:30 19.04.2010 Titel: |
|
Zitieren |
Revision 386:
- Definition von bool in userlib.h nun identisch zu types.h
- user_program_c heißt nun shell
- kdebug nun als inline-fkt. mit Farb-Funktionalität
- Aufräumarbeiten (u.a. rtl8139.c ...) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:47:44 20.04.2010 Titel: |
|
Zitieren |
Rev. 387:
page in createQTD_...:
| C/C++ Code: | void* data = malloc(PAGESIZE, PAGESIZE); // Enough for a full page
memset(data,0,PAGESIZE); | |
| C/C++ Code: | void* data = malloc(PAGESIZE, PAGESIZE); // Enough for a full page
memset(data,0,PAGESIZE); | |
| C/C++ Code: | void* data = malloc(PAGESIZE, PAGESIZE); // Enough for a full page
memset(data,0,PAGESIZE); | |
vorsichtshalber, sollte aber tokenBytes reichen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:36:13 20.04.2010 Titel: |
|
Zitieren |
Rev. 388: (versehentlich 387 in ckernel.c)
auf einen QH reduziert
bleibt die async. List stehen? das ist die frage. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:36:57 20.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:08:41 20.04.2010 Titel: |
|
Zitieren |
Rev. 389:
Asynchrone Liste wird nach USB-Transfer im USBCMD ausgeschaltet, da das H-Bit offenbar noch unzuverlässig arbeitet.
| C/C++ Code: | | pOpRegs->USBCMD &= ~CMD_ASYNCH_ENABLE; | |
| C/C++ Code: | | pOpRegs->USBCMD &= ~CMD_ASYNCH_ENABLE; | |
| C/C++ Code: | | pOpRegs->USBCMD &= ~CMD_ASYNCH_ENABLE; | |
Bitte testen.
EDIT: sieht sehr gut aus (positive Tests bei Cuervo, Tobiking, Erhard Henkes)! Ursache gefunden, wenn auch noch nicht verstanden.
Wir haben festgestellt, dass die asynchrone Liste einfach das H-Bit ignoriert im QH und weiter läuft. Beim nächsten Transfer haben wir dann dem laufenden Asynchronen Scheduler die Basisadresse weg gezogen.
Von nun an können wir uns hoffentlich auf USB 2.0 konzentrieren. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:32:55 20.04.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:15:20 20.04.2010 Titel: |
|
Zitieren |
Rev. 390:
ehci.h/c u. usb.c: Umbenennungen und ein Ausgabefehler (Rev. 389: ein Statusbyte ausgewiesen, dass es gar nicht gibt) beseitigt
Jetzt sieht das alles gut aus. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:04:43 20.04.2010 Titel: |
|
Zitieren |
Rev. 391:
nur geringe Veränderungen in ehci/usb.c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
04:42:05 22.04.2010 Titel: |
|
Zitieren |
Rev. 392:
ehci.c, usb.h/c: testweise Stringausgabe bei USB-Transfer
ckernel.c: deskriptoren zuerst (Dank an +gjm+ für diesen Hinweis)
http://www.lowlevel.eu/wiki/USB#Stringdescriptor
Beispiele für Stringausgaben:
Chico QEye (web cam)
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | PrettyOS [Version 0.0.0.392] Console 6: EHCI Ports
--------------------------------------------------------------------------------
lang: 0409h
SETUP: qTD Status: 00h
IO : qTD Status: 00h
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 1#
1Ch 03h 43h 00h 68h 00h 69h 00h 63h 00h 6Fh 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
length: 28 descriptor type: 3
string: Chico
SETUP: qTD Status: 00h
IO : qTD Status: 50h
qTD Status: Halted - serious error at the device/endpoint
qTD Status: Babble (fatal error leads to Halted)
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 2#
20h 03h 51h 00h 45h 00h 79h 00h 65h 00h 20h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
length: 32 descriptor type: 3
string: QEye
SETUP: qTD Status: 00h
IO : qTD Status: 50h
qTD Status: Halted - serious error at the device/endpoint
qTD Status: Babble (fatal error leads to Halted)
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 3#
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
SETUP: qTD Status: 00h | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | PrettyOS [Version 0.0.0.392] Console 6: EHCI Ports
--------------------------------------------------------------------------------
lang: 0409h
SETUP: qTD Status: 00h
IO : qTD Status: 00h
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 1#
1Ch 03h 43h 00h 68h 00h 69h 00h 63h 00h 6Fh 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
length: 28 descriptor type: 3
string: Chico
SETUP: qTD Status: 00h
IO : qTD Status: 50h
qTD Status: Halted - serious error at the device/endpoint
qTD Status: Babble (fatal error leads to Halted)
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 2#
20h 03h 51h 00h 45h 00h 79h 00h 65h 00h 20h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
length: 32 descriptor type: 3
string: QEye
SETUP: qTD Status: 00h
IO : qTD Status: 50h
qTD Status: Halted - serious error at the device/endpoint
qTD Status: Babble (fatal error leads to Halted)
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 3#
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
SETUP: qTD Status: 00h | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | PrettyOS [Version 0.0.0.392] Console 6: EHCI Ports
--------------------------------------------------------------------------------
lang: 0409h
SETUP: qTD Status: 00h
IO : qTD Status: 00h
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 1#
1Ch 03h 43h 00h 68h 00h 69h 00h 63h 00h 6Fh 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
length: 28 descriptor type: 3
string: Chico
SETUP: qTD Status: 00h
IO : qTD Status: 50h
qTD Status: Halted - serious error at the device/endpoint
qTD Status: Babble (fatal error leads to Halted)
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 2#
20h 03h 51h 00h 45h 00h 79h 00h 65h 00h 20h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
length: 32 descriptor type: 3
string: QEye
SETUP: qTD Status: 00h
IO : qTD Status: 50h
qTD Status: Halted - serious error at the device/endpoint
qTD Status: Babble (fatal error leads to Halted)
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 3#
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
SETUP: qTD Status: 00h | |
Memor USB2. 110 (USB Memory Stick)
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | PrettyOS [Version 0.0.0.392] Console 1: EHCI Ports
--------------------------------------------------------------------------------
IO : qTD Status: 00h
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 1
0Eh 03h 6Dh 00h 65h 00h 6Dh 00h 6Fh 00h 72h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
length: 14 descriptor type: 3
string: memor
SETUP: qTD Status: 00h
IO : qTD Status: 50h
qTD Status: Halted - serious error at the device/endpoint
qTD Status: Babble (fatal error leads to Halted)
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 2
0Eh 03h 55h 00h 53h 00h 42h 00h 32h 00h 2Eh 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
length: 14 descriptor type: 3
string: USB2.
SETUP: qTD Status: 00h
IO : qTD Status: 50h
qTD Status: Halted - serious error at the device/endpoint
qTD Status: Babble (fatal error leads to Halted)
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 3
08h 03h 31h 00h 31h 00h 30h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
length: 8 descriptor type: 3
string: 110
SETUP: qTD Status: 00h
Port: 1, device attached | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | PrettyOS [Version 0.0.0.392] Console 1: EHCI Ports
--------------------------------------------------------------------------------
IO : qTD Status: 00h
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 1
0Eh 03h 6Dh 00h 65h 00h 6Dh 00h 6Fh 00h 72h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
length: 14 descriptor type: 3
string: memor
SETUP: qTD Status: 00h
IO : qTD Status: 50h
qTD Status: Halted - serious error at the device/endpoint
qTD Status: Babble (fatal error leads to Halted)
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 2
0Eh 03h 55h 00h 53h 00h 42h 00h 32h 00h 2Eh 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
length: 14 descriptor type: 3
string: USB2.
SETUP: qTD Status: 00h
IO : qTD Status: 50h
qTD Status: Halted - serious error at the device/endpoint
qTD Status: Babble (fatal error leads to Halted)
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 3
08h 03h 31h 00h 31h 00h 30h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
length: 8 descriptor type: 3
string: 110
SETUP: qTD Status: 00h
Port: 1, device attached | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | PrettyOS [Version 0.0.0.392] Console 1: EHCI Ports
--------------------------------------------------------------------------------
IO : qTD Status: 00h
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 1
0Eh 03h 6Dh 00h 65h 00h 6Dh 00h 6Fh 00h 72h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
length: 14 descriptor type: 3
string: memor
SETUP: qTD Status: 00h
IO : qTD Status: 50h
qTD Status: Halted - serious error at the device/endpoint
qTD Status: Babble (fatal error leads to Halted)
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 2
0Eh 03h 55h 00h 53h 00h 42h 00h 32h 00h 2Eh 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
length: 14 descriptor type: 3
string: USB2.
SETUP: qTD Status: 00h
IO : qTD Status: 50h
qTD Status: Halted - serious error at the device/endpoint
qTD Status: Babble (fatal error leads to Halted)
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 3
08h 03h 31h 00h 31h 00h 30h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
length: 8 descriptor type: 3
string: 110
SETUP: qTD Status: 00h
Port: 1, device attached | |
EDIT: Strings werden noch abgeschnitten! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:14:17 23.04.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:18:41 22.04.2010 Titel: |
|
Zitieren |
Rev. 393:
- #define _SOUND_ (nur dann ertönt beep)
- usbDevices als Array zum Festhalten der abgefragten Infos |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:38:07 22.04.2010 Titel: |
|
Zitieren |
Revision 394:
- shell verbessert (Intern)
- VC++-Projektfile repariert und Dateien etwas umsortiert
- Sound per Default aktiviert
- cdi-Header: Ein paar Kommentare umformatiert/übersetzt
- Ein Zeichen am Bootscreen geändert für schönere Zentrierung
- Verbesserungen im Userspace
-- C und C++ Dummieprogramme vereinheitlicht
-- neues Usermakefile: Erster Schritt analog zum Hauptmakefile
-- userlib.hpp und userlib.h "synchronisiert" |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:13:32 23.04.2010 Titel: |
|
Zitieren |
Rev. 395:
USB-Device-Strings wurden noch abgeschnitten, jetzt werden 64 Byte transferiert, damit können Strings (64-2)/2 = 31 Zeichen lang sein.
| Zitat: | USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 1#
12h 03h 4Ah 00h 65h 00h 74h 00h 46h 00h 6Ch 00h 61h 00h 73h 00h 68h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h
length: 18 descriptor type: 3
string: JetFlash
SETUP: qTD Status: 00h
IO : qTD Status: 00h
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 2#
28h 03h 4Dh 00h 61h 00h 73h 00h 73h 00h 20h 00h 53h 00h 74h 00h 6Fh 00h 72h 00h
61h 00h 67h 00h 65h 00h 20h 00h 44h 00h 65h 00h 76h 00h 69h 00h 63h 00h 65h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h
length: 40 descriptor type: 3
string: Mass Storage Device
SETUP: qTD Status: 00h
IO : qTD Status: 00h
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
USB2: GET_DESCRIPTOR string, dev: 1 endpoint: 0 stringIndex: 3#
12h 03h 4Eh 00h 30h 00h 31h 00h 34h 00h 49h 00h 4Dh 00h 37h 00h 35h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h
length: 18 descriptor type: 3
string: N014IM75 |
Jetzt kommt auch kein Babbling mehr.
| Zitat: | | Babbling: When a device transmits more data on the USB than the host controller is expecting for this transaction, it is defined to be babbling. In general, this is called a Packet Babble. When a device sends more data than the Maximum Length number of bytes, the host controller sets the Babble Detected bit to a one and halts the endpoint if it is using a queue head | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:15:22 23.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:16:14 23.04.2010 Titel: |
|
Zitieren |
Rev. 396:
_USB_DIAGNOSIS_ eingeführt, um die Übersichtlichkeit zu erhöhren
Allerdings inzwischen wieder USB-Transfer-Probleme auf real hardware, aber keine error. Dürfte an der beschleunigten Ausführung liegen.
In VMWare ist noch alles ok:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | PrettyOS [Version 0.0.0.396] Console 1: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: resetPort 1
>>> Status of USB Ports <<<
port 1: 00001005h, line: 00h SE0,power on, enabled, EHCI owned
USB specification: 2.0 USB class: 0000h
USB subclass: 0000h USB protocol 0000h
max packet size: 64 vendor: 1516h
product: 8628h release number: 2.0
manufacturer: 0001h product: 0002h
serial number: 0003h number of config.: 1
total length: 32 number of interfaces: 1
ID of config: 0001h ID of config name 0000h
remote wakeup: no self-powered: no
max power (mA): 100
interface number: 0 alternate Setting: 0
number of endpoints: 2 interface class: 8
interface subclass: 6 interface protocol: 80
interface: 0000h
endpoint in/out: in endpoint number: 1
attributes: 02h max packet size: 512
interval: 0
endpoint in/out: out endpoint number: 2
attributes: 02h max packet size: 512
interval: 0
language code: 0409h
memory
USB2.0
110 | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | PrettyOS [Version 0.0.0.396] Console 1: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: resetPort 1
>>> Status of USB Ports <<<
port 1: 00001005h, line: 00h SE0,power on, enabled, EHCI owned
USB specification: 2.0 USB class: 0000h
USB subclass: 0000h USB protocol 0000h
max packet size: 64 vendor: 1516h
product: 8628h release number: 2.0
manufacturer: 0001h product: 0002h
serial number: 0003h number of config.: 1
total length: 32 number of interfaces: 1
ID of config: 0001h ID of config name 0000h
remote wakeup: no self-powered: no
max power (mA): 100
interface number: 0 alternate Setting: 0
number of endpoints: 2 interface class: 8
interface subclass: 6 interface protocol: 80
interface: 0000h
endpoint in/out: in endpoint number: 1
attributes: 02h max packet size: 512
interval: 0
endpoint in/out: out endpoint number: 2
attributes: 02h max packet size: 512
interval: 0
language code: 0409h
memory
USB2.0
110 | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | PrettyOS [Version 0.0.0.396] Console 1: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: resetPort 1
>>> Status of USB Ports <<<
port 1: 00001005h, line: 00h SE0,power on, enabled, EHCI owned
USB specification: 2.0 USB class: 0000h
USB subclass: 0000h USB protocol 0000h
max packet size: 64 vendor: 1516h
product: 8628h release number: 2.0
manufacturer: 0001h product: 0002h
serial number: 0003h number of config.: 1
total length: 32 number of interfaces: 1
ID of config: 0001h ID of config name 0000h
remote wakeup: no self-powered: no
max power (mA): 100
interface number: 0 alternate Setting: 0
number of endpoints: 2 interface class: 8
interface subclass: 6 interface protocol: 80
interface: 0000h
endpoint in/out: in endpoint number: 1
attributes: 02h max packet size: 512
interval: 0
endpoint in/out: out endpoint number: 2
attributes: 02h max packet size: 512
interval: 0
language code: 0409h
memory
USB2.0
110 | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:18:22 23.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:37:10 23.04.2010 Titel: |
|
Zitieren |
Rev. 397:
- Optische Darstellung von device, config, interface, endpoint besser strukturiert
- Warteschleife am Ende eines USB-Transfers eingefügt für real Hardware |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:18:20 24.04.2010 Titel: |
|
Zitieren |
Rev. 398:
- config descriptor wird nun komplett durchkämmt, teilweise sind noch unbekannte
Descriptoren enthalten |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 08:51:07 24.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:07:04 24.04.2010 Titel: |
|
Zitieren |
Rev. 399:
ehci_install geschaffen (aus pci.c ausgelagert nach ehci.c) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:46:11 24.04.2010 Titel: |
|
Zitieren |
Revision 400:
- shared_pages.h gelöscht (überflüssig)
- userlib.c: kleine Umsortierung
- Code von pci.c nach rtl8139.c verlegt
- weitere Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:42:37 24.04.2010 Titel: |
|
Zitieren |
Rev. 401:
modul usb_hc.h/c geschaffen, um pci.c weiter zu "verschlanken". |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:08:52 24.04.2010 Titel: |
|
Zitieren |
Rev. 402:
- Rechtschreibfehler beseitigt (thx to +gjm+)
- auskommentierten Code in pci.c gestrichen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:09:36 24.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:16:59 25.04.2010 Titel: |
|
Zitieren |
Rev. 403:
- void usbTransferSetConfiguration(uint32_t device, uint32_t configuration);
- uint8_t usbTransferGetConfiguration(uint32_t device);
- endpoint aus der Parameterliste der usb-Funktionen genommen, wenn sinnlos (z.B. wenn endpoint=0)
Test bezüglich Konfigurationen (code auszugsweise):
abfragen, auf 2 setzen, abfragen, auf 1 setzen, abfragen
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | if (USBtransferFlag && enabledPortFlag && (pOpRegs->PORTSC[j] & (PSTS_POWERON | PSTS_ENABLED | PSTS_CONNECTED)))
{
uint8_t devAddr = usbTransferEnumerate(j);
usbTransferDevice(devAddr); // device address, endpoint=0
usbTransferConfig(devAddr); // device address, endpoint 0
usbTransferString(devAddr); // device address, endpoint 0
for(int k=1; k<4;k++) // fetch 3 strings
{
usbTransferStringUnicode(devAddr,k);
}
printf("\nconfig: %d",usbTransferGetConfiguration(devAddr));
usbTransferSetConfiguration(devAddr, 2);
printf("\nconfig: %d",usbTransferGetConfiguration(devAddr));
usbTransferSetConfiguration(devAddr, 1);
printf("\nconfig: %d",usbTransferGetConfiguration(devAddr));
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | if (USBtransferFlag && enabledPortFlag && (pOpRegs->PORTSC[j] & (PSTS_POWERON | PSTS_ENABLED | PSTS_CONNECTED)))
{
uint8_t devAddr = usbTransferEnumerate(j);
usbTransferDevice(devAddr); // device address, endpoint=0
usbTransferConfig(devAddr); // device address, endpoint 0
usbTransferString(devAddr); // device address, endpoint 0
for(int k=1; k<4;k++) // fetch 3 strings
{
usbTransferStringUnicode(devAddr,k);
}
printf("\nconfig: %d",usbTransferGetConfiguration(devAddr));
usbTransferSetConfiguration(devAddr, 2);
printf("\nconfig: %d",usbTransferGetConfiguration(devAddr));
usbTransferSetConfiguration(devAddr, 1);
printf("\nconfig: %d",usbTransferGetConfiguration(devAddr));
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | if (USBtransferFlag && enabledPortFlag && (pOpRegs->PORTSC[j] & (PSTS_POWERON | PSTS_ENABLED | PSTS_CONNECTED)))
{
uint8_t devAddr = usbTransferEnumerate(j);
usbTransferDevice(devAddr); // device address, endpoint=0
usbTransferConfig(devAddr); // device address, endpoint 0
usbTransferString(devAddr); // device address, endpoint 0
for(int k=1; k<4;k++) // fetch 3 strings
{
usbTransferStringUnicode(devAddr,k);
}
printf("\nconfig: %d",usbTransferGetConfiguration(devAddr));
usbTransferSetConfiguration(devAddr, 2);
printf("\nconfig: %d",usbTransferGetConfiguration(devAddr));
usbTransferSetConfiguration(devAddr, 1);
printf("\nconfig: %d",usbTransferGetConfiguration(devAddr));
}
| |
Anmerkung: Dieses printf("\n\n\n") ist leider notwendig weil die Konsole auch in den Info-Bereich schreibt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 14:38:44 25.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:11:12 25.04.2010 Titel: |
|
Zitieren |
Rev. 404:
- Kleine Korrektur: Konsolenbereich und Info area gegen einander geschützt (thx to MrX) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
16:01:38 25.04.2010 Titel: |
|
Zitieren |
Revision 405:
- Infobereich ausgebaut: Fkt. writeInfo zum beschreiben, showInfo um festzulegen, ob der Infobereich in der Konsole angezeigt werden soll |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:41:01 25.04.2010 Titel: |
|
Zitieren |
Rev. 406
Bulk-Only Mass Storage Reset eingefügt
(siehe: Universal Serial Bus Mass Storage Class Bulk-Only Transport, rev. 1.0, 1999)
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | PrettyOS [Version 0.0.0.406] Console 1: EHCI Ports
--------------------------------------------------------------------------------
numInterfaceMSD: 0
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
total length: 32 number of interfaces: 1
ID of config: 0001h ID of config name 0000h
remote wakeup: no self-powered: no
max power (mA): 100
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
interface number: 0 alternate Setting: 0
number of endpoints: 2 interface class: 8
interface subclass: 6 interface protocol: 80
interface: 0000h
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
endpoint in/out: in endpoint number: 1
attributes: 02h max packet size: 512
interval: 0
>>> Press key to go on with data analysis from config descriptor. <<<
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
endpoint in/out: out endpoint number: 2
attributes: 02h max packet size: 512
interval: 0
length: 0 type: 0 unknown
>>> Press key to go on with data analysis from config descriptor. <<<
language: German
memory
USB2.0
110
USB2: SET_CONFIGURATION 1
USB2: GET_CONFIGURATION
config: 1
dev: 1 MSDinterface: 0 ==> BulkOnlyMassStorageReset
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
USB status: 00000000h
>>> Press key to close this console. <<<
--------------------------------------------------------------------------------
Port: 1, device attached | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | PrettyOS [Version 0.0.0.406] Console 1: EHCI Ports
--------------------------------------------------------------------------------
numInterfaceMSD: 0
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
total length: 32 number of interfaces: 1
ID of config: 0001h ID of config name 0000h
remote wakeup: no self-powered: no
max power (mA): 100
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
interface number: 0 alternate Setting: 0
number of endpoints: 2 interface class: 8
interface subclass: 6 interface protocol: 80
interface: 0000h
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
endpoint in/out: in endpoint number: 1
attributes: 02h max packet size: 512
interval: 0
>>> Press key to go on with data analysis from config descriptor. <<<
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
endpoint in/out: out endpoint number: 2
attributes: 02h max packet size: 512
interval: 0
length: 0 type: 0 unknown
>>> Press key to go on with data analysis from config descriptor. <<<
language: German
memory
USB2.0
110
USB2: SET_CONFIGURATION 1
USB2: GET_CONFIGURATION
config: 1
dev: 1 MSDinterface: 0 ==> BulkOnlyMassStorageReset
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
USB status: 00000000h
>>> Press key to close this console. <<<
--------------------------------------------------------------------------------
Port: 1, device attached | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | PrettyOS [Version 0.0.0.406] Console 1: EHCI Ports
--------------------------------------------------------------------------------
numInterfaceMSD: 0
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
total length: 32 number of interfaces: 1
ID of config: 0001h ID of config name 0000h
remote wakeup: no self-powered: no
max power (mA): 100
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
interface number: 0 alternate Setting: 0
number of endpoints: 2 interface class: 8
interface subclass: 6 interface protocol: 80
interface: 0000h
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
endpoint in/out: in endpoint number: 1
attributes: 02h max packet size: 512
interval: 0
>>> Press key to go on with data analysis from config descriptor. <<<
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
endpoint in/out: out endpoint number: 2
attributes: 02h max packet size: 512
interval: 0
length: 0 type: 0 unknown
>>> Press key to go on with data analysis from config descriptor. <<<
language: German
memory
USB2.0
110
USB2: SET_CONFIGURATION 1
USB2: GET_CONFIGURATION
config: 1
dev: 1 MSDinterface: 0 ==> BulkOnlyMassStorageReset
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
USB status: 00000000h
>>> Press key to close this console. <<<
--------------------------------------------------------------------------------
Port: 1, device attached | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:54:29 25.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:46:08 25.04.2010 Titel: |
|
Zitieren |
Rev. 407:
- uint8_t usbTransferBulkOnlyGetMaxLUN(uint32_t device, uint8_t numInterface) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:15:45 25.04.2010 Titel: |
|
Zitieren |
Rev. 408:
Fehler korrigiert in usb2.c
3 getestete USB-Sticks haben LUN = 0, während mein card reader LUN = 3 zeigt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:10:26 26.04.2010 Titel: |
|
Zitieren |
Rev. 409:
Zwischenschritt
ehci/usb: SCSI Command: "test unit ready" (0x00) und Antwort im Statusword
realPC:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | PrettyOS [Version 0.0.0.409] Console 1: EHCI Ports
--------------------------------------------------------------------------------
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
endpoint in/out: out endpoint number: 2
attributes: 02h max packet size: 512
interval: 0
length: 0 type: 0 unknown
>>> Press key to go on with data analysis from config descriptor. <<<
language: German
memory
USB2.0
110
USB2: SET_CONFIGURATION 1
USB2: GET_CONFIGURATION 1
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Max. Logical Unit Numbers: 0
USB status: 00000000h
dev: 1 MSDinterface: 0 ==> BulkOnlyMassStorageReset
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
USB status: 00000000h
55h 53h 42h 43h 42h 42h 42h 42h 00h 00h 00h 00h 00h 00h 06h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
IO: qTD Status: 01h
qTD Status: Do Ping
USB status: 00002000h
Reclamation
>>> Press key to go on with USB-Test. <<<
timeout - no STS_USBINT set!
55h 53h 42h 53h 00h 00h 00h 00h 00h 00h 00h 00h 00h
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
IO: qTD Status: 80h
qTD Status: Active - HC transactions enabled
USB status: 00002000h
Reclamation
>>> Press key to go on with USB-Test. <<<
>>> Press key to close this console. <<<
--------------------------------------------------------------------------------
Port: 1, device attached | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | PrettyOS [Version 0.0.0.409] Console 1: EHCI Ports
--------------------------------------------------------------------------------
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
endpoint in/out: out endpoint number: 2
attributes: 02h max packet size: 512
interval: 0
length: 0 type: 0 unknown
>>> Press key to go on with data analysis from config descriptor. <<<
language: German
memory
USB2.0
110
USB2: SET_CONFIGURATION 1
USB2: GET_CONFIGURATION 1
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Max. Logical Unit Numbers: 0
USB status: 00000000h
dev: 1 MSDinterface: 0 ==> BulkOnlyMassStorageReset
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
USB status: 00000000h
55h 53h 42h 43h 42h 42h 42h 42h 00h 00h 00h 00h 00h 00h 06h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
IO: qTD Status: 01h
qTD Status: Do Ping
USB status: 00002000h
Reclamation
>>> Press key to go on with USB-Test. <<<
timeout - no STS_USBINT set!
55h 53h 42h 53h 00h 00h 00h 00h 00h 00h 00h 00h 00h
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
IO: qTD Status: 80h
qTD Status: Active - HC transactions enabled
USB status: 00002000h
Reclamation
>>> Press key to go on with USB-Test. <<<
>>> Press key to close this console. <<<
--------------------------------------------------------------------------------
Port: 1, device attached | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | PrettyOS [Version 0.0.0.409] Console 1: EHCI Ports
--------------------------------------------------------------------------------
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
endpoint in/out: out endpoint number: 2
attributes: 02h max packet size: 512
interval: 0
length: 0 type: 0 unknown
>>> Press key to go on with data analysis from config descriptor. <<<
language: German
memory
USB2.0
110
USB2: SET_CONFIGURATION 1
USB2: GET_CONFIGURATION 1
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Max. Logical Unit Numbers: 0
USB status: 00000000h
dev: 1 MSDinterface: 0 ==> BulkOnlyMassStorageReset
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
USB status: 00000000h
55h 53h 42h 43h 42h 42h 42h 42h 00h 00h 00h 00h 00h 00h 06h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
IO: qTD Status: 01h
qTD Status: Do Ping
USB status: 00002000h
Reclamation
>>> Press key to go on with USB-Test. <<<
timeout - no STS_USBINT set!
55h 53h 42h 53h 00h 00h 00h 00h 00h 00h 00h 00h 00h
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
IO: qTD Status: 80h
qTD Status: Active - HC transactions enabled
USB status: 00002000h
Reclamation
>>> Press key to go on with USB-Test. <<<
>>> Press key to close this console. <<<
--------------------------------------------------------------------------------
Port: 1, device attached | |
Do Ping <--- TODO
Auch bei VMWare noch "timeout - no STS_USBINT set!"
Erfolg wird sichtbar, wenn das von uns im Kommando gewählte Tag "42424242h" im Statusword an gleicher Stelle wiederholt wird. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:45:25 26.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:47:05 26.04.2010 Titel: |
|
Zitieren |
Rev. 410:
... es klappt!
| Zitat: |
PrettyOS [Version 0.0.0.410] Console 1: EHCI Ports
--------------------------------------------------------------------------------
attributes: 02h max packet size: 512
interval: 0
>>> Press key to go on with data analysis from config descriptor. <<<
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
endpoint in/out: out endpoint number: 2
attributes: 02h max packet size: 512
interval: 0
length: 0 type: 0 unknown
>>> Press key to go on with data analysis from config descriptor. <<<
language: German
memory
USB2.0
110
USB2: SET_CONFIGURATION 1
USB2: GET_CONFIGURATION 1
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Max. Logical Unit Numbers: 0
USB status: 00000000h
dev: 2 MSDinterface: 0 ==> BulkOnlyMassStorageReset
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
USB status: 00000000h
endpOUT: 2 endpIN: 1
55h 53h 42h 43h 42h 42h 42h 42h 00h 00h 00h 00h 00h 00h 06h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
IO: qTD Status: 01h
qTD Status: Do Ping
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
55h 53h 42h 53h 42h 42h 42h 42h 00h 00h 00h 00h 00h FFh FFh FFh
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
IO: qTD Status: 00h
USB status: 00000000h
>>> Press key to go on with USB-Test. <<< |
Tag 42424242h wird wiederholt! Command Block Status Value: 00h
| Zitat: | 00h Command Passed ("good status")
01h Command Failed
02h Phase Error |
Die passende Spezifikation ist "USB Mass Storage Class - Bulk Only Transport" |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:01:30 26.04.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:53:38 26.04.2010 Titel: |
|
Zitieren |
Rev. 411:
http://en.wikipedia.org/wiki/SCSI_Read_Commands#Read_.2810.29 (SCSI-command: read(10), Opcode 0x28)
USB-Stick read LBA 0 (512 byte)
| Zitat: |
PrettyOS [Version 0.0.0.411] Console 1: EHCI Ports
--------------------------------------------------------------------------------
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
USB status: 00000000h
endpOUT: 2 endpIN: 1
55h 53h 42h 43h 42h 42h 42h 42h 00h 02h 00h 00h 00h 00h 0Ah 28h 00h 00h 00h 00h
00h 00h 00h 02h 00h 00h 00h 00h 00h 00h 00h
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
IO: qTD Status: 01h
qTD Status: Do Ping
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
F8h FFh FFh 7Fh FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh FFh 09h 00h 0Ah 00h
0Bh 00h 0Ch 00h 0Dh 00h 0Eh 00h 0Fh 00h 10h 00h 11h 00h 12h 00h 13h 00h 14h 00h
15h 00h 16h 00h 17h 00h 18h 00h 19h 00h 1Ah 00h 1Bh 00h 0Fh FFh 0Fh 00h 0Fh FFh
0Fh FFh 0Fh FFh 21h 00h 22h 00h 23h 00h 24h 00h 25h 00h 26h 00h 27h 00h 28h 00h
29h 00h 2Ah 00h 2Bh 00h 2Ch 00h 2Dh 00h 2Eh 00h 2Fh 00h 30h 00h 31h 00h 32h 00h
33h 00h 34h 00h 35h 00h 36h 00h 37h 00h 38h 00h 39h 00h 3Ah 00h 3Bh 00h 3Ch 00h
3Dh 00h 3Eh 00h 3Fh 00h 40h 00h 41h 00h 42h 00h 43h 00h 44h 00h 45h 00h 46h 00h
47h 00h 48h 00h 49h 00h 4Ah 00h 4Bh 00h 4Ch 00h 4Dh 00h 4Eh 00h 4Fh 00h 50h 00h
51h 00h 52h 00h 53h 00h 54h 00h 55h 00h 56h 00h 57h 00h 58h 00h 59h 00h 5Ah 00h
5Bh 00h 5Ch 00h 5Dh 00h 5Eh 00h 5Fh 00h 60h 00h 61h 00h 62h 00h 63h 00h 64h 00h
65h 00h 66h 00h 67h 00h 68h 00h 69h 00h 6Ah 00h 6Bh 00h 6Ch 00h 6Dh 00h 6Eh 00h
6Fh 00h 70h 00h 71h 00h 72h 00h 73h 00h 74h 00h 75h 00h 76h 00h 77h 00h 78h 00h
79h 00h 7Ah 00h 7Bh 00h 7Ch 00h 7Dh 00h 7Eh 00h 7Fh 00h 80h 00h 81h 00h 82h 00h
83h 00h 84h 00h 85h 00h 86h 00h 87h 00h 88h 00h 89h 00h 8Ah 00h 8Bh 00h 8Ch 00h
8Dh 00h 8Eh 00h 8Fh 00h 90h 00h 91h 00h 92h 00h 93h 00h 94h 00h 95h 00h 96h 00h
97h 00h 98h 00h 99h 00h 9Ah 00h 9Bh 00h 9Ch 00h 9Dh 00h 9Eh 00h 9Fh 00h A0h 00h
A1h 00h A2h 00h A3h 00h A4h 00h A5h 00h A6h 00h A7h 00h A8h 00h A9h 00h AAh 00h
ABh 00h ACh 00h ADh 00h AEh 00h AFh 00h B0h 00h B1h 00h B2h 00h B3h 00h B4h 00h
B5h 00h B6h 00h B7h 00h B8h 00h B9h 00h BAh 00h BBh 00h BCh 00h BDh 00h BEh 00h
BFh 00h C0h 00h C1h 00h C2h 00h C3h 00h C4h 00h C5h 00h FFh FFh 00h 00h FFh FFh
00h 00h 00h 00h FFh FFh FFh FFh CDh 00h CEh 00h CFh 00h D0h 00h D1h 00h D2h 00h
D3h 00h D4h 00h FFh FFh 00h 00h FFh FFh FFh FFh FFh FFh FFh FFh DBh 00h DCh 00h
DDh 00h DEh 00h DFh 00h E0h 00h E1h 00h E2h 00h E3h 00h E4h 00h E5h 00h E6h 00h
E7h 00h E8h 00h E9h 00h EAh 00h EBh 00h ECh 00h EDh 00h EEh 00h EFh 00h F0h 00h
F1h 00h F2h 00h F3h 00h F4h 00h F5h 00h F6h 00h F7h 00h F8h 00h F9h 00h FAh 00h
FBh 00h FCh 00h FDh 00h FEh 00h FFh 00h 00h 01h
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
IO: qTD Status: 00h
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
--------------------------------------------------------------------------------
55h 53h 42h 53h 42h 42h 42h 42h 00h 00h 00h 00h 00h FFh FFh FFh
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
IO: qTD Status: 00h
USB status: 00000000h
>>> Press key to go on with USB-Test. <<<
--------------------------------------------------------------------------------
|
Kontrolle mit dem Hex-Editor auf dem USB_Stick:
http://www.henkessoft.de/OS_Dev/Bilder/rev290_read_LBA0_from_USB_Stick.PNG
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:08:58 27.04.2010 Titel: |
|
Zitieren |
Läuft z.Z. leider lediglich auf einem PC mit einem USB-Stick.
Ideen für Verbesserungen (aber leider noch nicht durchschlagend):
für read(10):
cbw->CBWFlags = 0x80; // Out: 0x00 In: 0x80 (anstelle "Out")
memset(cbw,0,sizeof(struct usb2_CommandBlockWrapper)); // zero of cbw
DPO und FUA setzen:
| Zitat: | Disable Page Out (DPO) allows the initiator to warn the target that the data being read is unlikely to be requested again soon and so is not worth keeping in the target's data cache. Force Unit Access (FUA) tells the target to fetch the data from the media surface and to not use a cached copy.
|
Evtl. auch Handshake-Problem, IN/OUT-Problem, toggle-Problem |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:11:44 27.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:09:12 27.04.2010 Titel: |
|
Zitieren |
Rev. 412: Zwischenschritt USB MSD (SCSI) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:24:07 28.04.2010 Titel: |
|
Zitieren |
Rev. 413: Zwischenschritt USB MSD (SCSI) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:50:11 29.04.2010 Titel: |
|
Zitieren |
Rev. 414: Zwischenschritt USB MSD (SCSI)
Danke an Tobiking für die Unterstützung, allerdings noch nicht ausreichend.
Das Thema ist leider nicht leicht zu durchschauen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:45:27 30.04.2010 Titel: |
|
Zitieren |
Rev. 415:
... zunächst der bisher stabile OUT/IN SCSI-Command-Transfer mit 0x00.
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ///////// Test Suite 1: send SCSI comamnd "test unit ready(6)"
settextcolor(9,0); printf("\n>>> SCSI: test unit ready"); settextcolor(15,0);
usbTransferSCSIcommandToMSD(devAddr, usbDevices[devAddr].numEndpointOutMSD, 0x00);
// #ifdef _USB_DIAGNOSIS_
printf("\nIO: "); showStatusbyteQTD(DataQTD); waitForKeyStroke();
// #endif
settextcolor(9,0); printf("\n>>> get status"); settextcolor(15,0);
usbTransferGetAnswerToCommandMSD(devAddr, usbDevices[devAddr].numEndpointInMSD);
// #ifdef _USB_DIAGNOSIS_
printf("\nIO: "); showStatusbyteQTD(DataQTD); waitForKeyStroke();
// #endif | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ///////// Test Suite 1: send SCSI comamnd "test unit ready(6)"
settextcolor(9,0); printf("\n>>> SCSI: test unit ready"); settextcolor(15,0);
usbTransferSCSIcommandToMSD(devAddr, usbDevices[devAddr].numEndpointOutMSD, 0x00);
// #ifdef _USB_DIAGNOSIS_
printf("\nIO: "); showStatusbyteQTD(DataQTD); waitForKeyStroke();
// #endif
settextcolor(9,0); printf("\n>>> get status"); settextcolor(15,0);
usbTransferGetAnswerToCommandMSD(devAddr, usbDevices[devAddr].numEndpointInMSD);
// #ifdef _USB_DIAGNOSIS_
printf("\nIO: "); showStatusbyteQTD(DataQTD); waitForKeyStroke();
// #endif | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ///////// Test Suite 1: send SCSI comamnd "test unit ready(6)"
settextcolor(9,0); printf("\n>>> SCSI: test unit ready"); settextcolor(15,0);
usbTransferSCSIcommandToMSD(devAddr, usbDevices[devAddr].numEndpointOutMSD, 0x00);
// #ifdef _USB_DIAGNOSIS_
printf("\nIO: "); showStatusbyteQTD(DataQTD); waitForKeyStroke();
// #endif
settextcolor(9,0); printf("\n>>> get status"); settextcolor(15,0);
usbTransferGetAnswerToCommandMSD(devAddr, usbDevices[devAddr].numEndpointInMSD);
// #ifdef _USB_DIAGNOSIS_
printf("\nIO: "); showStatusbyteQTD(DataQTD); waitForKeyStroke();
// #endif | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:08:30 30.04.2010 Titel: |
|
Zitieren |
rev. 416:
mit VMWare läuft diese Version
Wichtige Erkenntnisse: 1) handshakes stören 2) in SCSI: Big Endian!
Warum hardware damit noch nicht störungsfrei läuft, das liegt an qTD/QH. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 02:13:39 30.04.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:01:57 30.04.2010 Titel: |
|
Zitieren |
rev. 417:
Version läuft mit VMWare, VBox, real PC. Erfolgreiche Übetragungen leider noch nicht überall.
Leider noch Fehlermeldungen, deren Ursache heraus gefunden werden muss.
a) USB-Interrupt kommt nicht (USB-Übertragung nicht vollständig)
b) halted - serious error (qTD status) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:34:14 30.04.2010 Titel: |
|
Zitieren |
rev. 418:
leider spielt die wartezeit am ende von performAsyncScheduler() eine Rolle. Zu kurz oder zu lang führt zu "command failed" bei "test unit ready" bzw. zu einem nicht vollständigen USB-Transfer (kein USB-Interrupt). Ich habe jetzt mal auf 80 ms eingestellt.
Aber hier ist wohl ein Komplettumbau unseres async-Schedulers notwendig. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:40:11 01.05.2010 Titel: |
|
Zitieren |
rev. 419: zwischenschritt: Umbau auf zwei QH (für den IN and OUT endpoint) mit jeweils angehängten qTD-Ketten. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 08:52:15 01.05.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:58:51 01.05.2010 Titel: |
|
Zitieren |
Rev. 420:
läuft mit 1GB stick (FAT16) und real PC
Probleme:
a) liest nicht mit VMWare
b) man kann die CBW nur einzeln durchführen (also reset CBW3 oder reset CBW1, aber nicht reset CBW1, reset CBW2, reset CBW3 ..., da fehlt leider noch etwas)
bitte mal mit hardware testen, also real PC + real USB-MSD (sticks, card reader, usb-festplatten, ...)
Anm.: manche haben drei endpoints, also zwei IN, da wird noch evlt. der falsche endpointIN verwendet durch das parsen, da brauchen wir noch ein weiteres auswahl-kriterium, wahrscheinlich packetsize 512)
so wie es aussieht, benötigen wir doch handshakes: http://www.beyondlogic.org/usbnutshell/usb4.htm#Bulk |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 11:38:07 01.05.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:01:40 01.05.2010 Titel: |
|
Zitieren |
Rev. 421: Zwischensicherung usbMSD/scsi
reset und handshake eingebaut
real PC und 1GB usb stick geht
insgesamt aber noch von der Lösung entfernt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:40:49 01.05.2010 Titel: |
|
Zitieren |
Revision 422:
- vprintf und vsnprintf eingeführt, snprintf statt sprintf, strncat eingeführt
- obsolete Syscalls mit nop "eliminiert" (testch, getCurrentMilliseconds und getUserTaskNumber) und dazugehörende Funktionalität gelöscht
- kdebug repariert
- checkKQ_and_return_char heißt nun keyboard_getChar
- writeInfo hat jetzt auch dynamische Parameterliste
- Mausoutput in Infobar verlegt
- Formatierung&Aufräumarbeiten
bitte in ehci.c, ab zeile 900, folgendes verwenden (Doppelausgabe vermeiden):
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | 1 2 3 4 5 6 7 8 9 10 | for(uint32_t sector=0; sector < 10; sector++)
{
settextcolor(9,0); printf("\n>>> SCSI: read(10)"); settextcolor(15,0);
usbSendSCSIcmd(devAddr, usbDevices[devAddr].numEndpointOutMSD, usbDevices[devAddr].numEndpointInMSD,
0x28, sector, length, false); // dev, endp, cmd, LBA, transfer length, MSDStatus
printf("\nIO:");
showStatusbyteQTD(DataQTD);
waitForKeyStroke();
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | for(uint32_t sector=0; sector < 10; sector++)
{
settextcolor(9,0); printf("\n>>> SCSI: read(10)"); settextcolor(15,0);
usbSendSCSIcmd(devAddr, usbDevices[devAddr].numEndpointOutMSD, usbDevices[devAddr].numEndpointInMSD,
0x28, sector, length, false); // dev, endp, cmd, LBA, transfer length, MSDStatus
printf("\nIO:");
showStatusbyteQTD(DataQTD);
waitForKeyStroke();
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | for(uint32_t sector=0; sector < 10; sector++)
{
settextcolor(9,0); printf("\n>>> SCSI: read(10)"); settextcolor(15,0);
usbSendSCSIcmd(devAddr, usbDevices[devAddr].numEndpointOutMSD, usbDevices[devAddr].numEndpointInMSD,
0x28, sector, length, false); // dev, endp, cmd, LBA, transfer length, MSDStatus
printf("\nIO:");
showStatusbyteQTD(DataQTD);
waitForKeyStroke();
}
} | |
|
Zuletzt bearbeitet von Erhard Henkes am 20:50:11 01.05.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:26:45 01.05.2010 Titel: |
|
Zitieren |
Rev. 423:
USB/SCSI:
| Zitat: | PrettyOS [Version 0.0.0.423] Console 1: EHCI Ports
--------------------------------------------------------------------------------
USB2: SET_CONFIGURATION 1
USB2: GET_CONFIGURATION 1
dev: 1 interface: 0 endpOUT: 2 endpIN: 1
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>>> SCSI: test unit ready
55h 53h 42h 53h 42h 42h 42h 42h 00h 00h 00h 00h 00h
Command Passed ("good status")
qTD Status: 00h OK (no bit set)
>>> Press key to go on with USB-Test. <<<
>>> SCSI: read(10)
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
... <lauter Nullen>
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
qTD Status: 80h Active - HC transactions enabled
>>> Press key to go on with USB-Test. <<<
--------------------------------------------------------------------------------
|
Problem: warum läuft der Transfer mit dem read(10) nicht durch? |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
03:17:21 02.05.2010 Titel: |
|
Zitieren |
Rev. 424:
Zwischenstand zur Sicherung: Austausch von sleep gegen delay in performAsyncScheduler() ergibt positive resultate mit dem 1GB stick in VMWare.
Diese Funktion muss umgebaut werden. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
04:15:06 02.05.2010 Titel: |
|
Zitieren |
Rev. 425:
diese version funktionierte mit test unit ready, read capacity, read(10) (VMWare, 1GB stick) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:10:24 02.05.2010 Titel: |
|
Zitieren |
Revision 426:
- settextcolor(uint8_t, uint8_t) durch textColor(uint8_t) ersetzt. ACHTUNG: Userprogramme neukompilieren, da syscalls geändert (noch nicht mit allen Mitgelieferten gemacht)
- my_stdarg.h durch types.h ersetzt im Userbereich.
- einige Tabs beseitigt, sonstige Formatierungen & Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:18:31 02.05.2010 Titel: |
|
Zitieren |
Rev. 427:
- testMSD(deviceAddr) ausgelagert aus ehci.c
- alte usb-Funktionen nicht mehr gebraucht (auskommentiert, kommen demnächst weg) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:41:47 02.05.2010 Titel: |
|
Zitieren |
Rev. 428:
Sicherung vor "Umbau auf qTD umhängen bei stabilen QH"
Diese Version läuft mit 1GB usb-Stick auf VMWare
bitte beachten: for(uint32_t sector=1055; sector < 1060; sector++)
das ist 0x83E00 beginnend, hat bei mir in VMWare geklappt, zumindest ab 0x84000 (zweiter gelesener Sektor) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
16:49:44 02.05.2010 Titel: |
|
Zitieren |
oh, hab ich ausversehen sektor 1055 bis 1060 committed? Das war ja eig. nur für meinen Stick gültig, damit ich mal was sehe... |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:55:40 02.05.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:27:37 02.05.2010 Titel: |
|
Zitieren |
Revision 429:
- Ring-Strukturen angelegt (für Scheduler-Umbauten voraussichtlich nötig), analog zu list
- ODA aufgelöst (in Einzelvariablen und system)
- Alle Userprogramme neu übersetzt (wegen Userlibänderung)
- Formatierungen
- Smilie-Bug gefixt. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:09:15 02.05.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:22:29 03.05.2010 Titel: |
|
Zitieren |
Rev. 430:
Auslagerungen und Streichungen zur Erhöhung der Lesbarkeit und Wartbarkeit wurden vorgenommen:
ehciQHqTD.h/c: Queue Head (QH) und Queue Element Transfer Descriptor (qTD)
usb2_msd.h/c: USB 2.0 Mass Storage Devices (MSD) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:23:02 03.05.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:02:31 03.05.2010 Titel: |
|
Zitieren |
Rev. 431:
Verbesserungen im Code bei ehci/usb |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:36:51 04.05.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:08:52 04.05.2010 Titel: |
|
Zitieren |
Rev. 433:
In VMWare geht 1GB und 16 GB usb-stick, Test-PC zeigt noch qTD-status 0x80 (wird nicht ausgeführt)
Fehler im Bereich SCSI-Befehle wurden korrigiert (z.B. werden bei read im SCSI cmd nicht byte sondern blocks angegeben).
Bitte mit Simulationen und PC testen.
Dank an den Ersteller von tatOS. Es geht nichts über praktische Vorbilder mit vielen Kommentaren direkt im Code, sollten wir uns selbst ein Beispiel daran nehmen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:10:30 04.05.2010 Titel: |
|
Zitieren |
Ganz nützlich wär vlt. noch ein Link zu Tatos, denn Google rückt damit nur ungern raus, da es gerne nach Tattoos suchen möchte. (mit vielen "-"-Angaben schafft man es schon, aber es ist mühsam) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:21:19 04.05.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:34:37 05.05.2010 Titel: |
|
Zitieren |
Rev. 434:
bei real PC hängt es im IN-Zweig von usbSendSCSIcmd |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:32:02 05.05.2010 Titel: |
|
Zitieren |
rev. 435: Zwischenstand
einige verbesserungen, real PC problem aber noch nicht gelöst |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:29:13 05.05.2010 Titel: |
|
Zitieren |
Rev. 436: da +gjm+ auf speicherprobleme tippt, hier eine korrigierte Version mit #define _USB_DIAGNOSIS_ aktiviert.
Hier der aktuelle Ablauf auf PC mit meinem 1GB stick:
| Zitat: |
dev: 3 interface: 0 endpOUT: 2 endpIN: 1
USB2: usbTransferBulkOnlyMassStorageReset, dev: 3 interface: 0#
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>>> SCSI: inquiry
OUT part#
IN part transfer>0#
virtAddrBuf0 C0252000h : 00h 80h 02h 02h 1Fh 00h 00h 00h 6Dh 65h 6Dh 6Fh 72h 79h
00h 00h 55h 53h 42h 32h 2Eh 30h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 31h 2Eh
30h 30h
virtAddrBuf0 C0251000h : 55h 53h 42h 53h 12h 42h 42h 42h 00h 00h 00h 00h 00h
Command Passed ("good status")
qTD Status: 00h OK (no bit set)<-- data
qTD Status: 00h OK (no bit set)<-- status
Command Block Status Values in "good status"
>>> Press key <<<
>>> SCSI: test unit ready
OUT part#
IN part transfer==0###################
timeout - no STS_USBINT set!
virtAddrBuf0 C0257000h : 55h 53h 42h 53h AAh AAh AAh AAh AAh AAh AAh AAh AAh
qTD Status: 00h OK (no bit set)<-- data
qTD Status: 80h Active - HC transactions enabled<-- status
>>> Press key <<<
>>> SCSI: request sense
OUT part#
IN part transfer>0###################
timeout - no STS_USBINT set!
virtAddrBuf0 C025D000h : 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h
virtAddrBuf0 C025C000h : 55h 53h 42h 53h AAh AAh AAh AAh AAh AAh AAh AAh AAh
qTD Status: 80h Active - HC transactions enabled<-- data
qTD Status: 80h Active - HC transactions enabled<-- status
>>> Press key <<< |
Wie man sieht, steigt der Ablauf beim ersten "test unit ready" (der zweite SCSI command nach dem ersten "inquiry") Beim IN-Endpoint mit seinem QH/qTD Essemble aus.
So sieht dort der Code aus:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | printf("\nIN part");
pOpRegs->ASYNCLISTADDR = paging_get_phys_addr(kernel_pd, QH_In);
// IN qTDs
void* QTD_In;
void* next = createQTD_Handshake(OUT); // Handshake
if (TransferLength > 0)
{
printf(" transfer>0");
next = StatusQTD = createQTD_MSDStatus((uintptr_t)next, 1); // next, toggle // IN 13 byte
QTD_In = DataQTD = createQTD_IO((uintptr_t)next, IN, 0, TransferLength); // IN/OUT DATA0, ... byte
}
else
{
printf(" transfer==0");
QTD_In = StatusQTD = createQTD_MSDStatus((uintptr_t)next, 0); // next, toggle // IN 13 byte
}
// IN QH
createQH(QH_In, paging_get_phys_addr(kernel_pd, QH_In), QTD_In, 1, device, endpointIn, 512); // endpoint IN/OUT for MSD
performAsyncScheduler();
if (TransferLength) // byte
{
printf("\n");
showPacket(DataQTDpage0,TransferLength);
if ((TransferLength==512) && (TransferLength==36)) // data block, inquiry feedback
{
showPacketAlphaNumeric(DataQTDpage0,TransferLength);
}
}
printf("\n");
showPacket(MSDStatusQTDpage0,13);
if( ( (*(((uint32_t*)MSDStatusQTDpage0)+3)) & 0x000000FF ) == 0x0 )
{
printf("\nCommand Passed (\"good status\") ");
}
if( ( (*(((uint32_t*)MSDStatusQTDpage0)+3)) & 0x000000FF ) == 0x1 )
{
printf("\nCommand failed");
}
if( ( (*(((uint32_t*)MSDStatusQTDpage0)+3)) & 0x000000FF ) == 0x2 )
{
printf("\nPhase Error");
}
// transfer diagnosis
showStatusbyteQTD(DataQTD); printf("<-- data"); // In/Out Data
showStatusbyteQTD(StatusQTD); printf("<-- status"); // In CSW | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | printf("\nIN part");
pOpRegs->ASYNCLISTADDR = paging_get_phys_addr(kernel_pd, QH_In);
// IN qTDs
void* QTD_In;
void* next = createQTD_Handshake(OUT); // Handshake
if (TransferLength > 0)
{
printf(" transfer>0");
next = StatusQTD = createQTD_MSDStatus((uintptr_t)next, 1); // next, toggle // IN 13 byte
QTD_In = DataQTD = createQTD_IO((uintptr_t)next, IN, 0, TransferLength); // IN/OUT DATA0, ... byte
}
else
{
printf(" transfer==0");
QTD_In = StatusQTD = createQTD_MSDStatus((uintptr_t)next, 0); // next, toggle // IN 13 byte
}
// IN QH
createQH(QH_In, paging_get_phys_addr(kernel_pd, QH_In), QTD_In, 1, device, endpointIn, 512); // endpoint IN/OUT for MSD
performAsyncScheduler();
if (TransferLength) // byte
{
printf("\n");
showPacket(DataQTDpage0,TransferLength);
if ((TransferLength==512) && (TransferLength==36)) // data block, inquiry feedback
{
showPacketAlphaNumeric(DataQTDpage0,TransferLength);
}
}
printf("\n");
showPacket(MSDStatusQTDpage0,13);
if( ( (*(((uint32_t*)MSDStatusQTDpage0)+3)) & 0x000000FF ) == 0x0 )
{
printf("\nCommand Passed (\"good status\") ");
}
if( ( (*(((uint32_t*)MSDStatusQTDpage0)+3)) & 0x000000FF ) == 0x1 )
{
printf("\nCommand failed");
}
if( ( (*(((uint32_t*)MSDStatusQTDpage0)+3)) & 0x000000FF ) == 0x2 )
{
printf("\nPhase Error");
}
// transfer diagnosis
showStatusbyteQTD(DataQTD); printf("<-- data"); // In/Out Data
showStatusbyteQTD(StatusQTD); printf("<-- status"); // In CSW | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | printf("\nIN part");
pOpRegs->ASYNCLISTADDR = paging_get_phys_addr(kernel_pd, QH_In);
// IN qTDs
void* QTD_In;
void* next = createQTD_Handshake(OUT); // Handshake
if (TransferLength > 0)
{
printf(" transfer>0");
next = StatusQTD = createQTD_MSDStatus((uintptr_t)next, 1); // next, toggle // IN 13 byte
QTD_In = DataQTD = createQTD_IO((uintptr_t)next, IN, 0, TransferLength); // IN/OUT DATA0, ... byte
}
else
{
printf(" transfer==0");
QTD_In = StatusQTD = createQTD_MSDStatus((uintptr_t)next, 0); // next, toggle // IN 13 byte
}
// IN QH
createQH(QH_In, paging_get_phys_addr(kernel_pd, QH_In), QTD_In, 1, device, endpointIn, 512); // endpoint IN/OUT for MSD
performAsyncScheduler();
if (TransferLength) // byte
{
printf("\n");
showPacket(DataQTDpage0,TransferLength);
if ((TransferLength==512) && (TransferLength==36)) // data block, inquiry feedback
{
showPacketAlphaNumeric(DataQTDpage0,TransferLength);
}
}
printf("\n");
showPacket(MSDStatusQTDpage0,13);
if( ( (*(((uint32_t*)MSDStatusQTDpage0)+3)) & 0x000000FF ) == 0x0 )
{
printf("\nCommand Passed (\"good status\") ");
}
if( ( (*(((uint32_t*)MSDStatusQTDpage0)+3)) & 0x000000FF ) == 0x1 )
{
printf("\nCommand failed");
}
if( ( (*(((uint32_t*)MSDStatusQTDpage0)+3)) & 0x000000FF ) == 0x2 )
{
printf("\nPhase Error");
}
// transfer diagnosis
showStatusbyteQTD(DataQTD); printf("<-- data"); // In/Out Data
showStatusbyteQTD(StatusQTD); printf("<-- status"); // In CSW | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:43:33 05.05.2010, insgesamt 3-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
22:41:01 05.05.2010 Titel: |
|
Zitieren |
Muss man extra committen, nur um _USB_DIAGNOSIS_ zu aktivieren? |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:44:49 05.05.2010 Titel: |
|
Zitieren |
Das lief leider nicht fehlerfrei. Ich wollte +gjm+ nicht zumuten, die entsprechende Version zumindest lauffähig zu bekommen.
Den Ausgabe-Bug habe ich noch übersehen, bitte mit ODER-Verknüpfung anstelle UND:
| C/C++ Code: | if ((TransferLength==512) || (TransferLength==36)) // data block, inquiry feedback
{
showPacketAlphaNumeric(DataQTDpage0,TransferLength);
}
| |
| C/C++ Code: | if ((TransferLength==512) || (TransferLength==36)) // data block, inquiry feedback
{
showPacketAlphaNumeric(DataQTDpage0,TransferLength);
}
| |
| C/C++ Code: | if ((TransferLength==512) || (TransferLength==36)) // data block, inquiry feedback
{
showPacketAlphaNumeric(DataQTDpage0,TransferLength);
}
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:54:54 05.05.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:06:46 07.05.2010 Titel: |
|
Zitieren |
Rev. 437:
ehci/usb:
- void performAsyncScheduler(bool stop) <--- für control transfers mit stop (sonst laufen die nicht), in usbSendSCSIcmd ohne stop (mit stop wird noch der cmd auf OUT ausgeführt, aber nicht der IN zweig)
- QHs und qTD werden analysiert
- zwei QHs (für OUT und IN) im asyncScheduler, die aufeinander zeigen
Ergebnis:
a) in VMWare perfekt
b) real PC:
| Zitat: |
...
1648000h <-- QH_Out
IN part
asyncList: 01649000h <-- QH_In transfer>0#
00h 80h 02h 02h 1Fh 00h 00h 00h 6Dh 65h 6Dh 6Fh 72h 79h 00h 00h 55h 53h 42h 32h
2Eh 30h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 31h 2Eh 30h 30h
memoryUSB2.01.00
55h 53h 42h 53h 12h 42h 42h 42h 00h 00h 00h 00h 00h
Command Passed ("good status")
qTD Status: 01h Do Ping<-- command
qTD Status: 00h OK (no bit set)<-- data
qTD Status: 00h OK (no bit set)<-- status
Command Block Status Values in "good status"
>>> Analyze Async List <<<
asyncList: 01649000h
USB status: 00008000h
Asynchronous Schedule Status
>>> Press key <<<
>>> SCSI: test unit ready
OUT part
asyncList: 01649000h <-- QH_Out
IN part
asyncList: 0164F000h <-- QH_In transfer==0###################
timeout - no STS_USBINT set!
55h 53h 42h 53h AAh AAh AAh AAh AAh AAh AAh AAh AAh
qTD Status: 80h Active - HC transactions enabled<-- command
qTD Status: 80h Active - HC transactions enabled<-- status
>>> Analyze Async List <<<
asyncList: 01649000h
USB status: 00008000h
Asynchronous Schedule Status
>>> Press key <<< | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:29:11 08.05.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:10:50 08.05.2010 Titel: |
|
Zitieren |
Rev. 438:
mit Analyse des Fortgangs des Async. Schedulers
Den Fortgang im Async. Scheduler sieht man an aS und nextQH.
Den Fortgang über eine qTD-Kette sieht man hier sehr gut:
next qTD <--- auszuführender qTD
curr qTD <--- zuletzt ausgeführter qTD
hier ist alles ok:
| Zitat: |
>>> SCSI: inquiry
OUT part
asyncList: 01663000h <-- QH_Out
IN part transfer>0
before aS:
aS: 01663000h nextQH: 01664000h
curr qTD: 00000000h next qTD: 01665000h
>>> Press key <<<#
after aS:
aS: 01664000h nextQH: 01663000h
curr qTD: 01667000h next qTD: 00000000h
>>> Press key <<<
00h 80h 02h 02h 1Fh 00h 00h 00h 41h 36h 30h 43h 30h 37h 30h 34h 46h 6Ch 61h 73h
68h 20h 44h 69h 73h 6Bh 20h 20h 20h 20h 20h 20h 38h 2Eh 30h 37h
A60C0704Flash Disk 8.07
55h 53h 42h 53h 12h 42h 42h 42h 00h 00h 00h 00h 00h
Command Passed ("good status")
qTD Status: 00h OK (no bit set)<-- command
qTD Status: 00h OK (no bit set)<-- data
qTD Status: 00h OK (no bit set)<-- status
Command Block Status Values in "good status"
>>> Analyze Async List <<<
asyncList (phys): 01664000h DataQTD (phys): 01669000h
USB status: 00000000h |
hier bleibt er zwischen QH_Out und QH_In stecken:
| Zitat: |
>>> SCSI: read capacity
OUT part
asyncList: 01687000h <-- QH_Out
IN part transfer>0
before aS:
aS: 01687000h nextQH: 01688000h
curr qTD: 00000000h next qTD: 01689000h
>>> Press key <<<#
after aS:
aS: 01687000h nextQH: 01688000h
curr qTD: 01689000h next qTD: 00000000h
>>> Press key <<<
00h 00h 00h 00h 00h 00h 00h 00h
55h 53h 42h 53h AAh AAh AAh AAh AAh AAh AAh AAh AAh
qTD Status: 00h OK (no bit set)<-- command
qTD Status: 80h Active - HC transactions enabled<-- data
qTD Status: 80h Active - HC transactions enabled<-- status
Capacity: 0 MB, Last LBA: 0, block size 0
>>> Analyze Async List <<<
asyncList (phys): 01687000h DataQTD (phys): 0168D000h
USB status: 00002000h
Reclamation
|
Aktuelle Fragestellung:
Was hemmt auf real PC den Übergang von QH_Out nach QH_In? Konstruktive Ideen zur Klärung dieser Frage werden gerne entgegen genommen.
Hintergrund:
Der EHCI speichert in seinem OpRegister ASYNCLISTADDR (Current Asynchronous List Address Register) die physische Adresse des QH, der als letztes verwendet wurde bzw. als nächstes ausgeführt wird (round robin). Steuergrößen beim Ablauf sind das H-Bit im QH und das Reclamation Bit im USB Status-Register.
Innerhalb des QH zeigt next qTD auf den qTD, der als nächstes ausgeführt wird. Der zuletzt ausgeführte qTD wird in current qTD gespeichert.
ehci spec 1.0, 4.10.5:
| Zitat: | 4.10.5 Follow Queue Head Horizontal Pointer
The host controller must use the horizontal pointer in the queue head to the next schedule data structure
when any of the following conditions exist:
• If the Active bit is a one on exit from the Execute Transaction state, or
• When the host controller exits the Write Back qTD state, or
• If the Advance Queue state fails to advance the queue because the target qTD is not active, or
• If the Halted bit is a one on exit from the Fetch QH state.
There is no functional requirement that the host controller wait until the current transaction is complete
before using the horizontal pointer to read the next linked data structure. However, it must wait until the
current transaction is complete before executing the next data structure. | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:28:38 08.05.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:07:21 08.05.2010 Titel: |
|
Zitieren |
Rev. 439:
Wenn der Übergang von QH1 zu QH2 ein Problem ist, dann trennen wir die beiden eben wieder und lassen sie auf sich selbst zeigen. Diese Version konzentriert sich auf den Ablauf bei den qTD-Ketten und zeigt daher die entsprechenden physischen Speicher der qTD an, damit man mit curr qTD und next qTD beobachten kann, wie weit es läuft.
In VMWare sehe ich einen perfekten Ablauf, d.h. der Code ist von der Ablauflogik her ok.
Auf real PC werden die qTD im IN-Zweig entweder vollständig oder teilweise nicht ausgeführt. Trotz der optimalen Beobachtungsmöglichkeit bleibt der Grund noch im Dunkeln. Daher wurde bisher noch kein "Hot Fix" gefunden. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:26:43 08.05.2010 Titel: |
|
Zitieren |
Rev. 440:
sorry, hatte vergessen das H-Bit zu setzen am IN-endpoint (nach dem Trennen der beiden QH), hilft aber auch nichts, aber ohne ist es nicht OK in der async List, was VMWare allerdings egal ist, so wie es aussieht.
Der erste SCSI command läuft sauber durch:
| Zitat: |
PrettyOS [Version 0.0.0.440] Console 7: EHCI Ports
--------------------------------------------------------------------------------
language: German
JetFlash
Mass Storage Device
N014IM75
USB2: SET_CONFIGURATION 1
USB2: GET_CONFIGURATION 1
dev: 1 interface: 0 endpOUT: 1 endpIN: 2
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>>> SCSI: inquiry
OUT part
asyncList: 0166D000h <-- QH_Out
before aS:
aS: 0166D000h nextQH: 0166D000h
curr qTD: 00000000h next qTD: 0166F000h
after aS:
aS: 0166D000h nextQH: 0166D000h
curr qTD: 0166F000h next qTD: 00000000h
IN part
asyncList: 0166E000h <-- QH_In transfer>0
handshakeQTD: 01671000h StatusQTD: 01673000h DataQTD: 01675000h
before aS:
aS: 0166E000h nextQH: 0166E000h
curr qTD: 00000000h next qTD: 01675000h
after aS:
aS: 0166E000h nextQH: 0166E000h
curr qTD: 01671000h next qTD: 00000000h
00h 80h 02h 02h 1Fh 00h 00h 00h 4Ah 65h 74h 46h 6Ch 61h 73h 68h 54h 72h 61h 6Eh
73h 63h 65h 6Eh 64h 20h 31h 36h 47h 42h 20h 20h 38h 2Eh 30h 37h
JetFlashTranscend 16GB 8.07
55h 53h 42h 53h 12h 42h 42h 42h 00h 00h 00h 00h 00h
Command Passed ("good status")
qTD Status: 00h OK (no bit set)<-- command
qTD Status: 00h OK (no bit set)<-- data
qTD Status: 00h OK (no bit set)<-- status
Command Block Status Values in "good status"
USB status: 00000000h
>>> Press key <<< |
Am IN queue head sieht man die Kette:
DataQTD: 01675000h
StatusQTD: 01673000h
handshakeQTD: 01671000h
Vor Start des async Schedulers:
curr qTD: 00000000h
next qTD: 01675000h
Nach Ende des async Schedulers:
curr qTD: 01671000h
next qTD: 00000000h
Der async Scheduler läuft also die qTD-Kette sauber von 01675000h bis 01671000h durch.
Auch ein zweites "inquiry" mit vorgestelltem Reset klappt!
Das führt zu der nächsten Version: |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 08:30:30 09.05.2010, insgesamt 6-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
08:22:52 09.05.2010 Titel: |
|
Zitieren |
Rev. 441:
Diese Version läuft endlich mit real PC und einem 16 GB usb-Stick ohne Probleme durch. Geschafft!
Auch ein 512 MB Stick läuft.
Ein 1 GB stick "bockt" allerdings, aber das ist jetzt die USB MSD Baustelle. Die EHCI QH/qTD Seite steht. Unsere Analyse zeigt den Grund für das Nicht-Ausführen eines qTD leider noch nicht an.
Es ist erstaunlich, dass wir den usbTransferBulkOnlyMassStorageReset benötigen, denn das CSW war ja ok.
Ansonsten: Die "device (not) attached" Anzeige in showPORTSC() im Modul ehci.c wurde zeitlich vor diese Aktionen gelegt, wo es hingehört. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 08:36:23 09.05.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:22:15 09.05.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:47:59 09.05.2010 Titel: |
|
Zitieren |
Rev. 443:
strncpy ersetzt
Dank an MrX! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 11:48:12 09.05.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:58:35 09.05.2010 Titel: |
|
Zitieren |
Rev. 444:
nun mit NAK/NYET counter (QH overlay DWORD 5, bit 4:1), funktioniert nur, wenn mit RL ungleich null nachgeladen wird. Wir stellen daher RL auf 15 ein. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:44:41 09.05.2010 Titel: |
|
Zitieren |
Rev. 445:
- delay (läuft im thread nicht gut) durch sleepMilliseconds ersetzt.
- Ablauf im asyncScheduler verbessert
- Durchlauf beschleunigt, dafür an den richtigen Stellen gewartet |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:15:13 10.05.2010 Titel: |
|
Zitieren |
Rev. 446:
Nun können auch usb-Sticks mit 3 endpoints (2 bulk, 1 interrupt) eingesetzt werden. Die Unterscheidung erfolgt über attributes (0x2 bulk, 0x3 interrupt).
siehe: http://www.beyondlogic.org/usbnutshell/usb5.htm#EndpointDescriptors
| Zitat: | Bits 0..1 Transfer Type
00 = Control
01 = Isochronous
10 = Bulk
11 = Interrupt
| |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:34:35 11.05.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:04:59 10.05.2010 Titel: |
|
Zitieren |
Rev. 447:
Zwischenstand: GetStatus, ClearFeature(Halt) und MSD_ResetRecovery eingebaut |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:33:42 11.05.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:00:57 11.05.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:15:25 11.05.2010 Titel: |
|
Zitieren |
Rev. 449:
Tipp von +gjm* eingearbeitet.
| C/C++ Code: | textColor(0x09); printf("\n>>> SCSI: inquiry"); textColor(0x0F);
usbTransferSetConfiguration(devAddr,config); // <--- !!!
usbSendSCSIcmd(devAddr, usbDevices[devAddr].numInterfaceMSD, usbDevices[devAddr].numEndpointOutMSD, usbDevices[devAddr].numEndpointInMSD, 0x12, 0, 36); // dev, endp, cmd, LBA, transfer length
statusByte = BYTE1(*(((uint32_t*)MSDStatusQTDpage0)+3));
| |
| C/C++ Code: | textColor(0x09); printf("\n>>> SCSI: inquiry"); textColor(0x0F);
usbTransferSetConfiguration(devAddr,config); // <--- !!!
usbSendSCSIcmd(devAddr, usbDevices[devAddr].numInterfaceMSD, usbDevices[devAddr].numEndpointOutMSD, usbDevices[devAddr].numEndpointInMSD, 0x12, 0, 36); // dev, endp, cmd, LBA, transfer length
statusByte = BYTE1(*(((uint32_t*)MSDStatusQTDpage0)+3));
| |
| C/C++ Code: | textColor(0x09); printf("\n>>> SCSI: inquiry"); textColor(0x0F);
usbTransferSetConfiguration(devAddr,config); // <--- !!!
usbSendSCSIcmd(devAddr, usbDevices[devAddr].numInterfaceMSD, usbDevices[devAddr].numEndpointOutMSD, usbDevices[devAddr].numEndpointInMSD, 0x12, 0, 36); // dev, endp, cmd, LBA, transfer length
statusByte = BYTE1(*(((uint32_t*)MSDStatusQTDpage0)+3));
| |
Hoffentlich die erwünschte Stabilisierung. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:33:54 12.05.2010 Titel: |
|
Zitieren |
Rev. 450:
Erster Durchbruch bei USB2/SCSI: alle Sticks gehen, auch Tobikings Laptop, und bei +gjm+ geht es hoffentlich auch noch mit dieser Version. Ihm gebührt unser größter Dank für das Finden des fehlenden Puzzleteils.
Bitte breit testen!
Der nun ausgelassene handshake ist übrigens nicht die Komplettlösung. Tauscht man usbTransferSetConfiguration(devAddr,config) gegen den Reset des Interface (ohne geht es dann nicht!) aus, so fallen wieder einzelne qTD aus (status 0x80).
Ein ganz vermintes Gelände!
usbTransferSetConfiguration(devAddr,config) hat also eine wesentliche "Nebenwirkung", die wir bisher nicht gefunden haben. Die gilt es zu verstehen. Also schauen wir in die usb 2.0 spec:
| Zitat: |
9.1.1.5 Configured
Before a USB device’s function may be used, the device must be configured. From the device’s perspective, configuration involves correctly processing a SetConfiguration() request with a non-zero configuration value. Configuring a device or changing an alternate setting causes all of the status and configuration values associated with endpoints in the affected interfaces to be set to their default values. This includes setting the data toggle of any endpoint using data toggles to the value DATA0. | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:35:37 12.05.2010, insgesamt 5-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:41:50 12.05.2010 Titel: |
|
Zitieren |
Revision 451:
- console.c/video.c: Videomemory wird auf 0 statt komischer, unverständlicher Werte gesetzt
- Scheduler: Erste Umformungen Richtung neuer Scheduler (Umbenennungen)
- list.c: Fehlerkorrekturen in Ring-Funktionen
- Korrekturen, um _DIAGNOSIS_ wieder funktionsfähig zu machen
- Funktion memmove eingebaut (Dank an den Autor)
- Bootscreen leicht verändert (vertikal zentriert und Code vereinfacht). Ist auch wieder aktiviert
- Diverse Kleinigkeiten, Entfernung überflüssigen Codes und Stilkorrekturen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:03:56 13.05.2010 Titel: |
|
Zitieren |
Rev. 452:
- Der Handshake-qTD zerstörte bei manchen Mass Storage Devices die Konfiguration
- Dennoch lief es nach Entfernen des schädlichen Handshake am IN endpoint nicht richtig
- set_config setzt nämlich das toggle an den endpoints auf 0, so dass die Vorgehensweise mit 0 zu beginnen klappte
- nun wird das toggle endpoint-spezifisch in der Device Struktur gespeichert und ständig pro endpoint geswitcht
Fazit: kein handshake-qTD, abwechselndes togglen pro endpoint OUT und IN
usb spec:| Zitat: | The host always initializes the first transaction of a bus transfer to the DATA0 PID with a configuration event. The second transaction uses a DATA1 PID, and successive data transfers alternate for the remainder of the bulk transfer. The data packet transmitter toggles upon receipt of ACK, and the receiver toggles upon receipt and acceptance of a valid data packet.
Fig. 8-30 zeigt ein ACK, ob das vom EHCI kommt? | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:32:41 13.05.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:32:23 13.05.2010 Titel: |
|
Zitieren |
Rev. 453:
Die USB-Diagnose-Ausgaben (vor allem OK und QH/qTD) wurden weitgehend aus dem Standard genommen (kann per define in os.h aktiviert werden), damit man die SCSI CBW und CSW Abfolge klarer erkennt.
Hier ein typischer Ablauf auf real PC mit 16 GB USB stick mit drei endpoints (die für MSD notwendigen bulk IN und bulk OUT, zusätzlich einer für interrupt):
| Zitat: |
>>> >>> function: startHostController (reset HC)
DeactivateLegacySupport: eecp = 0070h
eecp = 0070h, eecp_id = 0001h
BIOS did not own the EHCI. No action needed.
>>> >>> function: enablePorts
>>> >>> function: resetPort 1
>>> >>> function: resetPort 2
>>> >>> function: resetPort 3
>>> >>> function: resetPort 4
>>> >>> function: resetPort 5
>>> >>> function: resetPort 6
>>> Press key to close this console. <<<
|
| Zitat: |
PrettyOS [Version 0.0.0.453] Console 1: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: resetPort 2
port 2: 00001005h, line: 00h SE0,power on, enabled, EHCI owned
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
USB specification: 2.0 USB class: 0000h
USB subclass: 0000h USB protocol 0000h
max packet size: 64
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
total length: 39 number of interfaces: 1
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
interface number: 0 number of endpoints: 3
interface class: 8
interface subclass: 6
interface protocol: 80
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
endpoint in/out: out endpoint number: 1
attributes: 02h
attributes: bulk - no sync - data endpoint
max packet size: 512
>>> Press key to go on with data analysis from config descriptor. <<<
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
endpoint in/out: in endpoint number: 2
attributes: 02h
attributes: bulk - no sync - data endpoint
max packet size: 512
>>> Press key to go on with data analysis from config descriptor. <<<
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
endpoint in/out: in endpoint number: 3
attributes: 03h max packet size: 64
>>> Press key to go on with data analysis from config descriptor. <<<
language: German
USBest Technology
USB Mass Storage Device
0000000000040F
dev: 2 interface: 0 endpOUT: 1 endpIN: 2
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>>> SCSI: inquiry
00h 80h 02h 02h 1Fh 00h 00h 00h 55h 44h 49h 53h 4Bh 20h 20h 20h 50h 44h 55h 30h
31h 2Dh 31h 36h 47h 20h 38h 38h 48h 32h 2Eh 30h 30h 2Eh 30h 30h
UDISK PDU01-16G 88H2.00.00
55h 53h 42h 53h 12h 42h 42h 42h 00h 00h 00h 00h 00h
Do Ping<-- command
- - - - - - - - - - - press key - - - - - - - - - - -
>>> SCSI: test unit ready
55h 53h 42h 53h 00h 42h 42h 42h 00h 00h 00h 00h 00h
Do Ping<-- command
- - - - - - - - - - - press key - - - - - - - - - - -
>>> SCSI: request sense
70h 00h 00h 00h 00h 00h 00h 0Ah 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
55h 53h 42h 53h 03h 42h 42h 42h 00h 00h 00h 00h 00h
Do Ping<-- command
Results of "request sense":
Valid: Sense data are not SCSI compliant
Response Code: Current errors, fixed format
Sense Key: No Sense
- - - - - - - - - - - press key - - - - - - - - - - -
>>> SCSI: read capacity
01h E1h FFh FFh 00h 00h 02h 00h
55h 53h 42h 53h 25h 42h 42h 42h 00h 00h 00h 00h 00h
Do Ping<-- command
Capacity: 15872 MB, Last LBA: 31588351, block size 512
- - - - - - - - - - - press key - - - - - - - - - - -
>>> SCSI: read sector: 0
EBh 58h 90h 4Dh 53h 44h 4Fh 53h 35h 2Eh 30h 00h 02h 10h 26h 00h 02h 00h 00h 00h
00h F8h 00h 00h 3Fh 00h FFh 00h 00h 00h 00h 00h 00h 00h E2h 01h 31h 3Ch 00h 00h
00h 00h 00h 00h 02h 00h 00h 00h 01h 00h 06h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 29h FEh F5h 5Eh 84h 4Eh 4Fh 20h 4Eh 41h 4Dh 45h 20h 20h
20h 20h 46h 41h 54h 33h 32h 20h 20h 20h 33h C9h 8Eh D1h BCh F4h 7Bh 8Eh C1h 8Eh
D9h BDh 00h 7Ch 88h 4Eh 02h 8Ah 56h 40h B4h 08h CDh 13h 73h 05h B9h FFh FFh 8Ah
F1h 66h 0Fh B6h C6h 40h 66h 0Fh B6h D1h 80h E2h 3Fh F7h E2h 86h CDh C0h EDh 06h
41h 66h 0Fh B7h C9h 66h F7h E1h 66h 89h 46h F8h 83h 7Eh 16h 00h 75h 38h 83h 7Eh
2Ah 00h 77h 32h 66h 8Bh 46h 1Ch 66h 83h C0h 0Ch BBh 00h 80h B9h 01h 00h E8h 2Bh
00h E9h 48h 03h A0h FAh 7Dh B4h 7Dh 8Bh F0h ACh 84h C0h 74h 17h 3Ch FFh 74h 09h
B4h 0Eh BBh 07h 00h CDh 10h EBh EEh A0h FBh 7Dh EBh E5h A0h F9h 7Dh EBh E0h 98h
CDh 16h CDh 19h 66h 60h 66h 3Bh 46h F8h 0Fh 82h 4Ah 00h 66h 6Ah 00h 66h 50h 06h
53h 66h 68h 10h 00h 01h 00h 80h 7Eh 02h 00h 0Fh 85h 20h 00h B4h 41h BBh AAh 55h
8Ah 56h 40h CDh 13h 0Fh 82h 1Ch 00h 81h FBh 55h AAh 0Fh 85h 14h 00h F6h C1h 01h
0Fh 84h 0Dh 00h FEh 46h 02h B4h 42h 8Ah 56h 40h 8Bh F4h CDh 13h B0h F9h 66h 58h
66h 58h 66h 58h 66h 58h EBh 2Ah 66h 33h D2h 66h 0Fh B7h 4Eh 18h 66h F7h F1h FEh
C2h 8Ah CAh 66h 8Bh D0h 66h C1h EAh 10h F7h 76h 1Ah 86h D6h 8Ah 56h 40h 8Ah E8h
C0h E4h 06h 0Ah CCh B8h 01h 02h CDh 13h 66h 61h 0Fh 82h 54h FFh 81h C3h 00h 02h
66h 40h 49h 0Fh 85h 71h FFh C3h 4Eh 54h 4Ch 44h 52h 20h 20h 20h 20h 20h 20h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 0Dh 0Ah 52h 65h 6Dh 6Fh 76h 65h 20h 64h 69h 73h
6Bh 73h 20h 6Fh 72h 20h 6Fh 74h 68h 65h 72h 20h 6Dh 65h 64h 69h 61h 2Eh FFh 0Dh
0Ah 44h 69h 73h 6Bh 20h 65h 72h 72h 6Fh 72h FFh 0Dh 0Ah 50h 72h 65h 73h 73h 20h
61h 6Eh 79h 20h 6Bh 65h 79h 20h 74h 6Fh 20h 72h 65h 73h 74h 61h 72h 74h 0Dh 0Ah
00h 00h 00h 00h 00h ACh CBh D8h 00h 00h 55h AAh
XMSDOS5.0&?1<)^NO NAME FAT32 3{|NV@sf@f?AfffF~u8~*w2fFf+H}}t<t}}f`f;FJfjfPS
fh~ AUV@UFBV@fXfXfXfX*f3fNfffvV@faTf@IqNTLDR Remove disks or other media.Di
sk errorPress any key to restartU
55h 53h 42h 53h 28h 42h 42h 42h 00h 00h 00h 00h 00h
Do Ping<-- command
- - - - - - - - - - - press key - - - - - - - - - - -
--------------------------------------------------------------------------------
Port: 2, device attached
| |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:01:37 13.05.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:35:56 13.05.2010 Titel: |
|
Zitieren |
Rev. 454:
Non-MSD werden nun nicht mehr dem MSD-Test unterzogen. Dieses lästige Procedere wird nun abgekürzt, sobald die Interface Class nicht gleich 0x08 ist.
| Zitat: | PrettyOS [Version 0.0.0.454] Console 1: EHCI Ports
--------------------------------------------------------------------------------
>>> >>> function: resetPort 1
port 1: 00001005h, line: 00h SE0,power on, enabled, EHCI owned
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
USB specification: 2.0 USB class: 00EFh
USB subclass: 0002h USB protocol 0001h
max packet size: 64
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
total length: 783 number of interfaces: 4
length: 8 type: 11 unknown
>>> Press key to go on with data analysis from config descriptor. <<<
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
interface number: 0 number of endpoints: 1
interface class: 14
interface subclass: 1
interface protocol: 0
...
...
language: German
Chicony Corp.
QEye 2.0M pixel
dev: 1 interface: 1 endpOUT: 0 endpIN: 0
This is no Mass Storage Device! MSD test cannot be carried out.
|
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | void testMSD(uint8_t devAddr, uint8_t config)
{
if (usbDevices[devAddr].InterfaceClass != 0x08)
{
textColor(0x0C);
printf("\nThis is no Mass Storage Device! MSD test cannot be carried out.");
textColor(0x0F);
waitForKeyStroke();
}
else
{
// maxLUN (0 for USB-sticks)
usbDevices[devAddr].maxLUN = 0;
// start with correct endpoint toggles
usbDevices[devAddr].ToggleEndpointInMSD = 0;
usbDevices[devAddr].ToggleEndpointOutMSD = 0;
//... | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | void testMSD(uint8_t devAddr, uint8_t config)
{
if (usbDevices[devAddr].InterfaceClass != 0x08)
{
textColor(0x0C);
printf("\nThis is no Mass Storage Device! MSD test cannot be carried out.");
textColor(0x0F);
waitForKeyStroke();
}
else
{
// maxLUN (0 for USB-sticks)
usbDevices[devAddr].maxLUN = 0;
// start with correct endpoint toggles
usbDevices[devAddr].ToggleEndpointInMSD = 0;
usbDevices[devAddr].ToggleEndpointOutMSD = 0;
//... | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | void testMSD(uint8_t devAddr, uint8_t config)
{
if (usbDevices[devAddr].InterfaceClass != 0x08)
{
textColor(0x0C);
printf("\nThis is no Mass Storage Device! MSD test cannot be carried out.");
textColor(0x0F);
waitForKeyStroke();
}
else
{
// maxLUN (0 for USB-sticks)
usbDevices[devAddr].maxLUN = 0;
// start with correct endpoint toggles
usbDevices[devAddr].ToggleEndpointInMSD = 0;
usbDevices[devAddr].ToggleEndpointOutMSD = 0;
//... | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:37:01 13.05.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:56:15 13.05.2010 Titel: |
|
Zitieren |
Rev. 455:
Sector 0 (bootsector) wird ausgelesen und analysiert.
1GB Stick mit FAT16:
| Code: | OEM name: MSDOS5.0 byte per sector: 512
sectors per cluster: 32 number of FAT copies: 2
max root dir entries: 512 total sectors (<65536): 0
media Descriptor: F8h sectors per FAT: 251
sectors per track: 1 heads/pages: 1
hidden sectors: 0 total sectors (>65535): 2050560
FAT 12/16: FAT16 | |
| Code: | OEM name: MSDOS5.0 byte per sector: 512
sectors per cluster: 32 number of FAT copies: 2
max root dir entries: 512 total sectors (<65536): 0
media Descriptor: F8h sectors per FAT: 251
sectors per track: 1 heads/pages: 1
hidden sectors: 0 total sectors (>65535): 2050560
FAT 12/16: FAT16 | |
| Code: | OEM name: MSDOS5.0 byte per sector: 512
sectors per cluster: 32 number of FAT copies: 2
max root dir entries: 512 total sectors (<65536): 0
media Descriptor: F8h sectors per FAT: 251
sectors per track: 1 heads/pages: 1
hidden sectors: 0 total sectors (>65535): 2050560
FAT 12/16: FAT16 | |
512 MB Stick mit FAT16:
| Code: | OEM name: MSDOS5.0 byte per sector: 512
sectors per cluster: 16 number of FAT copies: 2
max root dir entries: 512 total sectors (<65536): 0
media Descriptor: F8h sectors per FAT: 246
sectors per track: 63 heads/pages: 255
hidden sectors: 0 total sectors (>65535): 1007614
FAT 12/16: FAT16 | |
| Code: | OEM name: MSDOS5.0 byte per sector: 512
sectors per cluster: 16 number of FAT copies: 2
max root dir entries: 512 total sectors (<65536): 0
media Descriptor: F8h sectors per FAT: 246
sectors per track: 63 heads/pages: 255
hidden sectors: 0 total sectors (>65535): 1007614
FAT 12/16: FAT16 | |
| Code: | OEM name: MSDOS5.0 byte per sector: 512
sectors per cluster: 16 number of FAT copies: 2
max root dir entries: 512 total sectors (<65536): 0
media Descriptor: F8h sectors per FAT: 246
sectors per track: 63 heads/pages: 255
hidden sectors: 0 total sectors (>65535): 1007614
FAT 12/16: FAT16 | |
http://de.wikipedia.org/wiki/File_Allocation_Table
Der Mediadeskriptor 0xF8 bedeutet "Festplatte". |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 02:04:19 14.05.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:06:23 14.05.2010 Titel: |
|
Zitieren |
Rev. 456:
die beiden QH im bulk transfer zeigen wieder aufeinander, spart ein Ein-/Ausschalten und Durchlaufen des Async. Schedulers. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:12:45 14.05.2010 Titel: |
|
Zitieren |
Rev. 457:
_DIAGNOSIS_ funktioniert nun wieder vollständig, sollte vielleicht noch in Speicher und Tasking Management getrennt werden.
Hier auch noch ein "Foto" und die Analyse des Bootsectors meines 512 MB Sticks, der auf FAT32 umformatiert wurde:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | PrettyOS [Version 0.0.0.457]
--------------------------------------------------------------------------------
>>> SCSI: read sector: 0
EBh 58h 90h 4Dh 53h 44h 4Fh 53h 35h 2Eh 30h 00h 02h 08h 22h 00h 02h 00h 00h 00h
00h F8h 00h 00h 3Fh 00h FFh 00h 00h 00h 00h 00h FEh 5Fh 0Fh 00h D7h 03h 00h 00h
00h 00h 00h 00h 02h 00h 00h 00h 01h 00h 06h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 29h D5h F9h 76h 0Ch 4Eh 4Fh 20h 4Eh 41h 4Dh 45h 20h 20h
20h 20h 46h 41h 54h 33h 32h 20h 20h 20h 33h C9h 8Eh D1h BCh F4h 7Bh 8Eh C1h 8Eh
D9h BDh 00h 7Ch 88h 4Eh 02h 8Ah 56h 40h B4h 08h CDh 13h 73h 05h B9h FFh FFh 8Ah
F1h 66h 0Fh B6h C6h 40h 66h 0Fh B6h D1h 80h E2h 3Fh F7h E2h 86h CDh C0h EDh 06h
41h 66h 0Fh B7h C9h 66h F7h E1h 66h 89h 46h F8h 83h 7Eh 16h 00h 75h 38h 83h 7Eh
2Ah 00h 77h 32h 66h 8Bh 46h 1Ch 66h 83h C0h 0Ch BBh 00h 80h B9h 01h 00h E8h 2Bh
00h E9h 48h 03h A0h FAh 7Dh B4h 7Dh 8Bh F0h ACh 84h C0h 74h 17h 3Ch FFh 74h 09h
B4h 0Eh BBh 07h 00h CDh 10h EBh EEh A0h FBh 7Dh EBh E5h A0h F9h 7Dh EBh E0h 98h
CDh 16h CDh 19h 66h 60h 66h 3Bh 46h F8h 0Fh 82h 4Ah 00h 66h 6Ah 00h 66h 50h 06h
53h 66h 68h 10h 00h 01h 00h 80h 7Eh 02h 00h 0Fh 85h 20h 00h B4h 41h BBh AAh 55h
8Ah 56h 40h CDh 13h 0Fh 82h 1Ch 00h 81h FBh 55h AAh 0Fh 85h 14h 00h F6h C1h 01h
0Fh 84h 0Dh 00h FEh 46h 02h B4h 42h 8Ah 56h 40h 8Bh F4h CDh 13h B0h F9h 66h 58h
66h 58h 66h 58h 66h 58h EBh 2Ah 66h 33h D2h 66h 0Fh B7h 4Eh 18h 66h F7h F1h FEh
C2h 8Ah CAh 66h 8Bh D0h 66h C1h EAh 10h F7h 76h 1Ah 86h D6h 8Ah 56h 40h 8Ah E8h
C0h E4h 06h 0Ah CCh B8h 01h 02h CDh 13h 66h 61h 0Fh 82h 54h FFh 81h C3h 00h 02h
66h 40h 49h 0Fh 85h 71h FFh C3h 4Eh 54h 4Ch 44h 52h 20h 20h 20h 20h 20h 20h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 0Dh 0Ah 44h 61h 74h 65h 6Eh 74h 72h 84h 67h 65h
72h 20h 65h 6Eh 74h 66h 65h 72h 6Eh 65h 6Eh FFh 0Dh 0Ah 4Dh 65h 64h 69h 65h 6Eh
66h 65h 68h 6Ch 65h 72h FFh 0Dh 0Ah 4Eh 65h 75h 73h 74h 61h 72h 74h 3Ah 20h 54h
61h 73h 74h 65h 20h 64h 72h 81h 63h 6Bh 65h 6Eh 0Dh 0Ah 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h ACh C4h D3h 00h 00h 55h AAh
XMSDOS5.0"?_)vNO NAME FAT32 3{|NV@sf@f?AfffF~u8~*w2fFf+H}}t<t}}f`f;FJfjfPSf
h~ AUV@UFBV@fXfXfXfX*f3fNfffvV@faTf@IqNTLDR Datentrger entfernenMedienfehle
rNeustart: Taste drckenU
55h 53h 42h 53h 28h 42h 42h 42h 00h 00h 00h 00h 00h
- - - - - - - - - - - press key - - - - - - - - - - -
OEM name: MSDOS5.0 byte per sector: 512
sectors per cluster: 8 number of FAT copies: 2
max root dir entries: 0 total sectors (<65536): 0
media Descriptor: F8h sectors per FAT: 0
sectors per track: 63 heads/pages: 255
hidden sectors: 0 total sectors (>65535): 1007614
FAT 12/16:
- - - - - - - - - - - press key - - - - - - - - - - -
--------------------------------------------------------------------------------
Port: 3, device attached | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | PrettyOS [Version 0.0.0.457]
--------------------------------------------------------------------------------
>>> SCSI: read sector: 0
EBh 58h 90h 4Dh 53h 44h 4Fh 53h 35h 2Eh 30h 00h 02h 08h 22h 00h 02h 00h 00h 00h
00h F8h 00h 00h 3Fh 00h FFh 00h 00h 00h 00h 00h FEh 5Fh 0Fh 00h D7h 03h 00h 00h
00h 00h 00h 00h 02h 00h 00h 00h 01h 00h 06h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 29h D5h F9h 76h 0Ch 4Eh 4Fh 20h 4Eh 41h 4Dh 45h 20h 20h
20h 20h 46h 41h 54h 33h 32h 20h 20h 20h 33h C9h 8Eh D1h BCh F4h 7Bh 8Eh C1h 8Eh
D9h BDh 00h 7Ch 88h 4Eh 02h 8Ah 56h 40h B4h 08h CDh 13h 73h 05h B9h FFh FFh 8Ah
F1h 66h 0Fh B6h C6h 40h 66h 0Fh B6h D1h 80h E2h 3Fh F7h E2h 86h CDh C0h EDh 06h
41h 66h 0Fh B7h C9h 66h F7h E1h 66h 89h 46h F8h 83h 7Eh 16h 00h 75h 38h 83h 7Eh
2Ah 00h 77h 32h 66h 8Bh 46h 1Ch 66h 83h C0h 0Ch BBh 00h 80h B9h 01h 00h E8h 2Bh
00h E9h 48h 03h A0h FAh 7Dh B4h 7Dh 8Bh F0h ACh 84h C0h 74h 17h 3Ch FFh 74h 09h
B4h 0Eh BBh 07h 00h CDh 10h EBh EEh A0h FBh 7Dh EBh E5h A0h F9h 7Dh EBh E0h 98h
CDh 16h CDh 19h 66h 60h 66h 3Bh 46h F8h 0Fh 82h 4Ah 00h 66h 6Ah 00h 66h 50h 06h
53h 66h 68h 10h 00h 01h 00h 80h 7Eh 02h 00h 0Fh 85h 20h 00h B4h 41h BBh AAh 55h
8Ah 56h 40h CDh 13h 0Fh 82h 1Ch 00h 81h FBh 55h AAh 0Fh 85h 14h 00h F6h C1h 01h
0Fh 84h 0Dh 00h FEh 46h 02h B4h 42h 8Ah 56h 40h 8Bh F4h CDh 13h B0h F9h 66h 58h
66h 58h 66h 58h 66h 58h EBh 2Ah 66h 33h D2h 66h 0Fh B7h 4Eh 18h 66h F7h F1h FEh
C2h 8Ah CAh 66h 8Bh D0h 66h C1h EAh 10h F7h 76h 1Ah 86h D6h 8Ah 56h 40h 8Ah E8h
C0h E4h 06h 0Ah CCh B8h 01h 02h CDh 13h 66h 61h 0Fh 82h 54h FFh 81h C3h 00h 02h
66h 40h 49h 0Fh 85h 71h FFh C3h 4Eh 54h 4Ch 44h 52h 20h 20h 20h 20h 20h 20h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 0Dh 0Ah 44h 61h 74h 65h 6Eh 74h 72h 84h 67h 65h
72h 20h 65h 6Eh 74h 66h 65h 72h 6Eh 65h 6Eh FFh 0Dh 0Ah 4Dh 65h 64h 69h 65h 6Eh
66h 65h 68h 6Ch 65h 72h FFh 0Dh 0Ah 4Eh 65h 75h 73h 74h 61h 72h 74h 3Ah 20h 54h
61h 73h 74h 65h 20h 64h 72h 81h 63h 6Bh 65h 6Eh 0Dh 0Ah 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h ACh C4h D3h 00h 00h 55h AAh
XMSDOS5.0"?_)vNO NAME FAT32 3{|NV@sf@f?AfffF~u8~*w2fFf+H}}t<t}}f`f;FJfjfPSf
h~ AUV@UFBV@fXfXfXfX*f3fNfffvV@faTf@IqNTLDR Datentrger entfernenMedienfehle
rNeustart: Taste drckenU
55h 53h 42h 53h 28h 42h 42h 42h 00h 00h 00h 00h 00h
- - - - - - - - - - - press key - - - - - - - - - - -
OEM name: MSDOS5.0 byte per sector: 512
sectors per cluster: 8 number of FAT copies: 2
max root dir entries: 0 total sectors (<65536): 0
media Descriptor: F8h sectors per FAT: 0
sectors per track: 63 heads/pages: 255
hidden sectors: 0 total sectors (>65535): 1007614
FAT 12/16:
- - - - - - - - - - - press key - - - - - - - - - - -
--------------------------------------------------------------------------------
Port: 3, device attached | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | PrettyOS [Version 0.0.0.457]
--------------------------------------------------------------------------------
>>> SCSI: read sector: 0
EBh 58h 90h 4Dh 53h 44h 4Fh 53h 35h 2Eh 30h 00h 02h 08h 22h 00h 02h 00h 00h 00h
00h F8h 00h 00h 3Fh 00h FFh 00h 00h 00h 00h 00h FEh 5Fh 0Fh 00h D7h 03h 00h 00h
00h 00h 00h 00h 02h 00h 00h 00h 01h 00h 06h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 29h D5h F9h 76h 0Ch 4Eh 4Fh 20h 4Eh 41h 4Dh 45h 20h 20h
20h 20h 46h 41h 54h 33h 32h 20h 20h 20h 33h C9h 8Eh D1h BCh F4h 7Bh 8Eh C1h 8Eh
D9h BDh 00h 7Ch 88h 4Eh 02h 8Ah 56h 40h B4h 08h CDh 13h 73h 05h B9h FFh FFh 8Ah
F1h 66h 0Fh B6h C6h 40h 66h 0Fh B6h D1h 80h E2h 3Fh F7h E2h 86h CDh C0h EDh 06h
41h 66h 0Fh B7h C9h 66h F7h E1h 66h 89h 46h F8h 83h 7Eh 16h 00h 75h 38h 83h 7Eh
2Ah 00h 77h 32h 66h 8Bh 46h 1Ch 66h 83h C0h 0Ch BBh 00h 80h B9h 01h 00h E8h 2Bh
00h E9h 48h 03h A0h FAh 7Dh B4h 7Dh 8Bh F0h ACh 84h C0h 74h 17h 3Ch FFh 74h 09h
B4h 0Eh BBh 07h 00h CDh 10h EBh EEh A0h FBh 7Dh EBh E5h A0h F9h 7Dh EBh E0h 98h
CDh 16h CDh 19h 66h 60h 66h 3Bh 46h F8h 0Fh 82h 4Ah 00h 66h 6Ah 00h 66h 50h 06h
53h 66h 68h 10h 00h 01h 00h 80h 7Eh 02h 00h 0Fh 85h 20h 00h B4h 41h BBh AAh 55h
8Ah 56h 40h CDh 13h 0Fh 82h 1Ch 00h 81h FBh 55h AAh 0Fh 85h 14h 00h F6h C1h 01h
0Fh 84h 0Dh 00h FEh 46h 02h B4h 42h 8Ah 56h 40h 8Bh F4h CDh 13h B0h F9h 66h 58h
66h 58h 66h 58h 66h 58h EBh 2Ah 66h 33h D2h 66h 0Fh B7h 4Eh 18h 66h F7h F1h FEh
C2h 8Ah CAh 66h 8Bh D0h 66h C1h EAh 10h F7h 76h 1Ah 86h D6h 8Ah 56h 40h 8Ah E8h
C0h E4h 06h 0Ah CCh B8h 01h 02h CDh 13h 66h 61h 0Fh 82h 54h FFh 81h C3h 00h 02h
66h 40h 49h 0Fh 85h 71h FFh C3h 4Eh 54h 4Ch 44h 52h 20h 20h 20h 20h 20h 20h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h 00h 00h 00h 0Dh 0Ah 44h 61h 74h 65h 6Eh 74h 72h 84h 67h 65h
72h 20h 65h 6Eh 74h 66h 65h 72h 6Eh 65h 6Eh FFh 0Dh 0Ah 4Dh 65h 64h 69h 65h 6Eh
66h 65h 68h 6Ch 65h 72h FFh 0Dh 0Ah 4Eh 65h 75h 73h 74h 61h 72h 74h 3Ah 20h 54h
61h 73h 74h 65h 20h 64h 72h 81h 63h 6Bh 65h 6Eh 0Dh 0Ah 00h 00h 00h 00h 00h 00h
00h 00h 00h 00h 00h ACh C4h D3h 00h 00h 55h AAh
XMSDOS5.0"?_)vNO NAME FAT32 3{|NV@sf@f?AfffF~u8~*w2fFf+H}}t<t}}f`f;FJfjfPSf
h~ AUV@UFBV@fXfXfXfX*f3fNfffvV@faTf@IqNTLDR Datentrger entfernenMedienfehle
rNeustart: Taste drckenU
55h 53h 42h 53h 28h 42h 42h 42h 00h 00h 00h 00h 00h
- - - - - - - - - - - press key - - - - - - - - - - -
OEM name: MSDOS5.0 byte per sector: 512
sectors per cluster: 8 number of FAT copies: 2
max root dir entries: 0 total sectors (<65536): 0
media Descriptor: F8h sectors per FAT: 0
sectors per track: 63 heads/pages: 255
hidden sectors: 0 total sectors (>65535): 1007614
FAT 12/16:
- - - - - - - - - - - press key - - - - - - - - - - -
--------------------------------------------------------------------------------
Port: 3, device attached | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:59:29 14.05.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:48:24 15.05.2010 Titel: |
|
Zitieren |
Rev. 458:
usb und usb-MSD:
Ausgaben gestrafft, Auswertedetails hinzugefügt und besser geordnet |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:22:38 17.05.2010 Titel: |
|
Zitieren |
Rev. 459:
Das Command Status Word (CSW) wird nun komplett (vorher nur letztes Byte) auf Korrektheit analysiert, um entsprechend reagieren zu können.
| Zitat: |
F0h 00h 00h 00h 00h 00h 00h 0Ah 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
55h 53h 42h 53h 03h 42h 42h 42h 00h 00h 00h 00h 00h
CSW signature OK
CSW tag 03h OK
CSW data residue OK
CSW status OK
Results of "request sense":
Valid: Sense data are SCSI compliant
Response Code: Current errors, fixed format
Sense Key: No Sense
>>> SCSI: read capacity
00h 00h 00h 00h 00h 00h 00h 00h
01h 01h 01h 01h AAh AAh AAh AAh AAh AAh AAh AAh AAh
CSW signature wrong (not processed)
Error: CSW tag wrong
CSW data residue: -1431655766
CSW status byte: undefined value (error) |
01h 01h 01h 01h AAh AAh AAh AAh AAh AAh AAh AAh AAh ist der Wert, den ich im CSW beim Erstellen vorgebe. Bei einem erfolgreichen Transfer wird die CSW Signature "USBS" (55h 53h 42h 53h) in den data-Bereich geschrieben, das CBW tag als CSW tag wiederholt (damit können wir den SCSI opcode checken), die Differenz zwischen zu übertragender und wirklich übertragener Länge dargestellt sowie das Status Byte 0x00 gesetzt.
TODO: wenn ein Transfer nicht ausgeführt wurde, stehen am Device nach dem ResetRecovery noch Informationen (Daten, CSW) zur Verfügung, die dann bei Leseoperationen nachkommen. Die nicht erhaltenen Daten, CSW sollten dann noch abgeholt und interpretiert werden, damit Host und Device im Takt bleiben.
Zum Glück habe ich einen 4 GB usb-Stick, der auf real PC nach dem "test unit ready" netter Weise richtig auf stur schaltet. An diesem bockigen MSD Device kann man das noch zu errichtende Procedere gut testen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:47:37 17.05.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:28:05 17.05.2010 Titel: |
|
Zitieren |
Rev. 460:
Zwischenschritt: Transfer-Struktur eingefügt, um den Ablauf des bulk-Transfers analysieren zu können
ehciQHqTD.h:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 | struct usbBulkTransfer
{
uint8_t SCSIopcode;
bool successfulCommand;
bool successfulDataOUT;
bool successfulDataIN;
bool successfulCSW;
uint32_t DataBytesToTransferOUT;
uint32_t DataBytesToTransferIN;
}__attribute__((packed));
typedef struct usbBulkTransfer usbBulkTransfer_t;
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | struct usbBulkTransfer
{
uint8_t SCSIopcode;
bool successfulCommand;
bool successfulDataOUT;
bool successfulDataIN;
bool successfulCSW;
uint32_t DataBytesToTransferOUT;
uint32_t DataBytesToTransferIN;
}__attribute__((packed));
typedef struct usbBulkTransfer usbBulkTransfer_t;
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | struct usbBulkTransfer
{
uint8_t SCSIopcode;
bool successfulCommand;
bool successfulDataOUT;
bool successfulDataIN;
bool successfulCSW;
uint32_t DataBytesToTransferOUT;
uint32_t DataBytesToTransferIN;
}__attribute__((packed));
typedef struct usbBulkTransfer usbBulkTransfer_t;
| |
ehciQHqTD.c:
| C/C++ Code: | | void logBulkTransfer(usbBulkTransfer_t* bT) | |
| C/C++ Code: | | void logBulkTransfer(usbBulkTransfer_t* bT) | |
| C/C++ Code: | | void logBulkTransfer(usbBulkTransfer_t* bT) | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:31:23 17.05.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:31:30 18.05.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:33:27 19.05.2010 Titel: |
|
Zitieren |
Rev. 462:
- Auswertung von SCSI command "Inquiry"
- Verbesserte Master Boot Record Erkennung und Auswertung
Fehlerbehandlung bei USB-bulk-Transfer noch nicht ausreichend |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:34:10 19.05.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:59:34 19.05.2010 Titel: |
|
Zitieren |
Rev. 463:
zur Verbesserung der Lesbarkeit beim Auswerten von Bit-Feldern:
(Dank an: kwolf == taljeth für die Mithilfe bei der Formulierung)
util.h/c:
| C/C++ Code: | // fetch data field bitwise in byte "byte" from bit "shift" with "len" bits
uint8_t getField(void* addr, uint8_t byte, uint8_t shift, uint8_t len)
{
return ( (((uint8_t*)addr)[byte] >> shift) & ((1 << len) -1));
}
| |
| C/C++ Code: | // fetch data field bitwise in byte "byte" from bit "shift" with "len" bits
uint8_t getField(void* addr, uint8_t byte, uint8_t shift, uint8_t len)
{
return ( (((uint8_t*)addr)[byte] >> shift) & ((1 << len) -1));
}
| |
| C/C++ Code: | // fetch data field bitwise in byte "byte" from bit "shift" with "len" bits
uint8_t getField(void* addr, uint8_t byte, uint8_t shift, uint8_t len)
{
return ( (((uint8_t*)addr)[byte] >> shift) & ((1 << len) -1));
}
| |
Beispiel:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | 1 2 3 4 5 6 7 8 9 10 11 12 | void* addr = (void*)DataQTDpage0;
//...
uint8_t RMB = getField(addr, 1, 7, 1); // byte, shift, len
//...
uint8_t SftRe = getField(addr, 7, 0, 1);
uint8_t CmdQue = getField(addr, 7, 1, 1);
uint8_t Reserved4 = getField(addr, 7, 2, 1);
uint8_t Linked = getField(addr, 7, 3, 1);
uint8_t Sync = getField(addr, 7, 4, 1);
uint8_t WBus16 = getField(addr, 7, 5, 1);
uint8_t WBus32 = getField(addr, 7, 6, 1);
uint8_t RelAddr = getField(addr, 7, 7, 1); | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | void* addr = (void*)DataQTDpage0;
//...
uint8_t RMB = getField(addr, 1, 7, 1); // byte, shift, len
//...
uint8_t SftRe = getField(addr, 7, 0, 1);
uint8_t CmdQue = getField(addr, 7, 1, 1);
uint8_t Reserved4 = getField(addr, 7, 2, 1);
uint8_t Linked = getField(addr, 7, 3, 1);
uint8_t Sync = getField(addr, 7, 4, 1);
uint8_t WBus16 = getField(addr, 7, 5, 1);
uint8_t WBus32 = getField(addr, 7, 6, 1);
uint8_t RelAddr = getField(addr, 7, 7, 1); | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | void* addr = (void*)DataQTDpage0;
//...
uint8_t RMB = getField(addr, 1, 7, 1); // byte, shift, len
//...
uint8_t SftRe = getField(addr, 7, 0, 1);
uint8_t CmdQue = getField(addr, 7, 1, 1);
uint8_t Reserved4 = getField(addr, 7, 2, 1);
uint8_t Linked = getField(addr, 7, 3, 1);
uint8_t Sync = getField(addr, 7, 4, 1);
uint8_t WBus16 = getField(addr, 7, 5, 1);
uint8_t WBus32 = getField(addr, 7, 6, 1);
uint8_t RelAddr = getField(addr, 7, 7, 1); | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:42:25 20.05.2010 Titel: |
|
Zitieren |
Rev. 464:
Überarbeitung der Auswertung des SCSI command "inquiry" entsprechend dem Buch von Jan Axelson, "USB Mass Storage":
Beispiele:
16 GB usb-stick:
| Zitat: |
Vendor ID: JetFlash
Product ID: Transcend 16GB
Revision: 8.07
Version: 2 (4: SPC-2, 5: SPC-3)
Response Data Format OK
Removable device type: yes
Supports hierarch. addr. support: no
Supports normal ACA bit support: no
Supports linked commands: no
Supports tagged command queuing: no
direct-access device (e.g., magnetic disk)
opcode: 12h cmd: OK data in: OK CSW: OK
|
4 GB usb-stick:
| Zitat: |
Do Ping<-- command
Vendor ID: Verbatim
Product ID: STORE N GO
Revision: PMAP
Version: 0 (4: SPC-2, 5: SPC-3)
Response Data Format is not OK: 1 (should be 2)
Removable device type: yes
Supports hierarch. addr. support: no
Supports normal ACA bit support: no
Supports linked commands: no
Supports tagged command queuing: no
direct-access device (e.g., magnetic disk)
opcode: 12h cmd: OK data in: OK CSW: OK
|
1 GB usb-stick:
| Zitat: |
Do Ping<-- command
Vendor ID: memory
Product ID: USB2.0
Revision: 1.00
Version: 2 (4: SPC-2, 5: SPC-3)
Response Data Format OK
Removable device type: yes
Supports hierarch. addr. support: no
Supports normal ACA bit support: no
Supports linked commands: no
Supports tagged command queuing: no
direct-access device (e.g., magnetic disk)
opcode: 12h cmd: OK data in: OK CSW: OK
|
512 MB usb-stick:
| Zitat: |
Vendor ID: A60C0704
Product ID: Flash Disk
Revision: 8.07
Version: 2 (4: SPC-2, 5: SPC-3)
Response Data Format OK
Removable device type: yes
Supports hierarch. addr. support: no
Supports normal ACA bit support: no
Supports linked commands: no
Supports tagged command queuing: no
direct-access device (e.g., magnetic disk)
opcode: 12h cmd: OK data in: OK CSW: OK
|
Response Data Format OK bedeutet, das der Wert gleich 2 ist. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 15:33:20 20.05.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:44:53 23.05.2010 Titel: |
|
Zitieren |
Rev. 465: Zwischenschritt
FAT Filesystem hinzugefügt, so dass man nun mittels filename von usb msd laden kann:
fat.c, zeile 1191: hier bitte den Namen eingeben:
| C/C++ Code: | | strncpy(foCompareTo->name,"CLEAN BAT",11); // <--------------- this file will be searched | |
| C/C++ Code: | | strncpy(foCompareTo->name,"CLEAN BAT",11); // <--------------- this file will be searched | |
| C/C++ Code: | | strncpy(foCompareTo->name,"CLEAN BAT",11); // <--------------- this file will be searched | |
Also unser clean.bat auf stick oder usb HDD laden und danach suchen lassen.
Beispiel:
evtl. Schritt 0: MBR wird ausgelesen und Beginn der Partition (Sektor 8192) nachgeladen.
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | This seems to be a Master Boot Record:
Disc Signature: 00000000h Null (check): 0000h
no partition table 0
partition table 1: not bootable
type: 0Bh
first sector (CHS): 130 3 0
last sector (CHS): 6 229 161
start sector: 8192
number of sectors: 31367168
no partition table 2
no partition table 3 | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | This seems to be a Master Boot Record:
Disc Signature: 00000000h Null (check): 0000h
no partition table 0
partition table 1: not bootable
type: 0Bh
first sector (CHS): 130 3 0
last sector (CHS): 6 229 161
start sector: 8192
number of sectors: 31367168
no partition table 2
no partition table 3 | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | This seems to be a Master Boot Record:
Disc Signature: 00000000h Null (check): 0000h
no partition table 0
partition table 1: not bootable
type: 0Bh
first sector (CHS): 130 3 0
last sector (CHS): 6 229 161
start sector: 8192
number of sectors: 31367168
no partition table 2
no partition table 3 | |
Schritt 1: Die Partition wird als FAT 32 erkannt, wir speichern die Daten in unsere Struktur DISK usbstick:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | OEM name: MSDOS5.0 byte per sector: 512
sectors per cluster: 16 reserved sectors: 64
number of FAT copies: 2 max root dir entries: 0
total sectors (<65536): 0 media Descriptor: F8h
sectors per FAT: 0 sectors per track: 63
heads/pages: 255 hidden sectors: 8192
total sectors (>65535): 31367168 FAT 12/16:
This is a volume formated with FAT32.
The root dir starts at cluster(!) 2.
Sectors per FAT: 15344.
- - - - - - - - - - - press key - - - - - - - - - - -
buffer: C0290000h
type: 3
SecPerClus: 16
maxroot: 512
fatsize: 15344
fatcopy: 2
firsts: 8192
fat: 8256
root: 38944
data: 38960
maxcls: 1959931
mount: 1
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | OEM name: MSDOS5.0 byte per sector: 512
sectors per cluster: 16 reserved sectors: 64
number of FAT copies: 2 max root dir entries: 0
total sectors (<65536): 0 media Descriptor: F8h
sectors per FAT: 0 sectors per track: 63
heads/pages: 255 hidden sectors: 8192
total sectors (>65535): 31367168 FAT 12/16:
This is a volume formated with FAT32.
The root dir starts at cluster(!) 2.
Sectors per FAT: 15344.
- - - - - - - - - - - press key - - - - - - - - - - -
buffer: C0290000h
type: 3
SecPerClus: 16
maxroot: 512
fatsize: 15344
fatcopy: 2
firsts: 8192
fat: 8256
root: 38944
data: 38960
maxcls: 1959931
mount: 1
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | OEM name: MSDOS5.0 byte per sector: 512
sectors per cluster: 16 reserved sectors: 64
number of FAT copies: 2 max root dir entries: 0
total sectors (<65536): 0 media Descriptor: F8h
sectors per FAT: 0 sectors per track: 63
heads/pages: 255 hidden sectors: 8192
total sectors (>65535): 31367168 FAT 12/16:
This is a volume formated with FAT32.
The root dir starts at cluster(!) 2.
Sectors per FAT: 15344.
- - - - - - - - - - - press key - - - - - - - - - - -
buffer: C0290000h
type: 3
SecPerClus: 16
maxroot: 512
fatsize: 15344
fatcopy: 2
firsts: 8192
fat: 8256
root: 38944
data: 38960
maxcls: 1959931
mount: 1
| |
Schritt 2: die Root Dir (sector 38944 = 8192 (hidden sectors) + 64 (Reserved Sectors) + 15344 (FAT1) + 15344 (FAT2)) mit den File Entries wird gefunden:
| Code: | >>> SCSI: read sector: 38944
55h 53h 42h ...... 0Ch 00h 00h
USB-STICK Py<Test1.binEST1 BIN q.<.<x`.<s.ppt6tEffe6ctivenesfor_A6GQM_AssePre
se6ntation_RESEN~1PPT \Py<<Py<GCC PDF /<<<5&,KERNEL C Kp<<o<HCI C X{<
<ar<SB2 C X{<<$v<+SB2 C Gq<<y< CS H Tq<<cH<HCI H Tq<<l<#SB
2 H Tq<<}< | |
| Code: | >>> SCSI: read sector: 38944
55h 53h 42h ...... 0Ch 00h 00h
USB-STICK Py<Test1.binEST1 BIN q.<.<x`.<s.ppt6tEffe6ctivenesfor_A6GQM_AssePre
se6ntation_RESEN~1PPT \Py<<Py<GCC PDF /<<<5&,KERNEL C Kp<<o<HCI C X{<
<ar<SB2 C X{<<$v<+SB2 C Gq<<y< CS H Tq<<cH<HCI H Tq<<l<#SB
2 H Tq<<}< | |
| Code: | >>> SCSI: read sector: 38944
55h 53h 42h ...... 0Ch 00h 00h
USB-STICK Py<Test1.binEST1 BIN q.<.<x`.<s.ppt6tEffe6ctivenesfor_A6GQM_AssePre
se6ntation_RESEN~1PPT \Py<<Py<GCC PDF /<<<5&,KERNEL C Kp<<o<HCI C X{<
<ar<SB2 C X{<<$v<+SB2 C Gq<<y< CS H Tq<<cH<HCI H Tq<<l<#SB
2 H Tq<<}< | |
Schritt 3:
Der Name "clean bat" wird als Entry Nr. 85 gefunden:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | *curEntry: 85
...
An entry is found. Attributes OK for search
index: 0 character: C test: C
index: 1 character: L test: L
index: 2 character: E test: E
index: 3 character: A test: A
index: 4 character: N test: N
index: 5 character: test:
index: 6 character: test:
index: 7 character: test:
index: 8 character: B test: B
index: 9 character: A test: A
index:10 character: T test: T | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | *curEntry: 85
...
An entry is found. Attributes OK for search
index: 0 character: C test: C
index: 1 character: L test: L
index: 2 character: E test: E
index: 3 character: A test: A
index: 4 character: N test: N
index: 5 character: test:
index: 6 character: test:
index: 7 character: test:
index: 8 character: B test: B
index: 9 character: A test: A
index:10 character: T test: T | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | *curEntry: 85
...
An entry is found. Attributes OK for search
index: 0 character: C test: C
index: 1 character: L test: L
index: 2 character: E test: E
index: 3 character: A test: A
index: 4 character: N test: N
index: 5 character: test:
index: 6 character: test:
index: 7 character: test:
index: 8 character: B test: B
index: 9 character: A test: A
index:10 character: T test: T | |
Schritt 4:
Dann erfolgt der entsprechende Ladevorgang mit Hilfe von First Cluster und Filesize (in Entry) und der FAT32 chain, hier der Fund und Ladevorgang mit "size" Byte aus dem Sektor 38960:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 | >>>>> fread <<<<<!
>>>>> cluster2sector<<<<< cluster: 3 sector 38960
>>>>> sectorRead <<<<<!
>>> SCSI: read sector: 38960
......
tools\mingw32-make clean OS=WINDOWS
74h 6Fh 6Fh 6Ch 73h 5Ch 6Dh 69h 6Eh 67h 77h 33h 32h 2Dh 6Dh 61h 6Bh 65h 20h 63h
6Ch 65h 61h 6Eh 20h 4Fh 53h 3Dh 57h 49h 4Eh 44h 4Fh 57h 53h
>>>>> fclose <<<<<! | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 | >>>>> fread <<<<<!
>>>>> cluster2sector<<<<< cluster: 3 sector 38960
>>>>> sectorRead <<<<<!
>>> SCSI: read sector: 38960
......
tools\mingw32-make clean OS=WINDOWS
74h 6Fh 6Fh 6Ch 73h 5Ch 6Dh 69h 6Eh 67h 77h 33h 32h 2Dh 6Dh 61h 6Bh 65h 20h 63h
6Ch 65h 61h 6Eh 20h 4Fh 53h 3Dh 57h 49h 4Eh 44h 4Fh 57h 53h
>>>>> fclose <<<<<! | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 | >>>>> fread <<<<<!
>>>>> cluster2sector<<<<< cluster: 3 sector 38960
>>>>> sectorRead <<<<<!
>>> SCSI: read sector: 38960
......
tools\mingw32-make clean OS=WINDOWS
74h 6Fh 6Fh 6Ch 73h 5Ch 6Dh 69h 6Eh 67h 77h 33h 32h 2Dh 6Dh 61h 6Bh 65h 20h 63h
6Ch 65h 61h 6Eh 20h 4Fh 53h 3Dh 57h 49h 4Eh 44h 4Fh 57h 53h
>>>>> fclose <<<<<! | |
Entsprechend läuft dies auch mit Sticks ohne MBR und/oder mit FAT16 Volume. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:02:39 23.05.2010, insgesamt 5-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:53:04 24.05.2010 Titel: |
|
Zitieren |
Rev. 466:
Serials von usb msd und von der FAT16 oder FAT32 Partition werden angezeigt und gespeichert. Damit können wir eine Partition sicher erkennen.
| Code: | usb-stick usb device ser. # FAT ser. # FAT..
------------------------------------------------------
512 MB 8B6A0861 F6 1C E9 20 16
1 GB 110 ED 50 07 58 16
4 GB 0D09297675C0 62 F9 2A 94 32
16 GB N014IM75 79 A2 6C 5C 32
| |
| Code: | usb-stick usb device ser. # FAT ser. # FAT..
------------------------------------------------------
512 MB 8B6A0861 F6 1C E9 20 16
1 GB 110 ED 50 07 58 16
4 GB 0D09297675C0 62 F9 2A 94 32
16 GB N014IM75 79 A2 6C 5C 32
| |
| Code: | usb-stick usb device ser. # FAT ser. # FAT..
------------------------------------------------------
512 MB 8B6A0861 F6 1C E9 20 16
1 GB 110 ED 50 07 58 16
4 GB 0D09297675C0 62 F9 2A 94 32
16 GB N014IM75 79 A2 6C 5C 32
| |
Hierbei verwende ich bei den usb device ser. # nur die letzten 12 Stellen, weil nur diese unterschiedlich sein müssen.
Die serial vom 1GB stick erscheint verflixt kurz.
Die serial vom 4GB stick ist sogar 16 Stellen lang, die vorderen 4 habe ich beim Speichern verworfen. Wir können aber auch erhöhen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:27:33 24.05.2010 Titel: |
|
Zitieren |
Revision 467:
- Weiterbau an CDI
- ... |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:24:42 25.05.2010 Titel: |
|
Zitieren |
Herzlichen Dank an MrX für das Engagement bezüglich CDI!
Rev. 468:
Zwischenschritt: Hidden Sectors durch Startsector der Partition ausgetauscht (dürfte momentan bei einer Partition - also bei sticks - zuverlässig funktionieren)
Für Tests:
1) Datei auf stick kopieren oder entsprechend auswählen/benennen
2) Filename[8] incl. Extension[3] ohne Punkt(!), aber mit Spaces (Summe 11 character) hier eingeben:
usb2_msd.c, zeile 660 ff.
| C/C++ Code: | // testFAT("clean bat"); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!!
testFAT("makefile.xxx"); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!!
// testFAT("makefile "); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!!
// test more! | |
| C/C++ Code: | // testFAT("clean bat"); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!!
testFAT("makefile.xxx"); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!!
// testFAT("makefile "); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!!
// test more! | |
| C/C++ Code: | // testFAT("clean bat"); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!!
testFAT("makefile.xxx"); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!!
// testFAT("makefile "); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!!
// test more! | |
EDIT: testFAT("makefile.xxx"); ist leider verkehrt gewesen, sorry, richtig: "makefilexxx" |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:04:23 25.05.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:03:20 25.05.2010 Titel: |
|
Zitieren |
Rev. 469:
Korrekturen und Umbenennungen (z.B. von DISK nach PARTITION)
usb2_msd.c, zeile 660:
| C/C++ Code: | | testFAT("clean bat"); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!! | |
| C/C++ Code: | | testFAT("clean bat"); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!! | |
| C/C++ Code: | | testFAT("clean bat"); // TEST FAT filesystem filename: "prettyOSbat" without dot and with spaces in name!!! | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:32:01 25.05.2010 Titel: |
|
Zitieren |
Revision 470:
- cdi_list: Bugfixes
- list_GetElement gibt nun element_t* statt void* zurück.
- video.c: Titelzeilen-Bug gefixt
- fat.c: Code optimiert und (verlustfrei) gekürzt.
- Sound wieder aktiviert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:35:49 26.05.2010 Titel: |
|
Zitieren |
Rev. 471:
FAT32 Filestruktur wurde angepasst mit Cluster > 2^16
Test bei MrX: mit vollem Stick bezüglich FAT32 OK. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:42:55 27.05.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:30:39 27.05.2010 Titel: |
|
Zitieren |
Rev. 472:
Zwischenschritt: Umbauten in ehci und usb_msd, damit auch bereits eingesteckte/angeschlossene usb msd getestet werden. Als Suchfile wird makefile.xxx verwendet (ohne xxx taucht ein seltsames 'B' auf, das nicht aus dem Entry auf dem msd, sondern offensichtlich aus dem code stammt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:13:50 28.05.2010 Titel: |
|
Zitieren |
Rev. 473:
- user heap verlegt
- uint16 gegen uint32 ausgetauscht in fat.h/c (wegen Zahlen > 2^16)
- volume formatiert mit NTFS wird gemeldet
Suchfile: makefile.xxx (im FAT-Filetest) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:16:23 28.05.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
22:25:30 28.05.2010 Titel: |
|
Zitieren |
Revision 474:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 | - Userlib:
- Neue Funktionen: vprintf, snprintf, vsnprintf, strncat
- Änderungen: strncpy aus util.c übernommen
- Bug in gets gefixt (Neue Zeile wurde eingefügt, wenn \b an Pos 0|0 (Relativ vom Start) gedrückt wurde)
- Kleinigkeiten (Typen, etc.)
- Kernel:
- cprintf basiert nun auf vprintf
- Bug mit %v in printfs behoben (nun in allen kernel-printfs unterstützt)
- ehci, usb, etc.: Umformatierungen, etc.
- Kommentare gefixt
- Sound reaktiviert | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 | - Userlib:
- Neue Funktionen: vprintf, snprintf, vsnprintf, strncat
- Änderungen: strncpy aus util.c übernommen
- Bug in gets gefixt (Neue Zeile wurde eingefügt, wenn \b an Pos 0|0 (Relativ vom Start) gedrückt wurde)
- Kleinigkeiten (Typen, etc.)
- Kernel:
- cprintf basiert nun auf vprintf
- Bug mit %v in printfs behoben (nun in allen kernel-printfs unterstützt)
- ehci, usb, etc.: Umformatierungen, etc.
- Kommentare gefixt
- Sound reaktiviert | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 | - Userlib:
- Neue Funktionen: vprintf, snprintf, vsnprintf, strncat
- Änderungen: strncpy aus util.c übernommen
- Bug in gets gefixt (Neue Zeile wurde eingefügt, wenn \b an Pos 0|0 (Relativ vom Start) gedrückt wurde)
- Kleinigkeiten (Typen, etc.)
- Kernel:
- cprintf basiert nun auf vprintf
- Bug mit %v in printfs behoben (nun in allen kernel-printfs unterstützt)
- ehci, usb, etc.: Umformatierungen, etc.
- Kommentare gefixt
- Sound reaktiviert | |
|
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:11:06 29.05.2010 Titel: |
|
Zitieren |
Rev. 475:
fat, data packages bei ehci: Ausgaben korrigiert, verringert zur besseren Übersicht. Kleine Fehler bei Filename-Handling korrigiert.
Inzwischen existieren in os.h folgende Schalter:
| C/C++ Code: | /// #define _DIAGNOSIS_ // Diagnosis-Output - activates prints to the screen about some details and memory use
/// #define _USB_DIAGNOSIS_ // only as transition state during implementation of USB 2.0 transfers
/// #define _FAT_DIAGNOSIS_ // only as transition state during implementation of FAT 16/32
#define _SOUND_ // Sound-Messages - deactivation makes sense during development, because of better boot-time | |
| C/C++ Code: | /// #define _DIAGNOSIS_ // Diagnosis-Output - activates prints to the screen about some details and memory use
/// #define _USB_DIAGNOSIS_ // only as transition state during implementation of USB 2.0 transfers
/// #define _FAT_DIAGNOSIS_ // only as transition state during implementation of FAT 16/32
#define _SOUND_ // Sound-Messages - deactivation makes sense during development, because of better boot-time | |
| C/C++ Code: | /// #define _DIAGNOSIS_ // Diagnosis-Output - activates prints to the screen about some details and memory use
/// #define _USB_DIAGNOSIS_ // only as transition state during implementation of USB 2.0 transfers
/// #define _FAT_DIAGNOSIS_ // only as transition state during implementation of FAT 16/32
#define _SOUND_ // Sound-Messages - deactivation makes sense during development, because of better boot-time | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 13:14:19 29.05.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:09:02 29.05.2010 Titel: |
|
Zitieren |
Rev. 476:
ttt.elf (tic tac toe) wird von usb-stick geladen und ausgeführt!
Bei 3 aus 4 usb-sticks wurde ttt.elf sauber geladen/ausgeführt, beim 4GB stick (billiges "unsauberes" Device) knallen momentan vorne nur so die scsi-transfer-errors, ttt wird aber nach mehreren versuchen dennoch irgendwie geladen, allerdigs defekt ausgeführt, man sieht nur 0 und X beim setzen. Das liegt also an den usb-transfers.
Meilenstein: Ausführen eines Programms von usb-stick!
MrX hat ebenfalls bestätigt, einzige Kritik: "Die Kreuzchen sind Gelb" |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:01:37 29.05.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:51:34 30.05.2010 Titel: |
|
Zitieren |
Rev. 477:
%i wurde weitgehend gegen %u ausgetauscht beim Ausdruck.
utoa in util.c eingefügt und in ...printf bei %u verwendet.
Dies führt zum Beispiel zu verbesserten Ergebnissen bezüglich der Darstellung bei der Analyse der Partitionstabelle im MBR. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:53:55 30.05.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:08:34 30.05.2010 Titel: |
|
Zitieren |
Rev. 478:
- testFAT(...) ausgelagert aus fat.c (soll möglichst allgemein bleiben)
- scsi-abfolge test unit ready - test unit ready - request sense - (test unit ready - request sense)
- utoa (von MrX überarbeitet)
- FAT testablauf etwas optimiert
- die beiden QH (out/in) bei bulk-Transfer wieder getrennt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 14:10:53 30.05.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:27:52 30.05.2010 Titel: |
|
Zitieren |
Rev. 479: Zwischenschritt
Bei Ausfall eines In-Transfers wird dieser einfach wiederholt.
Bitte pqeq.elf und ttt.elf auf das usb msd (usb-Stick, usb-HDD) kopieren und testen.
Zuerst wird pqeq.elf ausgeführt, anschließend springt das OS zurück zur Konsole Alt+M. Es geht aber weiter z.B. bei Alt+1, also dort, wo der letzte Aufruf statt fand. Dort kann man anschließend ttt.elf ausführen.
usb2_msd.c, zeile 645 ff. (zum Experimentieren):
| C/C++ Code: | testFAT("pqeq elf");
testFAT("ttt elf"); | |
| C/C++ Code: | testFAT("pqeq elf");
testFAT("ttt elf"); | |
| C/C++ Code: | testFAT("pqeq elf");
testFAT("ttt elf"); | |
Bei meinem störrischen 4GB stick klappt das Laden, aber die Programme sind irgendwie nicht ok (kA was da los ist), ansonsten geht alles. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:33:54 31.05.2010 Titel: |
|
Zitieren |
Rev. 480:
fat.c: fatRead und fatReadQueued wurden von FAT16 auf FAT32 erweitert.
Nun sollten die Ladevorgänge auch bei FAT32 funktionieren. Eigentlich ist es verblüffend, dass das in einzelnen Fällen bisher schon gelang.
TODO: (fileFind)
Fehler: root dir wird nur im ersten cluster durchsucht! Bei z.B. 8 sectors per cluster sind das nur die ersten 8 * 512/32 = 128 Einträge! Da sieht man deutlich wie wichtig Tests auch mit großen Mengen sind (Durchführung: 512 MB stick wurde auf FAT32 formatiert, Fonts von Windows aufgespielt, dann die zu suchenden Files, damit diese möglichst weit hinten sind). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:40:13 31.05.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:46:53 31.05.2010 Titel: |
|
Zitieren |
Rev. 481:
Zwischenschritt: fileFind und CacheFileEntry umgebaut auf FAT16 u. 32
funktioniert mit einem fileentry im ersten Cluster (cluster 2), also nicht über entry Nr. 128 (bei 8 sectors per cluster).
Wie findet man die weiteren Cluster des rootdir?
http://users.iafrica.com/c/cq/cquirke/fat.htm
| Zitat: |
The root directory is fixed in length and always located at the start of the volume (after the FAT) in FAT12 and FAT16 volumes, but FAT32 treats the root directory as just another cluster chain in the data area. However, even in FAT32 volumes, the root directory will typically follow imediately after the two FATs. | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:02:30 01.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:54:54 02.06.2010 Titel: |
|
Zitieren |
Revision 482:
- Task-Verkettung im Scheduler (mit ring_t) statt in Task-Struktur. (Nächster Schritt zum neuen Scheduler). scheduler_getNextTask tut nun auch, was sie verspricht.
- Ring-Funktionen neugeschrieben.
- Doppelter Code in task.c eliminiert. Threads und Tasks haben gemeinsame Basis. -> Besser wartbar, weniger Fehleranfällig, weniger Code
- userlib/console.c/video.c/util.c: utoa-Vereinheitlichungen
- Sound aktiviert
- Diverse Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:30:43 03.06.2010 Titel: |
|
Zitieren |
Rev. 483:
Zwischenschritt beim Aufbau des FAT-Moduls (FAT12,16,32). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:58:22 03.06.2010 Titel: |
|
Zitieren |
Rev. 484:
Zwischenschritt für Experimente (man sieht hier auch schön, wenn der Code aus dem Datenbereich lesend in die FAT verzweigt. Dieses "Springen" bezüglich der Sektor-Nummer hatten wir bisher nicht verstanden ):
Das richtige Entry wird bei FAT32 und Einträgen, die nicht im ersten Cluster der root dir sind, nun also auch in späteren Clustern (Finden via File Allocation Table) gefunden. Leider wird das Programm noch nicht geladen.
Als Suche ist nach wie vor folgendes eingestellt:
usb2_msd.c, zeile 645:
| C/C++ Code: | testFAT("pqeq elf");
testFAT("ttt elf"); | |
| C/C++ Code: | testFAT("pqeq elf");
testFAT("ttt elf"); | |
| C/C++ Code: | testFAT("pqeq elf");
testFAT("ttt elf"); | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 08:52:07 04.06.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:26:56 04.06.2010 Titel: |
|
Zitieren |
Rev. 485:
Files lesen von FAT16 und FAT32 funktioniert.
Suchstrings noch wie oben. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:28:31 04.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:52:16 04.06.2010 Titel: |
|
Zitieren |
Rev. 486:
- Erkennung MBR verbessert: nur noch 55 AA bei 510/511 und 00 00 bei 444/445 (bei Cuervo klappts jetzt auch)
- showDirectoryEntry(DIRENTRY dir) korrigiert
- performAsyncScheduler: sleepMilliSeconds(150 + velocity * 150); (vorher: 200 + velocity * 200)
- waitForKeyStroke in fat.c eliminiert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:06:37 05.06.2010 Titel: |
|
Zitieren |
Rev. 487:
- USB2-Kontrollausgaben vereinfacht
- Partitionstabelle mit Größe 0x80808080 unterdrückt
- fat.h/c überarbeitet, etwas komprimiert
Das beschleunigt die Abläufe und Ladezeiten signifikant.
Aktuelle Kernelgröße: 99.984 Bytes |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:14:18 05.06.2010, insgesamt 2-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
08:35:12 05.06.2010 Titel: |
|
Zitieren |
Rev. 488:
* Makefile- und Toolanpassungen, nun müssen Mac OS X Benutzer nicht die Tools selbst erstellen. Ausserdem wurde die Übersichtlichkeit verbessert.
Ich bitte um Tests von Linux- und Windowsusern.
TiA
Cuervo |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:14:52 05.06.2010 Titel: |
|
Zitieren |
Test unter Win XP: full ACK
| Zitat: | | nun müssen Mac OS X Benutzer nicht die Tools selbst erstellen |
Vielen Dank! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:16:09 05.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:40:32 05.06.2010 Titel: |
|
Zitieren |
Rev. 489:
devicemanager.h/c (neu)
Zwischenschritt Implementierung des Device Managers
Hier ein Ausdruck bei VBox mit zwei eingestellten Floppy Disk Drives (FloppyImage und Laufwerk A: ):
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | PrettyOS [Version 0.0.0.489]
--------------------------------------------------------------------------------
Memory size: 192 MiB / 201 MB (201326592 Bytes)
Mass Storage Device Manager installed.
1.44 MB FDD device 0 found
1.44 MB FDD device 1 found
#0 0:0.0 dev:1237h vend:8086h IRQ:0
#1 0:1.0 dev:7000h vend:8086h IRQ:0
#2 0:1.1 dev:7111h vend:8086h IRQ:0
#3 0:2.0 dev:BEEFh vend:80EEh IRQ:11
#4 0:3.0 dev:2000h vend:1022h IRQ:10
#5 0:4.0 dev:CAFEh vend:80EEh IRQ:9
#6 0:5.0 dev:2415h vend:8086h IRQ:5
#7 0:6.0 dev:003Fh vend:106Bh IRQ:11 USB OHCI F0804000h MMIO sz:4096
#8 0:7.0 dev:7113h vend:8086h IRQ:9
#9 0:11.0 dev:265Ch vend:8086h IRQ:10 USB EHCI F0805000h MMIO sz:4096
List of attached Mass Storage Devices:
FDD: Drive: 1: partition: 0 serial: floppy1 (no usb msd)
FDD: Drive: 2: partition: 0 serial: floppy2 (no usb msd)
RAM Disk: Drive: 3: partition: 0 serial: ramdisk (no usb msd)
--------------------------------------------------------------------------------
<RAM Disk at C0007000h DIR> dev
35 info
10961 shell | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | PrettyOS [Version 0.0.0.489]
--------------------------------------------------------------------------------
Memory size: 192 MiB / 201 MB (201326592 Bytes)
Mass Storage Device Manager installed.
1.44 MB FDD device 0 found
1.44 MB FDD device 1 found
#0 0:0.0 dev:1237h vend:8086h IRQ:0
#1 0:1.0 dev:7000h vend:8086h IRQ:0
#2 0:1.1 dev:7111h vend:8086h IRQ:0
#3 0:2.0 dev:BEEFh vend:80EEh IRQ:11
#4 0:3.0 dev:2000h vend:1022h IRQ:10
#5 0:4.0 dev:CAFEh vend:80EEh IRQ:9
#6 0:5.0 dev:2415h vend:8086h IRQ:5
#7 0:6.0 dev:003Fh vend:106Bh IRQ:11 USB OHCI F0804000h MMIO sz:4096
#8 0:7.0 dev:7113h vend:8086h IRQ:9
#9 0:11.0 dev:265Ch vend:8086h IRQ:10 USB EHCI F0805000h MMIO sz:4096
List of attached Mass Storage Devices:
FDD: Drive: 1: partition: 0 serial: floppy1 (no usb msd)
FDD: Drive: 2: partition: 0 serial: floppy2 (no usb msd)
RAM Disk: Drive: 3: partition: 0 serial: ramdisk (no usb msd)
--------------------------------------------------------------------------------
<RAM Disk at C0007000h DIR> dev
35 info
10961 shell | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | PrettyOS [Version 0.0.0.489]
--------------------------------------------------------------------------------
Memory size: 192 MiB / 201 MB (201326592 Bytes)
Mass Storage Device Manager installed.
1.44 MB FDD device 0 found
1.44 MB FDD device 1 found
#0 0:0.0 dev:1237h vend:8086h IRQ:0
#1 0:1.0 dev:7000h vend:8086h IRQ:0
#2 0:1.1 dev:7111h vend:8086h IRQ:0
#3 0:2.0 dev:BEEFh vend:80EEh IRQ:11
#4 0:3.0 dev:2000h vend:1022h IRQ:10
#5 0:4.0 dev:CAFEh vend:80EEh IRQ:9
#6 0:5.0 dev:2415h vend:8086h IRQ:5
#7 0:6.0 dev:003Fh vend:106Bh IRQ:11 USB OHCI F0804000h MMIO sz:4096
#8 0:7.0 dev:7113h vend:8086h IRQ:9
#9 0:11.0 dev:265Ch vend:8086h IRQ:10 USB EHCI F0805000h MMIO sz:4096
List of attached Mass Storage Devices:
FDD: Drive: 1: partition: 0 serial: floppy1 (no usb msd)
FDD: Drive: 2: partition: 0 serial: floppy2 (no usb msd)
RAM Disk: Drive: 3: partition: 0 serial: ramdisk (no usb msd)
--------------------------------------------------------------------------------
<RAM Disk at C0007000h DIR> dev
35 info
10961 shell | |
Nächster Schritt: Einbindung der USB MSD
Anmerkung: Drive 0 ist reserviert für das aktive Mass Storage Device mit PrettyOS. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:44:18 05.06.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:09:38 06.06.2010 Titel: |
|
Zitieren |
Rev. 490:
Zwischenschritt device manager:
usb msd devices werden versuchsweise eingebunden bzw. gelöscht |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 15:34:10 06.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
09:11:22 06.06.2010 Titel: |
|
Zitieren |
Sieht sehr schön aus!
Nur zwei Anmerkungen:
Das "no usb msd" kann man ruhig weglassen. Namen wie "floppy1" sagen bereits alles darüber aus. Die Spalte für den Typ ganz vorne ist ja zudem auch eindeutig. Lieber sagen, was es ist, anstatt was es nicht ist
Und es wäre gut, wenn die Tabelle wie eine Tabelle wirkt, d.h. eine Zeile mit Überschrift, dann, mit Tabulator eingerückt, die Werte. Das erspart einem bei vielen Daten pro Zeile (und es könnten ja evtl. mehr werden) mglw einen Zeilenumbruch. |
Zuletzt bearbeitet von Mr X am 09:12:00 06.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
09:57:52 06.06.2010 Titel: |
|
Zitieren |
Zwischenstand (ohne Code):
Ja, gute Idee. Nachfolgende Darstellung ok?
VBox:
| Code: | 1 2 3 4 5 6 7 8 9 | 1 2 3 4 5 6 7 8 9 | Attached Mass Storage Devices:
Type Drive Part. Serial Port
----------------------------------------------------------------------
FDD 1 0 floppy1
FDD 2 0 floppy2
RAMdisk 3 0 ramdisk
USB MSD 4 0 00000000729A 1
----------------------------------------------------------------------
| |
| Code: | 1 2 3 4 5 6 7 8 9 | Attached Mass Storage Devices:
Type Drive Part. Serial Port
----------------------------------------------------------------------
FDD 1 0 floppy1
FDD 2 0 floppy2
RAMdisk 3 0 ramdisk
USB MSD 4 0 00000000729A 1
----------------------------------------------------------------------
| |
| Code: | 1 2 3 4 5 6 7 8 9 | Attached Mass Storage Devices:
Type Drive Part. Serial Port
----------------------------------------------------------------------
FDD 1 0 floppy1
FDD 2 0 floppy2
RAMdisk 3 0 ramdisk
USB MSD 4 0 00000000729A 1
----------------------------------------------------------------------
| |
Real PC:
| Code: | 1 2 3 4 5 6 7 8 9 10 | 1 2 3 4 5 6 7 8 9 10 | Attached Mass Storage Devices:
Type Drive Part. Serial Port
----------------------------------------------------------------------
FDD 1 0 floppy1
RAMdisk 2 0 ramdisk
USB MSD 3 0 8B6A0861 4
USB MSD 4 0 N014IM75 3
USB MSD 5 0 0D09297675C0 2
---------------------------------------------------------------------- | |
| Code: | 1 2 3 4 5 6 7 8 9 10 | Attached Mass Storage Devices:
Type Drive Part. Serial Port
----------------------------------------------------------------------
FDD 1 0 floppy1
RAMdisk 2 0 ramdisk
USB MSD 3 0 8B6A0861 4
USB MSD 4 0 N014IM75 3
USB MSD 5 0 0D09297675C0 2
---------------------------------------------------------------------- | |
| Code: | 1 2 3 4 5 6 7 8 9 10 | Attached Mass Storage Devices:
Type Drive Part. Serial Port
----------------------------------------------------------------------
FDD 1 0 floppy1
RAMdisk 2 0 ramdisk
USB MSD 3 0 8B6A0861 4
USB MSD 4 0 N014IM75 3
USB MSD 5 0 0D09297675C0 2
---------------------------------------------------------------------- | |
Ein-/Ausstecken führt aber noch zu Fehlern, nicht ganz einfach. Auf der USB-Transfer-Seite kommt es hierbei auch noch zu Total-Blockaden. Die Floppy verschwindet nach einigen Wechseln ebenfalls.
Über die Verwaltung der Drive-# sollten wir noch etwas diskutieren.
Zur Zeit vergebe ich diese Drive-# (zu Testzwecken) jeweils fortlaufend.
Die durch "deleteFromDeviceManager" entstandenen Lücken (msd == NULL) recycle ich bisher nicht.
Sobald das Device Managementsystem stabil steht, werden wir es an den Load-Prozess seitens der Shell bzw. andere User-Programme anbinden.
Die Einbindung von CDI sollte ebenfalls gelingen.
Infos wie "ehci_handler: Interrupt on Async Advance" wurden nun hinter _USB_DIAGNOSIS_ gesetzt, das stört den normalen Ablauf. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:27:14 06.06.2010, insgesamt 8-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
13:39:08 06.06.2010 Titel: |
|
Zitieren |
Ja, viel schöner |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:44:05 06.06.2010 Titel: |
|
Zitieren |
Revision 491:
- Zahlreiche Style-Anpassungen (TAB)
- Vereinfachungen/Änderungen am devicemanager
- Projektfile geupdated
- Memory-Ausgabe optimiert (Shiften)
- ... |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:19:44 06.06.2010 Titel: |
|
Zitieren |
Rev. 492:
devicemanager.c: Tabellarische Darstellung verbessert, zur Kontrolle "deleted" eingefügt bei Nichtnutzung einer Volume-Nr.
Das Serial bezieht sich momentan noch auf das Device, nicht auf die Partition (=Volume) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:03:16 06.06.2010 Titel: |
|
Zitieren |
Revision 493:
- devicemanager weitergebaut
- PARTITION heißt jetzt partition_t
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:34:14 06.06.2010 Titel: |
|
Zitieren |
Kommentar zu Rev. 493:
kernel.bin: 100.272 Bytes Wir haben die 100000 Byte Marke geknackt
Test mit real PC:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 | Attached Disks:
Type Number Serial Part. Serial
----------------------------------------------------------------------
FDD 0 0 0 floppy1
RAMdisk 1 0 0 ramdisk
USB MSD 2 0 0 8B6A0861
USB MSD 3 0 0 110
USB MSD 4 0 0 00000000729A
USB MSD 5 0 0 0D09297675C0
---------------------------------------------------------------------- | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 | Attached Disks:
Type Number Serial Part. Serial
----------------------------------------------------------------------
FDD 0 0 0 floppy1
RAMdisk 1 0 0 ramdisk
USB MSD 2 0 0 8B6A0861
USB MSD 3 0 0 110
USB MSD 4 0 0 00000000729A
USB MSD 5 0 0 0D09297675C0
---------------------------------------------------------------------- | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 | Attached Disks:
Type Number Serial Part. Serial
----------------------------------------------------------------------
FDD 0 0 0 floppy1
RAMdisk 1 0 0 ramdisk
USB MSD 2 0 0 8B6A0861
USB MSD 3 0 0 110
USB MSD 4 0 0 00000000729A
USB MSD 5 0 0 0D09297675C0
---------------------------------------------------------------------- | |
TODO:
Die Serials stehen momentan noch stellvertretend. Bei usb msd gehören die oben gezeigten Serials zum "Device", also zum usb-Stick. Zur Ermittlung des Partitions-Serial muss noch auf die FAT description zugegriffen werden. In der Regel haben Sticks aber nur eine Partition.
Bei der Floppy müssen die Serials sowohl für Disk (=Diskette) als auch für die Partition (identisch) von der FAT12-Partition gezogen werden (Volume ID).
Bei der RAMDisk verwenden wir momentan ein eigenes Filesystem. Alles ist feststehend, es gibt keine bewegliche "Disk" (wie bei Diskette oder usb-stick) und momentan(!) nur eine "Partition", die das eigene FS umfasst. Prinzipiell könnte man die RAMDisk auf FAT16 (max. 2GB) umstellen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:42:58 06.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:06:27 06.06.2010 Titel: |
|
Zitieren |
Rev. 494:
Kleine Korrekturen devicemanager.h/c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:41:36 07.06.2010 Titel: |
|
Zitieren |
Rev. 495:
ports ebenfalls implementiert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:55:46 07.06.2010 Titel: |
|
Zitieren |
Revision 496:
- ports nun "korrekt" aufgezählt
- Bugfix: Disk 0 wird freigehalten für SystemPartition
- Pfad-Parser
- atoi auch im Kernel verfügbar |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:12:42 07.06.2010 Titel: |
|
Zitieren |
Kommentar zu Rev. 496:
Zunächst mal ein herzliches Dankeschön an MrX für das hervorragende Teamwork bei der Umsetzung des Devicemanagers und für den Path-Parser.
Test auf VBox:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.496] Console 2: EHCI Ports
--------------------------------------------------------------------------------
---------------------------------------------------------------------
Number of interfaces: 1
---------------------------------------------------------------------
Interface 0 has 2 endpoints and belongs to class:
Mass Storage, SCSI transparent command set, Bulk-Only Transport protocol.
---------------------------------------------------------------------
endpoint 1: OUT, bulk data, mps: 512 byte
---------------------------------------------------------------------
endpoint 2: IN , bulk data, mps: 512 byte
languages: English
Generic Mass Storage 8B6A0861 serial: 8B6A0861
Available Ports:
Type number Media
----------------------------------------------------------------------
FDD A No floppy disk inserted
FDD B No floppy disk inserted
USB Port C MSD attached
USB Port D No MSD attached
USB Port E No MSD attached
USB Port F No MSD attached
USB Port G No MSD attached
USB Port H No MSD attached
USB Port I No MSD attached
USB Port J No MSD attached
----------------------------------------------------------------------
Attached Disks:
Type Number Serial Part. Serial
----------------------------------------------------------------------
Floppy 1 0 0 floppy1
Floppy 2 0 0 floppy2
RAMdisk 3 0 0 ramdisk
USB MSD 4 0 0 8B6A0861
----------------------------------------------------------------------
- - - - - - - - - - - press key - - - - - - - - - - -
--------------------------------------------------------------------------------
Port: 1, device attached
--------------------------------------------------------------------------------
Monday, June 07, 2010, 12:47:27 16 s runtime. CPU: 3731 MHz \ | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.496] Console 2: EHCI Ports
--------------------------------------------------------------------------------
---------------------------------------------------------------------
Number of interfaces: 1
---------------------------------------------------------------------
Interface 0 has 2 endpoints and belongs to class:
Mass Storage, SCSI transparent command set, Bulk-Only Transport protocol.
---------------------------------------------------------------------
endpoint 1: OUT, bulk data, mps: 512 byte
---------------------------------------------------------------------
endpoint 2: IN , bulk data, mps: 512 byte
languages: English
Generic Mass Storage 8B6A0861 serial: 8B6A0861
Available Ports:
Type number Media
----------------------------------------------------------------------
FDD A No floppy disk inserted
FDD B No floppy disk inserted
USB Port C MSD attached
USB Port D No MSD attached
USB Port E No MSD attached
USB Port F No MSD attached
USB Port G No MSD attached
USB Port H No MSD attached
USB Port I No MSD attached
USB Port J No MSD attached
----------------------------------------------------------------------
Attached Disks:
Type Number Serial Part. Serial
----------------------------------------------------------------------
Floppy 1 0 0 floppy1
Floppy 2 0 0 floppy2
RAMdisk 3 0 0 ramdisk
USB MSD 4 0 0 8B6A0861
----------------------------------------------------------------------
- - - - - - - - - - - press key - - - - - - - - - - -
--------------------------------------------------------------------------------
Port: 1, device attached
--------------------------------------------------------------------------------
Monday, June 07, 2010, 12:47:27 16 s runtime. CPU: 3731 MHz \ | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | PrettyOS [Version 0.0.0.496] Console 2: EHCI Ports
--------------------------------------------------------------------------------
---------------------------------------------------------------------
Number of interfaces: 1
---------------------------------------------------------------------
Interface 0 has 2 endpoints and belongs to class:
Mass Storage, SCSI transparent command set, Bulk-Only Transport protocol.
---------------------------------------------------------------------
endpoint 1: OUT, bulk data, mps: 512 byte
---------------------------------------------------------------------
endpoint 2: IN , bulk data, mps: 512 byte
languages: English
Generic Mass Storage 8B6A0861 serial: 8B6A0861
Available Ports:
Type number Media
----------------------------------------------------------------------
FDD A No floppy disk inserted
FDD B No floppy disk inserted
USB Port C MSD attached
USB Port D No MSD attached
USB Port E No MSD attached
USB Port F No MSD attached
USB Port G No MSD attached
USB Port H No MSD attached
USB Port I No MSD attached
USB Port J No MSD attached
----------------------------------------------------------------------
Attached Disks:
Type Number Serial Part. Serial
----------------------------------------------------------------------
Floppy 1 0 0 floppy1
Floppy 2 0 0 floppy2
RAMdisk 3 0 0 ramdisk
USB MSD 4 0 0 8B6A0861
----------------------------------------------------------------------
- - - - - - - - - - - press key - - - - - - - - - - -
--------------------------------------------------------------------------------
Port: 1, device attached
--------------------------------------------------------------------------------
Monday, June 07, 2010, 12:47:27 16 s runtime. CPU: 3731 MHz \ | |
Test auf real PC:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Available Ports:
Type number Media
----------------------------------------------------------------------
FDD A No floppy disk inserted
USB Port B MSD attached
USB Port C No MSD attached
USB Port D No MSD attached
USB Port E MSD attached
USB Port F No MSD attached
USB Port G No MSD attached
----------------------------------------------------------------------
Attached Disks:
Type Number Serial Part. Serial
----------------------------------------------------------------------
Floppy 1 0 0 floppy1
RAMdisk 2 0 0 ramdisk
USB MSD 3 0 0 0D09297675C0
USB MSD 4 0 0 00000000729A
---------------------------------------------------------------------- | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Available Ports:
Type number Media
----------------------------------------------------------------------
FDD A No floppy disk inserted
USB Port B MSD attached
USB Port C No MSD attached
USB Port D No MSD attached
USB Port E MSD attached
USB Port F No MSD attached
USB Port G No MSD attached
----------------------------------------------------------------------
Attached Disks:
Type Number Serial Part. Serial
----------------------------------------------------------------------
Floppy 1 0 0 floppy1
RAMdisk 2 0 0 ramdisk
USB MSD 3 0 0 0D09297675C0
USB MSD 4 0 0 00000000729A
---------------------------------------------------------------------- | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Available Ports:
Type number Media
----------------------------------------------------------------------
FDD A No floppy disk inserted
USB Port B MSD attached
USB Port C No MSD attached
USB Port D No MSD attached
USB Port E MSD attached
USB Port F No MSD attached
USB Port G No MSD attached
----------------------------------------------------------------------
Attached Disks:
Type Number Serial Part. Serial
----------------------------------------------------------------------
Floppy 1 0 0 floppy1
RAMdisk 2 0 0 ramdisk
USB MSD 3 0 0 0D09297675C0
USB MSD 4 0 0 00000000729A
---------------------------------------------------------------------- | |
Next Steps:
- "ports[...]->insertedDisk" Status bei dem FDD prüfen! (z.Z. in floppy_install mangels Informationen über eingelegte / nicht eingelegte Diskette auf NULL gesetzt)
- "MSD attached" bei usb-Ports sollte ersetzt werden durch eine sprechende usb-MSD ID (z.B. Vendor/Produkt/Revision)
- Serial bei der Disk-Liste gegen echte Partitions-Serial (aus FAT descriptor) ersetzen, die gezeigten usb-Serials passen zum Device, also zum Stick, nicht zur Partition, obwohl dies beim Stick das Gleiche bedeutet (nur eine Partition).
Inzwischen ist es bei Tobiking gelungen, von einem mit FAT12 (durch Aufspielen von FloppyImage) "formatierten" usb-Stick pqeq.elf und ttt.elf zu laden. Der Lesevorgang im jeweiligen FAT12-Teil des neuen FAT12/16/32-Moduls funktioniert also auch bestens. Somit sollten wir das provisorische fat12.h/c bald durch ein in sich geschlossenes Modul fat.h/c ablösen können.
kernel.bin 104.492 Bytes
Hier kommen wir bald an die kritische Größe, bei der es mit Bootloader2 erneut Probleme geben sollte. Der Aufschlag erfolgt in ... Tagen.
Diesbezüglich müssen wir wohl eine SOKO "Own Bootloader vs GRUB" gründen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:48:25 07.06.2010, insgesamt 6-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:36:33 07.06.2010 Titel: |
|
Zitieren |
Rev. 497:
zwischenschritt: check der Floppy disk im device manager und bei floppy_install |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:21:06 07.06.2010 Titel: |
|
Zitieren |
Revision 498:
- maximale Floppy-Laufwerkszahl auf 2 vereinheitlicht
- disk_t: Neuer Member name. Speichert den Trivialnamen der Disk/Partition. Bitte in Benutzung nehmen.
- ehci: pciDev_t* statt Index
- Kleinigkeiten |
Zuletzt bearbeitet von Mr X am 20:22:03 07.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:30:41 08.06.2010 Titel: |
|
Zitieren |
Rev. 499:
Portliste und Diskliste weiter verfeinert und implementiert.
RAMDisk wird als "Disk" im "Port" RAM angesehen und erhält ebenfalls einen Buchstaben (Port) und eine Zahl (Partition == Volume).
Test auf real PC mit einem Floppy Disk Device und vier usb-Sticks:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | Available Ports:
Type Number Name Media (attached)
----------------------------------------------------------------------
FDD A Floppy Dev 1 PRETTYOS
RAM B RAM RAMDisk
usbPort C EHCI-Port 1 0D09297675C0
usbPort D EHCI-Port 2 8B6A0861
usbPort E EHCI-Port 3 00000000729A
usbPort F EHCI-Port 4 110
usbPort G EHCI-Port 5 No MSD attached
usbPort H EHCI-Port 6 No MSD attached
----------------------------------------------------------------------
Attached Disks:
Type Number Name Part. Serial
----------------------------------------------------------------------
Floppy 1 PRETTYOS 0 PRETTYOS
RAMdisk 2 RAMDisk 0 786434
USB MSD 3 0D09297675C0 0 0D09297675C0
USB MSD 4 8B6A0861 0 8B6A0861
USB MSD 5 110 0 110
USB MSD 6 00000000729A 0 00000000729A | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | Available Ports:
Type Number Name Media (attached)
----------------------------------------------------------------------
FDD A Floppy Dev 1 PRETTYOS
RAM B RAM RAMDisk
usbPort C EHCI-Port 1 0D09297675C0
usbPort D EHCI-Port 2 8B6A0861
usbPort E EHCI-Port 3 00000000729A
usbPort F EHCI-Port 4 110
usbPort G EHCI-Port 5 No MSD attached
usbPort H EHCI-Port 6 No MSD attached
----------------------------------------------------------------------
Attached Disks:
Type Number Name Part. Serial
----------------------------------------------------------------------
Floppy 1 PRETTYOS 0 PRETTYOS
RAMdisk 2 RAMDisk 0 786434
USB MSD 3 0D09297675C0 0 0D09297675C0
USB MSD 4 8B6A0861 0 8B6A0861
USB MSD 5 110 0 110
USB MSD 6 00000000729A 0 00000000729A | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | Available Ports:
Type Number Name Media (attached)
----------------------------------------------------------------------
FDD A Floppy Dev 1 PRETTYOS
RAM B RAM RAMDisk
usbPort C EHCI-Port 1 0D09297675C0
usbPort D EHCI-Port 2 8B6A0861
usbPort E EHCI-Port 3 00000000729A
usbPort F EHCI-Port 4 110
usbPort G EHCI-Port 5 No MSD attached
usbPort H EHCI-Port 6 No MSD attached
----------------------------------------------------------------------
Attached Disks:
Type Number Name Part. Serial
----------------------------------------------------------------------
Floppy 1 PRETTYOS 0 PRETTYOS
RAMdisk 2 RAMDisk 0 786434
USB MSD 3 0D09297675C0 0 0D09297675C0
USB MSD 4 8B6A0861 0 8B6A0861
USB MSD 5 110 0 110
USB MSD 6 00000000729A 0 00000000729A | |
Die Portreihenfolge ist Floppys, RAMDisk, EHCI-Ports (1,2,...).
Die Diskreihenfolge entspricht der Reihenfolge der Installation (Floppys, RAMDisk, usb-sticks entsprechend dem Einsteckzeitpunkt). Frei werdende Disk-Nummern werden wiederverwendet.
Der "Serial" 786434 der RAMDisk ist die (dezimal dargestellte) Speicheradresse (0xC0002000) geteilt durch PAGESIZE (4096 bytes). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:35:00 08.06.2010, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:52:31 08.06.2010 Titel: |
|
Zitieren |
Revision 500:
- settaskflag gelöscht. War gefährlich für User (Anhalten des gesamten OS) und nutzlos im Kernel.
- EHCI/Floppy/RamDisk-Flags direkt initialisiert
- Codevereinfachungen in devicemanager.c, Todos zur Vereinheitlichung der Disk/Port-Handhabung
- Kleinigkeiten, u.a. kleine Schönheitskorrektur in Shell |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:37:52 08.06.2010 Titel: |
|
Zitieren |
Rev. 501:
Name und Serial bei usb MSD |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:55:58 08.06.2010 Titel: |
|
Zitieren |
Rev. 502:
Zwischenschritt auf dem Weg zum Laden eines Files mittels device manager:
loadFile (vorher: testFAT) und analyzeBootsector nach devicemanager.c verlegt und mit entsprechenden Parametern versorgt.
In testMSD (letzter Schritt zur Erfassung von usb msd daten, siehe: http://www.c-plusplus.de/forum/viewtopic-var-t-is-253016-and-start-is-81.html) werden z.Z. beide Funktionen testweise angewendet. Dies muss entkoppelt werden. Die Funktion testMSD mit analyzeBootsector sollte nur der Feststellung aller notwendigen Daten (Partitionen, FAT-Typ) für den device manager dienen.
Der Ladevorgang sollte dann mittels loadFile separat erfolgen.
TODO:
in testMSD: usbMSDVolume allgemein verwendet
zeile 32: partition_t usbMSDVolume;
zeile 633: usbRead(sector, usbMSDVolume.buffer);
zeile 637: int32_t retVal = analyzeBootSector((void*)DataQTDpage0, &usbMSDVolume);
zeile 651: loadFile("pqeq elf",&usbMSDVolume);
zeile 652: loadFile("ttt elf",&usbMSDVolume);
Dieses allgemeine usbMSDVolume sollte durch das speziell angesprochene Volume gekoppelt an eine "Disk" (usb-Stick), wiederum gekoppelt an einen "Port" (EHCI-Port), ersetzt werden.
void testMSD(uint8_t devAddr, uint8_t config)
Die devAddr ist die angezeigte EHCI-Portnumber.
testMSD(devAddr,config); wird in ehci.c, zeile 722, verwendet.
partition_t usbDevVolume[portNumber+1] in ehci.c und partition_t usbMSDVolume in usb2_msd.c sind somit zusammengehörig. Das muss noch "hingebogen" werden, dass die Daten von testMSD dort landen. Vielleicht muss man testMSD dies als Parameter mitgeben und usbMSDVolume (s.o.) entsprechend ersetzen.
Siehe ehci.c, zeile 694-710. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:20:40 09.06.2010, insgesamt 6-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:12:00 09.06.2010 Titel: |
|
Zitieren |
Rev. 503 (version wird falsch angezeigt):
testMSD umgebaut: void testMSD(uint8_t devAddr, partition_t* part) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:01:23 10.06.2010 Titel: |
|
Zitieren |
Revision 504:
- Bugfix in Pfadparser
- execute-Funktion
- Syscall zum Dateienladen
- Shell kann keine Floppy-Dateien mehr laden, nur noch (derzeit fehlerhaft) durch den devicemanager. Floppy-Support wird natürlich bald wieder eingebaut...
Hinweis: Erst testMSD durchlaufen lassen, dann USB-Zugriff versuchen. Zugriff via "X:/TTT ELF" (X ist Laufwerkszahl). Derzeit gibts ein Freeze, wenn man das versucht. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:20:45 10.06.2010 Titel: |
|
Zitieren |
| Code: | 1 2 3 4 5 6 7 8 9 | 1 2 3 4 5 6 7 8 9 | $> 3:\TTT ELF <--
Page Fault (page not present) at 01420000h - EIP: 0004192Fh
err_code: 00000000h address(eip): 0004192Fh
edi: 0141FF89h esi: 00059FFCh ebp: C020DF38h eax: 00059F01h ebx: 01420000h ecx:
FFFFFFF2h edx: 00000000h
cs: 00000008h ds: 00000010h es: 00000010h fs: 00000010h gs 00000010h ss 00000066
h
int_no 14 eflags 00010017h useresp 0141FCC3h | |
| Code: | 1 2 3 4 5 6 7 8 9 | $> 3:\TTT ELF <--
Page Fault (page not present) at 01420000h - EIP: 0004192Fh
err_code: 00000000h address(eip): 0004192Fh
edi: 0141FF89h esi: 00059FFCh ebp: C020DF38h eax: 00059F01h ebx: 01420000h ecx:
FFFFFFF2h edx: 00000000h
cs: 00000008h ds: 00000010h es: 00000010h fs: 00000010h gs 00000010h ss 00000066
h
int_no 14 eflags 00010017h useresp 0141FCC3h | |
| Code: | 1 2 3 4 5 6 7 8 9 | $> 3:\TTT ELF <--
Page Fault (page not present) at 01420000h - EIP: 0004192Fh
err_code: 00000000h address(eip): 0004192Fh
edi: 0141FF89h esi: 00059FFCh ebp: C020DF38h eax: 00059F01h ebx: 01420000h ecx:
FFFFFFF2h edx: 00000000h
cs: 00000008h ds: 00000010h es: 00000010h fs: 00000010h gs 00000010h ss 00000066
h
int_no 14 eflags 00010017h useresp 0141FCC3h | |
1420000h <---
| C/C++ Code: | // User Heap management
#define USER_HEAP_START ((uint8_t*)0x1420000)
// User Stack
#define USER_STACK 0x1420000
| |
| C/C++ Code: | // User Heap management
#define USER_HEAP_START ((uint8_t*)0x1420000)
// User Stack
#define USER_STACK 0x1420000
| |
| C/C++ Code: | // User Heap management
#define USER_HEAP_START ((uint8_t*)0x1420000)
// User Stack
#define USER_STACK 0x1420000
| |
Problem dürfte der user-stack (hat doch bisher geklappt?) oder user-heap sein.
siehe auch: http://www.c-plusplus.de/forum/viewtopic-var-t-is-265757-and-highlight-is-userstack.html
und task.c, zeile 88:
| C/C++ Code: | | paging_alloc(new_task->page_directory, (void*)(USER_STACK-10*PAGESIZE), 10*PAGESIZE, MEM_USER|MEM_WRITE); | |
| C/C++ Code: | | paging_alloc(new_task->page_directory, (void*)(USER_STACK-10*PAGESIZE), 10*PAGESIZE, MEM_USER|MEM_WRITE); | |
| C/C++ Code: | | paging_alloc(new_task->page_directory, (void*)(USER_STACK-10*PAGESIZE), 10*PAGESIZE, MEM_USER|MEM_WRITE); | |
zeile 293:
| C/C++ Code: | | paging_alloc(currentTask->page_directory, old_heap_top, increase, MEM_USER | MEM_WRITE) | |
| C/C++ Code: | | paging_alloc(currentTask->page_directory, old_heap_top, increase, MEM_USER | MEM_WRITE) | |
| C/C++ Code: | | paging_alloc(currentTask->page_directory, old_heap_top, increase, MEM_USER | MEM_WRITE) | |
Erste Reparaturversuche scheiterten bisher.
Untersuchungen deuten auf den user-stack hin, da man den #PF Adresswert durch Veränderung von USER_STACK bzw. zeile 88, task.c, eindeutig beeinflussen kann.
Die Wirkung der Funktion paging_alloc kann man leicht kontrollieren:
Folgende Zeile ergänzen im Anfang von paging_alloc, paging.c, zeile 229:
| C/C++ Code: | | printf("\npaging-alloc, virt addr: %X size: %X", virt_addr, size ); // TEST | |
| C/C++ Code: | | printf("\npaging-alloc, virt addr: %X size: %X", virt_addr, size ); // TEST | |
| C/C++ Code: | | printf("\npaging-alloc, virt addr: %X size: %X", virt_addr, size ); // TEST | |
@all: bitte um Hilfe bei der Fehlersuche
@MrX: bitte Procedere im user-Programm untersuchen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 08:10:02 10.06.2010, insgesamt 8-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
13:16:33 10.06.2010 Titel: |
|
Zitieren |
Was genau soll ich bei der "User-Progamm-Prozedur" ansehen? Bzw., was ist für dich diese Prozedur? Das Programm selbst? Wie es geladen wird? |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:44:00 10.06.2010 Titel: |
|
Zitieren |
Der Fehler erfolgt auf der user-Seite, so wie es aussieht. Allerdings gibt es noch Ungereimtheiten:
1) Du hast davon berichtet, dass der richtge Sektor geladen würde mit anschließendem "freeze".
2) Schaltet man in os.h die "Diagnose-Schalter" zu, so taucht ein #PF > 0xF0000000 auf.
3) Der #PF bei USER_STACK ist der dritte Fall, der wohl am meisten eintritt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Lüttmoor
Mitglied
Benutzerprofil
Anmeldungsdatum: 10.07.2009
Beiträge: 26
|
Lüttmoor Mitglied
19:29:51 10.06.2010 Titel: |
|
Zitieren |
Hi,
ich denke der Fehler tritt im Kernel auf. Das sollte übrigens jeder an dem Wert in CS erkennen können. EIP gibt den Hinweis auf die Funktion, wo der Fehler auftritt, nämlich "execute".
Bei der weiteren Analyse sind mir mehrere Fehler aufgefallen:
| Code: | void execute(const char* path)
{
...
while(*path != '/' && *path != '|' && *path != '\'') | |
| Code: | void execute(const char* path)
{
...
while(*path != '/' && *path != '|' && *path != '\'') | |
| Code: | void execute(const char* path)
{
...
while(*path != '/' && *path != '|' && *path != '\'') | |
Die while-Schleife läuft über das Ende des Strings hinaus, wenn path weder \ noch | noch ' enthält. Es fehlt also ein Test auf den Nullterminator. Außerdem sieht man hier sofort, dass Pfade nicht mit "3:\" anfangen dürfen, wie in Erhards Beispiel. Diese beiden Sachverhalte kombiniert mit der Tatsache, dass der Wert von path knapp unter 01420000h sind die Ursache für den Fehler.
Lässt man übrigens 3:/TTT ELF ausführen, dann scheint das (zumindest bei mir) nicht zu klappen, weil das Laufwerk 3 oder was auch immer das ist nicht existiert. Das gibt wieder einen Page Fault (bei mir) an Adresse 0xf000ff7f, und bei dieser Adresse liegt sofort der Verdacht nahe, dass ein NULL-Pointer dereferenziert wurde. Ich denke mal es liegt an der Funktion getPartition, in denen weder die Variablen PortID, PartitionID und DiskID vollständig überprüft werden, noch die Werte der Zeiger auf NULL getestet werden, vor allem da in devicemanager.h dokumentiert ist, dass diese NULL sein können.
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | if(PortID != -1)
{
return(ports[PortID]->insertedDisk->partition[PartitionID]);
}
else
{
if(DiskID == 0)
{
return(systemPartition);
}
else
{
return(disks[DiskID-1]->partition[PartitionID]);
}
} | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | if(PortID != -1)
{
return(ports[PortID]->insertedDisk->partition[PartitionID]);
}
else
{
if(DiskID == 0)
{
return(systemPartition);
}
else
{
return(disks[DiskID-1]->partition[PartitionID]);
}
} | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | if(PortID != -1)
{
return(ports[PortID]->insertedDisk->partition[PartitionID]);
}
else
{
if(DiskID == 0)
{
return(systemPartition);
}
else
{
return(disks[DiskID-1]->partition[PartitionID]);
}
} | |
|
Zuletzt bearbeitet von Lüttmoor am 19:31:21 10.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:43:54 10.06.2010 Titel: |
|
Zitieren |
| Zitat: | | der Fehler tritt im Kernel auf. Das sollte übrigens jeder an dem Wert in CS erkennen können. | Ja stimmt, wird klar angezeigt. Der Wert des user-stacks hat mich irritiert. Danke für die Analyse, hilft uns weiter. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:48:27 10.06.2010 Titel: |
|
Zitieren |
Ja, diese Prüfung auf 0 fehlt, das stimmt. Und, was noch schlimmer ist, auch die bei den Strings... Danke für den Hinweis.
Aber auch bei eigentlich existierenden Laufwerken klappts aber nicht, auch nicht nach Behebung der Fehler.
EDIT: Derzeit muss man auch noch "3:/TTT ELF" als Laufwerk angeben. Sonst klappt es derzeit erst recht nicht.
EDIT2: #PF-Grund gefunden: '\'' ist nich \, sondern ', daher gingen alle Pfade mit \ nicht. |
Zuletzt bearbeitet von Mr X am 20:58:45 10.06.2010, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:34:51 10.06.2010 Titel: |
|
Zitieren |
Ehenkes und ich haben grade zusammen den Durchbruch erzielt. Danke Lüttmoor für die Hilfe dabei. Die von dir genannten Probleme sollten jetzt behoben sein. Das mit dem Pfadseparator hast Du ja auch angsprochen, Lüttmoor, aber ich habs in deinem Text garnicht realisiert/zu flüchtig überlesen.
Revision 505:
- Bugfix: Pfade mit \ gehen nun
- Bugfix: waitForKeyStroke sorgt nicht mehr für Freeze. STI eingefügt
- Bugfix: Nullpointer-Abfragen bei Strings und Partition in devicemanager.c ergänzt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:47:36 10.06.2010 Titel: |
|
Zitieren |
Dank an Lüttmoor für den Schubs in die richtige Richtung. Auf jeden Fall klappt es nun. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:47:08 11.06.2010 Titel: |
|
Zitieren |
Rev. 506:
Nicht-MSD (also nicht class 8) werden nicht in den msd device manager eingefügt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:36:23 11.06.2010 Titel: |
|
Zitieren |
Revision 507:
- Eingabe von normalen Dateinamen nun erlaubt, 8.3-Notation ("TTT ELF") nicht mehr nötig
- Shortcut für Disk/Port-Ausgabe: Strg+d
- Kleinigkeiten |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
10:55:23 12.06.2010 Titel: |
|
Zitieren |
Revision 508:
- Floppytreiber objektorientierter gemacht, basiert auf floppy_t
- flpydsk_refreshVolumeNames statt flpydsk_get_volumeName
- diskType_t mit Funktionspointern für Sector-Read/-Write für Abstraktion
- Vereinfachungen im Code |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:04:28 12.06.2010 Titel: |
|
Zitieren |
Revision 509:
Revision 510:
Fehlerkorrekturen
1) pointer cast
2) partitionszeiger floppy |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:03:08 12.06.2010 Titel: |
|
Zitieren |
Revision 511:
- Laden von Floppy mit Devicemanager möglich
- floppy_load ausgebaut (file.c), syscall freigegeben
- Kleinigkeiten, Bugfixes
Der fat12-Treiber in fat.c ist schneller als der in fat12.c -> doppelt erfolgreich |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:02:57 12.06.2010 Titel: |
|
Zitieren |
Rev. 512:
Formale Kleinigkeiten:
- Abschließende '\0' hinter Floppy Dev 1 bzw. Floppy Dev 2 eingefügt
- Eine Zeile Abstand hinter "This is a volume formated with FAT12."
PrettyOS "denkt" mit:
- Gibt man ttt.elf ein, so will man vielleicht wie bisher (.elf sollte sein) vereinfacht auf die Floppy zugreifen. Wir bauen bei Vorhandensein eines FDD1 den Pfad "1:/" probeweise davor und rufen rekursiv erneut execute(newPath) auf.
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $> ttt.elf <--
file is being searched...
No valid path for partition found!
Floppy found! PrettyOS now tries 1:/ttt.elf
buffer: C0002000h
type: 1
SecPerClus: 1
maxroot: 224
fatsize: 9
fatcopy: 2
firsts: 0
fat: 1
root: 19
data: 33
maxcls: 4294967263
mount: 1
serial #: 50h 52h 45h 54h
- - - - - - - - - - - press key - - - - - - - - - - - | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $> ttt.elf <--
file is being searched...
No valid path for partition found!
Floppy found! PrettyOS now tries 1:/ttt.elf
buffer: C0002000h
type: 1
SecPerClus: 1
maxroot: 224
fatsize: 9
fatcopy: 2
firsts: 0
fat: 1
root: 19
data: 33
maxcls: 4294967263
mount: 1
serial #: 50h 52h 45h 54h
- - - - - - - - - - - press key - - - - - - - - - - - | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $> ttt.elf <--
file is being searched...
No valid path for partition found!
Floppy found! PrettyOS now tries 1:/ttt.elf
buffer: C0002000h
type: 1
SecPerClus: 1
maxroot: 224
fatsize: 9
fatcopy: 2
firsts: 0
fat: 1
root: 19
data: 33
maxcls: 4294967263
mount: 1
serial #: 50h 52h 45h 54h
- - - - - - - - - - - press key - - - - - - - - - - - | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | void execute(const char* path)
{
partition_t* part = getPartition(path);
if(part == NULL)
{
textColor(0x0C);
printf("\nNo valid path for partition found!\n");
textColor(0x0F);
if ((cmos_read(0x10)>>4) == 4 ) // first FDD implemented
{
if (path[0] == '1' && path[1]==':')
{
// do nothing
}
else
{
char newPath[40];
strcpy(newPath,"1:/");
strcat(newPath,path);
textColor(0x0E);
printf("\nFloppy found! PrettyOS now tries %s\n",newPath);
textColor(0x0F);
execute(newPath);
}
}
return;
}
while(*path != '/' && *path != '|' && *path != '\\')
{
path++;
if(*path == 0)
{
return;
}
}
path++;
loadFile(path, part);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | void execute(const char* path)
{
partition_t* part = getPartition(path);
if(part == NULL)
{
textColor(0x0C);
printf("\nNo valid path for partition found!\n");
textColor(0x0F);
if ((cmos_read(0x10)>>4) == 4 ) // first FDD implemented
{
if (path[0] == '1' && path[1]==':')
{
// do nothing
}
else
{
char newPath[40];
strcpy(newPath,"1:/");
strcat(newPath,path);
textColor(0x0E);
printf("\nFloppy found! PrettyOS now tries %s\n",newPath);
textColor(0x0F);
execute(newPath);
}
}
return;
}
while(*path != '/' && *path != '|' && *path != '\\')
{
path++;
if(*path == 0)
{
return;
}
}
path++;
loadFile(path, part);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | void execute(const char* path)
{
partition_t* part = getPartition(path);
if(part == NULL)
{
textColor(0x0C);
printf("\nNo valid path for partition found!\n");
textColor(0x0F);
if ((cmos_read(0x10)>>4) == 4 ) // first FDD implemented
{
if (path[0] == '1' && path[1]==':')
{
// do nothing
}
else
{
char newPath[40];
strcpy(newPath,"1:/");
strcat(newPath,path);
textColor(0x0E);
printf("\nFloppy found! PrettyOS now tries %s\n",newPath);
textColor(0x0F);
execute(newPath);
}
}
return;
}
while(*path != '/' && *path != '|' && *path != '\\')
{
path++;
if(*path == 0)
{
return;
}
}
path++;
loadFile(path, part);
} | |
maxcls: 4294967263 <--- etwas hoch |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:06:05 12.06.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:10:40 12.06.2010 Titel: |
|
Zitieren |
Rev. 513:
Zwei nicht mehr benötigte Funktionen zum Laden von Floppy in file.h/c entfernt
So stellt sich das momentan in VBox mit zwei Floppy Disk Devices dar:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Available ports:
Type Number Name Inserted disk
----------------------------------------------------------------------
FDD A Floppy Dev 1 PRETTYOS
FDD B Floppy Dev 2
RAM C RAM RAMDisk
----------------------------------------------------------------------
Attached disks:
Type Number Name Part. Serial
----------------------------------------------------------------------
Floppy 1 PRETTYOS 0 PRETTYOS
RAMdisk 3 RAMDisk 0 786436
---------------------------------------------------------------------- | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Available ports:
Type Number Name Inserted disk
----------------------------------------------------------------------
FDD A Floppy Dev 1 PRETTYOS
FDD B Floppy Dev 2
RAM C RAM RAMDisk
----------------------------------------------------------------------
Attached disks:
Type Number Name Part. Serial
----------------------------------------------------------------------
Floppy 1 PRETTYOS 0 PRETTYOS
RAMdisk 3 RAMDisk 0 786436
---------------------------------------------------------------------- | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Available ports:
Type Number Name Inserted disk
----------------------------------------------------------------------
FDD A Floppy Dev 1 PRETTYOS
FDD B Floppy Dev 2
RAM C RAM RAMDisk
----------------------------------------------------------------------
Attached disks:
Type Number Name Part. Serial
----------------------------------------------------------------------
Floppy 1 PRETTYOS 0 PRETTYOS
RAMdisk 3 RAMDisk 0 786436
---------------------------------------------------------------------- | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:14:38 12.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:39:46 13.06.2010 Titel: |
|
Zitieren |
Rev. 514:
Verbesserung der Darstellung der FAT-Descriptor-Daten in loadFile |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:34:09 13.06.2010 Titel: |
|
Zitieren |
Revision 515:
- Fehlerbehandlung von execute jetzt in shell.c
- execute und loadFile geben nun FS_ERROR zurück
- Disk zählt noch zu lesende Sektoren -> Möglichst seltenes an/aus des Motors bei "beweglichen" Medien wie Floppys, HDDs und CDs
- Syscall-Definition von execute repariert
- Kleinigkeiten |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:38:34 13.06.2010 Titel: |
|
Zitieren |
Revision 516:
- (jetzt hoffentlich funktionierende) Floppy-Motor-Steuerung
- Zahlreiche Funktionen aus fat12.c entfernt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:17:47 14.06.2010 Titel: |
|
Zitieren |
Rev. 517:
Es gibt nach Umbauarbeiten (dank an MrX) überraschende Probleme auf real PC mit der Floppy:
Bei mir hört es in der ports-liste nach FDD auf, nur noch read error
daher cross-check, bitte testen.
Mit den nachgereichten Versionen für die Motorsteuerung geht es ebenfalls nicht!
http://codepad.org/oZCtQChr
http://codepad.org/kaH3aG1q
http://codepad.org/MJDdABeh ("mal eine ältere Version")
| Zitat: | | sag mir, ob es a) geht und wenn nicht b) zuletzt "off" angezeigt wird |
a) es geht nicht (zwei PC mit echter Floppy, zwei Disketten)
b) "on" steht vorne nach Finden der FDD; "off" kommt nicht, nur der read error mit Lampe aus (bei beiden PCs and der exakt gleichen Stelle).
MrX: bitte checke mal die Rev. 517, ob die wirklich so auf real PC bei dir läuft. Vielleicht hast du lokal eine andere Version.
VMWare läuft mit rev. 517 korrekt, aber lädt viel zu lahm.
Gibt man nur "ttt.elf" ein, so wird "Trying now on 1:/." angezeigt, aber korrekt geladen.
VBox klappt gut mit zwei Floppys, lädt schnell.
Qemu läuft analog VBox.
Nachdem ich auch noch auf meinem Entwicklungs-PC das gleiche negative Ergebnis erhielt:
Bei manchen PCs muss man zwei mal laden, bis es klappt (DMA-Init-Problematik, muss noch im geänderten Code untersucht werden), also erstes mal read error, dann beim zweiten mal Erfolg. Wenn wir aber Sektoren zählen und entsprechend bei null abschalten, könnte dies genau vor dem erfolgreichen Lesen erfolgen.
Nur so eine Idee. Spricht nur dagegen, dass das "off" bei dem einen Test nicht kam. Also könnte es auch sein, dass dieser Lesevorgang zur Detektion des Partitionsnamens in einer Fehlerschleife hängen bleibt.
Ein Test auf einem vierten PC: ebenfalls nicht ok. Nach ENTER drücken gings weiter, aber ständig read error und Festhängen an diesem Punkt. ttt.elf wurde nicht geladen, als es endlich gelang dies einzutippen.
Irgendetwas ist in Rev. 517 gegenüber früheren Versionen massiv gestört im Lesevorgang.
Bitte gegen den Ablauf im alten Code checken.
Cuervo: bitte ebenfalls prüfen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 07:58:36 14.06.2010, insgesamt 9-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
10:49:43 14.06.2010 Titel: |
|
Zitieren |
Danke für die Umfangreichen Tests, Erhard.
Danke, das ichs zerschossen hab?
Naja, ab und zu muss man mal was kaputt kriegen, ums wieder zusammensetzen zu "dürfen" |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:25:48 14.06.2010 Titel: |
|
Zitieren |
Rev. 518: Vorbereitungen FAT-Modul: Schreiben (Ablösung file.c und weitgehend fat12.c) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:39:17 14.06.2010 Titel: |
|
Zitieren |
Revision 519:
- Floppyproblem behoben. Ich hatte nicht bedacht, das flpydsk_enable_controller den Motor abschaltet. Daher wichen CurrentDisk->motor und Realität vonnander ab
- Shell gibt nun Dateinamen statt "1:/" bei retry an.
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:46:29 15.06.2010 Titel: |
|
Zitieren |
Rev. 520:
Vorbereitung fat-modul für Schreiben |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:24:13 15.06.2010 Titel: |
|
Zitieren |
Revision 521:
- flpydsk_writeSector gebaut und in devicemanager.c genutzt
- Fat-Treiber verbessert (Kürzungen, Scope von Variablen, seltsame return-Konstruktionen; 100 Zeilen gespart bei mehr Funktionen (singleSectorWrite)) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:52:01 16.06.2010 Titel: |
|
Zitieren |
Revision 522:
boot2.asm: wurde erneut gehotfixt, indem der stack von 1FFFFh nach 3FFFFh geschoben wurde
Nun hat Kernel.bin im RM Platz zwischen 3000h und ca. 40000h (Stack), also knapp 250000 bytes.
makefile: der kernel wird bewusst mit -O3 gebildet, um erstens einen größeren Kernel mit ca. 130K zu erhalten und zweitens Fehlermöglichkeiten mit O3 zu testen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:19:45 16.06.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:42:18 17.06.2010 Titel: |
|
Zitieren |
Rev. 523:
Vorbereitung für verbessertes file read/write in fat.h/c (fopen ausgetauscht, fopenFileName und Helper-Fkt. ergänzt) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:54:01 17.06.2010 Titel: |
|
Zitieren |
Rev. 524:
strchr war bereits vorhanden in der userlib, nun auch in util.h/.c (kernel) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:47:42 17.06.2010 Titel: |
|
Zitieren |
Revision 525:
- Screenshot wird (fehlerhaft) mit fat.c erzeugt
- fopenFileName erkennt nun Partition
- boot2.map wieder entfernt
- Zahlreiche Formatierungen und kleinere Änderungen/Optimierungen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:55:26 18.06.2010 Titel: |
|
Zitieren |
rev. 526 (noch fehlerhaft in fat.c):
Am Ende von fopenFileName ist ein Fehler versteckt, der zu einem #PF führt.
Bitte um Hilfe bei der Fehlersuche. Die eingebauten printf helfen mir nicht weiter, weil es bei realPC und verschiedenen Sims ganz anders reagiert. Bei qemu kommt reboot. VMWare und VBox zeigen den Fileptr im Heap.
Nach dem #PF kann man mittels Strg+s bei manchen Simulationen weiter machen. Einmal existiert screen.txt offenbar bereits und einmal nicht.
Man kann auf real PC auch ENTER eingeben und z.B. ttt.elf laden. Die shell ist nicht sofort kaputt. Erst wenn man zurück kommt von ttt.elf geht nichts mehr.
Man startet einen Thread aus dem Keyboard-Treiber, also Interrupt, dann Fehler, schon wieder "Interrupt", dann erneut Strg+s ...
:schland: |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:35:31 18.06.2010, insgesamt 5-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:09:36 18.06.2010 Titel: |
|
Zitieren |
Rev. 527:
kleine verbesserung durch globales fileTemp in fat.c für fopenFileName
Wenn man bei realPC vorher die Floppy quick-formatiert, damit das screen.txt wirklich neu ins Verzeichnis geschrieben wird, dann läuft es fehlerfrei durch. Die Datei hat aber trotz Anzeige des Sektor-Schreibens noch keinen Inhalt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:06:12 18.06.2010 Titel: |
|
Zitieren |
Rev. 528:
- FILEPTR durch FILE* ersetzt
- fileTemp auf heap
- FAT-Debugging verbessert
Problem: bei Strg+s wird der root dir Eintrag und die Daten geschrieben, leider noch nicht die FAT-Cluster-Kette |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:25:58 18.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:03:08 18.06.2010 Titel: |
|
Zitieren |
Rev. 529:
- NULL Pointer abgefangen bei fopenFileName Rückgabewert (fwrite und fclose unterbinden)
- DEBUG verbessert
Problem: FAT1 u. FAT2 werden noch nicht geschrieben |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:41:56 19.06.2010 Titel: |
|
Zitieren |
Rev. 530: Zwischenschritt
fclose angepasst, so dass FAT1 u. FAT2 geschrieben werden, wenn notwendig.
Allerdings ist jetzt noch ein merkwürdiger Fehler enthalten.
FAT wird noch nach root dir geschrieben.
Vielleicht findet jemand den Fehler durch Vergleich 529/530 (AFK) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:45:07 19.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:16:57 19.06.2010 Titel: |
|
Zitieren |
Rev. 531: Zwsichenstand (Arbeitsversion)
Zweites write nach root dir "zerschießt" |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:54:28 19.06.2010 Titel: |
|
Zitieren |
Revision 532:
- Floppy-Motor-Bug behoben.
- Optimierungen und Kürzungen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:04:15 19.06.2010 Titel: |
|
Zitieren |
Rev. 533:
Freeze nach dem Laden eliminiert! Liegt an free(fileptr) in fclose (fat.c)
Kleinigkeiten im Code von fat.c angepasst
FAT-debugging auf Lesen/Schreiben reduziert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:05:06 19.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:17:39 20.06.2010 Titel: |
|
Zitieren |
Rev. 534: Noch Versuchsversion zur Klärung
Durch einen völlig unverständlichen Hotfix geht es nun!
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | 1 2 3 4 5 6 7 8 9 10 11 12 | // fatWrite (fileptr->volume, 0, 0, true); // TEST: das klappt nicht überschreibt auch die root dir
uint32_t i, sectorFAT;
for (i=0, sectorFAT=globalLastFATSectorRead; i<1/*fileptr->volume->fatcopy*/; i++, sectorFAT+=fileptr->volume->fatsize)
{
printf("\ni: %u sectorFAT: %u", i,sectorFAT);
if (singleSectorWrite(sectorFAT, globalBufferFATSector, fileptr->volume) != CE_GOOD)
{
return CLUSTER_FAIL_FAT16;
}
}
globalFATWriteNecessary = false;
waitForKeyStroke(); | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | // fatWrite (fileptr->volume, 0, 0, true); // TEST: das klappt nicht überschreibt auch die root dir
uint32_t i, sectorFAT;
for (i=0, sectorFAT=globalLastFATSectorRead; i<1/*fileptr->volume->fatcopy*/; i++, sectorFAT+=fileptr->volume->fatsize)
{
printf("\ni: %u sectorFAT: %u", i,sectorFAT);
if (singleSectorWrite(sectorFAT, globalBufferFATSector, fileptr->volume) != CE_GOOD)
{
return CLUSTER_FAIL_FAT16;
}
}
globalFATWriteNecessary = false;
waitForKeyStroke(); | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | // fatWrite (fileptr->volume, 0, 0, true); // TEST: das klappt nicht überschreibt auch die root dir
uint32_t i, sectorFAT;
for (i=0, sectorFAT=globalLastFATSectorRead; i<1/*fileptr->volume->fatcopy*/; i++, sectorFAT+=fileptr->volume->fatsize)
{
printf("\ni: %u sectorFAT: %u", i,sectorFAT);
if (singleSectorWrite(sectorFAT, globalBufferFATSector, fileptr->volume) != CE_GOOD)
{
return CLUSTER_FAIL_FAT16;
}
}
globalFATWriteNecessary = false;
waitForKeyStroke(); | |
Vielleicht sind das Spiegelungen beim Schreiben auf die Floppy. Am ANfang hatten wir da auch Probleme. Müsste so etwas sein. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:46:06 20.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:20:35 20.06.2010 Titel: |
|
Zitieren |
Revision 535:
- Projektfile von VC++ 2008 auf 2010 umgestellt
- file.c/.h gelöscht, fat12.c weiter aufgeräumt
- Kleinere Änderungen/Optimierungen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:53:41 20.06.2010 Titel: |
|
Zitieren |
Rev. 536:
- HOTFIX von fclose nach fatWrite (nur für FAT12) übertragen, damit dies allgemein funktioniert
- initializeDMA wieder von außen zugänglich gemacht und für flpydsk_read_directory ("fdir") reaktiviert (kein Erfolg)
- DEBUG-Ausgaben in fat.c zurück gesetzt, feste printf gelöscht
Strg+s (Screenshot) gelangt nun endgültig via device manager und fat.h/c auf die Floppy Disk. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:57:05 20.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:50:09 20.06.2010 Titel: |
|
Zitieren |
Dass das mit dem DMA nichts zu tun hat, habe ich ja bereits gesagt... |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:14:41 20.06.2010 Titel: |
|
Zitieren |
Rev. 537:
fat.c: flushdata ersetzt
So wie es aussieht, läuft noch alles
MrX: bitte Motorsteuerung checken (flushdata hatte vorher singleSectorWrite auch in fwrite!) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:32:58 20.06.2010 Titel: |
|
Zitieren |
Revision 538:
- Floppy-Motor-Bug behoben: Global-Access wurde nicht initialisiert. (Danke für die Hilfe bei der Bugsuche, ehenkes)
- devicemanager/fat/floppy/usb: Schnittstelle geändert, Gerät wird mit übergeben als void* (nicht disk_t*, sondern disk_t::data)
- Returnwerte von SectorRead/Write auf FS_ERROR umgestellt
- Optimierungen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:55:20 20.06.2010 Titel: |
|
Zitieren |
Rev. 539:
fat.c:
- Screenshot (Strg+s) funktioniert nun auch wiederholt (Rückgabewerte korrigiert in fat.c)
- Optimierungen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:21:47 21.06.2010 Titel: |
|
Zitieren |
Rev. 540:
- Screenshots werden nun zusammen gehängt in screen.txt
- fopenFileName wurde zu fopen und fopen zu fdopen umbenannt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:09:39 22.06.2010 Titel: |
|
Zitieren |
Rev. 541:
fat.c:
- globaler error abgeschaltet mittels precompiler, wird bisher nirgends verwendet
- kleinere formelle optimierungen im code |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:10:45 22.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:54:31 22.06.2010 Titel: |
|
Zitieren |
Rev. 542:
flpydsk.c:
Schreiben eines einzelnen Sektors auf Floppy gelöst: kein FDC_CMD_EXT_MULTITRACK !
Habe den HOTFIX in fatWrite entfernt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:55:06 22.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:40:19 22.06.2010 Titel: |
|
Zitieren |
Rev. 543:
fat.c: globaler error komplett eliminiert (code signifikant besser wartbar/lesbar) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:41:04 22.06.2010 Titel: |
|
Zitieren |
Revision 544:
- Codevereinfachungen in fat.c und time.c, diverse andere Kleinigkeiten |
Zuletzt bearbeitet von Erhard Henkes am 18:15:17 25.06.2010, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:03:51 25.06.2010 Titel: |
|
Zitieren |
Revision 545:
- fat.c: Optimierungen, kleine Korrekturen
-- Switches ggf. durch if/else ersetzt
-- fseek gibt nun FS_ERROR zurück
- devicemanager.c
-- getFilename analog zu getPartition
-- execute heißt nun executeFile
-- analyzeBootSector gibt nun FS_ERROR zurück
- Syscall/util.c: systemControl(SYSTEM_CONTROL todo) weist das OS an, zu rebooten/runterzufahren (nicht implementiert); reboot entfernt
- shell: Neues Kommando "reboot" - ruft systemControl auf |
Zuletzt bearbeitet von Erhard Henkes am 18:15:43 25.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:03:53 25.06.2010 Titel: |
|
Zitieren |
Rev. 546:
flipflop reset in init DMA entfernt, weil offenbar nicht notwendig beim slave (controller 1) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:53:17 26.06.2010 Titel: |
|
Zitieren |
Rev. 547: Experimentelle Variante (zum gemeinsamen Fehlersuchen)
Schreibvorgang auf usb-Stick mit FAT12 (analog Diskette) funktioniert!
usbWrite(...) funktioniert demnach.
Mit FAT16 und FAT32 formatierten sticks geht es noch nicht (Grund liegt somit im Write-Bereich für FAT16/32 des fat-Moduls)! Also nicht probieren.
(bei FAT32 bleibt er hängen beim Lesen, passiert also nichts. Bei FAT16 schreibt er screen.txt in die root dir. datei ist aber "beschädigt" (Windows) ).
Wie stellt man einen FAT12 usb-Stick her?
http://www.c-plusplus.de/forum/viewtopic-var-t-is-268632.html
Wo wird für Strg+s das Laufwerk festgelegt?
video.c, Zeile 249 ff.
| C/C++ Code: | // FILE* file = fopen("1:/screen.txt", "a+"); // TEST to write to Floppy
FILE* file = fopen("3:/screen.txt", "a+"); // TEST to write to usb-stick
| |
| C/C++ Code: | // FILE* file = fopen("1:/screen.txt", "a+"); // TEST to write to Floppy
FILE* file = fopen("3:/screen.txt", "a+"); // TEST to write to usb-stick
| |
| C/C++ Code: | // FILE* file = fopen("1:/screen.txt", "a+"); // TEST to write to Floppy
FILE* file = fopen("3:/screen.txt", "a+"); // TEST to write to usb-stick
| |
Evtl. LW-Nummer anpassen, falls stick z.B. auf 4 liegt.
Auf Floppy schreiben wurde momentan lahm gelegt und umgebogen, wie man sieht.
EDIT: mit frisch formatierten FAT32 usb-sticks klappt es bereits! (liegt also daran, dass unsere FAT-Routine noch nicht in die nachfolgenden Cluster der root dir gelangt) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 14:17:36 26.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:37:47 26.06.2010 Titel: |
|
Zitieren |
Rev. 548:
ckernel.c: floppymotor aus, nur, wenn die erste floppy da ist (cmos-abfrage)
fat.c: bei FAT32 fileptr->volume->FatRootDirCluster eingebaut anstelle "0" (wie bei FAT12 u. FAT16)
Offene Probleme:
FAT16-stick: rootdir entry ok, filesize ok, datei "beschädigt"
FAT32-stick: bei hoher Nummer des entry in der root dir: leere Datei, filesize == 0 |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:11:33 26.06.2010 Titel: |
|
Zitieren |
Rev. 549:
FAT16 Problem wurde gelöst, wurde versehentlich 0x0FF8 (FAT12-Konstante) eingetragen anstelle LAST_CLUSTER_FAT16 in fileCreateHeadCluster |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:32:07 26.06.2010 Titel: |
|
Zitieren |
Rev. 550:
fat.c: bug (bhandle in FindEmptyEntries war 16 bit) entfernt und kleine Optimierungen
Leider immer noch das Problem bei FAT32 mit dem screenshot, wenn bereits viele Einträge vorhanden sind: File bleibt bei size 0. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:26:09 27.06.2010 Titel: |
|
Zitieren |
Rev. 551:
Code-Optimierung usb2_msd.c (statische Check-Funktion ausgelagert und doppelt genutzt) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:46:10 27.06.2010 Titel: |
|
Zitieren |
Revision 552:
- pciDev_Array auf Heap gelegt
- pciDev_Array nur noch in pci.c genutzt
- Motorsteuerung jetzt "fertig"
- Projektmappe etwas umsortiert
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:27:49 27.06.2010 Titel: |
|
Zitieren |
Rev. 553: FAT32 bug gefunden, Schreiben funktioniert nun auch bei "vollen" Verzeichnissen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:47:54 27.06.2010 Titel: |
|
Zitieren |
Mehr oder weniger spontan haben wir uns grade entschieden (Naja, geplant war es ja schon etwas länger), die Versionsnummer von PrettyOS auf 0.0.1.0 zu erhöhen, weil folgendes vorhanden ist:
- Grundstrukturen des Kernels funktionieren (Das führe ich jetzt nicht einzelnd auf
)
- Unterstützung für Floppy und USB. (Schreibend und lesend)
- Unterstützung für FAT12, 16 und 32. (Schreibend und lesend)
Die letzte Stelle (a.b.c.d) wird mit jeder Revision inkrementiert, aber bei Veränderungen der höheren Versionszahlen zurückgesetzt, also fangen wir dort jetzt wieder von 0 an.
Version 0.0.1.0 (Rev. 554):
- Strg+u schreibt jetzt auf USB-Stick (den ersten im disk-Array)
- Strg+s schreibt aufs erste Floppy-Laufwerk
|
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:32:37 27.06.2010 Titel: |
|
Zitieren |
Rev. 555: 0.0.1.1
Korrekturen in usb2_msd.c (Transfer Check)
Test auf meinem Developer-PC:
Beim port-check des EHCI wird inzwischen alles ausgefiltert, was nicht als USB Mass Strorage Device in unserem Sinne taugt (web cam, hub, card reader).
Der card reader wurde als 3:\ (hinter Floppy und RAMDisk) eingetragen. Ein neu angesteckter Stick als 4:\
Ich war nun gespannt auf strg+u, aber alles hat bestens geklappt. Da der card reader (wegen fehlender card) kein FAT aufzuweisen hatte, wurde brav der stick mit FAT32 auf 4:\ gewählt.
Zum Glück hat MrX auf mich gehört und den FAT-Test implementiert.
video.c, zeile 253:
| C/C++ Code: | | if(disks[i] && disks[i]->type == ScreenDest && (disks[i]->partition[0]->type == FAT12 || disks[i]->partition[0]->type == FAT16 || disks[i]->partition[0]->type == FAT32))
| |
| C/C++ Code: | | if(disks[i] && disks[i]->type == ScreenDest && (disks[i]->partition[0]->type == FAT12 || disks[i]->partition[0]->type == FAT16 || disks[i]->partition[0]->type == FAT32))
| |
| C/C++ Code: | | if(disks[i] && disks[i]->type == ScreenDest && (disks[i]->partition[0]->type == FAT12 || disks[i]->partition[0]->type == FAT16 || disks[i]->partition[0]->type == FAT32))
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:46:51 28.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
08:17:45 28.06.2010 Titel: |
|
Zitieren |
Rev. 556:
* Aktualisiertes Makefile löscht bei 'make clean' wirklich alle temporären Dateien |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:58:52 28.06.2010 Titel: |
|
Zitieren |
Rev. 557: 0.0.1.2
- Kernel von 0x40000 nach 0x100000 verschoben (BL2, kernel.ld)
- Umbenennungen und Optimierungen in fat.h/c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:57:32 28.06.2010 Titel: |
|
Zitieren |
Rev. 558: 0.0.1.3
keyboard.c und userlib.c: bool keyPressed(VK key); [VK = Virtual Key analog winuser.h]
Rev. 559: 0.0.1.3
Korrektur: man muss shiftascii[...] nehmen wegen der Großbuchstaben.
Dann gibt das aber Probleme mit den Zahlen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:30:11 29.06.2010, insgesamt 2-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
10:27:50 29.06.2010 Titel: |
|
Zitieren |
Rev. 560:
* Xcode Projektfile hinzugefügt (BUILD funktioniert darin nicht, ist aber deutlich praktischer beim Bearbeiten des Sourcecodes als jede Datei einzeln zu öffnen) |
|
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
11:01:16 29.06.2010 Titel: |
|
Zitieren |
Rev. 561:
* Xcode Projektfile wieder entfernt, da svn wieder mal Probleme damit hatte
d.h. Rev. 561 entspricht Rev. 559 |
Zuletzt bearbeitet von Cuervo am 11:02:00 29.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:10:14 29.06.2010 Titel: |
|
Zitieren |
Rev. 562: 0.0.1.4
Korrektur bezüglich keyPressed(...)
ckernel.c in "idle loop":
| C/C++ Code: | /// TEST
if (keyPressed('A') && keyPressed(VK_LSHIFT)) {printf("\nshiftleft+A"); }
if (keyPressed('D') && keyPressed(VK_RSHIFT)) {printf("\nshiftright+D");}
if (keyPressed('1')) {printf("\n1");}
/// TEST | |
| C/C++ Code: | /// TEST
if (keyPressed('A') && keyPressed(VK_LSHIFT)) {printf("\nshiftleft+A"); }
if (keyPressed('D') && keyPressed(VK_RSHIFT)) {printf("\nshiftright+D");}
if (keyPressed('1')) {printf("\n1");}
/// TEST | |
| C/C++ Code: | /// TEST
if (keyPressed('A') && keyPressed(VK_LSHIFT)) {printf("\nshiftleft+A"); }
if (keyPressed('D') && keyPressed(VK_RSHIFT)) {printf("\nshiftright+D");}
if (keyPressed('1')) {printf("\n1");}
/// TEST | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:10:37 29.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:13:13 29.06.2010 Titel: |
|
Zitieren |
Rev. 563: Korrektur in syscall.c (&keyPressed vergessen, stand noch auf &nop)
nun auch ESC getestet:
| C/C++ Code: | | if (keyPressed('1') && keyPressed(VK_ESCAPE)) {printf("\nESC+1");} | |
| C/C++ Code: | | if (keyPressed('1') && keyPressed(VK_ESCAPE)) {printf("\nESC+1");} | |
| C/C++ Code: | | if (keyPressed('1') && keyPressed(VK_ESCAPE)) {printf("\nESC+1");} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:14:32 29.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:37:45 29.06.2010 Titel: |
|
Zitieren |
Version 0.0.1.5 (Rev. 564):
- Basisstrukturen für FS-Manager angelegt (weder endgültig noch in Benutzung)
- Namenskonflikten im FAT-Treiber vorgebeugt
- SectorRead, sectorWrite, singleSectorRead und singleSectorWrite jetzt in devicemanager.c
- in fat12.h aufgeräumt
- Bugfix: Keine zufälligen Zeichen mehr an Dateinamen angehängt (0-Terminierungsproblem)
- Bugfix: free akzeptiert nun 0-Pointer
- Diverse (Kleinigkeiten)
Soweit ich das sehe, funktioniert alles noch. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
22:05:03 30.06.2010 Titel: |
|
Zitieren |
Version 0.0.1.6:
- FAT_partition_t auf fsmanager umgestellt (Nutzt partition_t)
- Automatische Endungsergänzung funktioniert wieder (jetzt aber in Shell)
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:33:14 30.06.2010 Titel: |
|
Zitieren |
rev. 566:
userlib.h/c hat nun srand und rand:
hello.elf:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | PrettyOS [Version 0.0.1.6] Console 0: HELLO ELF
--------------------------------------------------------------------------------
================================================================================
C - Testprogramm!
--------------------------------------------------------------------------------
! Hello World !
94 26602 30017 18297 20363 13015 28509 15290 29003 24399
3339 28849 17055 19424 4588 15756 6098 11834 1351 21383
18431 155 14763 14082 4564 25482 30678 20183 15765 18376
20694 32234 8292 29828 23406 31490 25791 15822 24763 23255
15434 32590 15383 108 24271 12086 29246 26526 31363 7541
17328 32253 31115 13102 15958 32220 16574 18024 4711 32676
19373 22023 11917 13678 18912 16891 26436 1232 8547 21431
11651 29430 31362 10980 6303 5877 14544 25175 18284 1629
1390 321 23717 28685 20105 3238 6798 22860 24613 19729
25047 12565 31257 7301 6084 11697 1883 20662 14219 10380
____ <>_<> _______ ___
[] | .---|'"`|---. (_______) |_|_|_|_|_|_|| []
-o-'`o"O-OO-OO-O"o' `-oo---oo-'`-oo-----oo-'`-o--
--------------------------------------------------------------------------------
Wednesday, June 30, 2010, 23:32:12 34 s runtime. CPU: 3816 MHz / | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | PrettyOS [Version 0.0.1.6] Console 0: HELLO ELF
--------------------------------------------------------------------------------
================================================================================
C - Testprogramm!
--------------------------------------------------------------------------------
! Hello World !
94 26602 30017 18297 20363 13015 28509 15290 29003 24399
3339 28849 17055 19424 4588 15756 6098 11834 1351 21383
18431 155 14763 14082 4564 25482 30678 20183 15765 18376
20694 32234 8292 29828 23406 31490 25791 15822 24763 23255
15434 32590 15383 108 24271 12086 29246 26526 31363 7541
17328 32253 31115 13102 15958 32220 16574 18024 4711 32676
19373 22023 11917 13678 18912 16891 26436 1232 8547 21431
11651 29430 31362 10980 6303 5877 14544 25175 18284 1629
1390 321 23717 28685 20105 3238 6798 22860 24613 19729
25047 12565 31257 7301 6084 11697 1883 20662 14219 10380
____ <>_<> _______ ___
[] | .---|'"`|---. (_______) |_|_|_|_|_|_|| []
-o-'`o"O-OO-OO-O"o' `-oo---oo-'`-oo-----oo-'`-o--
--------------------------------------------------------------------------------
Wednesday, June 30, 2010, 23:32:12 34 s runtime. CPU: 3816 MHz / | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | PrettyOS [Version 0.0.1.6] Console 0: HELLO ELF
--------------------------------------------------------------------------------
================================================================================
C - Testprogramm!
--------------------------------------------------------------------------------
! Hello World !
94 26602 30017 18297 20363 13015 28509 15290 29003 24399
3339 28849 17055 19424 4588 15756 6098 11834 1351 21383
18431 155 14763 14082 4564 25482 30678 20183 15765 18376
20694 32234 8292 29828 23406 31490 25791 15822 24763 23255
15434 32590 15383 108 24271 12086 29246 26526 31363 7541
17328 32253 31115 13102 15958 32220 16574 18024 4711 32676
19373 22023 11917 13678 18912 16891 26436 1232 8547 21431
11651 29430 31362 10980 6303 5877 14544 25175 18284 1629
1390 321 23717 28685 20105 3238 6798 22860 24613 19729
25047 12565 31257 7301 6084 11697 1883 20662 14219 10380
____ <>_<> _______ ___
[] | .---|'"`|---. (_______) |_|_|_|_|_|_|| []
-o-'`o"O-OO-OO-O"o' `-oo---oo-'`-oo-----oo-'`-o--
--------------------------------------------------------------------------------
Wednesday, June 30, 2010, 23:32:12 34 s runtime. CPU: 3816 MHz / | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:34:52 30.06.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:24:58 02.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.8:
- Farbwechsel-Fehler vielleicht behoben (Beim Interrupt geschah es vermutlich)
- fopen in Betrieb genommen (leichter Fehler noch: Append geht noch nicht, wird morgen korrigiert)
- Synchronisation userlib-Header
- malloc-Alignment in einigen Fällen von PAGESIZE auf 0 geändert
- ... |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:13:30 02.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.9:
- fseek und fclose in Betrieb genommen
- 'a'-Bug behoben
- FAT_file_t fast komplett aufgeräumt
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:11:44 03.07.2010 Titel: |
|
Zitieren |
Rev. 569 (0.0.1.9)
Neu: arrow.c und ARROW.ELF (User-Programm erstellt von ehenkes, um die Möglichkeiten von keyPressed unf srand/rand zu demonstrieren und anderen Lust zu machen ebenfalls tolle Spielideen umzusetzen) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:12:39 03.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:30:40 03.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.10:
- makefile fügt ARROW.ELF automatisch dem Image hinzu
- HELLO.ELF wiederhergestellt
- ehenkes Arrow-Spiel verbessert
-- ESC beendet Programm
-- getch statt sleep am Ende
-- Bugfixes&Optimierungen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:40:28 03.07.2010 Titel: |
|
Zitieren |
Rev. 571 (0.0.1.10):
arrow.c/elf verbessert zum Abschluss (Abfrage von Taste Q für quit) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:15:54 05.07.2010 Titel: |
|
Zitieren |
Rev. 572 (0.0.1.11):
neu in fat.h/c:
FS_ERROR FAT_remove (const char* fileName, FAT_partition_t* part)
@MrX: bitte einbinden, falls nicht schon erfolgt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:16:31 05.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:38:49 05.07.2010 Titel: |
|
Zitieren |
Rev. 573 (0.0.1.12):
- FAT_remove korrigiert
- FS_ERROR FAT_rewind(FAT_file_t* fileptr)
Anmerkungen:
1) FAT_remove: strcpy(fileptr->name, fileName); // must be 8+3 formatted first (muss das im FS manager passieren?) // strcpy muss evtl. noch angepasst werden auf strncpy mit 11 zeichen
2) FAT_rewind: // fileptr->seek = 0; // has to happen in FS manager
3) FAT_rename: noch nicht implementiert, muss erst noch diskutiert werden, ob dabei ein copy und delete erfolgen darf
@MrX: das endgültige Einbinden / Testen sollten wir zusammen durchführen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:47:45 05.07.2010, insgesamt 3-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:20:26 06.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.13:
- FAT_rewind gelöscht und durch rewind im fsmanager ersetzt, da rewind(file) äquivalent zu fseek(file, 0, SEEK_SET) ist und das im fsmanager erledigt werden kann und soll.
- FAT-remove nimmt nun einen partition_t* statt FAT_partition_t*
- FAT_remove in fsmanager "integriert"
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:45:25 06.07.2010 Titel: |
|
Zitieren |
Bei FAT_rewind bin ich mir nicht ganz sicher, es existiert immerhin ein
FS_ERROR FAT_fseek(file_t* file, int32_t offset, SEEK_ORIGIN whence).
remove geht nicht, weil kein 8+3 Filename "screen__txt" übergeben wurde, sondern "screen.txt". Das wird jetzt im Filemanager erledigt, da die Funktion FormatFileName(...) seit neuestem dort ist.
Jetzt gehts (ausprobiert mit screen.txt auf Floppy). Habe den "remove" Test in video.c belassen für eigene Versuche (auskommentiert ab Zeile 273):
Rev. 575 (0.0.1.14) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:23:19 06.07.2010, insgesamt 3-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:47:33 06.07.2010 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: | Bei FAT_rewind bin ich mir nicht ganz sicher, es existiert immerhin ein
FS_ERROR FAT_fseek(file_t* file, int32_t offset, SEEK_ORIGIN whence). |
Ich bin mir völlig sicher.
Denn, wie ich schon sagte, rewind(file) ist äquivalent zu fseek(file, 0, SEEK_SET), also kann man rewind so implementieren, das es den o.g. fseek-Aufruf durchführt, welcher dann u.a. FAT_fseek aufruft. Genau so hab ich es gemacht. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:25:52 06.07.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:04:42 07.07.2010 Titel: |
|
Zitieren |
Rev. 576 (0.0.1.15):
FS_ERROR FAT_rename(const char* fileNameOld, const char* fileNameNew, partition_t* part)
FS_ERROR FAT_fileRename (FAT_file_t* fileptr, const char* fileName)
Getestet mit Floppy, funktioniert.
Testcode siehe video.c, Zeile 273 ff.
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | 1 2 3 4 5 6 7 8 9 10 | //rename test
waitForKeyStroke();
uint32_t error = rename(Pfad,"1:/scrnew.txt");
printf("\nrename test: error: %u", error);
// remove test
waitForKeyStroke();
error = remove(Pfad);
printf("\nremove test: error: %u", error);
waitForKeyStroke(); | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | //rename test
waitForKeyStroke();
uint32_t error = rename(Pfad,"1:/scrnew.txt");
printf("\nrename test: error: %u", error);
// remove test
waitForKeyStroke();
error = remove(Pfad);
printf("\nremove test: error: %u", error);
waitForKeyStroke(); | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | //rename test
waitForKeyStroke();
uint32_t error = rename(Pfad,"1:/scrnew.txt");
printf("\nrename test: error: %u", error);
// remove test
waitForKeyStroke();
error = remove(Pfad);
printf("\nremove test: error: %u", error);
waitForKeyStroke(); | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:25:06 07.07.2010 Titel: |
|
Zitieren |
Rev. 577 (0.0.1.16):
rename funktioniert nun auch mit rename(Pfad,"scrnew.txt") und mit Floppy und USB MSD.
Test in video.c ab Zeile 273 (auskommentiert)
getFilename angepasst, damit keine Pfadangabe vor dem Filenamen notwendig ist.
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 | const char* getFilename(const char* path)
{
if (strchr((char*)path,'/')==NULL && strchr((char*)path,'|')==NULL && strchr((char*)path,'\\')==NULL)
{
return path;
}
else
{
// ...
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | const char* getFilename(const char* path)
{
if (strchr((char*)path,'/')==NULL && strchr((char*)path,'|')==NULL && strchr((char*)path,'\\')==NULL)
{
return path;
}
else
{
// ...
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | const char* getFilename(const char* path)
{
if (strchr((char*)path,'/')==NULL && strchr((char*)path,'|')==NULL && strchr((char*)path,'\\')==NULL)
{
return path;
}
else
{
// ...
}
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:39:36 07.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.17:
- FormatFileName wieder in fat.c (War doch besser dort aufgehoben)
- initrd etwas umgebaut |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:48:40 08.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.18
- fsmanager auf fgetc/fputc umgestellt
-- Bedingt durch fehlendes caching im FAT-Treiber ists sehr langsam
- FAT_fread/FAT_fwrite nur noch intern im FAT-Treiber genutzt
- getch im Kernel eingebaut -> CPU-Sparen mit hlt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:33:59 09.07.2010 Titel: |
|
Zitieren |
Erste Tests:
strg+s (screenshot auf floppy) und strg+u (screenshot auf usb-stick) gehen noch gleich schnell, Schreibvorgänge sind im FAT-Modul bereits gecacht.
ttt.elf laden:
a1) Floppy real: wird jedes byte einzeln per sector lesen geladen (lese-cache notwendig), real abgebrochen zum Schutz des FDD
a2) Floppy Qemu: geht (etwas langsamer ^^)
b1) USB-Stick real: #PF (schreiben in read-only area ??), entweder bug eingebaut oder technik geht so nicht (MrX: bitte prüfen und kommentieren)
b2) USB-Stick VMWare-Player: wird jedes byte einzeln per sector lesen geladen (lese-cache notwendig), interessanter Dauertest für OS und Stick (auch nett: Stick ziehen, dauer-rot auf screen ^^)
Ein interessanter Trümmerhaufen, aus dem Phoenix aus der Asche wieder erstehen soll.
Die Grundfrage ist die, ob nach erfolgreichem Read-Cache-Einbau die Performance nicht doch leidet durch die vielen zusätzlichen Abläufe zwischen dem Lesen der Bytes mit fgetc. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:52:31 09.07.2010, insgesamt 6-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:59:59 09.07.2010 Titel: |
|
Zitieren |
0.0.1.19 (SVN Rev. 580)
Read Cache für readSector funktioniert wie gewünscht.
Leider existiert ein Problem beim Laden von usb-stick (Ursache noch nicht untersucht) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:47:37 10.07.2010 Titel: |
|
Zitieren |
0.0.1.20 (Rev. 581)
Problem: malloc spinnt! (seit 0.0.1.18) keiner weiß warum ^^
Es passiert, wenn ein programm einmal geladen wird (muss nicht ausgeführt werden)
file->name von pointer auf array umgestellt, wegen Analogie zu FAT_file->name (dort exakt 8+3), hilft aber nicht beim aktuellen Problem, sollte aber ansonsten fehlersicherer sein, da man dabei nicht vergessen kann malloc(...) auszuführen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 08:11:55 10.07.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
09:22:14 10.07.2010 Titel: |
|
Zitieren |
malloc/free beginnend vom Start verfolgt:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | void* malloc(uint32_t size, uint32_t alignment)
{
//...
// debug
textColor(0x0E);
printf("\nmalloc: %X",address);
textColor(0x0F);
waitForKeyStroke();
return address;
}
void free(void* address)
{
// debug
textColor(0x0E);
printf("\nfree: %X",address);
textColor(0x0F);
waitForKeyStroke();
//...
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | void* malloc(uint32_t size, uint32_t alignment)
{
//...
// debug
textColor(0x0E);
printf("\nmalloc: %X",address);
textColor(0x0F);
waitForKeyStroke();
return address;
}
void free(void* address)
{
// debug
textColor(0x0E);
printf("\nfree: %X",address);
textColor(0x0F);
waitForKeyStroke();
//...
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | void* malloc(uint32_t size, uint32_t alignment)
{
//...
// debug
textColor(0x0E);
printf("\nmalloc: %X",address);
textColor(0x0F);
waitForKeyStroke();
return address;
}
void free(void* address)
{
// debug
textColor(0x0E);
printf("\nfree: %X",address);
textColor(0x0F);
waitForKeyStroke();
//...
} | |
Fazit: Da passt nix zusammen!
Beweis-Foto: http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_20_malloc_free_problem.PNG
| Code: | 1 2 3 4 5 6 7 8 9 10 | 1 2 3 4 5 6 7 8 9 10 | malloc free
--------------------------------------
C0000000
C0000048
00000000
C0004CC0
C0204CC0
C0000568
C0000690
C0000038
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 | malloc free
--------------------------------------
C0000000
C0000048
00000000
C0004CC0
C0204CC0
C0000568
C0000690
C0000038
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 | malloc free
--------------------------------------
C0000000
C0000048
00000000
C0004CC0
C0204CC0
C0000568
C0000690
C0000038
| |
usw.
Absoluter Nonsens zur Zeit. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 09:39:47 10.07.2010, insgesamt 4-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
10:37:27 10.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.21
- malloc auf Placement umgestellt (HACK), free auskommentiert (HACK)
-> PrettyOS funktioniert wieder, Fehler in malloc
- Memory-Leak in executeFile behoben (durch HACK von oben wirkungslos) und unsinnigen Code dort weggemacht
- Ehenkes Umbau von file_t::name auf statisches Array zurückgebaut |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:36:49 10.07.2010 Titel: |
|
Zitieren |
| Zitat: | | PrettyOS funktioniert wieder | stimmt leider nicht!
Ich werde versuchen, die Ursachen zu finden und zu korrigieren. Bitte keine Änderungen vornehmen, bis ich das Committen wieder frei gebe. Hinweise auf den konkreten Haupt-Fehler sind natürlich gerne gesehen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 11:48:59 10.07.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:00:32 10.07.2010 Titel: |
|
Zitieren |
Rev. 583: 0.0.1.22
zwischenstand: log in malloc zum aufspüren von fehlern
heap expansion evtl. nicht ok |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:42:35 10.07.2010 Titel: |
|
Zitieren |
Rev. 584 (0.0.1.24)
Zwischenstand zur Fehlersuche beim Expandieren des Heaps
Committen wieder frei gegeben
Fragen:
1) Wo liegt der Fehler im MM (Heap)?
2) Warum löst 1:\... das aus? |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 13:44:11 10.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:52:54 10.07.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:16:15 10.07.2010 Titel: |
|
Zitieren |
Rev. 586 (0.0.1.26):
HEAP_MIN_GROWTH = 0x40000;
#define PLACEMENT_BEGIN ((uint8_t*)0x1200000) // 18 MiB (vorher 16 MiB)
(Tobiking meint, das die Veränderung der Liste von außen erfolgen könnte, daher Tests mit 16/17/18/19 MiB als Placement-Untergrenze. Hatte hohen Einfluss.)
bei mir unter qemu bei 1:\... oder 1:|... Division by zero mit eip 0x104504 (kernel.map: 0x00105499 _FAT_fread)
Die Fehlersuche ist bisher über das Eingrenzen der Symptome nicht hinaus gewachsen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:28:31 10.07.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:27:35 10.07.2010 Titel: |
|
Zitieren |
Rev. 587 (0.0.1.27)
Heap-Problem erstmal gelöst: Regions Liste für Heap von 0xA00000 bis 0xE00000 gelegt. Da "unten" scheint es sicherer zu sein als zwischen 16 MiB und 20 MiB.
Tobiking hat da auch schon negative Erfahrungen bei VBox gemacht, er sprach von tasking_install.
jetzt geht real und auf qemu auch wieder 3:/ttt usw.
#define _MALLOC_FREE_ sorgt für infos über malloc/free und zeigt den neuen Heap-Logger, der die "Regions", die Bausteine des Heaps, aufführt.
Wer das MM-Problem weiter bearbeiten will:
kheap.c: | C/C++ Code: | | static const uint32_t HEAP_MIN_GROWTH = 0x40000; | |
| C/C++ Code: | | static const uint32_t HEAP_MIN_GROWTH = 0x40000; | |
| C/C++ Code: | | static const uint32_t HEAP_MIN_GROWTH = 0x40000; | |
kheap.h:| C/C++ Code: | // Placement allocation
#define PLACEMENT_BEGIN ((uint8_t*) 0xA00000) // 10 MiB // TEST vorher 16 MiB
#define PLACEMENT_END ((uint8_t*) 0xE00000) // 14 MiB // TEST vorher 20 MiB | |
| C/C++ Code: | // Placement allocation
#define PLACEMENT_BEGIN ((uint8_t*) 0xA00000) // 10 MiB // TEST vorher 16 MiB
#define PLACEMENT_END ((uint8_t*) 0xE00000) // 14 MiB // TEST vorher 20 MiB | |
| C/C++ Code: | // Placement allocation
#define PLACEMENT_BEGIN ((uint8_t*) 0xA00000) // 10 MiB // TEST vorher 16 MiB
#define PLACEMENT_END ((uint8_t*) 0xE00000) // 14 MiB // TEST vorher 20 MiB | |
Vorschlag aus IRC #lost von bluecode: magic einbauen und bei jedem malloc/free überprüfen, dann würden wir heap corruption zeitnah feststellen.
placement: A00000h
regions: B2A000h
Da liegt Folgendes vor dem Heap:
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 1 2 3 4 5 6 7 8 | kernel_pd = malloc(sizeof(page_directory_t), PAGESIZE);
kernel_pd->tables[i] = malloc(sizeof(page_table_t), PAGESIZE);
// Setup the page tables for the kernel heap (3GB-4GB), unmapped
page_table_t* heap_pts = malloc(256*sizeof(page_table_t), PAGESIZE);
bittable = malloc(128*1024, 0);
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | kernel_pd = malloc(sizeof(page_directory_t), PAGESIZE);
kernel_pd->tables[i] = malloc(sizeof(page_table_t), PAGESIZE);
// Setup the page tables for the kernel heap (3GB-4GB), unmapped
page_table_t* heap_pts = malloc(256*sizeof(page_table_t), PAGESIZE);
bittable = malloc(128*1024, 0);
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | kernel_pd = malloc(sizeof(page_directory_t), PAGESIZE);
kernel_pd->tables[i] = malloc(sizeof(page_table_t), PAGESIZE);
// Setup the page tables for the kernel heap (3GB-4GB), unmapped
page_table_t* heap_pts = malloc(256*sizeof(page_table_t), PAGESIZE);
bittable = malloc(128*1024, 0);
| |
In paging.c wurde auch folgendes geändert in phys_init():
| C/C++ Code: | // Check that 10 MiB-20 MiB is free for use
if (!memorymap_availability(entries, 10*1024*1024, 20*1024*1024))
{
textColor(0x0C);
printf("The memory between 10 MiB and 20 MiB is not free for use. OS halted!\n");
for (;;);
} | |
| C/C++ Code: | // Check that 10 MiB-20 MiB is free for use
if (!memorymap_availability(entries, 10*1024*1024, 20*1024*1024))
{
textColor(0x0C);
printf("The memory between 10 MiB and 20 MiB is not free for use. OS halted!\n");
for (;;);
} | |
| C/C++ Code: | // Check that 10 MiB-20 MiB is free for use
if (!memorymap_availability(entries, 10*1024*1024, 20*1024*1024))
{
textColor(0x0C);
printf("The memory between 10 MiB and 20 MiB is not free for use. OS halted!\n");
for (;;);
} | |
Also bleiben für die regions-Verwaltung des Heap momentan:
E00000h - B2A000h = 2D6000h = 2973696 Byte
| C/C++ Code: | typedef struct
{
uint32_t size;
bool reserved;
} region_t;
| |
| C/C++ Code: | typedef struct
{
uint32_t size;
bool reserved;
} region_t;
| |
| C/C++ Code: | typedef struct
{
uint32_t size;
bool reserved;
} region_t;
| |
Größe: 4+1 Byte = 5 Byte
Anzahl regions: 2973696 Byte / 5 Byte = 594739
Heap-Area FF000000h - C0000000h = 1056964608 Byte
1056964608 Byte / 594739 regions = 1777 Byte/region (passt, wackelt und hat Luft ) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:55:25 11.07.2010, insgesamt 10-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
20:09:32 10.07.2010 Titel: |
|
Zitieren |
Rev. 588:
* Keysound.elf als Userprogramm hinzugefügt, macht immer Beep wenn man eine Taste drückt (A-Z) |
Zuletzt bearbeitet von Cuervo am 20:28:19 10.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:41:00 11.07.2010 Titel: |
|
Zitieren |
0.0.1.28 - Rev: 589
- stack im BL 2 nach 0x99999 (korrekt: 0x9FFFF, s.u.), da kernel jetzt bei 0x100000
- kheap, paging (alles auf 10 MiB bis 20 MiB umgebaut)
VBox und VMWare beklagen sich bei eingeschaltetem _MALLOC_FREE_, laufen aber ohne gut.
Real PC und qemu laufen mit und ohne. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:17:19 11.07.2010, insgesamt 3-mal bearbeitet |
|
 |
taljeth
Mitglied
Benutzerprofil
Anmeldungsdatum: 11.09.2009
Beiträge: 148
|
taljeth Mitglied
11:37:27 11.07.2010 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: | Rev. 589: (0.0.1.28)
- stack im BL 2 nach 0x99999, da kernel jetzt bei 0x100000 |
Euch ist schon klar, dass Zahlen, die mit 0x anfangen, Hexzahlen sind und 0x99999 und 0x100000 damit keine direkt aufeinanderfolgenden Zahlen sind?
Immerhin habt ihr damit versehentlich was richtig gemacht, denn damit kommt ihr schonmal dem BIOS nicht in die Quere, das in dem Bereich dazwischen liegt. 0x99999 ist trotzdem eine seltsame Adresse für den Stack (und eine schlechte noch dazu, wegen Alignment). |
_________________ Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.
Lowlevel - die deutschsprachige OS-Dev-Community
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:53:56 11.07.2010 Titel: |
|
Zitieren |
sorry, war 0x9FFFF
Wäre das korrekter? Läuft aber auch anders.
| Assembler Code: | mov ax,0xA000
mov ss,ax ; stack
xor sp,sp ; stackpointer: A0000h
| |
| Assembler Code: | mov ax,0xA000
mov ss,ax ; stack
xor sp,sp ; stackpointer: A0000h
| |
| Assembler Code: | mov ax,0xA000
mov ss,ax ; stack
xor sp,sp ; stackpointer: A0000h
| |
So sieht BL2 am Anfang zur Zeit aus:
| Assembler Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | ;boot2.asm
[map symbols boot2.map]
[Bits 16]
org 0x500
jmp entry_point ; go to entry point
;*******************************************************
; Includes and Defines
;*******************************************************
%include "gdt.inc' ; GDT definition
%include "A20.inc' ; A20 gate enabling
%include "Fat12.inc' ; FAT12 driver
%include "GetMemoryMap.inc' ; INT 0x15, eax = 0xE820
%define IMAGE_PMODE_BASE 0x100000 ; where the kernel is to be loaded to in protected mode
%define IMAGE_RMODE_BASE 0x3000 ; where the kernel is to be loaded to in real mode
ImageName db "KERNEL BIN'
ImageSize dd 0
;*******************************************************
; Data Section
;*******************************************************
msgLoading db 0x0D, 0x0A, "Jumping to OS Kernel...', 0
msgFailure db 0x0D, 0x0A, "Missing KERNEL.BIN', 0x0D, 0x0A, 0x0A, 0
entry_point:
cli
xor ax, ax ; null segments
mov ds, ax
mov es, ax
;=====================================================HOTFIX===ehenkes====
mov ax,0x9000
mov ss,ax ; stack
xor sp,sp
dec sp ; stackpointer: 9FFFFh
;=====================================================HOTFIX===ehenkes====
sti
A20:
call EnableA20 | |
| Assembler Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | ;boot2.asm
[map symbols boot2.map]
[Bits 16]
org 0x500
jmp entry_point ; go to entry point
;*******************************************************
; Includes and Defines
;*******************************************************
%include "gdt.inc' ; GDT definition
%include "A20.inc' ; A20 gate enabling
%include "Fat12.inc' ; FAT12 driver
%include "GetMemoryMap.inc' ; INT 0x15, eax = 0xE820
%define IMAGE_PMODE_BASE 0x100000 ; where the kernel is to be loaded to in protected mode
%define IMAGE_RMODE_BASE 0x3000 ; where the kernel is to be loaded to in real mode
ImageName db "KERNEL BIN'
ImageSize dd 0
;*******************************************************
; Data Section
;*******************************************************
msgLoading db 0x0D, 0x0A, "Jumping to OS Kernel...', 0
msgFailure db 0x0D, 0x0A, "Missing KERNEL.BIN', 0x0D, 0x0A, 0x0A, 0
entry_point:
cli
xor ax, ax ; null segments
mov ds, ax
mov es, ax
;=====================================================HOTFIX===ehenkes====
mov ax,0x9000
mov ss,ax ; stack
xor sp,sp
dec sp ; stackpointer: 9FFFFh
;=====================================================HOTFIX===ehenkes====
sti
A20:
call EnableA20 | |
| Assembler Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | ;boot2.asm
[map symbols boot2.map]
[Bits 16]
org 0x500
jmp entry_point ; go to entry point
;*******************************************************
; Includes and Defines
;*******************************************************
%include "gdt.inc' ; GDT definition
%include "A20.inc' ; A20 gate enabling
%include "Fat12.inc' ; FAT12 driver
%include "GetMemoryMap.inc' ; INT 0x15, eax = 0xE820
%define IMAGE_PMODE_BASE 0x100000 ; where the kernel is to be loaded to in protected mode
%define IMAGE_RMODE_BASE 0x3000 ; where the kernel is to be loaded to in real mode
ImageName db "KERNEL BIN'
ImageSize dd 0
;*******************************************************
; Data Section
;*******************************************************
msgLoading db 0x0D, 0x0A, "Jumping to OS Kernel...', 0
msgFailure db 0x0D, 0x0A, "Missing KERNEL.BIN', 0x0D, 0x0A, 0x0A, 0
entry_point:
cli
xor ax, ax ; null segments
mov ds, ax
mov es, ax
;=====================================================HOTFIX===ehenkes====
mov ax,0x9000
mov ss,ax ; stack
xor sp,sp
dec sp ; stackpointer: 9FFFFh
;=====================================================HOTFIX===ehenkes====
sti
A20:
call EnableA20 | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 11:58:00 11.07.2010, insgesamt 1-mal bearbeitet |
|
 |
taljeth
Mitglied
Benutzerprofil
Anmeldungsdatum: 11.09.2009
Beiträge: 148
|
taljeth Mitglied
12:11:33 11.07.2010 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: | sorry, war 0x9FFFF |
Okay. Ich hätte eher 0x9fc00 genommen, sonst macht ihr euch womöglich die EBDA kaputt. Solange ihr die nicht braucht, ist es aber eigentlich auch egal.
| Zitat: | Wäre das korrekter? Läuft aber auch anders.
| Assembler Code: | mov ax,0xA000
mov ss,ax ; stack
xor sp,sp ; stackpointer: A0000h
| |
| Assembler Code: | mov ax,0xA000
mov ss,ax ; stack
xor sp,sp ; stackpointer: A0000h
| |
| Assembler Code: | mov ax,0xA000
mov ss,ax ; stack
xor sp,sp ; stackpointer: A0000h
| |
|
Ist besser, weil das Alignment dann stimmt. Für die Korrektheit sollte das keine Rolle spielen, aber für Performance könnte es einen Unterschied machen. Nicht, dass das in einem Bootloader entscheidend wäre, aber solche Fehler macht man ja ganz gern konsequent überall...
Edit: Nein, in Wirklichkeit ist es vollkomener Blödsinn. Als allererstes kriegt ihr einen Overflow in sp und schreibt dann den Videospeicher voll. |
_________________ Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.
Lowlevel - die deutschsprachige OS-Dev-Community
Zuletzt bearbeitet von taljeth am 12:13:12 11.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:28:47 11.07.2010 Titel: |
|
Zitieren |
| Zitat: | | Ich hätte eher 0x9fc00 genommen |
| Assembler Code: | mov ax,0x9000
mov ss,ax ; stack
mov sp,0xfc00 ; stackpointer: 9FC00h
| |
| Assembler Code: | mov ax,0x9000
mov ss,ax ; stack
mov sp,0xfc00 ; stackpointer: 9FC00h
| |
| Assembler Code: | mov ax,0x9000
mov ss,ax ; stack
mov sp,0xfc00 ; stackpointer: 9FC00h
| |
So besser? Läuft auch.
Hauptsache der Kernel überfährt beim Laden ab 0x3000 im RM den Stack nicht. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:29:13 11.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:33:50 11.07.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:24:08 11.07.2010 Titel: |
|
Zitieren |
0.0.1.29 - Rev: 590
- printf mit task_switching eingerahmt, um VBox und VMWare mit malloc/free/heap-Diagnose laufen zu lassen
- Stack im BL2 noch etwas angepasst |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:50:38 11.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.30 - Rev: 591:
- Revision wird jetzt angegeben.
- synchronisation.c/.h hinzugefügt, enthält Code für semaphores (noch fehlerhaft)
-> zum testen: console.c z. 211 und 267 reinnehmen
- getCurrentMilliseconds im Userspace ergänzt, entsprechende Funktionen im Kernel ergänzt und umbenannt
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:22:37 12.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.31 - Rev: 592:
Lauffähige Version für weitere Versuche:
1) semaphore reicht noch nicht zum Schutz bei printf in malloc/free-Diagnose, daher zunächst noch task_switching false/true; lock/unlock in console.c auskommentiert
2) free konnten in usb2.c nicht angewendet werden ohne Absturz (daher auskommentiert für weitere Einzelversuche) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:32:15 12.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.32 - Rev: 593:
- Alignment bei malloc etwas sparsamer gehalten
- kleine formale Anpassungen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:13:28 13.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.33 - Rev: 594:
Einführung von:
void* malloc(uint32_t size, uint32_t alignment, char* comment)
Tastenkombination ESC+H führt zu:
void logHeapRegions()
Test mit qemu:
http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_33_heap_Logger.PNG
Damit kann man die Verwendung der Regions auf dem Heap leicht kontrollieren. Fehlentwicklungen wie Memory Leaks und sonstige Ungereimtheiten, aber auch das korrekte Wirken auf dem Heap können somit einfach entdeckt werden.
Damit bleiben wir unserem didaktischem Konzept treu. Welches OS lässt schon den Einblick in den Kernel Heap zu?
Vorsicht bei USB sticks:
Während strg+u (screenshot auf stick) nicht ESC+H verwenden! Zerstört den FS-Aufbau. Hier muss ein Lock eingesetzt werden. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:30:00 13.07.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:22:15 13.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.34 - Rev: 595:
- usb-Transfer "befreit" nun den Heap auch wieder vollständig
- malloc und free Diagnose nun auch sprechend
- Heap-Regions-Ausgabe nur noch auf Esc+H (also nicht automatisch bei Heap-Erweiterung) und nur noch reservierte Regions (spalte res. könnte entfallen)
Beispiel nach dem Start: http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_34_heap_Logger.PNG |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:07:09 13.07.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:56:45 13.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.35 - Rev. 596:
vm86.h/c eingebaut, damit es mal los geht |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:28:00 14.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.36 - Rev. 597:
(Experimentalzustand bezüglich VM86)
vm86 modul verankert in paging.c, task.c, irq.c und testweise umgesetzt in ckernel.c mit einem Programm vidswtch.com, das via incbin (data.asm) eingeschleust und im Speicher bei 0x100 zur Ausführung im VM86 positioniert wird.
Screenshot: http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_36_vm86.PNG
Startet man vidswtch.com unter Win XP: http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_36_vm86_windows.PNG
vidswtch.asm:
| Assembler Code: | [bits 16]
[section .text]
mov ax, 0013h
int 10h
int 3
| |
| Assembler Code: | [bits 16]
[section .text]
mov ax, 0013h
int 10h
int 3
| |
| Assembler Code: | [bits 16]
[section .text]
mov ax, 0013h
int 10h
int 3
| |
INT 10h mit AH = 00h u. AL = 13h: Grafikmodus, 320 x 200 Pixel, 256 Farben (ab MCGA) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:57:01 14.07.2010, insgesamt 6-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:49:11 14.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.37 - Rev. 598
- Bugfixes&Ergänzungen bei semaphores
- VM86-Dateien nach user/vm86 verlegt
- makefile baut die o.g. Dateien
- Projektfile aktualisiert |
Zuletzt bearbeitet von Mr X am 17:49:40 14.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:24:41 14.07.2010 Titel: |
|
Zitieren |
0.0.1.38 - Rev. 599:
r->... und ctx-> zurück gemappt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:16:11 14.07.2010 Titel: |
|
Zitieren |
rev. 600:
neuer versuch mit kleinem asm-prog |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:13:57 14.07.2010 Titel: |
|
Zitieren |
rev. 601:
asm-prog ausgetauscht für tests problem: popf ?? |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:25:32 15.07.2010 Titel: |
|
Zitieren |
rev. 602:
vm86.h in ordnung gebracht und fehlende opcodes (in/out) in vm86.c ergänzt, fehlen noch die Umsetzungen von echtem in/out.
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | case 0xEF: // outw
printf("outportw(edx, eax) does not yet work\n");
// outportw(edx, eax);
ctx->eip = (uint16_t) (ctx->eip + 1);
return true;
case 0xEE: // outb
printf("outportb(edx, eax) does not yet work\n");
// outportb(edx,eax);
ctx->eip = (uint16_t) (ctx->eip + 1);
return true;
case 0xED: // inw
printf("inportb(edx) does not yet work\n");
// eax = inportb(edx);
ctx->eip = (uint16_t) (ctx->eip + 1);
return true;
case 0xEC: // inb
printf("inportw(edx) does not yet work\n");
// eax = (eax & 0xFF00) + inportb(edx);
ctx->eip = (uint16_t) (ctx->eip + 1);
return true; | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | case 0xEF: // outw
printf("outportw(edx, eax) does not yet work\n");
// outportw(edx, eax);
ctx->eip = (uint16_t) (ctx->eip + 1);
return true;
case 0xEE: // outb
printf("outportb(edx, eax) does not yet work\n");
// outportb(edx,eax);
ctx->eip = (uint16_t) (ctx->eip + 1);
return true;
case 0xED: // inw
printf("inportb(edx) does not yet work\n");
// eax = inportb(edx);
ctx->eip = (uint16_t) (ctx->eip + 1);
return true;
case 0xEC: // inb
printf("inportw(edx) does not yet work\n");
// eax = (eax & 0xFF00) + inportb(edx);
ctx->eip = (uint16_t) (ctx->eip + 1);
return true; | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | case 0xEF: // outw
printf("outportw(edx, eax) does not yet work\n");
// outportw(edx, eax);
ctx->eip = (uint16_t) (ctx->eip + 1);
return true;
case 0xEE: // outb
printf("outportb(edx, eax) does not yet work\n");
// outportb(edx,eax);
ctx->eip = (uint16_t) (ctx->eip + 1);
return true;
case 0xED: // inw
printf("inportb(edx) does not yet work\n");
// eax = inportb(edx);
ctx->eip = (uint16_t) (ctx->eip + 1);
return true;
case 0xEC: // inb
printf("inportw(edx) does not yet work\n");
// eax = (eax & 0xFF00) + inportb(edx);
ctx->eip = (uint16_t) (ctx->eip + 1);
return true; | |
... muss context_v86_t erweitert werden. In registers_t ist das alles drinnen, evtl. gleich ganz ersetzen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:39:29 15.07.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:03:10 15.07.2010 Titel: |
|
Zitieren |
0.0.1.39 - Rev. 603:
irq.c und vm86.c: Korrekturen und in/out ergänzt
task.c: create_vm86_ctask eingefügt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:24:03 15.07.2010 Titel: |
|
Zitieren |
0.0.1.40 - Rev. 604:
Korrekturen im vm86 Modul (bezüglich useresp) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:21:19 16.07.2010 Titel: |
|
Zitieren |
0.0.1.41 - Rev. 605:
Korrekturen in vm86.c: ... noch weitere stack[0] und stack[2] vertauscht
Folgendes machen, wer den neuen Video Mode (320*200, 16 Farben, ab 0xA0000) sehen will:
irq.c, zeile 164: // waitForKeyStroke(); auskommentieren |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:31:28 16.07.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:04:44 16.07.2010 Titel: |
|
Zitieren |
0.0.1.42 - Rev: 606
vm86.h/c modul weiter bereinigt/optimiert
irq.c verbessert
neues vidswtch.asm (Beispiel) schaltet 320*200 Modus ein und dann zurck auf 80*50 |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:30:19 16.07.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:58:26 16.07.2010 Titel: |
|
Zitieren |
0.0.1.44 - Rev: 608:
HLT noch eingebaut in vm86.c (dort exit() aus task.c) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:49:35 16.07.2010 Titel: |
|
Zitieren |
Rev. 611:
wurde versehentlich einzeln geschickt
neu: vbe.c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:44:54 17.07.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:16:20 17.07.2010 Titel: |
|
Zitieren |
0.0.1.46 - Rev: 612
vbe.h/c weiter ergänzt. SetPixel getestet, funktioniert noch nicht, wie es soll. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:17:16 17.07.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:34:46 17.07.2010 Titel: |
|
Zitieren |
0.0.1.47 - Rev: 613
SetPixel funktioniert!
Problem war die y-Auflösung, die qemu hier bietet.
Da stehen keine 200 zur Verfügung.
Daher nun 13 gewählt für y. setPixel Klappt!
Problem ist im noch vm86-handler-modul. Die BIOS-Fkt. werden noch nicht wie im RM (z.B. test im bootloader) ausgeführt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:47:02 17.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:42:19 17.07.2010 Titel: |
|
Zitieren |
0.0.1.48 - Rev: 614
vm86-handler noch korrigiert, ändert aber nichts am video-verhalten |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:14:51 17.07.2010 Titel: |
|
Zitieren |
0.0.1.49 - Rev: 615:
Noch einige Korrekturen bei vm86.c (helfen aber leider nicht)
Bei rev. 607 wurde "PrettyOS" korrekt dargestellt, was die y-Auflösung angeht. Bitte Unterschied suchen helfen! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:24:37 17.07.2010 Titel: |
|
Zitieren |
0.0.1.50 - Rev: 616:
vm86.c: ip++ bei ctx->eip++ ergänzt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:59:39 17.07.2010 Titel: |
|
Zitieren |
0.0.1.51 - Rev: 617:
weitere Korrekturen in vm86.c (cs:eip und ip)
Löst aber immer noch nicht das Grafikdarstellungsproblem |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:56:46 17.07.2010 Titel: |
|
Zitieren |
0.0.1.52 - Rev: 618:
vm86.c: weitere versuche der verbesserung, hilft alles nichts
EDIT: ohne #define _VM_DIAGNOSIS_ reboot ganz vorne |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 11:57:30 17.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:04:57 17.07.2010 Titel: |
|
Zitieren |
0.0.1.53 - Rev: 619
roll-back bei vm86.c, irq.c, vm86.h auf vers. 607 |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:22:00 17.07.2010 Titel: |
|
Zitieren |
0.0.1.54 - Rev: 620
vm86.c: HLT nach exit() wieder eingebaut
Jetzt funktioniert es endlich so wie gewollt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:14:12 17.07.2010 Titel: |
|
Zitieren |
0.0.1.55 - Rev: 621
irq.c, vm86.c Restaurationsarbeiten laufen schrittweise an:
entscheidender Fehler: printf während vm86 (nun alles hinter Gitter) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:39:33 17.07.2010 Titel: |
|
Zitieren |
0.0.1.56 - Rev: 622:
wegen #PF auf VMWare bei 1045h und bei real PC bei 9FC3Fh zunächst alles frei gegeben für user von 0 - FFFFFh
Tests: Qemu, Bochs, Vbox gehen wie gewünscht.
VMWare und real PC zeigen die Grafik nicht.
Vermutung: Hardware-Frequenzen müssen noch in der SW eingestellt werden |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:48:36 17.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:12:52 18.07.2010 Titel: |
|
Zitieren |
0.0.1.57 - Rev: 623:
vm86.c: weiter korrigiert
Real PC zum ersten Mal ok! Rückschalten auf Textmodus 80*50 bei real PC noch nicht sauber funktionsfähig. Die Zeichen fehlen.
Bochs: http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_57_vm86_grafik.PNG (so sieht es inzwischen auch auf real PC aus) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:02:38 18.07.2010, insgesamt 3-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
16:43:36 18.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.58:
- Dokumentationsdatei hinzugefügt
- Vorbereitung für Scheduler-Sleep
- Optimierung beim task-switch
- Kleine Korrekturen/Optimierungen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:04:57 18.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.58 - Rev: 625
Rücksprung auf text mode gelöst, zuerst muss ein Mode mit AH=00 gewählt werden
| Assembler Code: | text_mode:
mov ax, 0x0002
int 0x10
mov ax, 0x1112
xor bl, bl
int 0x10 | |
| Assembler Code: | text_mode:
mov ax, 0x0002
int 0x10
mov ax, 0x1112
xor bl, bl
int 0x10 | |
| Assembler Code: | text_mode:
mov ax, 0x0002
int 0x10
mov ax, 0x1112
xor bl, bl
int 0x10 | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:06:19 18.07.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:50:10 18.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.58 - Rev: 626 (kernel stabil)
- Aktuelle Palette dargestellt anstelle grüne Linie
- BL2 (formal)
- vidswtch.asm (Marke gesetzt bei Schriftzug PrettyOS) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:02:20 19.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.59 - Rev: 628
- PageDirectory aus den vm86 Funktionen entfernt
- Linien in hellblau (9) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:05:26 19.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:29:39 19.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.61 - Rev: 630
- vidswtch.asm: Schriftzug PrettyOS entfernt
- vbe.h/c: drawCircle
- util.h/c: sqrt
Leider noch Reboot |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:15:51 19.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.62 - Rev: 631
FPU-Problem mit fabs und sqrt bezüglich vm86 zurückschalten in TextMode
daher line und drawCircle auskommentiert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:15:30 19.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.63
- Scheduler unterstützt jetzt das schlafen. Kein Busy-Sleep mehr
- timer: umgebaut auf scheduler-sleep, Funktionen umbenannt, aufgeräumt
- Bugfixes in synchronisation, list, ...; Umsortierung der Includes dort
- Funktionen von ckernel.c nach vbe.c ausgelagert
- Sound wieder aktiviert
- ... |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:25:13 19.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.64 Rev: 633
getVBEInfo eingebaut in vidswtch.asm, Daten ab 0x1000 (ES:DI) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:22:29 19.07.2010 Titel: |
|
Zitieren |
0.0.1.65 - Rev: 634
somone hat Info-Strukutren für Grafikeigenschaften eingefügt und übergibt diese bei 0x1000 aus dem vm86 task mit vidswtch.asm.
So ändern:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 | void vgaDebug()
{
printf("\nsizeof VgaInfoBlock_t: %X\n",sizeof (VgaInfoBlock_t));
printf("signature: %s\n", pVga->VESASignature);
printf("version: %u\n", pVga->VESAVersion);
printf("OEMString: %s\n", pVga->OEMStringPtr);
printf("Capabilities: %X\n", pVga->Capabilities);
printf("VideoModePtr: %X\n", pVga->VideoModePtr);
printf("TotalMem: %u\n", pVga->TotalMemory);
printf("reserved: %u\n", pVga->reserved[236]);
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | void vgaDebug()
{
printf("\nsizeof VgaInfoBlock_t: %X\n",sizeof (VgaInfoBlock_t));
printf("signature: %s\n", pVga->VESASignature);
printf("version: %u\n", pVga->VESAVersion);
printf("OEMString: %s\n", pVga->OEMStringPtr);
printf("Capabilities: %X\n", pVga->Capabilities);
printf("VideoModePtr: %X\n", pVga->VideoModePtr);
printf("TotalMem: %u\n", pVga->TotalMemory);
printf("reserved: %u\n", pVga->reserved[236]);
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | void vgaDebug()
{
printf("\nsizeof VgaInfoBlock_t: %X\n",sizeof (VgaInfoBlock_t));
printf("signature: %s\n", pVga->VESASignature);
printf("version: %u\n", pVga->VESAVersion);
printf("OEMString: %s\n", pVga->OEMStringPtr);
printf("Capabilities: %X\n", pVga->Capabilities);
printf("VideoModePtr: %X\n", pVga->VideoModePtr);
printf("TotalMem: %u\n", pVga->TotalMemory);
printf("reserved: %u\n", pVga->reserved[236]);
}
| |
http://www.karig.net/os/001a.html <--- interessanter Link |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:49:56 19.07.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:53:28 19.07.2010 Titel: |
|
Zitieren |
0.0.1.66 - Rev. 635
somone hat vbe.h/c weiter ausgebaut und die Daten mittels vm86 task gezogen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
17:02:28 20.07.2010 Titel: |
|
Zitieren |
0.0.1.67 - Rev: 636
- bitmap via incbin includiert (font.bin, font.bmp)
- Bitmap Header auslesen, anzeigen test
- tool font2bin hinzugefügt (tools/src/font2bin.c, tools/font2bin.exe)
- data.asm erweitert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:12:57 20.07.2010 Titel: |
|
Zitieren |
vbe.h, zeile 9: | C/C++ Code: | | #define VM86_SWITCH_TO_TEXT ((void*)0x137) | |
| C/C++ Code: | | #define VM86_SWITCH_TO_TEXT ((void*)0x137) | |
| C/C++ Code: | | #define VM86_SWITCH_TO_TEXT ((void*)0x137) | |
somone: Was genau macht diese Version? wozu dient font2bin.exe? |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:25:37 20.07.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:40:42 20.07.2010 Titel: |
|
Zitieren |
0.0.1.68 - Rev: 637:
- vbe.h, zeile 9 korrigiert
- ckernel.c: grünes Rechteck 2 Pixel angehoben
- Ausgabe von VgaInfoBlock optimiert
- Erste 16 Videomodes werden ausgegeben (Video Modes Ptr)
- kleine Fehlerkorrekturen (auch konseqent %i gegen %u getauscht) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:44:14 20.07.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:55:04 20.07.2010 Titel: |
|
Zitieren |
0.0.1.69 - Rev: 638:
- Erste 16 Videomodes (0xFFFF zeigt Ende an) werden ausgegeben (Fehler behoben) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
15:43:50 21.07.2010 Titel: |
|
Zitieren |
version 0.0.1.70 - Rev: 639
vidswtch.asm
- superVGA modline 0101h (640x480x8) getestet, wieder einkommentiert
- Versuch Videomemory bei Adresse: 0xE0000000 anzusprechen (paging.c)
vbe.c/vbe.h
- versuch Bitmap zu blitten |
Zuletzt bearbeitet von Erhard Henkes am 23:41:46 21.07.2010, insgesamt 1-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
23:47:09 21.07.2010 Titel: |
|
Zitieren |
version 0.0.1.71 - Rev: 640
flpydsk.c
- void flpydsk_wait_irq() um sti() erweitert
kheap.c
- #define VIDEO_DATA_START ((uint8_t*)0xE0000000)
vbe.c
- Speicheradressen getestet
vidswtch.asm
- Speicheradressen getestet |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:14:09 22.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.72:
- current_console heißt nun currentConsole
- Codevereinfachungen in console.c
- Codeformatierungen
- [EDIT] Zahlreiche waitForKeyStroke() weggemacht |
Zuletzt bearbeitet von Mr X am 00:18:02 22.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:43:31 22.07.2010 Titel: |
|
Zitieren |
0.0.1.73 - Rev: 642
läuft, aber unklar, was genau gehen soll ...
@somone: bitte aufräumen und klar stellen, was passieren soll, was nicht geht, usw. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:07:04 22.07.2010 Titel: |
|
Zitieren |
0.0.1.74 - Rev: 643
VideoRam allokiert:
vbe.h:
| C/C++ Code: | | #define VIDEO_MEMORY 0xE0000000 // Beispiel VBox; für Qemu 0xF2000000 einsetzen | |
| C/C++ Code: | | #define VIDEO_MEMORY 0xE0000000 // Beispiel VBox; für Qemu 0xF2000000 einsetzen | |
| C/C++ Code: | | #define VIDEO_MEMORY 0xE0000000 // Beispiel VBox; für Qemu 0xF2000000 einsetzen | |
vbe.c:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | 1 2 3 4 5 6 7 8 9 10 11 12 | void setVideoMemory()
{
// size_of_video_ram
SCREEN = (uint8_t*) paging_acquire_pcimem(VIDEO_MEMORY);
printf("\nSCREEN (virt): %X\n",SCREEN);
for (uint32_t i=VIDEO_MEMORY; i<(VIDEO_MEMORY+0x1000000);i=i+0x1000) // 4 MiB video ram
{
printf("\t: %X",paging_acquire_pcimem(i));
}
waitForKeyStroke();
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | void setVideoMemory()
{
// size_of_video_ram
SCREEN = (uint8_t*) paging_acquire_pcimem(VIDEO_MEMORY);
printf("\nSCREEN (virt): %X\n",SCREEN);
for (uint32_t i=VIDEO_MEMORY; i<(VIDEO_MEMORY+0x1000000);i=i+0x1000) // 4 MiB video ram
{
printf("\t: %X",paging_acquire_pcimem(i));
}
waitForKeyStroke();
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | void setVideoMemory()
{
// size_of_video_ram
SCREEN = (uint8_t*) paging_acquire_pcimem(VIDEO_MEMORY);
printf("\nSCREEN (virt): %X\n",SCREEN);
for (uint32_t i=VIDEO_MEMORY; i<(VIDEO_MEMORY+0x1000000);i=i+0x1000) // 4 MiB video ram
{
printf("\t: %X",paging_acquire_pcimem(i));
}
waitForKeyStroke();
} | |
In mib:
| C/C++ Code: | | uint32_t PhysBasePtr; // 32-bit physical memory address | |
| C/C++ Code: | | uint32_t PhysBasePtr; // 32-bit physical memory address | |
| C/C++ Code: | | uint32_t PhysBasePtr; // 32-bit physical memory address | |
... kommt aber noch nicht an. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:23:24 22.07.2010 Titel: |
|
Zitieren |
0.0.1.75 - Rev: 644
qemu: 0xF2000000
mib korrigiert: in asm und vbe: 0x1200 (dennoch kommen keine daten in qemu) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:36:13 22.07.2010, insgesamt 1-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
18:58:53 22.07.2010 Titel: |
|
Zitieren |
0.0.1.76 - Rev: 645
vidswtch.asm
- erweitert
vbe.c/vbe.h
- erweitert
font.bin
- erneuert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:29:01 23.07.2010 Titel: |
|
Zitieren |
Zwischenstand Grafik:
0.0.1.77 - Rev: 646
zur korrekten abfrage des mib gehört die übergabe des video mode in cx:
| Assembler Code: | 1 2 3 4 5 6 7 8 | 1 2 3 4 5 6 7 8 | ModeInfoBlock:
xor ax, ax
mov es, ax
mov ax, 0x1200
mov di, ax
mov ax, 0x4F01
mov cx, 0x0101
int 10h | |
| Assembler Code: | 1 2 3 4 5 6 7 8 | ModeInfoBlock:
xor ax, ax
mov es, ax
mov ax, 0x1200
mov di, ax
mov ax, 0x4F01
mov cx, 0x0101
int 10h | |
| Assembler Code: | 1 2 3 4 5 6 7 8 | ModeInfoBlock:
xor ax, ax
mov es, ax
mov ax, 0x1200
mov di, ax
mov ax, 0x4F01
mov cx, 0x0101
int 10h | |
Die notwendige VideoRam-Größe findet man hier:
http://www.pcmag.com/encyclopedia_term/0,2542,t=VESA+modes&i=53780,00.asp
vidswtch.asm etwas ausgeräumt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 14:31:11 23.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:47:40 23.07.2010 Titel: |
|
Zitieren |
0.0.1.78 - Rev: 647
bei #define _FLOPPY_DIAGNOSIS_ noch motor on/off signalisiert. Vielleicht findet jemand den Grund, warum die Floppy-lampe (bochs) nach dem Laden eines Programms eingeschaltet bleibt.
Bei bochs übrigens: 0xE0000000 als video ram für video mode 0x0101
http://codepad.org/SeKnKNtX |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:51:42 23.07.2010, insgesamt 2-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
17:10:47 23.07.2010 Titel: |
|
Zitieren |
0.0.1.79 - Rev: 648
Grafik initalisierungsreihenfolge geändert so dass, mib->PhysBasePtr in SetVideoMemory() benutzt werden kann. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:55:45 23.07.2010 Titel: |
|
Zitieren |
0.0.1.80 - Rev: 649
Zwischneschritt:
- vidswtch.asm umgebaut
- automatisches Holen von TotalMemory und PhysBasePtr |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:39:20 23.07.2010 Titel: |
|
Zitieren |
0.0.1.81 - Rev: 650
Zwischenstand: VideoRam wird in Qemu korrekt geladen
Das ist aber auch das letzte |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:40:16 23.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:51:56 23.07.2010 Titel: |
|
Zitieren |
0.0.1.82 - Rev. 651
etwas besser, aber noch ziemlich kaputt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:27:18 23.07.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:58:45 23.07.2010 Titel: |
|
Zitieren |
0.0.1.83 - Rev: 652
zunächst mal "repariert".
Problem: ckernel.c, zeile 132 ff.
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | 1 2 3 4 5 6 7 8 9 10 | setVideoMemory();
initGraphics(640, 480, 8);
printf("\nSTOP vor switchToVideoMode");
waitForKeyStroke();
switchToVideomode();
printf("\nSTOP nach switchToVideoMode");
waitForKeyStroke(); | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | setVideoMemory();
initGraphics(640, 480, 8);
printf("\nSTOP vor switchToVideoMode");
waitForKeyStroke();
switchToVideomode();
printf("\nSTOP nach switchToVideoMode");
waitForKeyStroke(); | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | setVideoMemory();
initGraphics(640, 480, 8);
printf("\nSTOP vor switchToVideoMode");
waitForKeyStroke();
switchToVideomode();
printf("\nSTOP nach switchToVideoMode");
waitForKeyStroke(); | |
schaltet nicht in den gewünschten video mode |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:15:06 23.07.2010 Titel: |
|
Zitieren |
0.0.1.84 - Rev: 653
... geht wieder!
Umbau in vidswtch.asm hat geholfen
Bochs (E0000000), Qemu (F2000000), VMWare (D0000000)
VBox: klappt nicht mit Grafik (zeigt seltsamen phys base ptr) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:22:46 23.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:03:11 24.07.2010 Titel: |
|
Zitieren |
0.0.1.85 - Rev: 654
0x100 in ckernel. c und comments bei waitFor... |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:08:36 24.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.86:
- Doku nach documentation gelegt, Syscalls.odt ergänzt, enthält die geplanten Syscalls
- abs und sgn wie in vbe.c gewünscht nach util.c gelegt
- strg+t-Problem behoben
- Aufräumarbeiten (Codestyle) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:43:59 24.07.2010 Titel: |
|
Zitieren |
0.0.1.87 - Rev: 656
scheduler/task-log überarbeitet
Übersicht über Tasten-Kommandos:
strg + t : Task-Übersicht
strg + s : Screenshot auf Floppy
strg + u : Screenshot auf USB-MSD
ESC + h : Heap-Aufbau (Verwendung der Regions) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:09:08 24.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
09:34:42 24.07.2010 Titel: |
|
Zitieren |
0.0.1.88 - Rev. 657
bitmap-darstellung etwas verbessert (Versuch)
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | void bitmap()
{
uintptr_t bitmap_start = 0x2400 + sizeof(BitmapHeader_t);
uintptr_t bitmap_end = bitmap_start + 256*128;
uint32_t i = bitmap_end;
for(uint32_t y=0;y<256;y++)
{
for(uint32_t x=0;x<128;x++)
{
SCREEN[ x + y * mib->XResolution * mib->BitsPerPixel/8 ] = *(uint8_t*)(i * mib->BitsPerPixel/8 + bitmap_start);
i--;
}
}
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | void bitmap()
{
uintptr_t bitmap_start = 0x2400 + sizeof(BitmapHeader_t);
uintptr_t bitmap_end = bitmap_start + 256*128;
uint32_t i = bitmap_end;
for(uint32_t y=0;y<256;y++)
{
for(uint32_t x=0;x<128;x++)
{
SCREEN[ x + y * mib->XResolution * mib->BitsPerPixel/8 ] = *(uint8_t*)(i * mib->BitsPerPixel/8 + bitmap_start);
i--;
}
}
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | void bitmap()
{
uintptr_t bitmap_start = 0x2400 + sizeof(BitmapHeader_t);
uintptr_t bitmap_end = bitmap_start + 256*128;
uint32_t i = bitmap_end;
for(uint32_t y=0;y<256;y++)
{
for(uint32_t x=0;x<128;x++)
{
SCREEN[ x + y * mib->XResolution * mib->BitsPerPixel/8 ] = *(uint8_t*)(i * mib->BitsPerPixel/8 + bitmap_start);
i--;
}
}
}
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:00:11 24.07.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:15:23 24.07.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:29:51 24.07.2010 Titel: |
|
Zitieren |
Wenn auch weniger sichtbar, auch der Scheduler hat zuletzt große Fortschritte gemacht
Version 0.0.1.91:
- waitForTask eingebaut
- waitForKeyStrokes durch waitForTasks ersetzt -> wesentlich weniger Keystrokes nötig
- Syscalls.odt aktualisiert
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:24:18 24.07.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:04:28 24.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.93 - Rev. 662
Zwischen schritt:
Beim ersten Durchlauf zum Holen der vga- und mib-Daten Einstieg ohne switchToVideo.
läuft damit wieder auf VBox, Bochs, Qemu
Man sieht den mapping Vorgang.
Problem: Bild noch versetzt, Palette falsch.
RealPC:
<Cuervo> hab 3 getestet, einer kommt bis zur Shell, einer startet direkt neu und einer macht in einer Endlosschleife invalid opcode |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:44:25 24.07.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:08:06 24.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.94 - Rev. 663
ablauf in vidswtch.asm:
1) vga, mib
(video ram mappen)
2) switch
Nun wird das Bild auch auf realPC angezeigt (phys. base ptr: B000000 wird mit 256 MB nach virtuell E0000000-F0000000 gemappt) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:21:44 24.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:30:38 24.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.95:
- Syscalls umsortiert. Sämtliche Syscalls haben neue Nummern. Das erfordert, das alle Userprogramme neukompiliert werden. Das wurde in dieser Revision für alle Beiliegenden getan.
- Syscall.h/.c aufgeräumt, DEFN_SYSCALL und DECL_SYSCALL haben sich als überflüssig herausgestellt -> Entfernt, da unnützer Wartungsaufwand. (Relikt aus dem Tutorial von JM, der den Header aus dem kernel wohl auch im userspace includieren wollte.)
- Syscalls für Dateizugriff angelegt, sollte funktionieren. Die file_t-Struktur ist allerdings noch nicht (vollständig) implementiert, deren Member können aus dem Userspace nicht genutzt werden |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
21:28:35 24.07.2010 Titel: |
|
Zitieren |
version 0.0.1.96 - Rev: 665
- SCREEN mit der vermutlich fehlenden Farbpalette (im moment 256 Farben) gerade gerückt.
- Bitmap funktion um positionierung erweitert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:05:49 24.07.2010 Titel: |
|
Zitieren |
version 0.0.1.97
Zwischenstand zum Experimentieren mit den Paletten in SCREEN und BMP |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:20:32 25.07.2010 Titel: |
|
Zitieren |
0.0.1.98 - Rev: 667
Bitmap wird wieder angezeigt.
Folgender Code in bitmap(...) ist extrem kritisch und wurde daher nach einigen erfolglosen Versuchen auskommentiert:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | 1 2 3 4 5 6 7 8 9 10 11 12 13 | if(mib->BitsPerPixel == 8)
{
BMPInfo_t* bmpinfo = (void*)0x2400;
for(uint8_t j=0; j<256; j++)
{
ScreenPal[j].red = (bmpinfo->bmicolors[j].red) >> 6;
ScreenPal[j].green = (bmpinfo->bmicolors[j].green) >> 6;
ScreenPal[j].blue = (bmpinfo->bmicolors[j].blue) >> 6;
}
waitForTask(create_vm86_task(VM86_SETPALETTE)); // OK
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | if(mib->BitsPerPixel == 8)
{
BMPInfo_t* bmpinfo = (void*)0x2400;
for(uint8_t j=0; j<256; j++)
{
ScreenPal[j].red = (bmpinfo->bmicolors[j].red) >> 6;
ScreenPal[j].green = (bmpinfo->bmicolors[j].green) >> 6;
ScreenPal[j].blue = (bmpinfo->bmicolors[j].blue) >> 6;
}
waitForTask(create_vm86_task(VM86_SETPALETTE)); // OK
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | if(mib->BitsPerPixel == 8)
{
BMPInfo_t* bmpinfo = (void*)0x2400;
for(uint8_t j=0; j<256; j++)
{
ScreenPal[j].red = (bmpinfo->bmicolors[j].red) >> 6;
ScreenPal[j].green = (bmpinfo->bmicolors[j].green) >> 6;
ScreenPal[j].blue = (bmpinfo->bmicolors[j].blue) >> 6;
}
waitForTask(create_vm86_task(VM86_SETPALETTE)); // OK
}
| |
waitForTask(create_vm86_task(VM86_SETPALETTE)); <--- unkritisch
Vielen Dank übrigens an MrX für die Schaffung der Funktion waitForTask! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:46:17 25.07.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:44:28 25.07.2010 Titel: |
|
Zitieren |
0.0.1.99 - Rev: 668
Unglaublich, aber mit 255 anstelle 256 geht es.
Keine Ahnung, was da genau passiert.
Die Palette verändert sich übrigens nicht durch die durchgeführte Aktion.
Falls jemand weiß wie man die beiden Paletten abgleicht, bitte um Nachhilfe oder Link. Ansonsten empfiehlt es sich wohl, auf höhere Farbenauflösungen umzusteigen und die 256-Farben-Welt zu verlassen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:48:30 25.07.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:30:52 25.07.2010 Titel: |
|
Zitieren |
Rev. 0.0.1.100:
- setPalette an Funktion 4F08h angepasst (Seite 53 vbe3 spec)
- Komprimierung auf 6:6:6 eingestellt
| C/C++ Code: | typedef struct
{
uint8_t blue : 6;
uint8_t green : 6;
uint8_t red : 6;
uint8_t reserve : 6;
} __attribute__((packed)) RGBQuadPacked_t;
| |
| C/C++ Code: | typedef struct
{
uint8_t blue : 6;
uint8_t green : 6;
uint8_t red : 6;
uint8_t reserve : 6;
} __attribute__((packed)) RGBQuadPacked_t;
| |
| C/C++ Code: | typedef struct
{
uint8_t blue : 6;
uint8_t green : 6;
uint8_t red : 6;
uint8_t reserve : 6;
} __attribute__((packed)) RGBQuadPacked_t;
| |
klappt aber noch nicht
auch nach Korrektur
mov bx, 6
in vidstwch.asm, zeile 89 gehts auch nicht
mein Fazit: weg mit diesem Paletten Blödsinn, hin zu 24 bit colors! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:41:26 25.07.2010, insgesamt 1-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
14:21:21 25.07.2010 Titel: |
|
Zitieren |
version 0.0.1.101 - Rev: 670
- get/set VgaInfoBlock/ModeInfoBlock abgeändert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:51:52 25.07.2010 Titel: |
|
Zitieren |
version 0.0.1.102 - Rev: 671:
| Assembler Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | SetDacPalette:
mov ax, 0x4F08
mov bl, 0
mov bx, 6
int 10h
jmp exitvm86
GetDacPalette:
mov ax, 0x4F08
mov bl, 1
int 10h
jmp exitvm86
SetPalette:
mov ax, 0x4F09 ; Set/Get DAC Palette Format
mov bl, 0 ;=00h Set palette data
mov bx, 6 ; ??
mov cx, 0xFF
xor dx, dx
xor ax, ax
mov es, ax
mov di, 0x1500
int 10h
jmp exitvm86 | |
| Assembler Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | SetDacPalette:
mov ax, 0x4F08
mov bl, 0
mov bx, 6
int 10h
jmp exitvm86
GetDacPalette:
mov ax, 0x4F08
mov bl, 1
int 10h
jmp exitvm86
SetPalette:
mov ax, 0x4F09 ; Set/Get DAC Palette Format
mov bl, 0 ;=00h Set palette data
mov bx, 6 ; ??
mov cx, 0xFF
xor dx, dx
xor ax, ax
mov es, ax
mov di, 0x1500
int 10h
jmp exitvm86 | |
| Assembler Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | SetDacPalette:
mov ax, 0x4F08
mov bl, 0
mov bx, 6
int 10h
jmp exitvm86
GetDacPalette:
mov ax, 0x4F08
mov bl, 1
int 10h
jmp exitvm86
SetPalette:
mov ax, 0x4F09 ; Set/Get DAC Palette Format
mov bl, 0 ;=00h Set palette data
mov bx, 6 ; ??
mov cx, 0xFF
xor dx, dx
xor ax, ax
mov es, ax
mov di, 0x1500
int 10h
jmp exitvm86 | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
17:41:47 25.07.2010 Titel: |
|
Zitieren |
version 0.0.1.103 - Rev: 672
- set/getDACPalette funktionen definiert.
- setPalette(RGBQuadPacked_t* RGB); Funktion.
- getPalette() in ckernel.c eingefügt, liefert noch 0 werte.
- setPalette(ScreenPal); in bitmap(); erstmal wieder auskommentiert. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:22:44 25.07.2010 Titel: |
|
Zitieren |
0.0.1.104 - Rev: 673
- Reihenfolge der Paletteneinträge in BMP gezeigt Aufbau: umgekehrt und BGR0
(leider hat unser Bild nicht die Standardpalette mit den ersten 16 Farben)
- SetPalette führt noch zu einem seltsamen "Textbild" mit niedriger Auflösung, daher auskommentiert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:23:10 25.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:00:59 25.07.2010 Titel: |
|
Zitieren |
0.0.1.105 - Rev: 674
- Aufbau in ScreenPal (jetzt bei 0x1600) wird gezeigt und stimmt
- setPalette kann man nun endlich ausführen
Wirkung noch nicht wie gewünscht |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:01:29 25.07.2010, insgesamt 1-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
20:26:27 25.07.2010 Titel: |
|
Zitieren |
version 0.0.1.106 - Rev: 675
- Neue SetDAC(...); Funktion (32bit protected mode)
- bitmap(...) Funktion um "if(mib->DirectColorModeInfo == 1)..." erweitert
mit der SetDAC(...); Funktion wird jetzt die palette gesetzt, aber noch nicht mit dem gewünschten ergebnis... |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
21:59:33 25.07.2010 Titel: |
|
Zitieren |
version 0.0.1.107 - Rev: 676
- DAC Funktionen zum testen hinzugefügt
void Write_DAC_C_Palette(...);
void Set_DAC_C(...);
void Read_DAC_C_Palette(...);
void Get_DAC_C(...);
- Zum anzeigen der Palette im VideoMode
printPalette(...); |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:29:35 25.07.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:27:40 26.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.108 - Rev: 677
set_DAC_C verwendet die Ports:
http://wiki.osdev.org/VGA_Hardware#VGA_Registers
Frage: warum wird die BMP-Palette nicht richtig ausgelesen/übertragen?
Alle structs und Konstanten überprüfen, notfalls roll-back.
Hauptvorteil ist ja nun das richtige Setzen der palette mittels set_DAC_C.
Nun muss die bmp-palette wieder richtig hingeschoben werden. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:19:06 26.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:49:41 26.07.2010 Titel: |
|
Zitieren |
0.0.1.109 - Rev: 678
Paletten-Thema gelöst!
In die BMPInfo_t war ein Fehler (ein kleines Sternchen!) rein geraten, so ist es richtg:
| C/C++ Code: | typedef struct
{
BitmapHeader_t bmiheader;
RGBQuad_t bmicolors[256];
} __attribute__((packed)) BMPInfo_t; | |
| C/C++ Code: | typedef struct
{
BitmapHeader_t bmiheader;
RGBQuad_t bmicolors[256];
} __attribute__((packed)) BMPInfo_t; | |
| C/C++ Code: | typedef struct
{
BitmapHeader_t bmiheader;
RGBQuad_t bmicolors[256];
} __attribute__((packed)) BMPInfo_t; | |
... und die Reihenfolge ist bei beiden Paletten "umgekehrt".
Leider findet man so etwas nicht richtig beschrieben (selbst in der vbe3 spec nicht).
Nun muss man nur noch die eigentlichen Bitmap-"Daten" korrekt platzieren.
Läuft auf qemu-EHCI. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:54:45 26.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:59:38 26.07.2010 Titel: |
|
Zitieren |
0.0.1.110 - Rev: 679
... auch im else-zweig beide umgekehrt. Dort hilft es aber leider noch nicht zur richtigen Palette. Nun hat man aber ein gutes Vorbild im if-Zweig und kann dort mal nachschauen, was da anders läuft. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
13:31:26 26.07.2010 Titel: |
|
Zitieren |
version 0.0.1.111 - Rev: 680
ModeInfoBlock_t erweitert (vbe 2.0):
uint32_t OffScreenMemOffset; // pointer to start of off screen memory
uint16_t OffScreenMemSize; // amount of off screen memory in 1k units
dementsprechend vgaDebug(...); angepasst und die Anzeige der Videomodes korrigiert.
printPalette(...); Funktioniert jetzt, leider noch mit der SET_DAC_C funktion. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:50:46 26.07.2010 Titel: |
|
Zitieren |
0.0.1.112: korrekte Geometrie! korrekte Farben!
- bitmap(...) verbessert: mehrere bitmaps gleichzeitig, vereinfacht (ohne if/else)
- bitmaps werden direkt geladen (nicht mehr über 0x2400)
kernel.bin (mit zwei bmp-files): 219.296 Bytes (den kernel habe ich versuchsweise schon über 300K aufgepustet, wurde brav geladen vom BL2)
ok: qemu, VBox, VMWare, Bochs
nicht ok: Test-PC (offenbar BL2-Ladeproblem)
Hier noch eine Alternative: http://img837.imageshack.us/i/previewu.png/ (einfach in 256-farben-bmp umwandeln)
Aber ein png-Loader wäre echt gut |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:29:36 26.07.2010, insgesamt 7-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:43:27 26.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.113:
- Ein paar Syscalls implementiert
- Userfunktionen eingebaut
- Aufräumarbeiten |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:11:09 27.07.2010 Titel: |
|
Zitieren |
Großer Umbau der Verzeichnisstruktur. Bitte momentan nicht comitten, da mergen nahezu unmöglich ist. Ich plane, diesen Morgen fertig zu werden. |
Zuletzt bearbeitet von Mr X am 00:11:25 27.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:11:55 27.07.2010 Titel: |
|
Zitieren |
Momentan: Commit-Sperre wegen Umbauarbeiten (MrX)
MrX wird das Repo wieder frei geben |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:47:37 27.07.2010, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:46:54 27.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.113 - Revision 683:
- Großer Verzeichnisstrukturumbau: Treibertypen nun in Ordnern zusammengefasst/gruppiert. /include-Ordner weggemacht
Committen wieder freigegeben, bin fertig |
Zuletzt bearbeitet von Mr X am 00:47:23 27.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:47:50 27.07.2010 Titel: |
|
Zitieren |
Erhard, bist Du mein Echo? |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:03:21 27.07.2010 Titel: |
|
Zitieren |
0.0.1.114 - Rev: 684
Bit-Array RGBQuadPacked_t umgebaut, damit diese GCC 4.4 Meldung verschwindet |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:35:50 27.07.2010, insgesamt 1-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
22:58:26 27.07.2010 Titel: |
|
Zitieren |
version 0.0.1.115 - Rev: 685
- font.bmp 1D gestalltet, alte font in font_layout.bmp umbenannt
- draw_char(...); Funktion
- vbe.c/.h aufgeräumt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:00:31 28.07.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:35:29 28.07.2010 Titel: |
|
Zitieren |
Meine aktuelle Variante von void draw_char(char font_char, void* bitmapMemStart)
http://codepad.org/YFcjKoMQ
Läuft allerdings auch nocht nicht korrekt. Vielleicht hilft es aber weiter. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
23:37:16 28.07.2010 Titel: |
|
Zitieren |
version 0.0.1.116 - Rev: 686
-vbe.c/h
draw_char(...), gibt jetzt zeichen aus, allerdings noch spiegelverkehrt.
-kernel/video/font.h
hinzugefügt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:21:16 29.07.2010 Titel: |
|
Zitieren |
0.0.1.117 - Rev: 687
- Buchstaben jetzt richtig herum
- Parameter bei draw_char und draw_string ergänzt
- draw_string "laufend" gemacht und beispielhaft eingesetzt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
16:40:06 29.07.2010 Titel: |
|
Zitieren |
version 0.0.1.118 - Rev: 688
- data.asm
font.bmp kernel include via incbin gelöscht. (kernel größe verkleinern)
- ckernel.c
Bitmap Palette Entries, Debug meldung erstmal wieder auskommientiert
- Source/tools/font2bin.exe
gelöscht |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:10:47 29.07.2010 Titel: |
|
Zitieren |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
22:57:03 29.07.2010 Titel: |
|
Zitieren |
version 0.0.1.118 - Rev: 689
vbe.c/.h
- aufgeräumt
- starte umsetzung von getDisplayStart() |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:03:45 30.07.2010 Titel: |
|
Zitieren |
version 0.0.1.119 - Rev: 690
- getDisplayStart() funktionierend gemacht (Werteübergabe an 0x1300 u. 0x1302)
- netzwerk etwas überarbeitet
Funktioniert auf meinem Test-PC. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:11:30 30.07.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:35:33 30.07.2010 Titel: |
|
Zitieren |
Version 0.0.1.120:
- irq.c vereinfacht (switch statt stark verschachtelter ifs) und aufgeräumt
- PrettyOS fragt nun, ob VBE-Test durchgeführt werden soll, mit 's' kann dieser übersprungen werden
- Dokumentation aktualisiert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:22:27 31.07.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:33:38 01.08.2010 Titel: |
|
Zitieren |
0.0.1.122 - Rev: 693
aktueller stand netzwerk |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:02:49 01.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.123
- irq-System nochmals überarbeitet
-- GPF, PF, NM und invalidOpcode werden nun auch über einen Handler angesprochen (ISR)
-- Handler-Array auf 256 vergrößert (für ISR), Offset von 32 wird automatisch addiert bei IRQs (Und Bugfix gleich dazu: IRQs > 255-32 funktionieren nun)
- VBox-Workaround in ehci.c entfernt. Offenbar nicht mehr nötig
- Bug mit Cursor in console.c behoben
- draw_char und draw_string in drawChar und drawString umbenannt (Styleguide-Konformität)
- Aufräumarbeiten |
Zuletzt bearbeitet von Mr X am 21:03:41 01.08.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:28:59 01.08.2010 Titel: |
|
Zitieren |
0.0.1.124 - Rev: 695 (leider nicht upgedatet in ckernel.c) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:32:33 02.08.2010 Titel: |
|
Zitieren |
0.0.1.125 - Rev: 696
nun wird
| C/C++ Code: | | network_bufferPointer = *((uint16_t*)(BaseAddressRTL8139_MMIO + 0x3A)); | |
| C/C++ Code: | | network_bufferPointer = *((uint16_t*)(BaseAddressRTL8139_MMIO + 0x3A)); | |
| C/C++ Code: | | network_bufferPointer = *((uint16_t*)(BaseAddressRTL8139_MMIO + 0x3A)); | |
genutzt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:30:10 02.08.2010 Titel: |
|
Zitieren |
0.0.1.126 - Rev: 697
| C/C++ Code: | #define NETWORK_BUFFER_SIZE 8192
network_bufferPointer = *((uint16_t*)(BaseAddressRTL8139_MMIO + 0x3A)) % NETWORK_BUFFER_SIZE; | |
| C/C++ Code: | #define NETWORK_BUFFER_SIZE 8192
network_bufferPointer = *((uint16_t*)(BaseAddressRTL8139_MMIO + 0x3A)) % NETWORK_BUFFER_SIZE; | |
| C/C++ Code: | #define NETWORK_BUFFER_SIZE 8192
network_bufferPointer = *((uint16_t*)(BaseAddressRTL8139_MMIO + 0x3A)) % NETWORK_BUFFER_SIZE; | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
19:50:22 02.08.2010 Titel: |
|
Zitieren |
version 0.0.1.127 - Rev: 698
vbe.c/h
- drawChar(...), Set_DAC_C herausgenommen um nicht für jeden zu zeichenden Buchstaben die Palette neu zu setzen (Performance schub)
- setDisplayStart(...) Hinzugefügt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:49:47 02.08.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:20:26 02.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.129 - Rev: 700
Korrekte Lese-Zeiger-Positionierung in rtl8139.c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:05:06 03.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.130 - Rev: 701
- Ausdruck verbessert
- 1 sec halt nach packet (ideal für PC)
Letzte Version, die momentan sauber läuft |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 09:37:09 08.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
10:31:32 03.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.131:
- Kernel startet (nach Tastendruck, damit man die Fehlermeldung lesen kann) neu, wenn der kerneltask beendet wird (#PF o.ä.)
- Aufgeräumt (insbesondere task.c/h, dort cli/sti geändert) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:04:37 03.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.132 - Rev. 703
- ipTcpStack.h/c umgebaut, damit ARP-Requests/Replies ausgewertet werden
- struct ip in ipTcpStack.h überarbeitet
screenshot: http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_132_arp-request.PNG
Bereits in der Vorgänger-Version (commit von MrX) ist (auf qemu und VMWare festgestellt) ein neuer mieser Bug drinnen, der zu #GPF und Reboot führen kann.
Das stört die Netzwerkbemühungen leider. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:28:56 03.08.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:26:13 04.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.133 - Rev. 704
Problem: GPF stoppt mit quitTask die shell ohne restart action
folgender HOTFIX in irq.c bewahrt vor dem Absturz:
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 1 2 3 4 5 6 7 8 | static void quitTask()
{
printf("| <Severe Failure - Task Halted> Press key for exit! |");
sti();
// while(!keyboard_getChar());
exit();
for (;;);
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | static void quitTask()
{
printf("| <Severe Failure - Task Halted> Press key for exit! |");
sti();
// while(!keyboard_getChar());
exit();
for (;;);
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | static void quitTask()
{
printf("| <Severe Failure - Task Halted> Press key for exit! |");
sti();
// while(!keyboard_getChar());
exit();
for (;;);
}
| |
Damit wird das exit() ausgeführt ohne Abhängigkeit vom Keyboard, das evtl. nicht mehr durchdringt.
Der Auslöser ist übrigens das quitTask() in irq.c, zeile 206, also in diesem Zweig:
| C/C++ Code: | | if (r->int_no < 32 && r->int_no != 7 && !(r->eflags & 0x20000)) // no VM bit | |
| C/C++ Code: | | if (r->int_no < 32 && r->int_no != 7 && !(r->eflags & 0x20000)) // no VM bit | |
| C/C++ Code: | | if (r->int_no < 32 && r->int_no != 7 && !(r->eflags & 0x20000)) // no VM bit | |
Tests dieses HOTFIX:
- VBox dreht völlig am Rad (#PF loop)
- VMWare schmiert beim Laden eines User-Programms ab
- Bochs läuft
- qemu läuft, shell kann aber auch zerstört werden
- echter PC läuft, Laden/Ausführen eines User-Programms klappt, anschließend beim Rücksprung erfolgt Fehler mit exit(), anschließend ist die shell kaputt (Neustart fehlt! )
Problem seit Version 0.0.1.131: shell / Beenden User-Programm (Rücksprung zur shell).
Auf jeden Fall haben wir jetzt eine Version, an der man die vbe-Aktivitäten und das Networking weiter untersuchen/ausbauen kann.
Falls der Fehler nicht aufgeklärt wird Roll-back zu 0.0.1.130
Solche Situationen werden immer wieder auftauchen, weil unsere Test-Mechanismen nicht ausreichen, solche Commits wie 0.0.1.131 von MrX zu verhindern. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:56:06 04.08.2010, insgesamt 6-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
17:44:01 04.08.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:18:16 04.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.135 - Rev: 706
- userlib.h/c korrigiert (file-funktionen hatten falsche syscall-Nummern) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:31:27 04.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:40:51 05.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.136 - Rev: 707
- senden mittels rtl8139 Netzwerkkarte vorbereitet |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
21:01:17 05.08.2010 Titel: |
|
Zitieren |
version 0.0.1.137 - Rev: 708
rtl8139_eeprom.c/.h Dateien Hinzugefügt
- Lesen u. Schreiben von EPROMS/EEPROMS mit 28/32 Pin belegung. |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
21:43:25 05.08.2010 Titel: |
|
Zitieren |
version 0.0.1.137 - Rev: 708
vbe.c/.h
- getPixel() Funktion hinzugefügt
- scaleBitmap() Funktion angefangen umzusetzen |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
21:57:35 05.08.2010 Titel: |
|
Zitieren |
version 0.0.1.137 - Rev: 710
scaleBitmap(...), in ckernel.c eingefügt |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
16:08:40 06.08.2010 Titel: |
|
Zitieren |
version 0.0.1.138 - Rev: 711
scaleBitmap(...), Funktioniert schon mal und Skaliert das Bild auf die Doppelte Größe, wird noch ausgearbeitet. |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
18:15:42 06.08.2010 Titel: |
|
Zitieren |
version 0.0.1.139 - Rev: 712
- bootscr.bmp ausgetauscht nach ehenkes vorschlag.
- scaleBitmap(...), aufgeräumt und weiter getestet. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:33:26 06.08.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:56:11 06.08.2010 Titel: |
|
Zitieren |
version 0.0.1.140 - Rev: 713
erste Sendeversuche zum experimentieren |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:50:19 06.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.141 - Rev: 714
Korrektur bei MAC-Adresse bei Tx
Klappt aber noch nicht |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:50:35 06.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:35:48 06.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.142 - Rev: 715
Korrektur bei Tx: Interrupt TOK klappt jetzt
qemu batch:| Code: | | qemu.exe -fda FloppyImage.img -soundhw pcspk -net nic,model=rtl8139,addr=1A,macaddr=00:12:12:12:12:12 -net tap,ifname=TAP2 -net user -localtime -usb -usbdevice disk:format=raw:dummy.bin | |
| Code: | | qemu.exe -fda FloppyImage.img -soundhw pcspk -net nic,model=rtl8139,addr=1A,macaddr=00:12:12:12:12:12 -net tap,ifname=TAP2 -net user -localtime -usb -usbdevice disk:format=raw:dummy.bin | |
| Code: | | qemu.exe -fda FloppyImage.img -soundhw pcspk -net nic,model=rtl8139,addr=1A,macaddr=00:12:12:12:12:12 -net tap,ifname=TAP2 -net user -localtime -usb -usbdevice disk:format=raw:dummy.bin | |
TAP2 mit IP 192.168.10.50 konfiguriert.
Mit qemu kommt es auch an (Kontrolle mit wireshark):
| Code: | arp-request: "5","2.110467","52:55:0a:00:02:02","Broadcast","ARP","Who has 192.168.10.50? Tell 10.0.2.2"
arp-reply: "6","2.110475","Plus_12:12:12","52:55:0a:00:02:02","ARP","192.168.10.50 is at 00:12:12:12:12:12" | |
| Code: | arp-request: "5","2.110467","52:55:0a:00:02:02","Broadcast","ARP","Who has 192.168.10.50? Tell 10.0.2.2"
arp-reply: "6","2.110475","Plus_12:12:12","52:55:0a:00:02:02","ARP","192.168.10.50 is at 00:12:12:12:12:12" | |
| Code: | arp-request: "5","2.110467","52:55:0a:00:02:02","Broadcast","ARP","Who has 192.168.10.50? Tell 10.0.2.2"
arp-reply: "6","2.110475","Plus_12:12:12","52:55:0a:00:02:02","ARP","192.168.10.50 is at 00:12:12:12:12:12" | |
| Zitat: |
Ethernet II, Src: Plus_12:12:12 (00:12:12:12:12:12), Dst: 52:55:0a:00:02:02 (52:55:0a:00:02:02)
Type: ARP (0x0806)
Address Resolution Protocol (reply)
Hardware type: Ethernet (0x0001)
Protocol type: IP (0x0800)
Hardware size: 6
Protocol size: 4
Opcode: reply (0x0002)
Is gratuitous: False
Sender MAC address: Plus_12:12:12 (00:12:12:12:12:12)
Sender IP address: 192.168.10.50 (192.168.10.50)
Target MAC address: 52:55:0a:00:02:02 (52:55:0a:00:02:02)
Target IP address: 10.0.2.2 (10.0.2.2) | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:15:49 07.08.2010, insgesamt 5-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:34:09 07.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.143 - Rev: 716
HOTFIX: in task.c , zeile 305: den reboot verhindert
| C/C++ Code: | if(currentTask == kernelTask) // TODO: Handle termination of shellTask
{
// systemControl(REBOOT);
} | |
| C/C++ Code: | if(currentTask == kernelTask) // TODO: Handle termination of shellTask
{
// systemControl(REBOOT);
} | |
| C/C++ Code: | if(currentTask == kernelTask) // TODO: Handle termination of shellTask
{
// systemControl(REBOOT);
} | |
Wenn ich das richtig sehe, sind die plötzlichen "reboots" weg, allerdings tauchen dennoch #GPF auf.
Da kann zwar der pid 0 (also kernel task) "verschwinden" (siehe strg+t), aber dennoch läuft es stabiler. Seit Version 0.0.1.131 (MrX) spielen da einige Sachen leider "verrückt".
Fazit: hat nicht geholfen, es müssen die cli/sti sein, die MrX "aufgeräumt" hat. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:07:42 08.08.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:04:44 08.08.2010 Titel: |
|
Zitieren |
0.0.1.144 - Rev: 717
in task.c cli()/sti() wieder eingefügt, um den reboot zu überwinden!
EDIT: #GPF (kernel) und #PF (user) tauchen immer noch auf. Richtig übel! Ich schlage einen Roll-back bei task.h/c (und damit zusammenhängende) vor.
Ich schlage vor, dass wir ein abgestimmtes Test-Szenario entwicklen und für jeden developer vorgeben, das ein Commit im Regelfall durchlaufen muss, um solche Folgen wie bei 0.0.1.131 zu verhindern. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:16:37 08.08.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:29:27 08.08.2010 Titel: |
|
Zitieren |
0.0.1.145 - Rev: 718
cli/sti noch etwas nachgebessert in task.c
erneuter #GPF: error code: 0 (!), anschließend reboot
es tauchen aber auch andere #GPF auf: GPF err code: 64912 eip: 113D50h
(intel (june 2010) 3A, 6-13: EXT=0 IDT=1 segment selelctor index: 00100010 = 0x22 = 34)
sieht immer noch nicht gut aus! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:59:47 08.08.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:46:10 08.08.2010 Titel: |
|
Zitieren |
Nun reicht es wirklich!
Roll-back bezüglich task.h/c (Version von 0.0.1.130 - Rev. 701 eingebaut, weitere Anpassungen waren glücklicherweise nicht notwendig)
0.0.1.146 - Rev: 719
qemu läuft.
VBox und VMware machen Probleme mit vbe (also 's'), VBox auch beim Überspringen von vbe noch GPF. Das konnten wir schon besser! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 11:55:36 08.08.2010, insgesamt 4-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
15:32:55 08.08.2010 Titel: |
|
Zitieren |
version 0.0.1.147 - Rev: 720
vbe.c/.h
| C/C++ Code: | typedef struct {
uint16_t x, y;
} CursorPosition_t;
| |
| C/C++ Code: | typedef struct {
uint16_t x, y;
} CursorPosition_t;
| |
| C/C++ Code: | typedef struct {
uint16_t x, y;
} CursorPosition_t;
| |
Hinzugefügt und mit DrawChar(...) newline experimentiert.
erstmal bewusst nicht aus video.h genommen um erstmal eine strikte trennen zwischen Textmodus und VESA zu halten. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
16:13:06 08.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.148:
- Schäden behoben, cli/sti-Änderungen aus task.c wieder ausgebaut, andere Änderungen eingebaut. Funktioniert wohl nun wieder alles.
- Patch für VM86.c von Ideenlos
- Codeformatierungen |
|
|
|
 |
Ideenlos
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.08.2010
Beiträge: 7
|
Ideenlos Mitglied
16:26:59 08.08.2010 Titel: |
|
Zitieren |
Revision 722
Bootloader-stage2
- So verändert (arbeitet jetzt im UnrealMode), dass der Kernel theoretisch beliebig groß werden kann. |
Zuletzt bearbeitet von Ideenlos am 16:53:48 08.08.2010, insgesamt 1-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
17:11:27 08.08.2010 Titel: |
|
Zitieren |
version 0.0.1.150 - Rev: 723
Ordner Struktur in Kernel um network und netprotocol erweitert, entsprechende Dateien dorthin verschoben. |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
17:48:32 08.08.2010 Titel: |
|
Zitieren |
version 0.0.1.150 - Rev: 724
udp.c/.h
- UDP Header Hinzugefügt. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:58:21 08.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.151 - Rev. 726
Senden verbessert (length)
Testen: wireshark |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:22:21 08.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.152 - Rev. 727
Senden verbessert (korrekte mac-adresse verwendet)
Testen: anpingen und mit arp -a im arp-cache des senders nachschauen
Verfolgen: wireshark |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:49:09 08.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.153 - Rev. 730 (einige rev. bewusst übersprungen wegen commit-fehler)
Nun klappt die antwort auf arp-requests spezifisch und korrekt!
Bitte stellt eure spezifische IP-Adresse statisch in dem neuen Header myOwnData.h ein, bei mir z.B:
| C/C++ Code: | #ifndef MYOWNDATA_H
#define MYOWNDATA_H
#define My_IP 0xC0A80A61 // 192.168.10.97
#endif
| |
| C/C++ Code: | #ifndef MYOWNDATA_H
#define MYOWNDATA_H
#define My_IP 0xC0A80A61 // 192.168.10.97
#endif
| |
| C/C++ Code: | #ifndef MYOWNDATA_H
#define MYOWNDATA_H
#define My_IP 0xC0A80A61 // 192.168.10.97
#endif
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:54:53 08.08.2010, insgesamt 2-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
22:18:34 08.08.2010 Titel: |
|
Zitieren |
version 0.0.1.154 - Rev: 731
dhcp.c/.h
- Grundlegende Idee hinzugefügt.
upd.c/.h
- erweitert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:31:37 08.08.2010 Titel: |
|
Zitieren |
checksum für ipv4, also auch ping:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // Compute Internet Checksum for "count" bytes beginning at location "addr".
uint32_t checksumIPv4(uint32_t count, uintptr_t addr)
{
register uint32_t sum = 0;
while( count > 1 ) // This is the inner loop
{
sum += *(uint16_t)addr++;
count -= 2;
}
if (count > 0) // Add left-over byte, if any
{
sum += *(uint8_t*)addr;
}
while (sum>>16) // Fold 32-bit sum to 16 bits
{
sum = (sum & 0xFFFF) + (sum >> 16);
}
return (~sum);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // Compute Internet Checksum for "count" bytes beginning at location "addr".
uint32_t checksumIPv4(uint32_t count, uintptr_t addr)
{
register uint32_t sum = 0;
while( count > 1 ) // This is the inner loop
{
sum += *(uint16_t)addr++;
count -= 2;
}
if (count > 0) // Add left-over byte, if any
{
sum += *(uint8_t*)addr;
}
while (sum>>16) // Fold 32-bit sum to 16 bits
{
sum = (sum & 0xFFFF) + (sum >> 16);
}
return (~sum);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // Compute Internet Checksum for "count" bytes beginning at location "addr".
uint32_t checksumIPv4(uint32_t count, uintptr_t addr)
{
register uint32_t sum = 0;
while( count > 1 ) // This is the inner loop
{
sum += *(uint16_t)addr++;
count -= 2;
}
if (count > 0) // Add left-over byte, if any
{
sum += *(uint8_t*)addr;
}
while (sum>>16) // Fold 32-bit sum to 16 bits
{
sum = (sum & 0xFFFF) + (sum >> 16);
}
return (~sum);
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:41:14 08.08.2010, insgesamt 4-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
23:44:10 08.08.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:15:06 09.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.156:
- task.c: cli/sti-Änderungen gesichtet, Fehler behoben und wieder reingenommen
- Aufgeräumt
- Projektfile aktualisiert |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
17:30:04 09.08.2010 Titel: |
|
Zitieren |
version 0.0.1.157 - Rev: 734
icmp.c/.h
- ICMPAnswerPing(...), mit Statischen werten hinzugefügt und experimentiert, bisher ohne Erfolg. |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
18:25:46 09.08.2010 Titel: |
|
Zitieren |
version 0.0.1.157 - Rev: 735
icmp.c/.h
- ICMPAnswerPing(...), erweitert und getestet. Noch kein Erfolg. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:19:52 09.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.158:
- Umstellung der IRQ/ISR-Nummern auf enum begonnen
- Scheduler unterstützt nun waitForIRQ - Wait-Funktionen damit vorerst komplett
- getch auf waitForIRQ umgestellt - Genauso Ressourcensparend, aber performanter (kein hlt das andere tasks ausbremst)
- switch_context führt abhängig von der Anzahl der laufenden tasks hlt aus |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:33:16 09.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.158 ist fehlerhaft (memory leak), und icmp.c/.h noch ziemlich unbrauchbar.
http://codepad.org/0YDxC2n1 <-- Workaround von MrX |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:35:26 09.08.2010, insgesamt 2-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
01:02:29 10.08.2010 Titel: |
|
Zitieren |
version 0.0.1.159 - Rev: 737
keyboard.c/.h
- Workaround von MrX implementiert (getch)
ipTcpStack.c/.h
- switch konstrukt für die Protokolle in IPheader hinzugefügt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:17:30 10.08.2010 Titel: |
|
Zitieren |
1) arp reply ohne adresse! (das war schon besser)
2) icmp reply funktioniert nicht! (kommt in wireshark nicht an) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Ideenlos
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.08.2010
Beiträge: 7
|
Ideenlos Mitglied
16:57:11 10.08.2010 Titel: |
|
Zitieren |
version 0.0.1.160 – Revision 738
IP/ICMP
- Header korrigiert
- Checksummenfunktion korrigiert
- ICMP-Ping-Reply-Funktion korrigiert
=> Wireshark zeigt korrekte Antwort an
PS: Dass ping bei mir keine Antwort anzeigt, mag an meiner Netzwerkkonfiguration liegen (da bei Wireshark von MAC über IP bis hin zu Checksumme alles zu stimmen scheint). |
|
|
|
 |
Ideenlos
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.08.2010
Beiträge: 7
|
Ideenlos Mitglied
19:54:46 10.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.161 – Revision 739
ICMP: Datenteil
- ICMP-Pings enthalten einen Datenteil, den man zurückschicken sollte – was ab jetzt auch getan wird. |
Zuletzt bearbeitet von Ideenlos am 19:55:08 10.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:58:14 10.08.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:28:10 10.08.2010 Titel: |
|
Zitieren |
"Ideenlos" war schneller als ich, der es nur mit hrPing und 56 byte Daten schaffte: | Code: | | hrping 192.168.10.97 -S -t -l 56 | |
| Code: | | hrping 192.168.10.97 -S -t -l 56 | |
| Code: | | hrping 192.168.10.97 -S -t -l 56 | |
http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_161_PingReply.PNG
| Zitat: | Statistics for 192.168.10.97:
Packets: sent=227, rcvd=153, error=0, lost=74 (32% loss) in 106.126180 sec
RTTs of replies in ms: min/avg/max/dev: 67.929 / 12788.809 / 33029.268 / 8959.212 |
| Zitat: | | <Tobiking>Das hrPing schickt Latein? | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:53:20 10.08.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:33:49 10.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.162 – Rev: 740
etwas aufgeräumt im Netzwerk-Bereich
Leider ist RXBUFTAIL ab und zu verschoben! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Ideenlos
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.08.2010
Beiträge: 7
|
Ideenlos Mitglied
23:20:45 10.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.163 – Revision 741
rtl8139
- wenn man die Empfangsdaten aus dem entsprechenden Puffer
herauskopiert, werden anscheinend mehr Pakete korrekt empfangen. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:55:03 10.08.2010 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:50:05 11.08.2010 Titel: |
|
Zitieren |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
02:52:17 11.08.2010 Titel: |
|
Zitieren |
version 0.0.1.163 - Rev: 741
TCP header hinzugefügt tcp.c/h
icmpDebug, tcpDebug für eine besser veranschaulischung der jeweiligen Packete. |
|
|
|
 |
Ideenlos
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.08.2010
Beiträge: 7
|
Ideenlos Mitglied
15:11:01 11.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.165 – Revision 743
IP/ICMP-Checksumme
- Man sollte es mit dem Aufräumen nicht übertreiben (rev 740): das Checksummenfeld muss tatsächlich vor der Berechnung der Checksumme auf 0 gesetzt werden.
PS: Das hier ist wirklich die 0.0.1.165 und die Rev 743, ich hatte beim letzten Mal nur vergessen, die Version in ckernel.c zu aktualisieren, deshalb hat internet eigentlich die 0.0.1.164 bzw. 742 committet. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:34:29 11.08.2010 Titel: |
|
Zitieren |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | C:\hrPING>hrping 192.168.10.97 -n20 -l32 -S -s100
This is hrPING v2.44 by cFos Software GmbH -- http://www.cfos.de
Using source IP address 192.168.10.99 to send packets
Pinging 192.168.10.97
with 32 bytes data (60 bytes IP):
Reply from 192.168.10.97: seq=0000 time=14.150ms TTL=128 ID=0000 - sent=1
Reply from 192.168.10.97: seq=0001 time=5.801ms TTL=128 ID=0000 - sent=2
Reply from 192.168.10.97: seq=0002 time=5.790ms TTL=128 ID=0000 - sent=3
Reply from 192.168.10.97: seq=0003 time=5.813ms TTL=128 ID=0000 - sent=4
Reply from 192.168.10.97: seq=0004 time=5.799ms TTL=128 ID=0000 - sent=5
Reply from 192.168.10.97: seq=0005 time=5.808ms TTL=128 ID=0000 - sent=6
Reply from 192.168.10.97: seq=0006 time=5.804ms TTL=128 ID=0000 - sent=7
Reply from 192.168.10.97: seq=0007 time=5.828ms TTL=128 ID=0000 - sent=8
Reply from 192.168.10.97: seq=0008 time=5.834ms TTL=128 ID=0000 - sent=9
Reply from 192.168.10.97: seq=0009 time=5.805ms TTL=128 ID=0000 - sent=10
Reply from 192.168.10.97: seq=000a time=5.805ms TTL=128 ID=0000 - sent=11
Reply from 192.168.10.97: seq=000b time=5.800ms TTL=128 ID=0000 - sent=12
Reply from 192.168.10.97: seq=000c time=5.804ms TTL=128 ID=0000 - sent=13
Reply from 192.168.10.97: seq=000d time=5.805ms TTL=128 ID=0000 - sent=14
Reply from 192.168.10.97: seq=000e time=5.830ms TTL=128 ID=0000 - sent=15
Reply from 192.168.10.97: seq=000f time=5.834ms TTL=128 ID=0000 - sent=16
Reply from 192.168.10.97: seq=0010 time=9.280ms TTL=128 ID=0000 - sent=17
Reply from 192.168.10.97: seq=0011 time=5.844ms TTL=128 ID=0000 - sent=18
Reply from 192.168.10.97: seq=0012 time=5.816ms TTL=128 ID=0000 - sent=19
Reply from 192.168.10.97: seq=0013 time=5.820ms TTL=128 ID=0000 - sent=20
Statistics for 192.168.10.97:
Packets: sent=20, rcvd=20, error=0, lost=0 (0% loss) in 1.905816 sec
RTTs of replies in ms: min/avg/max/dev: 5.790 / 6.403 / 14.150 / 1.980 | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | C:\hrPING>hrping 192.168.10.97 -n20 -l32 -S -s100
This is hrPING v2.44 by cFos Software GmbH -- http://www.cfos.de
Using source IP address 192.168.10.99 to send packets
Pinging 192.168.10.97
with 32 bytes data (60 bytes IP):
Reply from 192.168.10.97: seq=0000 time=14.150ms TTL=128 ID=0000 - sent=1
Reply from 192.168.10.97: seq=0001 time=5.801ms TTL=128 ID=0000 - sent=2
Reply from 192.168.10.97: seq=0002 time=5.790ms TTL=128 ID=0000 - sent=3
Reply from 192.168.10.97: seq=0003 time=5.813ms TTL=128 ID=0000 - sent=4
Reply from 192.168.10.97: seq=0004 time=5.799ms TTL=128 ID=0000 - sent=5
Reply from 192.168.10.97: seq=0005 time=5.808ms TTL=128 ID=0000 - sent=6
Reply from 192.168.10.97: seq=0006 time=5.804ms TTL=128 ID=0000 - sent=7
Reply from 192.168.10.97: seq=0007 time=5.828ms TTL=128 ID=0000 - sent=8
Reply from 192.168.10.97: seq=0008 time=5.834ms TTL=128 ID=0000 - sent=9
Reply from 192.168.10.97: seq=0009 time=5.805ms TTL=128 ID=0000 - sent=10
Reply from 192.168.10.97: seq=000a time=5.805ms TTL=128 ID=0000 - sent=11
Reply from 192.168.10.97: seq=000b time=5.800ms TTL=128 ID=0000 - sent=12
Reply from 192.168.10.97: seq=000c time=5.804ms TTL=128 ID=0000 - sent=13
Reply from 192.168.10.97: seq=000d time=5.805ms TTL=128 ID=0000 - sent=14
Reply from 192.168.10.97: seq=000e time=5.830ms TTL=128 ID=0000 - sent=15
Reply from 192.168.10.97: seq=000f time=5.834ms TTL=128 ID=0000 - sent=16
Reply from 192.168.10.97: seq=0010 time=9.280ms TTL=128 ID=0000 - sent=17
Reply from 192.168.10.97: seq=0011 time=5.844ms TTL=128 ID=0000 - sent=18
Reply from 192.168.10.97: seq=0012 time=5.816ms TTL=128 ID=0000 - sent=19
Reply from 192.168.10.97: seq=0013 time=5.820ms TTL=128 ID=0000 - sent=20
Statistics for 192.168.10.97:
Packets: sent=20, rcvd=20, error=0, lost=0 (0% loss) in 1.905816 sec
RTTs of replies in ms: min/avg/max/dev: 5.790 / 6.403 / 14.150 / 1.980 | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | C:\hrPING>hrping 192.168.10.97 -n20 -l32 -S -s100
This is hrPING v2.44 by cFos Software GmbH -- http://www.cfos.de
Using source IP address 192.168.10.99 to send packets
Pinging 192.168.10.97
with 32 bytes data (60 bytes IP):
Reply from 192.168.10.97: seq=0000 time=14.150ms TTL=128 ID=0000 - sent=1
Reply from 192.168.10.97: seq=0001 time=5.801ms TTL=128 ID=0000 - sent=2
Reply from 192.168.10.97: seq=0002 time=5.790ms TTL=128 ID=0000 - sent=3
Reply from 192.168.10.97: seq=0003 time=5.813ms TTL=128 ID=0000 - sent=4
Reply from 192.168.10.97: seq=0004 time=5.799ms TTL=128 ID=0000 - sent=5
Reply from 192.168.10.97: seq=0005 time=5.808ms TTL=128 ID=0000 - sent=6
Reply from 192.168.10.97: seq=0006 time=5.804ms TTL=128 ID=0000 - sent=7
Reply from 192.168.10.97: seq=0007 time=5.828ms TTL=128 ID=0000 - sent=8
Reply from 192.168.10.97: seq=0008 time=5.834ms TTL=128 ID=0000 - sent=9
Reply from 192.168.10.97: seq=0009 time=5.805ms TTL=128 ID=0000 - sent=10
Reply from 192.168.10.97: seq=000a time=5.805ms TTL=128 ID=0000 - sent=11
Reply from 192.168.10.97: seq=000b time=5.800ms TTL=128 ID=0000 - sent=12
Reply from 192.168.10.97: seq=000c time=5.804ms TTL=128 ID=0000 - sent=13
Reply from 192.168.10.97: seq=000d time=5.805ms TTL=128 ID=0000 - sent=14
Reply from 192.168.10.97: seq=000e time=5.830ms TTL=128 ID=0000 - sent=15
Reply from 192.168.10.97: seq=000f time=5.834ms TTL=128 ID=0000 - sent=16
Reply from 192.168.10.97: seq=0010 time=9.280ms TTL=128 ID=0000 - sent=17
Reply from 192.168.10.97: seq=0011 time=5.844ms TTL=128 ID=0000 - sent=18
Reply from 192.168.10.97: seq=0012 time=5.816ms TTL=128 ID=0000 - sent=19
Reply from 192.168.10.97: seq=0013 time=5.820ms TTL=128 ID=0000 - sent=20
Statistics for 192.168.10.97:
Packets: sent=20, rcvd=20, error=0, lost=0 (0% loss) in 1.905816 sec
RTTs of replies in ms: min/avg/max/dev: 5.790 / 6.403 / 14.150 / 1.980 | |
0% loss
PrettyOS hat die IP 192.168.10.97 |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:38:27 11.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:09:12 12.08.2010 Titel: |
|
Zitieren |
Noch zur checksum:
| Zitat: | ICMP Header Checksum. 16 bits.
Checksum that covers the ICMP message. This is the 16-bit one's complement
of the one's complement sum of the ICMP message starting with the Type field.
The checksum field should be cleared to zero before generating the checksum. | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:10:36 12.08.2010, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:34:16 12.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.166:
- Floppytreiber nutzt nun hlt während er auf ein IRQ wartet. (waitForIRQ geht nicht, weil wir dort ein timeout haben)
- getch nutzt wieder waitForIRQ, Fehler behoben, keine task-Mutation mehr, Speicherleck weg.
- Neues Feature zur Memory-Leak-Erkennung. (Aktivierung in os.h, Funktioniert derzeit nicht stabil)
- Projektdatei aktualisiert
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:02:16 12.08.2010 Titel: |
|
Zitieren |
PrettyOS 0.0.1.166 - Rev: 744
| Code: | 1 2 3 4 5 6 7 8 9 10 | 1 2 3 4 5 6 7 8 9 10 | Testumgebung SCREEN (phys) vbe RTL8139 EHCI Probleme
-----------------------------------------------------------------------------
qemu-ehci F2000000h ok ja 4 ports nein
VBox 3.2.6 E0000000h ok nein 8 ports nein
VMWare Player 3.0.1 (mit vbe) invalid opcode bei 1A70h
VMWare Player 3.0.1 (ohne vbe) - nein 6 ports keine
bochs 2.4.2 E0000000h ok nein nein keine
VPC 6.0.192.0 00000000h #PF (err 0, addr 107BC4h)
VPC 6.0.192.0 (ohne vbe) - nein nein keine
PC 1,4 GHz GeForce4 F4000000h ok ja nein keine | |
| Code: | 1 2 3 4 5 6 7 8 9 10 | Testumgebung SCREEN (phys) vbe RTL8139 EHCI Probleme
-----------------------------------------------------------------------------
qemu-ehci F2000000h ok ja 4 ports nein
VBox 3.2.6 E0000000h ok nein 8 ports nein
VMWare Player 3.0.1 (mit vbe) invalid opcode bei 1A70h
VMWare Player 3.0.1 (ohne vbe) - nein 6 ports keine
bochs 2.4.2 E0000000h ok nein nein keine
VPC 6.0.192.0 00000000h #PF (err 0, addr 107BC4h)
VPC 6.0.192.0 (ohne vbe) - nein nein keine
PC 1,4 GHz GeForce4 F4000000h ok ja nein keine | |
| Code: | 1 2 3 4 5 6 7 8 9 10 | Testumgebung SCREEN (phys) vbe RTL8139 EHCI Probleme
-----------------------------------------------------------------------------
qemu-ehci F2000000h ok ja 4 ports nein
VBox 3.2.6 E0000000h ok nein 8 ports nein
VMWare Player 3.0.1 (mit vbe) invalid opcode bei 1A70h
VMWare Player 3.0.1 (ohne vbe) - nein 6 ports keine
bochs 2.4.2 E0000000h ok nein nein keine
VPC 6.0.192.0 00000000h #PF (err 0, addr 107BC4h)
VPC 6.0.192.0 (ohne vbe) - nein nein keine
PC 1,4 GHz GeForce4 F4000000h ok ja nein keine | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:09:31 12.08.2010 Titel: |
|
Zitieren |
0.0.1.167 - Rev. 745:
- Gratuitous ARP Request abgefragt und dargestellt
http://wiki.wireshark.org/Gratuitous_ARP
| Zitat: | | A gratuitous ARP request is an AddressResolutionProtocol request packet where the source and destination IP are both set to the IP of the machine issuing the packet and the destination MAC is the broadcast address ff:ff:ff:ff:ff:ff. | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 14:20:31 12.08.2010, insgesamt 3-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
14:21:07 12.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.168:
- Ausgabe bei Strg+t und co nun in kernelkonsole
- test-results.txt beigelegt
- Kleinigkeiten |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
16:10:00 13.08.2010 Titel: |
|
Zitieren |
version 0.0.1.168 - Rev: 747
- Aufgeräumt
- Die #defines in icmp.h um ICMP_ erweitert.
Keyboard.c
- Die getch() Funktion sieht im moment so aus.
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 | char getch()
{
char retVal = keyboard_getChar();
while(retVal == 0)
{
waitForIRQ(1); // not working on realPC ---> Broken Free
// sti();hlt();
retVal = keyboard_getChar();
}
return(retVal);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | char getch()
{
char retVal = keyboard_getChar();
while(retVal == 0)
{
waitForIRQ(1); // not working on realPC ---> Broken Free
// sti();hlt();
retVal = keyboard_getChar();
}
return(retVal);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | char getch()
{
char retVal = keyboard_getChar();
while(retVal == 0)
{
waitForIRQ(1); // not working on realPC ---> Broken Free
// sti();hlt();
retVal = keyboard_getChar();
}
return(retVal);
} | |
Link zur Darstellung des OSI-7-Modells
http://upload.wikimedia.org/wikipedia/de/1/14/OSI7Layer_model_3.1.svg |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:32:18 13.08.2010 Titel: |
|
Zitieren |
0.0.1.169 - Rev: 748
Readcache (rev. 580) in devicemanager.c auskommentiert und auf die alte Version (rev. 579) umgestellt.
Reale Lesevorgänge können nun übergangsweise quälend langsam vonstatten gehen, da wir dank fgetc jedes Zeichen einzeln ziehen und dabei jeweils den ganzen Sektor lesen.
Der Schreibcache ist bereits im FAT-Modul eingebaut.
Dafür klappt nun wieder der für Dokumentationen wichtige Screenshot (floppy: strg+s, usb: strg+u). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:08:07 13.08.2010 Titel: |
|
Zitieren |
0.0.1.170 - Rev: 749
readcache teilweise (wieder) in betrieb genommen, aber noch nicht genutzt wegen fehler beim schreiben |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:59:00 13.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:50:41 13.08.2010 Titel: |
|
Zitieren |
0.0.1.171:
- Optimierungen und Änderungen, die ehenkes und ich ausgebrütet haben (hauptsächlich task.c)
- Readcache aufgeräumt, aber Ergebnis unverändert.
- Weitere Testergebnisse ergänzt |
Zuletzt bearbeitet von Mr X am 21:51:24 13.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:27:54 13.08.2010 Titel: |
|
Zitieren |
0.0.1.172 - Rev: 751
Lesecache aktiviert, für screenshot ausgeschaltet |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:42:38 14.08.2010 Titel: |
|
Zitieren |
0.0.1.173 - Rev: 752
readcache weiter optimiert, auch bei mehrfacher Abfrage des Puffers werden die 512 Byte zur Sicherheit kopiert (Korrektheit wichtiger als Performance). Beim Anlegen des Cache eines Sektors werden alle validen Dubletten eliminiert (Korrektheit). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:44:42 14.08.2010, insgesamt 1-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
14:19:40 14.08.2010 Titel: |
|
Zitieren |
version 0.0.1.174 - Rev: 753
VBE erweitert, man kann jetzt zwischen 3 Auflösungen wählen
1. 640x480x256 (Bild verschoben)
2. 800x600x256 (Bild verschoben)
3. 1024x768x256 (wird fast korrekt angezeigt)
default: 1024x768x256
ckernel.c
- Switch Konstrukt für den gewählten VideoMode hinzugefügt.
vbe.c/.h
- switchToVideomode(...) um einen übergabe parameter erweitert, für den zu setzenden VideoMode.
vidswitch.asm
- video_mode und ModeInfoBlock, für die 3 jeweiligen oben genannten Bildschirm Auflösungen hinzugefügt. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:23:26 14.08.2010 Titel: |
|
Zitieren |
strg+s und fdir geht wieder ganz brauchbar:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | PrettyOS [Version 0.0.1.174 - Rev: 753]
--------------------------------------------------------------------------------
RTL8139 Interrupt Status: 01h, Receive OK RXBUFTAIL: 236
Flags: 01h 20h Length: 248
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
Ethernet: type 2, Type: 08h 00h
45h 00h 00h E5h 8Dh D7h 00h 00h 1Eh 11h 77h 7Ah C0h A8h 0Ah 67h C0h A8h 0Ah FFh
00h 8Ah 00h 8Ah 00h D1h 11h 65h 11h 02h 8Dh ACh C0h A8h 0Ah 67h 00h 8Ah 00h BBh
00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
41h 43h 41h
Ethernet 2.
RAMdisk
----------------------------------------------------------------------
Attached disks:
Type Number Name Part. Serial
----------------------------------------------------------------------
Floppy 1 BLABLA 0 BLABLA
RAMdisk 2 RAMdisk 0 786435
----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
RTL8139 Interrupt Status: 01h, Receive OK RXBUFTAIL: 488
Flags: 01h 20h Length: 248
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
Ethernet: type 2, Type: 08h 00h
45h 00h 00h E5h 8Dh D8h 00h 00h 1Eh 11h 77h 79h C0h A8h 0Ah 67h C0h A8h 0Ah FFh
00h 8Ah 00h 8Ah 00h D1h 11h 64h 11h 02h 8Dh ADh C0h A8h 0Ah 67h 00h 8Ah 00h BBh
00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
41h 43h 41h
Ethernet 2.
$> hi <--
I am PrettyOS. Always at your service!
Screenshot (Thread)
$>
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Saturday, August 14, 2010, 13:28:53 201 s runtime. CPU: 1399 MHz -
PrettyOS [Version 0.0.1.174 - Rev: 753]
--------------------------------------------------------------------------------
running tasks:
pid: 0 esp: 0018FF00h eip: 00000000h PD: 00A22000h k_stack: 00000000h
pid: 9 esp: C0204B40h eip: 0011450Eh PD: 00A22000h k_stack: C0204E08h
blocked tasks:
pid: 8 esp: C0209E88h eip: 0011450Eh PD: C0207000h k_stack: C020A008h
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
RTL8139 Interrupt Status: 01h, Receive OK RXBUFTAIL: 992
Flags: 01h 20h Length: 248
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
Ethernet: type 2, Type: 08h 00h
45h 00h 00h E5h 8Dh DAh 00h 00h 1Eh 11h 77h 77h C0h A8h 0Ah 67h C0h A8h 0Ah FFh
00h 8Ah 00h 8Ah 00h D1h 11h 62h 11h 02h 8Dh AFh C0h A8h 0Ah 67h 00h 8Ah 00h BBh
00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
41h 43h 41h
Ethernet 2.
$> fdir <--
<Floppy Disc Directory>
BLABLA 0 byte (vol) 1st sector: 31
BOOT2.BIN 1002 byte (arc) 1st sector: 33
KERNEL.BIN 223884 byte (arc) 1st sector: 35
HELLO.ELF 9344 byte (arc) 1st sector: 473
CPP.ELF 9252 byte (arc) 1st sector: 492
ARROW.ELF 10637 byte (arc) 1st sector: 511
CALC.ELF 10847 byte (arc) 1st sector: 532
KEYSOUND.ELF 8657 byte (arc) 1st sector: 554
MUSIC.ELF 10538 byte (arc) 1st sector: 571
PQEQ.ELF 8813 byte (arc) 1st sector: 592
README.ELF 9095 byte (arc) 1st sector: 610
TTT.ELF 10672 byte (arc) 1st sector: 628
SCREEN.TXT 4098 byte (arc) 1st sector: 649
Screenshot (Thread)
$>
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Saturday, August 14, 2010, 13:29:59 267 s runtime. CPU: 1399 MHz \ | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | PrettyOS [Version 0.0.1.174 - Rev: 753]
--------------------------------------------------------------------------------
RTL8139 Interrupt Status: 01h, Receive OK RXBUFTAIL: 236
Flags: 01h 20h Length: 248
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
Ethernet: type 2, Type: 08h 00h
45h 00h 00h E5h 8Dh D7h 00h 00h 1Eh 11h 77h 7Ah C0h A8h 0Ah 67h C0h A8h 0Ah FFh
00h 8Ah 00h 8Ah 00h D1h 11h 65h 11h 02h 8Dh ACh C0h A8h 0Ah 67h 00h 8Ah 00h BBh
00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
41h 43h 41h
Ethernet 2.
RAMdisk
----------------------------------------------------------------------
Attached disks:
Type Number Name Part. Serial
----------------------------------------------------------------------
Floppy 1 BLABLA 0 BLABLA
RAMdisk 2 RAMdisk 0 786435
----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
RTL8139 Interrupt Status: 01h, Receive OK RXBUFTAIL: 488
Flags: 01h 20h Length: 248
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
Ethernet: type 2, Type: 08h 00h
45h 00h 00h E5h 8Dh D8h 00h 00h 1Eh 11h 77h 79h C0h A8h 0Ah 67h C0h A8h 0Ah FFh
00h 8Ah 00h 8Ah 00h D1h 11h 64h 11h 02h 8Dh ADh C0h A8h 0Ah 67h 00h 8Ah 00h BBh
00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
41h 43h 41h
Ethernet 2.
$> hi <--
I am PrettyOS. Always at your service!
Screenshot (Thread)
$>
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Saturday, August 14, 2010, 13:28:53 201 s runtime. CPU: 1399 MHz -
PrettyOS [Version 0.0.1.174 - Rev: 753]
--------------------------------------------------------------------------------
running tasks:
pid: 0 esp: 0018FF00h eip: 00000000h PD: 00A22000h k_stack: 00000000h
pid: 9 esp: C0204B40h eip: 0011450Eh PD: 00A22000h k_stack: C0204E08h
blocked tasks:
pid: 8 esp: C0209E88h eip: 0011450Eh PD: C0207000h k_stack: C020A008h
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
RTL8139 Interrupt Status: 01h, Receive OK RXBUFTAIL: 992
Flags: 01h 20h Length: 248
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
Ethernet: type 2, Type: 08h 00h
45h 00h 00h E5h 8Dh DAh 00h 00h 1Eh 11h 77h 77h C0h A8h 0Ah 67h C0h A8h 0Ah FFh
00h 8Ah 00h 8Ah 00h D1h 11h 62h 11h 02h 8Dh AFh C0h A8h 0Ah 67h 00h 8Ah 00h BBh
00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
41h 43h 41h
Ethernet 2.
$> fdir <--
<Floppy Disc Directory>
BLABLA 0 byte (vol) 1st sector: 31
BOOT2.BIN 1002 byte (arc) 1st sector: 33
KERNEL.BIN 223884 byte (arc) 1st sector: 35
HELLO.ELF 9344 byte (arc) 1st sector: 473
CPP.ELF 9252 byte (arc) 1st sector: 492
ARROW.ELF 10637 byte (arc) 1st sector: 511
CALC.ELF 10847 byte (arc) 1st sector: 532
KEYSOUND.ELF 8657 byte (arc) 1st sector: 554
MUSIC.ELF 10538 byte (arc) 1st sector: 571
PQEQ.ELF 8813 byte (arc) 1st sector: 592
README.ELF 9095 byte (arc) 1st sector: 610
TTT.ELF 10672 byte (arc) 1st sector: 628
SCREEN.TXT 4098 byte (arc) 1st sector: 649
Screenshot (Thread)
$>
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Saturday, August 14, 2010, 13:29:59 267 s runtime. CPU: 1399 MHz \ | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | PrettyOS [Version 0.0.1.174 - Rev: 753]
--------------------------------------------------------------------------------
RTL8139 Interrupt Status: 01h, Receive OK RXBUFTAIL: 236
Flags: 01h 20h Length: 248
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
Ethernet: type 2, Type: 08h 00h
45h 00h 00h E5h 8Dh D7h 00h 00h 1Eh 11h 77h 7Ah C0h A8h 0Ah 67h C0h A8h 0Ah FFh
00h 8Ah 00h 8Ah 00h D1h 11h 65h 11h 02h 8Dh ACh C0h A8h 0Ah 67h 00h 8Ah 00h BBh
00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
41h 43h 41h
Ethernet 2.
RAMdisk
----------------------------------------------------------------------
Attached disks:
Type Number Name Part. Serial
----------------------------------------------------------------------
Floppy 1 BLABLA 0 BLABLA
RAMdisk 2 RAMdisk 0 786435
----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
RTL8139 Interrupt Status: 01h, Receive OK RXBUFTAIL: 488
Flags: 01h 20h Length: 248
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
Ethernet: type 2, Type: 08h 00h
45h 00h 00h E5h 8Dh D8h 00h 00h 1Eh 11h 77h 79h C0h A8h 0Ah 67h C0h A8h 0Ah FFh
00h 8Ah 00h 8Ah 00h D1h 11h 64h 11h 02h 8Dh ADh C0h A8h 0Ah 67h 00h 8Ah 00h BBh
00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
41h 43h 41h
Ethernet 2.
$> hi <--
I am PrettyOS. Always at your service!
Screenshot (Thread)
$>
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Saturday, August 14, 2010, 13:28:53 201 s runtime. CPU: 1399 MHz -
PrettyOS [Version 0.0.1.174 - Rev: 753]
--------------------------------------------------------------------------------
running tasks:
pid: 0 esp: 0018FF00h eip: 00000000h PD: 00A22000h k_stack: 00000000h
pid: 9 esp: C0204B40h eip: 0011450Eh PD: 00A22000h k_stack: C0204E08h
blocked tasks:
pid: 8 esp: C0209E88h eip: 0011450Eh PD: C0207000h k_stack: C020A008h
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
RTL8139 Interrupt Status: 01h, Receive OK RXBUFTAIL: 992
Flags: 01h 20h Length: 248
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
Ethernet: type 2, Type: 08h 00h
45h 00h 00h E5h 8Dh DAh 00h 00h 1Eh 11h 77h 77h C0h A8h 0Ah 67h C0h A8h 0Ah FFh
00h 8Ah 00h 8Ah 00h D1h 11h 62h 11h 02h 8Dh AFh C0h A8h 0Ah 67h 00h 8Ah 00h BBh
00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
41h 43h 41h
Ethernet 2.
$> fdir <--
<Floppy Disc Directory>
BLABLA 0 byte (vol) 1st sector: 31
BOOT2.BIN 1002 byte (arc) 1st sector: 33
KERNEL.BIN 223884 byte (arc) 1st sector: 35
HELLO.ELF 9344 byte (arc) 1st sector: 473
CPP.ELF 9252 byte (arc) 1st sector: 492
ARROW.ELF 10637 byte (arc) 1st sector: 511
CALC.ELF 10847 byte (arc) 1st sector: 532
KEYSOUND.ELF 8657 byte (arc) 1st sector: 554
MUSIC.ELF 10538 byte (arc) 1st sector: 571
PQEQ.ELF 8813 byte (arc) 1st sector: 592
README.ELF 9095 byte (arc) 1st sector: 610
TTT.ELF 10672 byte (arc) 1st sector: 628
SCREEN.TXT 4098 byte (arc) 1st sector: 649
Screenshot (Thread)
$>
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Saturday, August 14, 2010, 13:29:59 267 s runtime. CPU: 1399 MHz \ | |
Das noch nicht vollständig ausgewertete Netzwerk-Paket
| Zitat: |
Flags: 01h 20h Length: 248
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
Ethernet: type 2, Type: 08h 00h
45h 00h 00h E5h 8Dh DAh 00h 00h 1Eh 11h 77h 77h C0h A8h 0Ah 67h C0h A8h 0Ah FFh
00h 8Ah 00h 8Ah 00h D1h 11h 62h 11h 02h 8Dh AFh C0h A8h 0Ah 67h 00h 8Ah 00h BBh
00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
41h 43h 41h
|
bedeutet:
Internet Protocol (IP):
45: version: 4, header length: 20 bytes
00: differentiated services field: ...
00 E5: total length 229
8D DA: identification
00: flags (don't fragment, more fragments)
(00) 00: fragment offset
1E: time to live (TTL) = 30
11: UDP (protocol)
77 77: checksum
C0h A8h 0Ah 67h: source IP 192.168.10.103
C0h A8h 0Ah FFh: dest IP 192.168.10.255
User Datagram Protocol (UDP):
00 8A: source port: netbios-dgm (138)
00 8A: dest port: netbios-dgm (138)
00 D1: length
11 62: checksum
NetBIOS Datagram Service:
...
Server Message Block Protocol:
...
SMB Mailslot Protocol:
...
MS Windows Browser Protocol:
...
screenshot (similar packet)
http://www.henkessoft.de/OS_Dev/Bilder/NetworkPacket_UDP_NetBIOS_SMB.PNG |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:03:05 14.08.2010, insgesamt 2-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
17:12:25 14.08.2010 Titel: |
|
Zitieren |
version 0.0.1.175 - Rev: 754
udp.c/.h
- UDPRecv(...), UDPDebug(...): udppacket_t wird leider noch nicht richtig ausgelesen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:50:22 14.08.2010 Titel: |
|
Zitieren |
TEST:
PrettyOS [Version 0.0.1.175 - Rev: 754]
RTL8139 Interrupt Status: 01h, Receive OK RXBUFTAIL: 488
Flags: 01h 20h Length: 248
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
Ethernet: type 2, Type: 08h 00h
45h 00h 00h E5h 90h 62h 00h 00h 1Eh 11h 74h EFh C0h A8h 0Ah 67h C0h A8h 0Ah FFh
00h 8Ah 00h 8Ah 00h D1h 0Eh DAh 11h 02h 90h 37h C0h A8h 0Ah 67h 00h 8Ah 00h BBh
00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
41h 43h 41h
Ethernet 2.
| Code: | 1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 | source port: 16
destination port: 27159
UDP Header information:
+--------------+----------------+
| 16 | 27159 | (source port, destination port)
+-------------------------------+
| 19 | 64776 | (length, checksum)
+-------------------------------+
| data | (data)
+-------------------------------+ | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 | source port: 16
destination port: 27159
UDP Header information:
+--------------+----------------+
| 16 | 27159 | (source port, destination port)
+-------------------------------+
| 19 | 64776 | (length, checksum)
+-------------------------------+
| data | (data)
+-------------------------------+ | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 | source port: 16
destination port: 27159
UDP Header information:
+--------------+----------------+
| 16 | 27159 | (source port, destination port)
+-------------------------------+
| 19 | 64776 | (length, checksum)
+-------------------------------+
| data | (data)
+-------------------------------+ | |
Alles falsch!
Vergleich:
Korrekt wäre:
User Datagram Protocol (UDP):
00 8A: source port: netbios-dgm (138)
00 8A: dest port: netbios-dgm (138)
00 D1: length
0E DA: checksum
... sind doch nur 8 Byte, so wie es aussieht.
Die beiden IP-Adressen im Internet-Protocol (IP) C0h A8h 0Ah 67h und C0h A8h 0Ah FFh sollte man auch auswerten.
45h 00h 00h E5h 90h 62h 00h 00h 1Eh 11h 74h EFh C0h A8h 0Ah 67h C0h A8h 0Ah FFh
00h 8Ah 00h 8Ah 00h D1h 0Eh DAh 11h 02h 90h 37h C0h A8h 0Ah 67h 00h 8Ah 00h BBh
00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
41h 43h 41h
Wir werten die IP-Zeile
45h 00h 00h E5h 90h 62h 00h 00h 1Eh 11h 74h EFh C0h A8h 0Ah 67h C0h A8h 0Ah FFh
überhaupt noch nicht vollständig aus, holen uns nur das Protokoll raus ^^
Im Prinzip Wireshark nachbauen.
Ich kann UDP sehr schön testen, denn mein Printserver sendet das ständig ins Netz. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 15:44:53 15.08.2010, insgesamt 14-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:44:31 15.08.2010 Titel: |
|
Zitieren |
| Zitat: | | wird leider noch nicht richtig ausgelesen |
Ist ja auch kein Wunder bei dem intransparenten Gewurschtel.
Design-Vorschlag:
Die nächste Einheit an Header+Data muss doch auch nicht das ganze Paket erhalten? Es reichen doch die Daten des betroffenen Protokolls, bei UDP also UDP-Header plus UDP-Data. Wir müssen die Pakete von außen nach innen zerlegen.
Jede receive-Funktion eines Protokolls sollte nur die Daten ab Header erhalten. Dann setzt man einfach die Header-Struktur auf "data". Sind Informationen von vorher erforderlich werden diese als Parameter dieser funktion übergeben. Dann besteht jedes "packet" eines Protokolls aus Header und nachfolgenden Daten. Das amcht den Code des jeweiligen Protokolls lesbarer. Momentan verheddert man sich komplett. Man weiß nicht mehr, auf welchen Punkt die jeweiligen Zeiger deuten. Das ist schlecht, also konsequenter Umbau und systematisches Abarbeiten in der Baumstruktur!
ipTcpstack.h/c muesste eigentlich ethernet.h/c heißen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:30:06 15.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
17:12:56 15.08.2010 Titel: |
|
Zitieren |
0.0.1.176 - Revision 755:
* Support für Serielle Schnittstelle.
Lesen: OK
Schreiben: Muss noch getestet werden... |
Zuletzt bearbeitet von Erhard Henkes am 19:51:33 15.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:02:20 15.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.177:
- test-results.txt aktualisiert und umgebaut
- Code in tasking eingefügt, der später create_vm86_ThreadTaskBase ersetzen soll (funktioniert noch nicht)
- Code vereinfacht und Styleänderungen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:28:26 15.08.2010 Titel: |
|
Zitieren |
0.0.1.178 - Rev: 757
UDP-Header wird nun korrekt ausgelesen, und ich konnte meinen Designvorschlag umsetzen.
screenshot:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | RTL8139 Interrupt Status: 01h, Receive OK RXBUFTAIL: 556
Flags: 01h 20h Length: 248
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
Ethernet: type 2, Type: 08h 00h
45h 00h 00h E5h 9Ch 94h 00h 00h 1Eh 11h 68h C1h C0h A8h 0Ah 63h C0h A8h 0Ah FFh
00h 8Ah 00h 8Ah 00h D1h 02h B4h 11h 02h 9Ch 65h C0h A8h 0Ah 63h 00h 8Ah 00h BBh
00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
41h 43h 41h
Ethernet 2. IP version: 4, IP Header Length: 20 byte
source port: 138 dest. port: 138
UDP Header information:
+--------------+----------------+
| 138 | 138 | (source port, destination port)
+-------------------------------+
| 209 | 02B4h | (length, checksum)
+-------------------------------+
IPv4. | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | RTL8139 Interrupt Status: 01h, Receive OK RXBUFTAIL: 556
Flags: 01h 20h Length: 248
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
Ethernet: type 2, Type: 08h 00h
45h 00h 00h E5h 9Ch 94h 00h 00h 1Eh 11h 68h C1h C0h A8h 0Ah 63h C0h A8h 0Ah FFh
00h 8Ah 00h 8Ah 00h D1h 02h B4h 11h 02h 9Ch 65h C0h A8h 0Ah 63h 00h 8Ah 00h BBh
00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
41h 43h 41h
Ethernet 2. IP version: 4, IP Header Length: 20 byte
source port: 138 dest. port: 138
UDP Header information:
+--------------+----------------+
| 138 | 138 | (source port, destination port)
+-------------------------------+
| 209 | 02B4h | (length, checksum)
+-------------------------------+
IPv4. | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | RTL8139 Interrupt Status: 01h, Receive OK RXBUFTAIL: 556
Flags: 01h 20h Length: 248
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h C0h 02h C6h E5h 65h
Ethernet: type 2, Type: 08h 00h
45h 00h 00h E5h 9Ch 94h 00h 00h 1Eh 11h 68h C1h C0h A8h 0Ah 63h C0h A8h 0Ah FFh
00h 8Ah 00h 8Ah 00h D1h 02h B4h 11h 02h 9Ch 65h C0h A8h 0Ah 63h 00h 8Ah 00h BBh
00h 00h 20h 46h 44h 45h 44h 45h 44h 44h 47h 45h 46h 44h 46h 44h 47h 44h 46h 43h
41h 43h 41h
Ethernet 2. IP version: 4, IP Header Length: 20 byte
source port: 138 dest. port: 138
UDP Header information:
+--------------+----------------+
| 138 | 138 | (source port, destination port)
+-------------------------------+
| 209 | 02B4h | (length, checksum)
+-------------------------------+
IPv4. | |
Wir übergeben nur den Part hinter dem IP-Header und die notwendigen Parameter.
| C/C++ Code: | | UDPRecv( (void*)((uintptr_t)data + sizeof(ethernet_t) + ipHeaderLength), length - ipHeaderLength, *(uint32_t*)ip->source_ip, *(uint32_t*)ip->dest_ip, ipHeaderLength); | |
| C/C++ Code: | | UDPRecv( (void*)((uintptr_t)data + sizeof(ethernet_t) + ipHeaderLength), length - ipHeaderLength, *(uint32_t*)ip->source_ip, *(uint32_t*)ip->dest_ip, ipHeaderLength); | |
| C/C++ Code: | | UDPRecv( (void*)((uintptr_t)data + sizeof(ethernet_t) + ipHeaderLength), length - ipHeaderLength, *(uint32_t*)ip->source_ip, *(uint32_t*)ip->dest_ip, ipHeaderLength); | |
IP-Header Länge wird übrigens als Vielfaches von 32 bit angegeben, also nicht direkt verwenden:
| C/C++ Code: | | uint32_t ipHeaderLength = 4 * ip->ipHeaderLength; // is given as number of 32 bit pieces (4 byte) | |
| C/C++ Code: | | uint32_t ipHeaderLength = 4 * ip->ipHeaderLength; // is given as number of 32 bit pieces (4 byte) | |
| C/C++ Code: | | uint32_t ipHeaderLength = 4 * ip->ipHeaderLength; // is given as number of 32 bit pieces (4 byte) | |
Problem: Die Pakete kommen auf PC verzögert an. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:44:39 15.08.2010, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:28:27 15.08.2010 Titel: |
|
Zitieren |
0.0.1.179 - Rev: 758
- tcpipstack.h/c umbenannt in ethernet.h/c
- Formatierungen von Namen (netzwerk) in CamelCase Form und nicht camel_case (begonnen) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:30:03 15.08.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:52:00 16.08.2010 Titel: |
|
Zitieren |
0.0.1.180 - Rev: 759
Auf paging_get_phys_addr(virtual address) vereinfacht (wird immer kernel_pd verwendet) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:52:44 16.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
22:02:15 16.08.2010 Titel: |
|
Zitieren |
Revision 0.0.1.181:
- Serial-Treiber gefixt und erweitert.
- task.c: create_vm86_ThreadTaskBase weggemacht
- task.c: kill und restart angelegt.
- task.c: Threads werden gekillt, wenn der Parenttask verschwindet
- Diverse Kleinigkeiten |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
22:29:07 16.08.2010 Titel: |
|
Zitieren |
version 0.0.1.182 - Rev: 761
ethernet.c/.h
- Weiter aufgeräumt und in die Protokoll header in spezifischen Dateien (ipv4.c/.h und arp.c/.h) umkopiert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:38:51 16.08.2010 Titel: |
|
Zitieren |
0.0.1.183 - Rev: 762
Fehler #PF (qemu) durch HOTFIX in task.c behoben |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
14:10:00 18.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.184:
- CPUID ausgelesen. VendorID wird korrekt angezeigt, restliche Funktionen _sollten_ auch funktionieren, sie sind schwer zu testen, auch wenn die Ergebnisse die ich kriege plausibel wirken. Die Möglichkeit, die CPUID in Bochs zu verstellen funktioniert leider nicht -> Vermutlich Bug in Bochs
- Verbesserung am serial-Treiber |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:38:04 18.08.2010 Titel: |
|
Zitieren |
0.0.1.185 - Rev: 764
- udp weiter ausgewertet (protokolle)
- ip/arp auswertung vereinfacht
- projektdateien
- sound abgeschaltet |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
19:52:19 18.08.2010 Titel: |
|
Zitieren |
Revision 765:
* Serial.c korrigiert
Senden und empfangen klappt jetzt einwandfrei, das einzige Problem ist sleepMilliSeconds(8); in ckernel.c, das isz zu lange um alle Nachichten zu erhalten, verkürzt man es aber, erhält man viele einzelne Nachichten...-.- |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
20:14:37 18.08.2010 Titel: |
|
Zitieren |
version 0.0.1.187 - Rev: 766
vbe.c
- setVideoMemory(...) Bild Darstellung in der Horizontalen in den verschiedenen Auflösungen angepasst. Die Vertikale ist noch um ca. 5 Pixel zu weit oben. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
22:30:38 18.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.188
- Bugfix in paging.c - VBox sollte jetzt auch mit VT-x laufen (Danke, Tobiking)
- Bugfix in console.c
- Bugfix in tasking.c |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:44:33 18.08.2010 Titel: |
|
Zitieren |
Dokumentation der Änderung in paging.c:
| C/C++ Code: | // Page table entries, identity mapping
for (int j=0; j<1024; ++j)
{
kernel_pd->tables[i]->pages[j] = addr | MEM_PRESENT | MEM_WRITE;
addr += PAGESIZE;
}
| |
| C/C++ Code: | // Page table entries, identity mapping
for (int j=0; j<1024; ++j)
{
kernel_pd->tables[i]->pages[j] = addr | MEM_PRESENT | MEM_WRITE;
addr += PAGESIZE;
}
| |
| C/C++ Code: | // Page table entries, identity mapping
for (int j=0; j<1024; ++j)
{
kernel_pd->tables[i]->pages[j] = addr | MEM_PRESENT | MEM_WRITE;
addr += PAGESIZE;
}
| |
Änderung: | MEM_WRITE |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
13:03:46 19.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.189:
- vbe.c: Bugfix: Cursor kein Nullpointer mehr (garkein Pointer mehr)
- vbe.c: Bugfix: In drawChar funktionieren nun \n, \r und \t korrekt.
- Codevereinfachungen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:52:54 19.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.190 - Rev: 769
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 | if(task->threads)
{
for(element_t* e = task->threads->head; e != 0; e = e->next)
{
//kill(e->data); /// HACK -> #PF on some systems
}
// list_DeleteAll(task->threads);
}
// list_Delete(tasks, task);
scheduler_deleteTask(task); | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | if(task->threads)
{
for(element_t* e = task->threads->head; e != 0; e = e->next)
{
//kill(e->data); /// HACK -> #PF on some systems
}
// list_DeleteAll(task->threads);
}
// list_Delete(tasks, task);
scheduler_deleteTask(task); | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 | if(task->threads)
{
for(element_t* e = task->threads->head; e != 0; e = e->next)
{
//kill(e->data); /// HACK -> #PF on some systems
}
// list_DeleteAll(task->threads);
}
// list_Delete(tasks, task);
scheduler_deleteTask(task); | |
die list_... wurden auskommentiert. #PF wurde bei list_DeleteAll festgestellt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:54:08 19.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
01:09:16 20.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.191:
- Tja... (mehr) Hack als Bugfix^^ Einige Dinge in task.h/c auskommentiert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:49:38 21.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.192 - Rev: 771
- bit9 OSFXSR in cr4 nicht gesetzt (für FXSAVE und FXSTORE, das wir nicht verwenden) hilft für K6-2
- FPU test eingebaut
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | 1 2 3 4 5 6 7 8 9 | uint32_t cr4;
__asm__ volatile("mov %%cr4, %0;" : "=r" (cr4));
// cr4 |= 1<<9; // set OSFXSR (bit 9)
// reload CR4, init FPU
__asm__ volatile("mov %0, %%cr4; finit;" : : "r"(cr4));
fpu_setcw(0x37F); // set the FPU Control Word
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | uint32_t cr4;
__asm__ volatile("mov %%cr4, %0;" : "=r" (cr4));
// cr4 |= 1<<9; // set OSFXSR (bit 9)
// reload CR4, init FPU
__asm__ volatile("mov %0, %%cr4; finit;" : : "r"(cr4));
fpu_setcw(0x37F); // set the FPU Control Word
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | uint32_t cr4;
__asm__ volatile("mov %%cr4, %0;" : "=r" (cr4));
// cr4 |= 1<<9; // set OSFXSR (bit 9)
// reload CR4, init FPU
__asm__ volatile("mov %0, %%cr4; finit;" : : "r"(cr4));
fpu_setcw(0x37F); // set the FPU Control Word
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | static void fpu_test()
{
double squareroot = sqrt(2.0);
squareroot = fabs(squareroot);
squareroot /= sqrt(2.0);
if (squareroot == 1.00)
{
textColor(0x0A);
printf("\nFPU-test OK\n");
textColor(0x0F);
}
else
{
textColor(0x0C);
printf("\nFPU-test ERROR\n");
textColor(0x0F);
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | static void fpu_test()
{
double squareroot = sqrt(2.0);
squareroot = fabs(squareroot);
squareroot /= sqrt(2.0);
if (squareroot == 1.00)
{
textColor(0x0A);
printf("\nFPU-test OK\n");
textColor(0x0F);
}
else
{
textColor(0x0C);
printf("\nFPU-test ERROR\n");
textColor(0x0F);
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | static void fpu_test()
{
double squareroot = sqrt(2.0);
squareroot = fabs(squareroot);
squareroot /= sqrt(2.0);
if (squareroot == 1.00)
{
textColor(0x0A);
printf("\nFPU-test OK\n");
textColor(0x0F);
}
else
{
textColor(0x0C);
printf("\nFPU-test ERROR\n");
textColor(0x0F);
}
} | |
| Zitat: |
OSFXSR
Operating System Support for FXSAVE and FXRSTOR instructions (bit 9 of CR4) — When set, this flag:
(1) indicates to software that the operating system supports the use of the FXSAVE and FXRSTOR instructions,
(2) enables the FXSAVE and FXRSTOR instructions to save and restore the contents of the XMM and MXCSR registers along with the contents of the x87 FPU and MMX registers, and
(3) enables the processor to execute SSE/SSE2/SSE3/SSSE3/SSE4 instructions, with the exception of the PAUSE, PREFETCHh, SFENCE, LFENCE, MFENCE, MOVNTI, CLFLUSH, CRC32, and POPCNT.
If this flag is clear, the FXSAVE and FXRSTOR instructions will save and restore the contents of the x87 FPU and MMX instructions, but they may not save and restore the contents of the XMM and MXCSR registers. Also, the processor will generate an invalid opcode exception (#UD) if it attempts to execute any SSE/SSE2/SSE3 instruction, with the exception of PAUSE, PREFETCHh, SFENCE, LFENCE, MFENCE, MOVNTI, CLFLUSH, CRC32, and POPCNT.
The operating system or executive must explicitly set this flag.
NOTE
CPUID feature flags FXSR indicates availability of the FXSAVE/FXRSTOR instructions. The OSFXSR bit provides operating system software with a means of enabling FXSAVE/FXRSTOR to save/restore the contents of the X87 FPU, XMM and MXCSR registers. Consequently OSFXSR bit indicates that the operating system
provides context switch support for SSE/SSE2/SSE3/SSSE3/SSE4. | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 13:17:24 21.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:55:28 21.08.2010 Titel: |
|
Zitieren |
0.0.1.193 - Rev: 772
- fpu_test() nach fpu.c verlagert
Schutz bei fehlendem CPU-Feature FPU:
- if (cpu_supports(CF_FPU)) fpu_install(); // ckernel.c
- if (cpu_supports(CF_FPU)) fpu_test(); // ckernel.c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:48:11 21.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.194:
- list.c: Bug in list_Delete gefixt
- task.c/scheduler.c: Log verbessert
- task.c/scheduler.c: Alte Hacks wieder entfernt, da zugrunde liegende Fehler behoben sind (nicht initialisierte Variable & Gekillter freetimeTask)
- Aufgeräumt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:15:22 21.08.2010 Titel: |
|
Zitieren |
Endlich das Task-Disaster besiegt. Wirklich geholfen hat die Visualisierung in Form des Task-log:
| Code: | 1 2 3 4 5 6 7 8 9 | 1 2 3 4 5 6 7 8 9 | current task: pid: 9
running tasks:
pid: 0 esp: 0018FF00h eip: 00000000h PD: 00A22000h k_stack: 00000000h
child-threads: 9
pid: 9 esp: C0204E8Ch eip: 00114D9Eh PD: 00A22000h k_stack: C0204EE0h
parent: 0
pid: 8 esp: C0001F68h eip: 00114D9Eh PD: C0207000h k_stack: C00020E8h
freetime task:
pid: 2 esp: C0003E8Ch eip: 00114D9Eh PD: 00A22000h k_stack: C0003EE0h | |
| Code: | 1 2 3 4 5 6 7 8 9 | current task: pid: 9
running tasks:
pid: 0 esp: 0018FF00h eip: 00000000h PD: 00A22000h k_stack: 00000000h
child-threads: 9
pid: 9 esp: C0204E8Ch eip: 00114D9Eh PD: 00A22000h k_stack: C0204EE0h
parent: 0
pid: 8 esp: C0001F68h eip: 00114D9Eh PD: C0207000h k_stack: C00020E8h
freetime task:
pid: 2 esp: C0003E8Ch eip: 00114D9Eh PD: 00A22000h k_stack: C0003EE0h | |
| Code: | 1 2 3 4 5 6 7 8 9 | current task: pid: 9
running tasks:
pid: 0 esp: 0018FF00h eip: 00000000h PD: 00A22000h k_stack: 00000000h
child-threads: 9
pid: 9 esp: C0204E8Ch eip: 00114D9Eh PD: 00A22000h k_stack: C0204EE0h
parent: 0
pid: 8 esp: C0001F68h eip: 00114D9Eh PD: C0207000h k_stack: C00020E8h
freetime task:
pid: 2 esp: C0003E8Ch eip: 00114D9Eh PD: 00A22000h k_stack: C0003EE0h | |
Da sah man die versehentlichen "Kills" und falschen Verwandschaftsbeziehungen.
Dies war die Stelle, die das Reboot-Chaos der letzten Versionen verursacht hat und nun glatt durchläuft:
task.c:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | 1 2 3 4 5 6 7 8 9 10 11 12 | // kill all child-threads of this task
if(task->threads)
{
for(element_t* e = task->threads->head; e != 0; e = e->next)
{
kill(e->data);
}
list_DeleteAll(task->threads);
}
list_Delete(tasks, task);
scheduler_deleteTask(task); | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | // kill all child-threads of this task
if(task->threads)
{
for(element_t* e = task->threads->head; e != 0; e = e->next)
{
kill(e->data);
}
list_DeleteAll(task->threads);
}
list_Delete(tasks, task);
scheduler_deleteTask(task); | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | // kill all child-threads of this task
if(task->threads)
{
for(element_t* e = task->threads->head; e != 0; e = e->next)
{
kill(e->data);
}
list_DeleteAll(task->threads);
}
list_Delete(tasks, task);
scheduler_deleteTask(task); | |
Codewort: Kindermörder |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:12:40 22.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:36:13 22.08.2010 Titel: |
|
Zitieren |
0.0.1.195 - Rev: 774
- ckernel.c: line (anstelle for-loop, mit FPU-Fkt. fabs) und drawCircle (mit FPU-Fkt. sqrt)
- beep aus |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 11:23:33 22.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:46:20 22.08.2010 Titel: |
|
Zitieren |
0.0.1.196 - Rev: 775
types.h: #define BIT(n) (1<<(n)) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:40:44 22.08.2010 Titel: |
|
Zitieren |
0.0.1.197 - Rev: 776
void* paging_acquire_pcimem(uint32_t phys_addr, uint32_t numberOfPages)
abgeändert wegen vbe.c: setVideoMemory
Diese Funktion ist nun deutlich bereinigt.
| C/C++ Code: | void setVideoMemory()
{
uint32_t numberOfPages = vgaIB->TotalMemory * 0x10000 / PAGESIZE;
SCREEN = (uint8_t*)paging_acquire_pcimem(mib->PhysBasePtr, numberOfPages);
printf("\nSCREEN (phys): %X SCREEN (virt): %X\n",mib->PhysBasePtr, SCREEN);
printf("\nVideo Ram %u MiB\n",vgaIB->TotalMemory/0x10);
} | |
| C/C++ Code: | void setVideoMemory()
{
uint32_t numberOfPages = vgaIB->TotalMemory * 0x10000 / PAGESIZE;
SCREEN = (uint8_t*)paging_acquire_pcimem(mib->PhysBasePtr, numberOfPages);
printf("\nSCREEN (phys): %X SCREEN (virt): %X\n",mib->PhysBasePtr, SCREEN);
printf("\nVideo Ram %u MiB\n",vgaIB->TotalMemory/0x10);
} | |
| C/C++ Code: | void setVideoMemory()
{
uint32_t numberOfPages = vgaIB->TotalMemory * 0x10000 / PAGESIZE;
SCREEN = (uint8_t*)paging_acquire_pcimem(mib->PhysBasePtr, numberOfPages);
printf("\nSCREEN (phys): %X SCREEN (virt): %X\n",mib->PhysBasePtr, SCREEN);
printf("\nVideo Ram %u MiB\n",vgaIB->TotalMemory/0x10);
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:49:45 22.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:54:40 22.08.2010 Titel: |
|
Zitieren |
ehenkes: Du hast vergessen zu erwähnen, dass Du dabei auch gleich den Verschiebungsfehler in VBE eliminiert hast.
Version 0.0.1.198:
- Cuervos Testergebnisse hochgeladen
- Besserer Skalierungsalgorithmus
- VBE läuft nun in separatem Thread - Zeitersparnis beim booten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:53:03 23.08.2010 Titel: |
|
Zitieren |
0.0.1.199 - Rev: 778
Probeweise zurückverlagert, bitte testen:
kheap.h:
| C/C++ Code: | #define PLACEMENT_BEGIN ((uint8_t*) 0x1000000) // 16 MiB
#define PLACEMENT_END ((uint8_t*) 0x1400000) // 20 MiB
| |
| C/C++ Code: | #define PLACEMENT_BEGIN ((uint8_t*) 0x1000000) // 16 MiB
#define PLACEMENT_END ((uint8_t*) 0x1400000) // 20 MiB
| |
| C/C++ Code: | #define PLACEMENT_BEGIN ((uint8_t*) 0x1000000) // 16 MiB
#define PLACEMENT_END ((uint8_t*) 0x1400000) // 20 MiB
| |
Wegen Überschneidung mit Floppy beim DMA-Puffer (0x1000 - 0x33FF):
| C/C++ Code: | setVgaInfoBlock((VgaInfoBlock_t*)0x3400);
setModeInfoBlock((ModeInfoBlock_t*)0x3600);
| |
| C/C++ Code: | setVgaInfoBlock((VgaInfoBlock_t*)0x3400);
setModeInfoBlock((ModeInfoBlock_t*)0x3600);
| |
| C/C++ Code: | setVgaInfoBlock((VgaInfoBlock_t*)0x3400);
setModeInfoBlock((ModeInfoBlock_t*)0x3600);
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:27:15 23.08.2010 Titel: |
|
Zitieren |
0.0.1.200 - Rev: 779
Kernel: 515.560 Bytes
http://www.pcidatabase.com/pci_c_header.php (nach Überarbeitung durch Erhard Henkes wegen massiver bugs in der Produkt-Liste, ca. 1h Aufwand) eingebaut zur Erkennung von Devices.
Noch nicht an pci-scan angeschlossen. Bitte erst testen.
bei mir: qemu und PC laufen noch. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 13:32:34 23.08.2010, insgesamt 3-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:13:00 23.08.2010 Titel: |
|
Zitieren |
Diese Liste kostet ca. 300 KB. Ich weiß ja nicht, ob wir uns wirklich 20 % der Floppy damit vollstopfen wollen... |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:35:22 23.08.2010 Titel: |
|
Zitieren |
0.0.1.201 - Rev: 780
pciVendProdList.h verwendet zur Auswertung in pciScan(...)
Beispiel qemu:
| Code: | #0 0:0.0 IRQ:0 Intel PCI & Memory
#1 0:1.0 IRQ:0 Intel PIIX3 PCI-to-ISA Bridge (Triton II)
#2 0:1.1 IRQ:0 Intel PIIX3 IDE Interface (Triton II)
#3 0:1.2 IRQ:11 Intel USB EHCI Controller USB EHCI F0000000h MMIO sz:4096
#4 0:1.3 IRQ:9 Intel PIIX4/4E/4M Power Management Controller
#5 0:2.0 IRQ:0 Cirrus 64-bit VisualMedia Accelerator
#6 0:26.0 IRQ:10 Realtek Realtek RTL8139 Family PCI Fast Ethernet NIC
| |
| Code: | #0 0:0.0 IRQ:0 Intel PCI & Memory
#1 0:1.0 IRQ:0 Intel PIIX3 PCI-to-ISA Bridge (Triton II)
#2 0:1.1 IRQ:0 Intel PIIX3 IDE Interface (Triton II)
#3 0:1.2 IRQ:11 Intel USB EHCI Controller USB EHCI F0000000h MMIO sz:4096
#4 0:1.3 IRQ:9 Intel PIIX4/4E/4M Power Management Controller
#5 0:2.0 IRQ:0 Cirrus 64-bit VisualMedia Accelerator
#6 0:26.0 IRQ:10 Realtek Realtek RTL8139 Family PCI Fast Ethernet NIC
| |
| Code: | #0 0:0.0 IRQ:0 Intel PCI & Memory
#1 0:1.0 IRQ:0 Intel PIIX3 PCI-to-ISA Bridge (Triton II)
#2 0:1.1 IRQ:0 Intel PIIX3 IDE Interface (Triton II)
#3 0:1.2 IRQ:11 Intel USB EHCI Controller USB EHCI F0000000h MMIO sz:4096
#4 0:1.3 IRQ:9 Intel PIIX4/4E/4M Power Management Controller
#5 0:2.0 IRQ:0 Cirrus 64-bit VisualMedia Accelerator
#6 0:26.0 IRQ:10 Realtek Realtek RTL8139 Family PCI Fast Ethernet NIC
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 15:45:33 23.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:49:08 23.08.2010 Titel: |
|
Zitieren |
| Zitat: | | Diese Liste kostet ca. 300 KB. Ich weiß ja nicht, ob wir uns wirklich 20 % der Floppy damit vollstopfen wollen... |
@MrX: man kann es ja weg lassen mittels #define _PCI_VEND_PROD_LIST_ |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:06:14 23.08.2010 Titel: |
|
Zitieren |
0.0.1.202 - Rev: 781
nur IRQ != 255 angezeigt
Aktuelle Liste von VBox:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 | #1 0:1.0 IRQ:0 Intel PIIX3 PCI-to-ISA Bridge (Triton II)
#2 0:1.1 IRQ:0 Intel PIIX4/4E/4M IDE Controller
#3 0:2.0 IRQ:11 vend:80EEh dev:BEEFh
#4 0:3.0 IRQ:10 Intel Gigabit Ethernet Controller
#5 0:4.0 IRQ:9 vend:80EEh dev:CAFEh
#6 0:5.0 IRQ:5 Intel Aureal (AD1881 SOUNDMAX) Placa Mãe Asaki P3-141
#7 0:6.0 IRQ:11 vend:106Bh dev:003Fh USB OHCI F0804000h MMIO sz:4096
#8 0:7.0 IRQ:9 Intel PIIX4/4E/4M Power Management Controller
#9 0:8.0 IRQ:9 AMD PCnet LANCE PCI Ethernet Controller
#10 0:11.0 IRQ:10 Intel USB 2.0 EHCI Controller USB EHCI F0900000h MMIO sz
:4096 | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 | #1 0:1.0 IRQ:0 Intel PIIX3 PCI-to-ISA Bridge (Triton II)
#2 0:1.1 IRQ:0 Intel PIIX4/4E/4M IDE Controller
#3 0:2.0 IRQ:11 vend:80EEh dev:BEEFh
#4 0:3.0 IRQ:10 Intel Gigabit Ethernet Controller
#5 0:4.0 IRQ:9 vend:80EEh dev:CAFEh
#6 0:5.0 IRQ:5 Intel Aureal (AD1881 SOUNDMAX) Placa Mãe Asaki P3-141
#7 0:6.0 IRQ:11 vend:106Bh dev:003Fh USB OHCI F0804000h MMIO sz:4096
#8 0:7.0 IRQ:9 Intel PIIX4/4E/4M Power Management Controller
#9 0:8.0 IRQ:9 AMD PCnet LANCE PCI Ethernet Controller
#10 0:11.0 IRQ:10 Intel USB 2.0 EHCI Controller USB EHCI F0900000h MMIO sz
:4096 | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 | #1 0:1.0 IRQ:0 Intel PIIX3 PCI-to-ISA Bridge (Triton II)
#2 0:1.1 IRQ:0 Intel PIIX4/4E/4M IDE Controller
#3 0:2.0 IRQ:11 vend:80EEh dev:BEEFh
#4 0:3.0 IRQ:10 Intel Gigabit Ethernet Controller
#5 0:4.0 IRQ:9 vend:80EEh dev:CAFEh
#6 0:5.0 IRQ:5 Intel Aureal (AD1881 SOUNDMAX) Placa Mãe Asaki P3-141
#7 0:6.0 IRQ:11 vend:106Bh dev:003Fh USB OHCI F0804000h MMIO sz:4096
#8 0:7.0 IRQ:9 Intel PIIX4/4E/4M Power Management Controller
#9 0:8.0 IRQ:9 AMD PCnet LANCE PCI Ethernet Controller
#10 0:11.0 IRQ:10 Intel USB 2.0 EHCI Controller USB EHCI F0900000h MMIO sz
:4096 | |
das klingt komisch:
vend:80EEh dev:BEEFh <---- BEEF (vendor 80EEh gibt es nicht)
vend:80EEh dev:CAFEh <---- CAFE
vend:106Bh dev:003Fh <--- der Hersteller soll Apple sein, aber Device 003Fh gibt es nicht |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:56:19 23.08.2010, insgesamt 5-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:59:18 23.08.2010 Titel: |
|
Zitieren |
0.0.1.203 - Rev: 782
memory.h eingefügt
Paging.h/c formal überarbeitet |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:07:51 24.08.2010 Titel: |
|
Zitieren |
0.0.1.203 - Rev: 783
memory.h nachgereicht |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:42:18 24.08.2010 Titel: |
|
Zitieren |
0.0.1.204 - Rev: 784
ESC + p zeigt die Belegung der physischen Bittabelle (paging.c). Jedes Bit dort repräsentiert eine physische Page (auch Frame genannt):
0 = frei (grün),
1 = bereits belegt (grau)
Man sieht, dass PrettyOS 23 1/4 MiB für sich verwendet.
Test mit VBox und 24 MiB RAM eingestellt: Laden von mehreren User-Programmen (ca. 10) führt zum #PF mit error 6 (bit1: write access und bit2: user mode access)
http://www.c-plusplus.de/forum/viewtopic-var-t-is-264710.html
Mit obigem physicalMem-Logger kann man diesen Vorgang illustrativ verfolgen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:31:23 24.08.2010, insgesamt 1-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
21:01:57 24.08.2010 Titel: |
|
Zitieren |
version 0.0.1.204 - Rev: 785
vbe.c/h
- Kommentare entfernt, geändert u. hinzugefügt
other_userprogs/vgatest.c entfernt |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
22:10:38 24.08.2010 Titel: |
|
Zitieren |
version 0.0.1.204 - Rev: 786
audio/sb16.c/.h
- Informationen für die Programmierung eines Audiotreibers zusammengelegt (Soundblaster16). |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
22:24:09 24.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.205:
- event_list in todo_list umbenannt. Verbessert/Verallgemeinert. Nutzung reduziert.
- memory.txt ergänzt
- Includes aufgeräumt
- Bootablauf verändert, Ausdruck verbessert.
- Sonstiges^^ |
Zuletzt bearbeitet von Mr X am 23:02:16 24.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:11:26 25.08.2010 Titel: |
|
Zitieren |
0.0.1.206 - Rev: 788
PCI_VEND_PROD_LIST_H weiter überarbeitet (teilweise echt übel, benötigt leider noch viel Arbeit) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:23:05 26.08.2010 Titel: |
|
Zitieren |
0.0.1.207 - Rev: 789
PCI_VEND_PROD_LIST_H weiter überarbeitet
Wenn wir da alle mithelfen, kann diese Liste wertvoll werden.
In der Urform ist sie nicht zu gebrauchen gewesen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:28:36 26.08.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:44:26 26.08.2010 Titel: |
|
Zitieren |
0.0.1.208 - Rev: 790
Freigabe des Userstacks:
| C/C++ Code: | // free memory for user stack
if (task->userStack != 0)
{
paging_free (task->page_directory, task->userStack, task->userStackSize * PAGESIZE);
} | |
| C/C++ Code: | // free memory for user stack
if (task->userStack != 0)
{
paging_free (task->page_directory, task->userStack, task->userStackSize * PAGESIZE);
} | |
| C/C++ Code: | // free memory for user stack
if (task->userStack != 0)
{
paging_free (task->page_directory, task->userStack, task->userStackSize * PAGESIZE);
} | |
Test mit VBox und 24 MiB RAM:
Zweimal ttt starten, dann das zweite ttt beenden, anschließend das erste.
Man erkennt, dass zwei Pages noch nicht frei gegeben werden beim "kill". |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:05:28 27.08.2010 Titel: |
|
Zitieren |
0.0.1.209 - Rev: 791
nach user-stack paging_free nun auch: user-PD und user-PT auf dem heap wird wieder freigegeben
zwei pages auf dem physischen speicher sind allerdings noch belegt nach user-task kill
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | 1 2 3 4 5 6 7 8 9 10 | // free memory for user stack
if (task->userStack != 0)
{
paging_free (task->page_directory, task->userStack, task->userStackSize * PAGESIZE);
if (task->page_directory != kernel_pd)
{
free(task->page_directory);
free(task->userPT);
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | // free memory for user stack
if (task->userStack != 0)
{
paging_free (task->page_directory, task->userStack, task->userStackSize * PAGESIZE);
if (task->page_directory != kernel_pd)
{
free(task->page_directory);
free(task->userPT);
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | // free memory for user stack
if (task->userStack != 0)
{
paging_free (task->page_directory, task->userStack, task->userStackSize * PAGESIZE);
if (task->page_directory != kernel_pd)
{
free(task->page_directory);
free(task->userPT);
}
} | |
So sieht das aus, wenn man 4 mal ttt startet und beendet:
http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_209_physMem.PNG
Man sieht, dass dieser Speicher vor dem user-stack (10 Pages) belegt wird. Die 10 Pages vom user-stack werden also sauber wieder frei gegeben.
Auf dem Heap fällt "ring-element" auf.
MrX im IRC: | Zitat: | | hätte ring_DeleteFirst ein Memory Leak, müsste der Heap eigentlich platzen. Dann würde bei jedem Tastedruck Speicher verplempert. | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:43:42 27.08.2010, insgesamt 5-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:33:00 27.08.2010 Titel: |
|
Zitieren |
0.0.1.210 - Rev: 792
Speicher-Leck ( http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_209_physMem.PNG ) abgedichtet! In elf.c allokierter speicher für das user-programm wird nun auch frei gegeben. Damit ist der Speicher nach Beenden des Programms wieder wie vorher. Typisch sind momentan 2 Frames für das User-Programm (elf.c) und 10 Frames für den User-Stack (task.c).
task.c, void kill(task_t* task):
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 1 2 3 4 5 6 7 8 | paging_free (task->page_directory, task->userStackAddr, task->userStackSize * PAGESIZE);
paging_free (task->page_directory, task->userProgAddr, task->userProgSize);
if (task->page_directory != kernel_pd)
{
free(task->page_directory);
free(task->userPT);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | paging_free (task->page_directory, task->userStackAddr, task->userStackSize * PAGESIZE);
paging_free (task->page_directory, task->userProgAddr, task->userProgSize);
if (task->page_directory != kernel_pd)
{
free(task->page_directory);
free(task->userPT);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | paging_free (task->page_directory, task->userStackAddr, task->userStackSize * PAGESIZE);
paging_free (task->page_directory, task->userProgAddr, task->userProgSize);
if (task->page_directory != kernel_pd)
{
free(task->page_directory);
free(task->userPT);
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 08:22:14 28.08.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:32:43 27.08.2010 Titel: |
|
Zitieren |
0.0.1.211 - Rev: 793
kleine Korrekturen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
13:52:10 28.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.212:
- Diverse Bugfixe:
-- Compiliert nun auch mit NASM 2.09 (Optimerungsschalter mussten für VBE und BL1 auf O1 oder O0 stehen)
-- Makefile kompiliert auch audio-Verzeichnis, in dem auch sys_speaker.h/c liegen
-- Scheduler: Bug beim killen von schlafenden tasks behoben
- kernelTask und kernelConsole sind nun nicht mehr dynamisch allokiert, da sie immer da sein sollen
- operatoren new, new[], delete und delete[] in C++-Userlib ergänzt
- Aufgeräumt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:54:20 29.08.2010 Titel: |
|
Zitieren |
0.0.1.213 - Rev: 795
va_end(ap); eingebaut
#define _MEMLEAK_FIND_ macht Probleme bei VBox und VMWare, indirekt auch beim PC, also nur auf qemu einsetzen.
Problem muss bei writeInfo(...) liegen, denn auskommentiert läuft VBox. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:09:08 29.08.2010 Titel: |
|
Zitieren |
0.0.1.214 - Rev: 796
#define _MEMLEAK_FIND_
Problem, das zum Absturz bei VMWare und VBox führt, gefunden:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #ifndef OS_H
#define OS_H
#include "types.h"
// These switches change the behavior of PrettyOS, useful for analyzing tasks:
/// #define _DIAGNOSIS_ // Diagnosis-Output - activates prints to the screen about some details and memory use
/// #define _MALLOC_FREE_ // shows information about malloc/free and heap expansion
#define _MEMLEAK_FIND_ // Provides a counter of all (successful) malloc and free calls showing memory leaks
/// #define _USB_DIAGNOSIS_ // only as transition state during implementation of USB 2.0 transfers
/// #define _FAT_DIAGNOSIS_ // only as transition state during implementation of FAT 12/16/32
/// #define _DEVMGR_DIAGNOSIS_ // e.g. sectorRead, sectorWrite
/// #define _TASKING_DIAGNOSIS_ // Provides output about tasking and scheduler
/// #define _FLOPPY_DIAGNOSIS_ // Provides information about the floppy(-motor)
/// #define _VM_DIAGNOSIS_ // Provides information about the vm86 task, but critical
/// #define _SOUND_ // This is no sound, only "beep". Better stop it! ^^
#define _PCI_VEND_PROD_LIST_ // http://www.pcidatabase.com/pci_c_header.php
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #ifndef OS_H
#define OS_H
#include "types.h"
// These switches change the behavior of PrettyOS, useful for analyzing tasks:
/// #define _DIAGNOSIS_ // Diagnosis-Output - activates prints to the screen about some details and memory use
/// #define _MALLOC_FREE_ // shows information about malloc/free and heap expansion
#define _MEMLEAK_FIND_ // Provides a counter of all (successful) malloc and free calls showing memory leaks
/// #define _USB_DIAGNOSIS_ // only as transition state during implementation of USB 2.0 transfers
/// #define _FAT_DIAGNOSIS_ // only as transition state during implementation of FAT 12/16/32
/// #define _DEVMGR_DIAGNOSIS_ // e.g. sectorRead, sectorWrite
/// #define _TASKING_DIAGNOSIS_ // Provides output about tasking and scheduler
/// #define _FLOPPY_DIAGNOSIS_ // Provides information about the floppy(-motor)
/// #define _VM_DIAGNOSIS_ // Provides information about the vm86 task, but critical
/// #define _SOUND_ // This is no sound, only "beep". Better stop it! ^^
#define _PCI_VEND_PROD_LIST_ // http://www.pcidatabase.com/pci_c_header.php
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #ifndef OS_H
#define OS_H
#include "types.h"
// These switches change the behavior of PrettyOS, useful for analyzing tasks:
/// #define _DIAGNOSIS_ // Diagnosis-Output - activates prints to the screen about some details and memory use
/// #define _MALLOC_FREE_ // shows information about malloc/free and heap expansion
#define _MEMLEAK_FIND_ // Provides a counter of all (successful) malloc and free calls showing memory leaks
/// #define _USB_DIAGNOSIS_ // only as transition state during implementation of USB 2.0 transfers
/// #define _FAT_DIAGNOSIS_ // only as transition state during implementation of FAT 12/16/32
/// #define _DEVMGR_DIAGNOSIS_ // e.g. sectorRead, sectorWrite
/// #define _TASKING_DIAGNOSIS_ // Provides output about tasking and scheduler
/// #define _FLOPPY_DIAGNOSIS_ // Provides information about the floppy(-motor)
/// #define _VM_DIAGNOSIS_ // Provides information about the vm86 task, but critical
/// #define _SOUND_ // This is no sound, only "beep". Better stop it! ^^
#define _PCI_VEND_PROD_LIST_ // http://www.pcidatabase.com/pci_c_header.php
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 1 2 3 4 5 6 7 8 | void writeInfo(uint8_t line, char* args, ...)
{
va_list ap;
va_start(ap, args);
vsnprintf(infoBar[line], 81, args, ap);
va_end(ap);
// refreshUserScreen(); // HACK <--- leads to massive error in VBox and VMWare
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | void writeInfo(uint8_t line, char* args, ...)
{
va_list ap;
va_start(ap, args);
vsnprintf(infoBar[line], 81, args, ap);
va_end(ap);
// refreshUserScreen(); // HACK <--- leads to massive error in VBox and VMWare
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | void writeInfo(uint8_t line, char* args, ...)
{
va_list ap;
va_start(ap, args);
vsnprintf(infoBar[line], 81, args, ap);
va_end(ap);
// refreshUserScreen(); // HACK <--- leads to massive error in VBox and VMWare
} | |
Nun ist der schwarze Peter bei refreshUserScreen()
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | void refreshUserScreen()
{
// Printing titlebar
kprintf("PrettyOS [Version %s] ", 0, 0x0C, version);
if (displayedConsole == KERNELCONSOLE_ID)
{
cursor.x = COLUMNS - 5;
kputs("Shell");
}
else
{
char Buffer[70];
snprintf(Buffer, 70, "Console %u: %s", displayedConsole, reachableConsoles[displayedConsole]->name);
cursor.x = COLUMNS - strlen(Buffer);
cursor.y = 0;
kputs(Buffer);
}
kprintf("--------------------------------------------------------------------------------", 1, 7); // Separation
if(reachableConsoles[displayedConsole]->showInfobar)
{
// copying content of visible console to the video-ram
memcpy(vidmem + USER_BEGIN * COLUMNS, reachableConsoles[displayedConsole]->vidmem, COLUMNS * (USER_LINES-4) * 2);
memsetw(vidmem + (USER_BEGIN + USER_LINES - 3) * COLUMNS, 0, 3 * COLUMNS); // Clearing info-area
kprintf("--------------------------------------------------------------------------------", 44, 7); // Separation
kprintf(infoBar[0], 45, 14);
kprintf(infoBar[1], 46, 14);
kprintf(infoBar[2], 47, 14);
}
else
{
// copying content of visible console to the video-ram
memcpy(vidmem + USER_BEGIN * COLUMNS, reachableConsoles[displayedConsole]->vidmem, COLUMNS * USER_LINES*2);
}
kprintf("--------------------------------------------------------------------------------", 48, 7); // Separation
cursor.y = reachableConsoles[displayedConsole]->cursor.y;
cursor.x = reachableConsoles[displayedConsole]->cursor.x;
update_cursor();
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | void refreshUserScreen()
{
// Printing titlebar
kprintf("PrettyOS [Version %s] ", 0, 0x0C, version);
if (displayedConsole == KERNELCONSOLE_ID)
{
cursor.x = COLUMNS - 5;
kputs("Shell");
}
else
{
char Buffer[70];
snprintf(Buffer, 70, "Console %u: %s", displayedConsole, reachableConsoles[displayedConsole]->name);
cursor.x = COLUMNS - strlen(Buffer);
cursor.y = 0;
kputs(Buffer);
}
kprintf("--------------------------------------------------------------------------------", 1, 7); // Separation
if(reachableConsoles[displayedConsole]->showInfobar)
{
// copying content of visible console to the video-ram
memcpy(vidmem + USER_BEGIN * COLUMNS, reachableConsoles[displayedConsole]->vidmem, COLUMNS * (USER_LINES-4) * 2);
memsetw(vidmem + (USER_BEGIN + USER_LINES - 3) * COLUMNS, 0, 3 * COLUMNS); // Clearing info-area
kprintf("--------------------------------------------------------------------------------", 44, 7); // Separation
kprintf(infoBar[0], 45, 14);
kprintf(infoBar[1], 46, 14);
kprintf(infoBar[2], 47, 14);
}
else
{
// copying content of visible console to the video-ram
memcpy(vidmem + USER_BEGIN * COLUMNS, reachableConsoles[displayedConsole]->vidmem, COLUMNS * USER_LINES*2);
}
kprintf("--------------------------------------------------------------------------------", 48, 7); // Separation
cursor.y = reachableConsoles[displayedConsole]->cursor.y;
cursor.x = reachableConsoles[displayedConsole]->cursor.x;
update_cursor();
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | void refreshUserScreen()
{
// Printing titlebar
kprintf("PrettyOS [Version %s] ", 0, 0x0C, version);
if (displayedConsole == KERNELCONSOLE_ID)
{
cursor.x = COLUMNS - 5;
kputs("Shell");
}
else
{
char Buffer[70];
snprintf(Buffer, 70, "Console %u: %s", displayedConsole, reachableConsoles[displayedConsole]->name);
cursor.x = COLUMNS - strlen(Buffer);
cursor.y = 0;
kputs(Buffer);
}
kprintf("--------------------------------------------------------------------------------", 1, 7); // Separation
if(reachableConsoles[displayedConsole]->showInfobar)
{
// copying content of visible console to the video-ram
memcpy(vidmem + USER_BEGIN * COLUMNS, reachableConsoles[displayedConsole]->vidmem, COLUMNS * (USER_LINES-4) * 2);
memsetw(vidmem + (USER_BEGIN + USER_LINES - 3) * COLUMNS, 0, 3 * COLUMNS); // Clearing info-area
kprintf("--------------------------------------------------------------------------------", 44, 7); // Separation
kprintf(infoBar[0], 45, 14);
kprintf(infoBar[1], 46, 14);
kprintf(infoBar[2], 47, 14);
}
else
{
// copying content of visible console to the video-ram
memcpy(vidmem + USER_BEGIN * COLUMNS, reachableConsoles[displayedConsole]->vidmem, COLUMNS * USER_LINES*2);
}
kprintf("--------------------------------------------------------------------------------", 48, 7); // Separation
cursor.y = reachableConsoles[displayedConsole]->cursor.y;
cursor.x = reachableConsoles[displayedConsole]->cursor.x;
update_cursor();
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:40:25 29.08.2010, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:37:37 29.08.2010 Titel: |
|
Zitieren |
0.0.1.215 - Rev: 797
noch einige va_end(ap); eingebaut (irgendwas übersieht man immer) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:48:00 29.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.216:
- Mauszeiger (heller Punkt) in VBE angezeigt
- min und max zu Makros umgewandelt - Damit sie bei signed und unsigned wirken
- Bugfix in video.c vervollständigt - Infobar wird wieder aktualisiert, _MEMLEAK_FIND_ funktioniert aber weiterhin
- va_end in console.c ergänzt
- vbe.h/c aufgeräumt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:30:49 29.08.2010 Titel: |
|
Zitieren |
0.0.1.217 - Rev: 799
init logging |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
21:35:49 30.08.2010 Titel: |
|
Zitieren |
version 0.0.1.218 - Rev: 800
vbe.c/.h
- Neue Funktionen vbe_drawRectFilled(...), vbe_drawBitmapTransparent(...) und keine Funktioniert...
mouse.c/.h
- Cursor Bitmap hinzugefügt...
data.asm
- cursor Bitmap hinzugefügt
user/vm86/cursor.bmp hinzugefügt |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
08:09:31 31.08.2010 Titel: |
|
Zitieren |
Version 0.0.1.219:
- Fehler in TTT behoben: Es wird nichtmehr akzeptiert, wenn nichts eingegeben wurde.
- INIT-Log-Ausgabe nicht mehr gebremst
- makefiles für Userspace angepasst/verbessert (Compilerschalter)
- Kleinere Verbesserungen und aufgeräumt (insbesondere keyboard.c) |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
21:43:03 31.08.2010 Titel: |
|
Zitieren |
version 0.0.1.220 - Rev: 802
vbe.c/h
- vbe_drawBitmap(...), mit 64k Farbtiefe experimentiert
vidswtch.asm
- neue Bildschirmauflösung mit 64k Farbtiefe hinzugefügt. |
Zuletzt bearbeitet von internet am 22:13:35 31.08.2010, insgesamt 1-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
22:12:43 31.08.2010 Titel: |
|
Zitieren |
version 0.0.1.221 - Rev: 803
vbe.c/h
- Mode mit 32 Bit Farbtiefe hinzugefügt
vidswtch.asm
- Neue Bildschirmauflösung mit 32 Bit Farbtiefe hinzugefügt |
|
|
|
 |
Ideenlos
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.08.2010
Beiträge: 7
|
Ideenlos Mitglied
19:51:28 01.09.2010 Titel: |
|
Zitieren |
(nach 804 von tev)
Revision 805
mov ss,ax und xor sp,sp sollte man nicht einfach vertauschen, da so ein Interrupt losgehen kann, der einen eventuell nicht nutzbaren Stack benutzt (Bootloader-Stage1). |
Zuletzt bearbeitet von Ideenlos am 19:52:01 01.09.2010, insgesamt 1-mal bearbeitet |
|
 |
tev
Mitglied
Benutzerprofil
Anmeldungsdatum: 11.08.2010
Beiträge: 15
|
tev Mitglied
20:16:38 01.09.2010 Titel: |
Rev 804 |
Zitieren |
Entschuldigung, dass ich das nicht vorher gemacht habe, da ich das mit dem Forum nicht wusste.
Ok ich hatte mit Revision 804 Geschwindigkeitsoptimierungen im Bootloader gemacht. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:16:21 03.09.2010 Titel: |
|
Zitieren |
0.0.1.222 - Rev: 806
paging.h/c: formale Änderungen (camelCase)
task.c: paging_destroyUserPageDirectory(task->page_directory) verwendet zur Memory-Freigabe als Gegenstück zu paging_createUserPageDirectory() in elf.c
beep (nicht sound) ausgeschaltet |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:17:51 03.09.2010, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:02:17 04.09.2010 Titel: |
|
Zitieren |
0.0.1.223 - Rev: 807
Formale Änderungen (camelCase entsprechend Style Guide) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:02:56 04.09.2010, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
01:06:25 05.09.2010 Titel: |
|
Zitieren |
Version 0.0.1.224:
- Keine Floppy-IRQ-Timeouts mehr beim boot -> bootet schneller
- Trackweises Lesen von Floppy
-- BUG: Strg+s geht nicht mehr.
- Aufgeräumt |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:30:58 05.09.2010 Titel: |
|
Zitieren |
Version 0.0.1.225:
- VBE-Modeliste "entdrosselt": Alle Modi werden angezeigt, keine Begrenzung auf 16 mehr
- flpydsk.c: calibrate und seek verbessert
- Floppy-Motor-Bug behoben, der Motor wird wieder abgeschaltet (Bug durch Caching entstanden)
- Testliste erweitert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:48:09 05.09.2010 Titel: |
|
Zitieren |
| Zitat: | | Strg+s geht nicht mehr |
TIPP:
Wer dies verwenden möchte, nach Angaben von MrX in flpydsk.c folgende Änderungen temporär vornehmen:
1) Zeile 616 auskommentieren
2) Zeile 624 auskommentieren, Zeile 625 aktivieren
3) Zeile 654 auskommentieren, Zeile 655 aktivieren
| C/C++ Code: | // if(CurrentDrive->lastTrack != sector/18)
//...
// retVal = flpydsk_read(CurrentDrive->lastTrack*18);
retVal = flpydsk_read(sector);
//...
// memcpy(destBuffer, CurrentDrive->trackBuffer + 512*(sector%18), 512);
memcpy(destBuffer, CurrentDrive->trackBuffer, 512);
| |
| C/C++ Code: | // if(CurrentDrive->lastTrack != sector/18)
//...
// retVal = flpydsk_read(CurrentDrive->lastTrack*18);
retVal = flpydsk_read(sector);
//...
// memcpy(destBuffer, CurrentDrive->trackBuffer + 512*(sector%18), 512);
memcpy(destBuffer, CurrentDrive->trackBuffer, 512);
| |
| C/C++ Code: | // if(CurrentDrive->lastTrack != sector/18)
//...
// retVal = flpydsk_read(CurrentDrive->lastTrack*18);
retVal = flpydsk_read(sector);
//...
// memcpy(destBuffer, CurrentDrive->trackBuffer + 512*(sector%18), 512);
memcpy(destBuffer, CurrentDrive->trackBuffer, 512);
| |
Dann wird der Lesevorgang von Floppy allerdings nicht beschleunigt.
Der aktuelle Code zerstört mittels strg+s FAT2 und die ersten drei Sektoren im Data-Bereich, und er vermehrfacht die Einträge in der Root Dir. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:50:25 05.09.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:44:05 06.09.2010 Titel: |
|
Zitieren |
Version 0.0.1.226:
- Bugfix: Floppy-Schreiben geht wieder (siehe auch Fehler-Thread)
- Bugfix: Falscher Schrägstrich (\) in Pfadangabe ersetzt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:33:53 06.09.2010 Titel: |
|
Zitieren |
0.0.1.227 - Rev: 811
_DEVMGR_DIAGNOSIS_ und _READCACHE_DIAGNOSIS_ getrennt
Fehler behoben
beep aus! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:56:31 10.09.2010 Titel: |
|
Zitieren |
Version 0.0.1.228:
- Verbesserungen in VBE:
-- Anzeige in 32-bit-Modus nun funktionsfähig, kein Pixelsalat mehr, korrekte Farben. In 16/15-bit sind die Farben noch falsch.
-- "Transparentes" Bitmap nun auch transparent
-- Code vereinfacht&verbessert
- Weitere kleine Verbesserungen
- Weitere Testergebnisse |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
14:32:56 12.09.2010 Titel: |
|
Zitieren |
Version 0.0.1.229:
- Verbesserungen bei VBE-Modeerkennung:
-- Farbtiefe jetzt in Bits angegeben
-- Die Eigenschaften der Modi werden jetzt von der Grafikkarte abgefragt
-- Assembler-Code verallgemeinert - Funktioniert mit allen Modi
- vidswtch.asm wird wieder -Ox assembliert
- Kleinigkeiten |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:05:40 12.09.2010 Titel: |
|
Zitieren |
Version 0.0.1.230:
- Jeder beliebige Modus nutzbar (Durch Eingabe der dezimalen Nummer und ENTER)
- Korrekte Darstellung in 8, 15, 16, 24 und 32-bit Modi. 8-bit wird erreicht, indem der 8-bit-Farbwert im alpha-Feld von BGRA_t steht
- gets in util.c |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:34:15 14.09.2010 Titel: |
|
Zitieren |
0.0.1.231 - Rev: 815
Formale Änderungen in serial.h/c
Beep ausgeschaltet |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:37:33 15.09.2010 Titel: |
|
Zitieren |
0.0.1.231 - Rev: 816
Meldungen im BL2 ergänzt
| Assembler Code: | msgGTD db 0x0D, 0x0A, "GTD installed ...', 0
msgUnrealMode db 0x0D, 0x0A, "Unreal Mode entered ...', 0
msgLoadKernel db 0x0D, 0x0A, "Now loading Kernel ...', 0
msgFloppyMotorOff db 0x0D, 0x0A, "Floppy Disk Motor switched off ...', 0
msgSwitchToPM db 0x0D, 0x0A, "Now switching to Protected Mode (PM) ...', 0
msgFailure db 0x0D, 0x0A, "Missing KERNEL.BIN (Fatal Error)', 0 | |
| Assembler Code: | msgGTD db 0x0D, 0x0A, "GTD installed ...', 0
msgUnrealMode db 0x0D, 0x0A, "Unreal Mode entered ...', 0
msgLoadKernel db 0x0D, 0x0A, "Now loading Kernel ...', 0
msgFloppyMotorOff db 0x0D, 0x0A, "Floppy Disk Motor switched off ...', 0
msgSwitchToPM db 0x0D, 0x0A, "Now switching to Protected Mode (PM) ...', 0
msgFailure db 0x0D, 0x0A, "Missing KERNEL.BIN (Fatal Error)', 0 | |
| Assembler Code: | msgGTD db 0x0D, 0x0A, "GTD installed ...', 0
msgUnrealMode db 0x0D, 0x0A, "Unreal Mode entered ...', 0
msgLoadKernel db 0x0D, 0x0A, "Now loading Kernel ...', 0
msgFloppyMotorOff db 0x0D, 0x0A, "Floppy Disk Motor switched off ...', 0
msgSwitchToPM db 0x0D, 0x0A, "Now switching to Protected Mode (PM) ...', 0
msgFailure db 0x0D, 0x0A, "Missing KERNEL.BIN (Fatal Error)', 0 | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:04:39 17.09.2010 Titel: |
|
Zitieren |
Version 0.0.1.232:
- serial_log eingebaut: Sendet Text über die serielle Schnittstelle (Deaktivierbar in os.h)
- memmove in userlib
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:02:22 17.09.2010 Titel: |
|
Zitieren |
0.0.1.233 - Rev: 818
vm86 monitor wird mit serial_log überwacht
in os.h #define _SERIAL_LOG_ aktivieren
Anmerkung: läuft sehr langsam in VBox, also bitte Geduld. Output wird z.B. in VBox in eine text-datei gelenkt.
Hier ein Beispiel eines Durchlaufs in VBox:
http://henkessoft.de/OS_Dev/Bilder/serielle1.txt
interrupt ...
(sensitiver code)
iret
hlt
interrupt ...
(sensitiver code)
iret
hlt
interrupt ...
(sensitiver code)
iret
hlt
usw. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:24:27 17.09.2010, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:42:31 18.09.2010 Titel: |
|
Zitieren |
0.0.1.234 - Rev: 819
- os.h formal umgebaut
- serielle Schnittstelle beschleunigt (Divisor 1 anstelle 3)
- vm86 monitor - Ausgaben nach COM1 (und Text-Datei) aktiviert
Deutlich schneller als bei VBox geht es übrigens mit qemu:
| Zitat: | | qemu.exe -fda FloppyImage.img -soundhw pcspk -localtime -serial file:serielle1.txt -usb -usbdevice disk:format=raw:dummy.bin |
Das ist dann COM1. Für COM2 usw. einfach zusätzliche -serial ... einsetzen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:01:53 19.09.2010 Titel: |
|
Zitieren |
Version 0.0.1.235:
- makefile verbessert
-- Bootloader wird bei Veränderung automatisch neu kompiliert
-- Alle map-Dateien nach /documentation gelegt
- pci.c: Ausgabe von Vendor&DeviceID verbessert.
- VBE:
-- Palette nutzt nun 8-bit pro Farbe, falls von der Grafikkarte unterstützt (Qemu unterstützt es nicht)
-- Bugfixes: Textmodi werden nun korrekt erkannt; Modi, die nicht von der aktuellen Hardwarekonfiguration unterstützt werden,werden ausgeblendet
- Optimierungen und Aufräumarbeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:35:18 19.09.2010 Titel: |
|
Zitieren |
| Zitat: | | pci.c: Ausgabe von Vendor&DeviceID verbessert. | Was wurde dort genau verbessert? |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:46:06 19.09.2010 Titel: |
|
Zitieren |
Bislang war es so, das DeviceID und VendorID bekannt sein mussten, damit das Gerät mit Namen genannt wurde. Jetzt wird, wenn nur der Vendor bekannt ist, dieser ausgegeben und dazu dann die DeviceID. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:29:14 19.09.2010 Titel: |
|
Zitieren |
Version 0.0.1.236:
- Bugfix: (Hoffentlich) kein unkontrollierter Farbwechsel mehr
- Bugfix: Bei #PF und co werden wieder die richtigen Fehlermeldungen angezeigt
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:56:43 23.09.2010 Titel: |
|
Zitieren |
0.0.1.236 - Rev: 822
BL2 optimiert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Ideenlos
Mitglied
Benutzerprofil
Anmeldungsdatum: 08.08.2010
Beiträge: 7
|
Ideenlos Mitglied
11:46:28 25.09.2010 Titel: |
|
Zitieren |
Revision 823 (behebt hoffentlich den BL2-Bug, auch wenn MrX mir da keine großen Hoffnungen macht ):
BL stage2: ebx statt bx sichern
Wenn das BIOS ebx im Ganzen verändert, kann es passieren, dass die Kopierschleife den eigenen Code überschreibt. Wenn man ebx statt nur bx speichert, wird dies verhindert. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:55:19 26.09.2010 Titel: |
|
Zitieren |
Version 0.0.1.237:
- Optimierungen BL1 (u.a. jetzt mit -Ox assembliert)
- Optimierungen BL2
- irq.c: Code verbessert/vereinfacht
- vbe.c: Bugfix: Grafikmodi jetzt auf mehr Grafikkarten korrekt angezeigt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:03:21 26.09.2010 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:57:44 27.09.2010 Titel: |
|
Zitieren |
Version 0.0.1.238:
- Multiboot-kompatibler Kernel. (Weiterhin BIN, noch nicht ELF)
- ELFs mit strip verkleinert
- Unser BL2 liefert dem Kernel eine Multiboot-Struktur, bei der aber nur der Member für die mmap gesetzt ist.
- GRUB-Rohling beigelegt (bootet automatisch KERNEL.BIN) |
|
|
|
 |
PNoob
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.07.2010
Beiträge: 23
|
PNoob Mitglied
21:46:46 28.09.2010 Titel: |
|
Zitieren |
Version 0.0.1.238: Rev. 826
- Bootloader übergibt jetzt die Memory Map im Multiboot Format
- Bootloader übergibt jetzt Lower/upper Memory
- Bootloader übergibt jetzt den Bootloader Namen PrettyBL |
|
|
|
 |
PNoob
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.07.2010
Beiträge: 23
|
PNoob Mitglied
22:12:25 28.09.2010 Titel: |
|
Zitieren |
- Upper Mem wird jetzt richtig in der multiboot strukture gespeichert |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
14:00:29 03.10.2010 Titel: |
|
Zitieren |
Version 0.0.1.239:
- Bugfix: strip funktioniert nun auf verschiedenen Umgebungen (im makefile nun als Variable)
- BL2:
-- Bugfix: mmap_length nun korrekt berechnet
-- Bugfix: Konvertierungsfunktion für mmap korrigiert
- paging.c: verwendet nun mmap_length um das Ende der mmap festzustellen (multiboot-Kompatibilität)
- vbe.c:
-- Bugfix: vbe_drawRect nun korrekt
-- Bugfix: VBE-Signatur ("VESA") nun korrekt angezeigt (nicht nullterminiert)
- Aufgeräumt&Kleinigkeiten
EDIT: Achtung! Revisions-Nummer falsch (828 wäre korrekt) |
Zuletzt bearbeitet von Mr X am 14:21:13 03.10.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
16:03:21 08.10.2010 Titel: |
|
Zitieren |
Version 0.0.1.240:
- fformat-Bug behoben
- VBE-Bootscreen etwas erweitert^^ (Kreisförmiger Farbverlauf (mit vbe_drawCircle erreicht) wird zeitverzögert gemalt)
- Tab/Leerzeichenkorrekturen und andere Formatierungssachen sowie Codevereinfachungen
(Revisionsnummer nun wieder korrekt) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:18:00 08.10.2010 Titel: |
|
Zitieren |
Version 0.0.1.241 - Rev: 830
Zwei zusätzliche Zeilenumbrüche am Ende von video-screenshot ergänzt.
Sieht nun übersichtlicher aus. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:19:37 14.10.2010 Titel: |
|
Zitieren |
Version 0.0.2.0, Rev. 831:
- Memoryleak bei FPUptr beseitigt
- Userprogramme jetzt mit strip bearbeitet (kleiner)
- Ausgabe beim boot gestrafft. (u.a. Ramdiskinhalt nicht mehr angezeigt)
- Nicht (mehr) benötigte Funktionen fetchESP und ähnliche gelöscht
- Codestylekorrekturen
Aufgrund der zahlreichen seit dem Versionssprung auf 0.0.1.0 erreichten Verbesserungen am Kernel haben wir beschlossen, die Versionsnummer auf 0.0.2.0 zu erhöhen.
Seit 0.0.2.0 wurde u.a. folgendes implementiert:
- VM86
- VBE "Techdemo" Startbildschirm + Mauszeiger
- Netzwerk (RTL8139): Ping beantworten
- Bootloader läd nun "beliebig" große Kernel dank Unreal Mode
- (Teilweise) Multiboot/GRUB-Kompatibilität
- Beschleunigtes Laden von Dateien durch Caching und trackweises Lesen von Floppy
- Scheduler-Ausbau, "richtiges" Schlafen
- Tastaturtreiber erweitert
- Video/Konsolen: Falschfarben-Problematik untersucht & behoben
- API (syscalls) erweitern, u.a File-API
- Syscall-API erweitert und konsolidiert
- Verbesserte Dokumentation und Logging
|
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:56:55 14.10.2010 Titel: |
|
Zitieren |
Test mit qemu ohne Netzwerk:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | PrettyOS [Version 0.0.2.0 - Rev: 831]
--------------------------------------------------------------------------------
FPU: yes (Test: OK)
COM1 (IO-port: 03F8h) initialized
#0 0:0.0 IRQ:0 Intel PCI & Memory
#1 0:1.0 IRQ:0 Intel PIIX3 PCI-to-ISA Bridge (Triton II)
#2 0:1.1 IRQ:0 Intel PIIX3 IDE Interface (Triton II)
#3 0:1.2 IRQ:11 Intel USB EHCI Controller USB EHCI F0000000h MMIO sz:4096
#4 0:1.3 IRQ:9 Intel PIIX4/4E/4M Power Management Controller
#5 0:2.0 IRQ:0 Cirrus 64-bit VisualMedia Accelerator
#6 0:3.0 IRQ:11 Intel Gigabit Ethernet Controller
1.44 MB FDD first device found
Disk is formated with FAT12.
Available ports:
Type Number Name Inserted disk
----------------------------------------------------------------------
FDD A Floppy Dev 1 PRETTYOS
RAM B RAM RAMdisk
----------------------------------------------------------------------
Attached disks:
Type Number Name Part. Serial
----------------------------------------------------------------------
Floppy 1 PRETTYOS 0 PRETTYOS
RAMdisk 2 RAMdisk 0 786438
----------------------------------------------------------------------
--------------------------------------------------------------------------------
PrettyOS Booted
-------------------------------------------------------------------------------- | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | PrettyOS [Version 0.0.2.0 - Rev: 831]
--------------------------------------------------------------------------------
FPU: yes (Test: OK)
COM1 (IO-port: 03F8h) initialized
#0 0:0.0 IRQ:0 Intel PCI & Memory
#1 0:1.0 IRQ:0 Intel PIIX3 PCI-to-ISA Bridge (Triton II)
#2 0:1.1 IRQ:0 Intel PIIX3 IDE Interface (Triton II)
#3 0:1.2 IRQ:11 Intel USB EHCI Controller USB EHCI F0000000h MMIO sz:4096
#4 0:1.3 IRQ:9 Intel PIIX4/4E/4M Power Management Controller
#5 0:2.0 IRQ:0 Cirrus 64-bit VisualMedia Accelerator
#6 0:3.0 IRQ:11 Intel Gigabit Ethernet Controller
1.44 MB FDD first device found
Disk is formated with FAT12.
Available ports:
Type Number Name Inserted disk
----------------------------------------------------------------------
FDD A Floppy Dev 1 PRETTYOS
RAM B RAM RAMdisk
----------------------------------------------------------------------
Attached disks:
Type Number Name Part. Serial
----------------------------------------------------------------------
Floppy 1 PRETTYOS 0 PRETTYOS
RAMdisk 2 RAMdisk 0 786438
----------------------------------------------------------------------
--------------------------------------------------------------------------------
PrettyOS Booted
-------------------------------------------------------------------------------- | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | PrettyOS [Version 0.0.2.0 - Rev: 831]
--------------------------------------------------------------------------------
FPU: yes (Test: OK)
COM1 (IO-port: 03F8h) initialized
#0 0:0.0 IRQ:0 Intel PCI & Memory
#1 0:1.0 IRQ:0 Intel PIIX3 PCI-to-ISA Bridge (Triton II)
#2 0:1.1 IRQ:0 Intel PIIX3 IDE Interface (Triton II)
#3 0:1.2 IRQ:11 Intel USB EHCI Controller USB EHCI F0000000h MMIO sz:4096
#4 0:1.3 IRQ:9 Intel PIIX4/4E/4M Power Management Controller
#5 0:2.0 IRQ:0 Cirrus 64-bit VisualMedia Accelerator
#6 0:3.0 IRQ:11 Intel Gigabit Ethernet Controller
1.44 MB FDD first device found
Disk is formated with FAT12.
Available ports:
Type Number Name Inserted disk
----------------------------------------------------------------------
FDD A Floppy Dev 1 PRETTYOS
RAM B RAM RAMdisk
----------------------------------------------------------------------
Attached disks:
Type Number Name Part. Serial
----------------------------------------------------------------------
Floppy 1 PRETTYOS 0 PRETTYOS
RAMdisk 2 RAMdisk 0 786438
----------------------------------------------------------------------
--------------------------------------------------------------------------------
PrettyOS Booted
-------------------------------------------------------------------------------- | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 15:57:28 14.10.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:25:41 20.10.2010 Titel: |
|
Zitieren |
Version 0.0.2.1:
- Header und Implementierungsdateien der C-Standardlib hinzugefügt (userspace)
- Projektdatei umsortiert
- context_t entfernt
- Diverse Kleinigkeiten |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
16:55:27 22.10.2010 Titel: |
|
Zitieren |
Version 0.0.2.2:
- Bugfix: Kein Absturz bei Shell-Eingaben mehr |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:22:58 31.10.2010 Titel: |
|
Zitieren |
Version 0.0.2.3 - Rev. 834
- APIC-Bit in cpuid überprüft und apic_install als Rumpf eingebaut (qemu auf intel-dualcore-host emuliert es)
- Beep ausgeschaltet |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 11:48:08 31.10.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:48:14 03.11.2010 Titel: |
|
Zitieren |
Version 0.0.2.4:
- Codebasis für Power-Management angelegt
-- APM (funktioniert noch nicht, daher in power_management.c Zeile 88 auskommentiert)
-- Shutdown-Workaround für fehlendes PM
- timer.c/sys_speaker.c: 1193182 statt 1193180
- Task wird nun nach invalid Opcode beendet
- Ergebnisse eines kleinen "Code Reviews" von ehenkes und mir (kernel.asm und ckernel.c)
- Kleinigkeiten |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:44:54 05.11.2010 Titel: |
|
Zitieren |
Version 0.0.2.5:
- Invalid-Opcode Problem unter Qemu mit einem HACK gefixt
- Fat12_BPB.inc im BL2 entfernt
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:01:06 11.12.2010 Titel: |
|
Zitieren |
version = "0.0.2.6 - Rev: 837"
Kleine Änderungen in dhcp.h |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
16:53:32 12.12.2010 Titel: |
|
Zitieren |
version 0.0.2.6 - Rev: 838
vbe.c
- Einfache und langsame vbe_clearScreen() Funktion hinzugefügt.
gui_window.c/.h
- Versuch: Fenster im VBE Modus zu implementieren, bis jetzt noch nicht funktionierend... |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:26:00 12.12.2010 Titel: |
|
Zitieren |
Version 0.0.2.7 - Rev. 839:
- Erkennung von xHCI-Controllern ergänzt (ungetestet)
- Arrays für Ports, Disks und Partitionen in ehci.c verkleinert (ungenutztes Element entfernt)
- strncmp ergänzt (CStdlib)
- Projektmappe aktualisiert
- Codestil
Edit: Ich hab übrigens vergessen, im sourcecode die Revision zu erhöhen, nur die Version hab ich erhöht. |
Zuletzt bearbeitet von Mr X am 18:34:47 12.12.2010, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:26:30 12.12.2010 Titel: |
|
Zitieren |
Version 0.0.2.8:
- Bugfix für GUI: Fenster nun korrekt gezeichnet
- Bugfix in vbe_drawRect: x und y waren vertauscht |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
20:48:02 12.12.2010 Titel: |
|
Zitieren |
version 0.0.2.8 - Rev: 841
- GUI Fenster: Pixel noch etwas zurechtgerückt |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
21:52:59 13.12.2010 Titel: |
|
Zitieren |
version 0.0.2.8 - Rev: 842
- gui_window.c/h
reDrawWindow()
- füllen von window_t.data |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
12:39:06 15.12.2010 Titel: |
|
Zitieren |
version 0.0.2.8 - Rev: 843
- gui_window.c/h
window_t.data wird jetzt mit Daten gefüllt... |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:25:30 16.12.2010 Titel: |
|
Zitieren |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
17:21:18 16.12.2010 Titel: |
|
Zitieren |
version 0.0.2.8 - Rev: 844
- gui_window.c/h
korrekturen
- gui_button.c/h
CreateButton();
DrawButton(...);
- mouse.c
Maus, alte Position löschen |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:56:44 16.12.2010 Titel: |
|
Zitieren |
Version 0.0.2.9:
- Verbesserungen an der "GUI"
- Neue Version von mingw32-make.exe (3.82) |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:11:21 16.12.2010 Titel: |
|
Zitieren |
Version 0.0.2.10:
- Fenster nun wieder angezeigt |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
22:02:15 17.12.2010 Titel: |
|
Zitieren |
Version 0.0.2.11:
- Code wird nun ohne -fleading-underscore übersetzt
- Bugfix im makefile: cstdlib wird auch aufgeräumt bei clean und rebuild
- process.asm gelöscht, da längst obsolet
- Bugfix in util.c/h: abs muss signed integer nehmen. |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
13:21:42 18.12.2010 Titel: |
|
Zitieren |
version 0.0.2.12 - Rev: 848
- gui.c/h
GUI wird jetzt hier aufgebaut (ESC zum Beenden)
close button funktioniert (Test)
StartGUI();
EndGUI();
- mouse.c
aufgeräumt
- gui_window.c/h
aufgeräumt
- vbe.c
erweitert, auswahl zwischen Grafischen Tests und der GUI.
Es wird langsam Zeit für einen DoubleBuffer... |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
14:20:39 18.12.2010 Titel: |
|
Zitieren |
Bugfix: gui.c/h jetzt da... |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
14:37:58 18.12.2010 Titel: |
|
Zitieren |
Version 0.0.2.13:
- Bugfixes in GUI: Kein Nullpointer mehr dereferenziert
- DrawButton: ÜBergabe des Buttons als Pointer
- Projektmappe aktualisiert |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:47:45 18.12.2010 Titel: |
|
Zitieren |
Version 0.0.2.14:
- APM auskommentiert - Führte zu endlosen VM86-sensitive-opcode-Fehler |
|
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
12:32:14 19.12.2010 Titel: |
|
Zitieren |
Rev. 851:
* Neuer Bootscreen |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:51:29 19.12.2010 Titel: |
|
Zitieren |
Version 0.0.2.15:
- Maus: Unterstützung für 4./5. Taste
- Aufgeräumt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:51:19 22.12.2010 Titel: |
|
Zitieren |
kleiner Zwischenstand bei netprotocol/udp und dhcp (da hänge ich fest)
hab vergessen etwas hochzuzählen
Rev. 854 |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:33:10 22.12.2010, insgesamt 1-mal bearbeitet |
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
20:26:04 27.12.2010 Titel: |
|
Zitieren |
version 0.0.2.17 - Rev: 855
VBEShell.c/.h
- grobe umsetzung der shell.c in VBE-Modus
vbe.c/.h
- Doublebuffer?
- um startVBEShell Option erweitert |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:10:07 31.12.2010 Titel: |
|
Zitieren |
Version 0.0.2.18:
- Bugfix in gets: \n nicht mehr im zurückgegebenen String enthalten
- Bugfix im Floppytreiber: Cache beim schreiben eines trackes nun korrekt als ungültig markiert
- Shell/Userspace: "fformat"-Kommando und zugehörigen Syscall gelöscht
- format-Funktion in fsmanager und FAT-Treiber eingehängt. Kommando "format" in Shell hinzugefügt. (FAT16 und FAT32 funktioniert noch nicht. Immernoch Floppy-Abhängig. Enthält HACKS)
- strncpyandfill-Funktion hinzugefügt. strncpy basiert nun darauf.
- Maustreiber vereinfacht |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
16:36:11 01.01.2011 Titel: |
|
Zitieren |
Version 0.0.2.19:
- analyzeBootSector ersetzt durch flexiblere, in FS-/Devicemanager integrierte Funktionen
- memshow: Zeilenumbruch alle 16 bytes -> Übersichtlicher
- APM.COM gelöscht bei make clean.
- Projektmappe aktualisiert |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
13:30:48 05.01.2011 Titel: |
|
Zitieren |
version 0.0.2.20 - Rev: 858
vbe.c/h
- Doublebuffer implementiert
- allocDoubleBuffer(), vbe_flipScreen()
- vbe_setPixel() geändert
gui.c/h
- kleine erweiterungen |
|
|
|
 |
internet
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.07.2010
Beiträge: 52
|
internet Mitglied
17:01:30 14.01.2011 Titel: |
|
Zitieren |
version 0.0.2.21 - Rev: 859
VBEShell.c/h
- um Doublebuffer erweitert
- kleine korrekturen
gui_window.c/h
- close button in die window_t Struktur hinzugefügt |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
16:31:27 05.02.2011 Titel: |
|
Zitieren |
Version 0.0.2.22
- Videomemory jetzt mit Paging gemappt
- Funktionen für Order-Unterstützung hinzugefügt (Funktionieren noch nicht)
- Bugfix: Bootloader springt nun an korrekte Adresse - Sprungbefehl am Anfang des Kernels nicht mehr nötig.
- Aufgeräumt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:49:57 06.02.2011 Titel: |
|
Zitieren |
Version 0.0.2.23 - Rev: 861
Teilweise Überarbeitung Networking source code aufgrund Code review. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:44:34 13.02.2011 Titel: |
|
Zitieren |
0.0.2.24 - Rev: 862
DHCP weiter vorbereitet.
Für das Senden fehlen z.T. noch die Funktionen.
Klares Design notwendig. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
13:42:33 19.02.2011 Titel: |
|
Zitieren |
Version 0.0.2.25:
- DMA-Code aus Diskettentreiber gelöst. Sollte nun für alle Channels des Slave-Controllers funktionieren. Transfers "beliebiger" Länge
- CDI-DMA implementiert
- Bugfix: Floppy-Motorsteuerung funktioniert wieder
- Kleinigkeiten |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:32:40 20.02.2011 Titel: |
|
Zitieren |
Version 0.0.2.26:
- Scheduler unterstützt nun wait mit timeout
- Floppytreiber nutzt nun waitForIRQ - Spart CPU-Zeit
- cdi-Audio-Header hinzugefügt
- cdi_wait_irq implementiert
- Kleinigkeiten |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:13:17 20.02.2011 Titel: |
|
Zitieren |
Version 0.0.2.27:
- Bugfix: Keine Deadlocks mehr durch zu geringe timeouts
- CDI-Header geupdated
- CDI-Implementierung geringfügig erweitert
- Scheduler gibt bei wait-Funktionen zurück, ob ein timeout eingetreten ist
- waitForIRQ berücksichtigt nun IRQs der Vergangenheit (Zurücksetzen des Zählers mit irq_resetCounter)
- Floppytreiber nun vollständig auf waitForIRQ umgebaut
- Scheduler besser dokumentiert |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:26:51 25.02.2011 Titel: |
|
Zitieren |
Version 0.0.2.28:
- Semaphores jetzt funktionsfähig (und abgespeckt. Ob wir sie jemals brauchen, weiß ich nicht, da wir nun auch Mutexes haben)
- Mutexes eingeführt
- Verwendung von Mutexen in Floppytreiber, Heap und Video/Consolen
- Floppytreiber liest nun FDC-Version aus. (Sollte 90h sein)
- Scheduler/Tasking: Hierachische Änderung. Task-Switch-Interrupt ruft nun zuerst Scheduler auf |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:16:15 26.02.2011 Titel: |
|
Zitieren |
Wo ist eigentlich fformat abgeblieben? |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
10:13:07 26.02.2011 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:09:02 26.02.2011 Titel: |
|
Zitieren |
Version 0.0.2.29:
- Executable-Manager hinzugefügt (Dadurch könnten wir mehrere Executable-Formate unterstützen.)
- Bugfix³: Richtiges PD in elf.c eingestellt nach erstellen des userPD -> weniger #PF-Gefahr, keine waitForKeyStroke mehr nötig, Namensanzeige in Konsolentitel funktioniert wieder
- keyboard.c: Mit mutex_t statt cli/sti geschützt
- Ausgaben der Shell gestrafft. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:47:53 27.02.2011 Titel: |
|
Zitieren |
Version 0.0.2.30:
- Kernel baut jetzt wieder bei DIAGNOSIS-Flags (außer USB_DIAGNOSIS)
- Userprogramme jetzt inkrementell erstellt
- Eigenes makefile für Shell
- other_userprogs werden jetzt auch automatisch kompiliert, müssen nicht mehr als Binaries vorliegen |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:09:40 27.02.2011 Titel: |
|
Zitieren |
Version 0.0.2.30 - Rev. 869:
- Usertools (prettylib) und stdlibc nun als static library übersetzt und in Userprogramme eingebunden
- shell/makefile mitgeliefert (fehlte in voriger Revision) |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:51:51 01.03.2011 Titel: |
|
Zitieren |
Version 0.0.2.31:
- Syscall sleepMilliseconds entfernt
- Syscall wait hinzugefügt
- sleep und waitForTask im Userspace über den wait-Syscall implementiert
- textColor-Syscall repariert
- Userspace-Makefiles hängen nun auch von den statischen Bibliotheken ab -> Inkrementeller Build funktioniert besser
- Test-Userprogramm ergänzt |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
12:56:16 08.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.32:
- APM: Implementation verbessert (Debug-Ausgaben), funktioniert aber weiterhin nicht
- makefile: Ausgabe gekürzt, Objektdateien nun rekursiv gelöscht
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:57:25 08.05.2011 Titel: |
|
Zitieren |
0.0.2.32 macht Probleme bei vbe in qemu
Hinweis von MrX im IRC chat:
version 0.0.2.20 - Rev: 858 hat den Schaden angerichtet. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 15:08:26 08.05.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:28:10 08.05.2011 Titel: |
|
Zitieren |
Und Revision 872 behebt ihn
Version 0.0.2.33:
- VBE:
--- Neue DoubleBuffer-Implementation (-> Es wird zumindest wieder ein Bild angezeigt, auf echter Hardware allerdings viel zu langsam)
--- setDisplayStart funktionsfähig
- GUI:
--- Verschieben und X-Buttons nun für alle 4 Fenster
--- Aufräumen beim Beenden
- Maus: Anzeige nun Double-Buffer-Kompatibel, aber nur noch in GUI |
Zuletzt bearbeitet von Mr X am 17:28:30 08.05.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:59:06 08.05.2011 Titel: |
|
Zitieren |
Wichtig:
- Aktuelles nasm verwenden, am besten: 2.10rc4
- "Rebuild" anstelle "Build" ausführen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 14:32:28 15.05.2011, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
10:07:28 21.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.34:
- Treiber für AMD PCNet III hinzugefügt. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:54:59 21.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.35:
- Netzwerkschnittstelle implementiert, PCnet- und 8139-Treiber angepasst
- Treiberansatz für RTL8168 (vermutlich auch für RTL8169 verwendbar) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:21:16 22.05.2011 Titel: |
|
Zitieren |
version = "0.0.2.36 - Rev: 875"
ethernet.c umgebaut auf Erkennung des Ethernet Type (bei Ethernet 2):
0x0800 IP
0x0806 ARP
Leider klappt das momentan nicht mit ping oder hrping, landet beides als ARP in PrettyOS, komischerweise wird dies auch in Wireshark so angezeigt.
Bitte um Ratschläge, woran das liegen kann. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:33:52 22.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.37:
- IP wird nun zur Laufzeit abgefragt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:55:26 22.05.2011 Titel: |
|
Zitieren |
version = "0.0.2.38 - Rev: 877"
Eingabe der IP mit gets in der letzten Version führte in qemu-EHCI und auf PC zu
#PF (page not present) at 08200837h - EIP: 0010EADBh
in der Zeile "Attached Disks" bei RAMDisk.
Daher wieder statische Zuordnung der IP in network.c. Eingabecode auskommentiert.
gets steht in util.c. Die Eingabe funktioniert auch. Fehlerursache unklar. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:12:44 22.05.2011 Titel: |
|
Zitieren |
version = "0.0.2.39 - Rev: 878"
Transmit klappt noch nicht bei rtl8139, Zwischenstand zur besseren Kontrolle des OWN Bits. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:39:56 22.05.2011 Titel: |
|
Zitieren |
version = "0.0.2.40 - Rev: 880"
OWN Bit bei Tx von RTL8139 wird gewaltsam auf 1 gesetzt, denn nur 1->0 startet den PCI-Prozess zum Senden. Es funktioniert aber noch nicht. Fehlerursache unklar.
Bitte um Mithilfe, damit das Senden bald klappt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:50:21 23.05.2011 Titel: |
|
Zitieren |
version = "0.0.2.41 - Rev: 881"
Netzwerk senden funktioniert noch nicht
Fehler unklar
malloc bei Tx-Puffer im Verdacht, früher hatten wir da ein statisches Array
MrX teilt im chat mit, das rev. 873 noch mit Transmit OK arbeitet, also hat sich bei der neu implementierten Network-Schnittstelle ein Bug eingeschlichen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:53:56 23.05.2011, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:44:21 23.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.42:
- Senden funktioniert wieder
- Sendefunktion für AMD PCnet hinzugefügt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:49:03 23.05.2011 Titel: |
|
Zitieren |
Ist leider nicht funktionsfähig.
Kleine Verbesserung bei qemu mit statischem Array. Dann sowohl bei ARP Req. als auch bei Ping Req. ein Tx OK, kommt aber nix an, auch nicht in wireshark.
rtl8139.c:
global:
| C/C++ Code: | // Transmit
uint8_t Tx_network_buffer[4096] __attribute__ ((aligned (4))); // Test
| |
| C/C++ Code: | // Transmit
uint8_t Tx_network_buffer[4096] __attribute__ ((aligned (4))); // Test
| |
| C/C++ Code: | // Transmit
uint8_t Tx_network_buffer[4096] __attribute__ ((aligned (4))); // Test
| |
bei install:
| C/C++ Code: | // device->TxBuffer = malloc(4096, 4, "RTL8139-TxBuf");
device->TxBuffer = Tx_network_buffer; // global array instead of malloc | |
| C/C++ Code: | // device->TxBuffer = malloc(4096, 4, "RTL8139-TxBuf");
device->TxBuffer = Tx_network_buffer; // global array instead of malloc | |
| C/C++ Code: | // device->TxBuffer = malloc(4096, 4, "RTL8139-TxBuf");
device->TxBuffer = Tx_network_buffer; // global array instead of malloc | |
Bei real PC leider kein Tx OK.
adapter-> kann durch device->device-> ersetzt werden.
Wir werden hier nochmal von der stabilen und funktionierenden Revision 873 ausgehen und in kleinen Schritten vorwärts gehen mit Tests auf einem echten PC mit RTL8139 im LAN mit Router. Das Problem entsteht beim Einbau der abstrakten Schnittstelle. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:50:05 23.05.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:59:54 24.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.43:
- Zweiten Fehler beim Senden behoben (length & (0x3F0000 | 256<<11); war schuld) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:44:17 24.05.2011 Titel: |
|
Zitieren |
Hardware-Tests mit RTL 8139 Karte positiv. Sowohl ARP reply als auch ICMP reply bei zwei unabhängigen Testern.
hrping -S -t IP (geht bis -s 20, bei -s 10 bricht die Hardware zusammen)
siehe: http://linux-ip.net/html/ether-arp.html |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:53:49 24.05.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:32:33 24.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.44:
- RTL8139-Treiber überspringt nun die ersten 4 Bytes eines empfangenen Paketes (weil sie RTL8139-spezifische Daten enthalten)
- Analyse der Pakete nach ethernet.c ausgelagert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:26:22 24.05.2011 Titel: |
|
Zitieren |
0.0.2.45 - Rev: 885
| C/C++ Code: | // set transmit FIFO threshhold to 48*32 = 1536 bytes to avoid tx underrun (gefunden in open solaris)
*((uint32_t*)(adapter->MMIO_base + RTL8139_TXSTATUS0 + 4 * rAdapter->TxBufferIndex)) = length | (48 << 16); | |
| C/C++ Code: | // set transmit FIFO threshhold to 48*32 = 1536 bytes to avoid tx underrun (gefunden in open solaris)
*((uint32_t*)(adapter->MMIO_base + RTL8139_TXSTATUS0 + 4 * rAdapter->TxBufferIndex)) = length | (48 << 16); | |
| C/C++ Code: | // set transmit FIFO threshhold to 48*32 = 1536 bytes to avoid tx underrun (gefunden in open solaris)
*((uint32_t*)(adapter->MMIO_base + RTL8139_TXSTATUS0 + 4 * rAdapter->TxBufferIndex)) = length | (48 << 16); | |
Das OWN bit 13 wird dabei wohl automatisch auf 0 gesetzt durch die Länge, könnte man evtl. noch separat ergänzen.
IP: 192.168.10.97 |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:29:35 24.05.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:32:00 25.05.2011 Titel: |
|
Zitieren |
0.0.2.46 - Rev: 886
Zusätzlich zu IPv4 und ARP wurde noch IPv6 als ethernet type 0x86DD hinzugefügt bei der Analyse des Ethernet-Protokolls (ethernet.c). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:30:06 26.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.47:
- ARP-code nach arp.c/h ausgelagert
- Bugfix: Richtige Größe beim senden eines ARP-Paketes eingetragen (vorher: Größe des zuvor empfangenen Paketes).
- Bugfix: Senden von Paketen < 60 Bytes funktioniert nun wieder mit RTL8139 (Teile des Pufferinhalts wurden in dem Fall versehentlich gelöscht). |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:31:56 26.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.48:
- strncmp im Kernel eingebaut
- Funktionen für Arp-Tabelle eingebaut. (Weitgehend ungetestet). Keyboard-Shortcut STRG+A, um den Inhalt der Tabelle anzuzeigen
- Liste aller Netzwerkkarten eingebaut |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:03:32 26.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.49 - rev. 889:
Einträge in ARP Tabelle funktionieren nun bei ARP Req./Reply |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:54:15 26.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.50 - rev. 890:
- IP beim network-adapter hinzugefügt, beim Ausdruck aber noch 0.0.0.0 (bei qemu: 111.112.112.121)
- IP/MAC wird manchmal doppelt eingetragen
- Systemfehler beim Empfang: "Time lag" (mit der Zeit stecken immer mehr Pakete im Rohr fest. Müssen erst nach vorne gedrückt werden durch neue Pakete?! )
Bei qemu (server 10.0.2.2) mit TAP (10.0.2.16) kam ein ARP reply zum ARP request von TAP durch:
| Zitat: | | 11 00:24:27.671763 Plus_12:12:12 Plus_12:12:11 ARP 10.0.2.15 is at 00:12:12:12:12:12 | (Quelle: wireshark)
(10.0.2.15 / 00:12:12:12:12:12 ist PrettyOS)
In der ARP Tabelle von PrettyOS auf qemu findet sich nur der Eintrag von TAP. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:35:48 27.05.2011, insgesamt 7-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:04:09 27.05.2011 Titel: |
|
Zitieren |
Hinweis zum ARP Cache:
| Zitat: | | Der ARP-Cache enthält eine vierspaltige Tabelle, die im Allgemeinen aus <Protokolltyp, Protokolladresse des Senders, Hardware-Adresse des Senders, Eintragszeitpunkt> besteht. Das Zeitintervall, nachdem ein Eintrag aus dem ARP-Cache gelöscht wird, ist implementierungsabhängig. So verwerfen aktuelle Linux-Distributionen Einträge nach ca. 5 Minuten. Sobald ein Eintrag in der Tabelle genutzt wird, wird dessen Ablaufzeit verlängert. |
Quelle: http://de.wikipedia.org/wiki/Address_Resolution_Protocol |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:37:00 27.05.2011 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: | Hinweis zum ARP Cache:
| Zitat: | | Der ARP-Cache enthält eine vierspaltige Tabelle, die im Allgemeinen aus <Protokolltyp, Protokolladresse des Senders, Hardware-Adresse des Senders, Eintragszeitpunkt> besteht. Das Zeitintervall, nachdem ein Eintrag aus dem ARP-Cache gelöscht wird, ist implementierungsabhängig. So verwerfen aktuelle Linux-Distributionen Einträge nach ca. 5 Minuten. Sobald ein Eintrag in der Tabelle genutzt wird, wird dessen Ablaufzeit verlängert. |
Quelle: http://de.wikipedia.org/wiki/Address_Resolution_Protocol |
Done.
Version 0.0.2.51:
- Bugfix: STRG+A zeigt nun richtige eigene IP-Adresse an
- Zeitstempel in ARP-Tabelle werden bei Zugriff aktualisiert
- Bootscreen optimiert -> Kein Flackern mehr. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:04:00 27.05.2011 Titel: |
|
Zitieren |
0.0.2.52 - Rev: 892
arp.c überarbeitet:
- doppeltes arp_checkTable entfernt
- addTableEntry nur an einer Stelle für request und reply |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:03:00 27.05.2011 Titel: |
|
Zitieren |
0.0.2.53 - Rev: 893
Noch Fehler beim Eintrag in die ARP, aber keine doppelten Einträge mehr. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:44:41 27.05.2011 Titel: |
|
Zitieren |
0.0.2.54 - Rev: 894
Nun korrekter Code bei arp.c für die ARP tables (dank Hinweis von cefour)
Hinweis von MrX im IRC:
| Zitat: | <MrX>Der Zeitstempel wird noch aktualisiert, das stimmt.
<MrX>Wenn sich aber eine bereits bekannte IP mit anderer MAC meldet, wird die MAC in der Tabelle nicht mehr geändert. |
Der Code ist also noch nicht ok. Es kommt leider auch noch zu Doppeleinträgen mit der gleichen IP/MAC Kombination. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:32:19 28.05.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:00:53 28.05.2011 Titel: |
|
Zitieren |
0.0.2.55 - Rev: 895
Gratuitous ARP eingebaut beim Installieren der Netzwerkadapter.
| C/C++ Code: | for (int i=0; i<10; i++)
{
arp_sendGratitiousRequest(adapter); // show PrettyOS' IP and MAC to the LAN
sleepMilliSeconds(1000);
} | |
| C/C++ Code: | for (int i=0; i<10; i++)
{
arp_sendGratitiousRequest(adapter); // show PrettyOS' IP and MAC to the LAN
sleepMilliSeconds(1000);
} | |
| C/C++ Code: | for (int i=0; i<10; i++)
{
arp_sendGratitiousRequest(adapter); // show PrettyOS' IP and MAC to the LAN
sleepMilliSeconds(1000);
} | |
Mein Entwicklungsrechner im LAN trägt diese IP/MAC aber nicht ein in seiner ARP Tabelle wegen möglichen ARP spoofings. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:34:43 28.05.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:05:45 28.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.56:
- PCNet-Treiber: Besser kommentiert, Verbesserte Ausgaben. Senden funktioniert nun unter Qemu (falsche Konstante war Schuld)
- Gratious-ARP auskommentiert (funktioniert i.d.R. nicht, weil viele Betriebssysteme solche ARPs ignorieren, um ARP-Spoofing zu vermeiden. Unter Qemu funktionierte ARP dadurch überhaupt nicht mehr) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:46:21 28.05.2011 Titel: |
|
Zitieren |
version = "0.0.2.57 - Rev: 897"
tcp.h/tcp.c erkennung / zerlegung überarbeitet
Ports stimmen, Rest leider noch falsch |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:32:28 28.05.2011 Titel: |
|
Zitieren |
version = "0.0.2.58 - Rev: 898"
tcp.h und tcp.c weiter verbessert
6 Flags (nun uint8_t anstelle bool) werden noch nicht richtig angezeigt
(Tests mit telnet und wireshark)
Wichtiger Hinweis:
Mit dem qemu-EHCI (Vers. 0.11.5) klappt der ARP reply nur sporadisch (man kann es mit arp -s 10.0.2.15 00-12-12-12-12-12 statisch eintragen).
Bei qemu 14.1 klappt der ARP reply auf Anhieb.
http://qemu-buch.de/d/QEMU_unter_Microsoft_Windows#QEMU_unter_.C3.A4lteren_Microsoft_Windows-Versionen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:17:39 28.05.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:59:33 28.05.2011 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:44:50 29.05.2011 Titel: |
|
Zitieren |
version = "0.0.2.60 - Rev: 900"
Schalter _NETWORK_DATA_ in os.h eingeführt, um die Ausgaben etwas übersichtlicher zu machen. Die einzelnen Bytes - und ihre Bedeutung - kann man besser in wireshark analysieren. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:47:29 29.05.2011, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:13:11 29.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.61:
- Verbesserungen am RTL8168-Treiber
- Verbesserungen an UDP-Funktionsprototypen
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:58:06 29.05.2011 Titel: |
|
Zitieren |
version = "0.0.2.62 - Rev: 902"
Sende-Funktion in UDP aktualisiert:
| C/C++ Code: | | void UDPSend(struct network_adapter* adapter, void* data, uint32_t length); | |
| C/C++ Code: | | void UDPSend(struct network_adapter* adapter, void* data, uint32_t length); | |
| C/C++ Code: | | void UDPSend(struct network_adapter* adapter, void* data, uint32_t length); | |
Noch nicht getestet. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:26:57 30.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.63:
- Großer Netzwerkprotokollumbau |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:13:29 30.05.2011 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:43:16 31.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.64:
- ELF-Loader setzt nun R/W-Privilegien bei der Speicherallokation
- Konsolen unterstützen nun SCROLL_BEGIN
- Anpassungen an arp wegen Netzwerkumbau in 0.0.2.63
- Kleinigkeiten |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:55:39 31.05.2011 Titel: |
|
Zitieren |
Version 0.0.2.65:
- Ausgaben des RTL8139-Handlers hinter Makro verborgen
- Analyse der Netzwerkpakete in Kernel-Idle-Schleife verlegt
- Erkennung des Adressaten einer Nachricht (MAC, IP) -> TODO: Warum funktioniert das bei ICMP nicht zuverlässig? |
|
|
|
 |
Cefour
Mitglied
Benutzerprofil
Anmeldungsdatum: 24.01.2006
Beiträge: 114
|
Cefour Mitglied
23:15:35 31.05.2011 Titel: |
RE |
Zitieren |
Version = "0.0.2.66 - Rev: 906";
Netzwerk Interface überarbeitet
udpSend eingebaut |
_________________ Flirt Coding Fun Hand und Party www.panbachi.de
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:53:14 31.05.2011 Titel: |
|
Zitieren |
Version = "0.0.2.67 - Rev: 907";
(von cefour eingespielt)
PING PONG über router läuft nicht mehr.
| Zitat: | 23:39:08.264789 192.168.10.103 192.168.10.97 ICMP Echo (ping) request
23:39:08.273097 UnexTech_0f:0a:0c Broadcast ARP Gratuitous ARP for 192.168.10.97 (Request) |
"pingender Rechner schickt an den Router, und Router tauscht mac-addresse im Paket gegen seine eigene aus" (cefour)
Hat bisher nur geklappt, weil wir die MAC-Adresse geliefert haben. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:09:15 01.06.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:08:10 01.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.68 - Rev: 908"
- Formatierungen
- Ver./Rev. korrigiert
- IP 192.168.10.97 (für Hardware-Test)
- Frequenz auf 250 Hz eingestellt wie bei Linux 2.6.13
http://de.wikipedia.org/wiki/Linux_%28Kernel%29#Neuerungen_im_Kernel_2.6
Routing-Tabelle fehlt noch
http://de.wikipedia.org/wiki/Routingtabelle
Beispiel: Aufruf mit netstat -r
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Routingtabelle
===========================================================================
Schnittstellenliste
0x1 ........................... MS TCP Loopback interface
0x2 ...00 13 d4 11 27 a5 ...... Intel(R) PRO/1000 PM Network Connection - Paketplaner-Miniport
===========================================================================
===========================================================================
Aktive Routen:
Netzwerkziel Netzwerkmaske Gateway Schnittstelle Anzahl
0.0.0.0 0.0.0.0 192.168.10.1 192.168.10.103 20
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.10.0 255.255.255.0 192.168.10.103 192.168.10.103 20
192.168.10.103 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.10.255 255.255.255.255 192.168.10.103 192.168.10.103 20
224.0.0.0 240.0.0.0 192.168.10.103 192.168.10.103 20
255.255.255.255 255.255.255.255 192.168.10.103 192.168.10.103 1
Standardgateway: 192.168.10.1
===========================================================================
Ständige Routen:
Keine | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Routingtabelle
===========================================================================
Schnittstellenliste
0x1 ........................... MS TCP Loopback interface
0x2 ...00 13 d4 11 27 a5 ...... Intel(R) PRO/1000 PM Network Connection - Paketplaner-Miniport
===========================================================================
===========================================================================
Aktive Routen:
Netzwerkziel Netzwerkmaske Gateway Schnittstelle Anzahl
0.0.0.0 0.0.0.0 192.168.10.1 192.168.10.103 20
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.10.0 255.255.255.0 192.168.10.103 192.168.10.103 20
192.168.10.103 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.10.255 255.255.255.255 192.168.10.103 192.168.10.103 20
224.0.0.0 240.0.0.0 192.168.10.103 192.168.10.103 20
255.255.255.255 255.255.255.255 192.168.10.103 192.168.10.103 1
Standardgateway: 192.168.10.1
===========================================================================
Ständige Routen:
Keine | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Routingtabelle
===========================================================================
Schnittstellenliste
0x1 ........................... MS TCP Loopback interface
0x2 ...00 13 d4 11 27 a5 ...... Intel(R) PRO/1000 PM Network Connection - Paketplaner-Miniport
===========================================================================
===========================================================================
Aktive Routen:
Netzwerkziel Netzwerkmaske Gateway Schnittstelle Anzahl
0.0.0.0 0.0.0.0 192.168.10.1 192.168.10.103 20
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.10.0 255.255.255.0 192.168.10.103 192.168.10.103 20
192.168.10.103 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.10.255 255.255.255.255 192.168.10.103 192.168.10.103 20
224.0.0.0 240.0.0.0 192.168.10.103 192.168.10.103 20
255.255.255.255 255.255.255.255 192.168.10.103 192.168.10.103 1
Standardgateway: 192.168.10.1
===========================================================================
Ständige Routen:
Keine | |
Anzahl = Metrik |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:21:27 01.06.2011, insgesamt 4-mal bearbeitet |
|
 |
Cefour
Mitglied
Benutzerprofil
Anmeldungsdatum: 24.01.2006
Beiträge: 114
|
Cefour Mitglied
22:48:57 01.06.2011 Titel: |
RE |
Zitieren |
"0.0.2.69 - Rev: 909"
Arp Tabelle, finden eines Eintags war Fehlerhaft.
Wurde durch Integer vergleich anstatt string vergleich behoben |
_________________ Flirt Coding Fun Hand und Party www.panbachi.de
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
12:35:14 02.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.70:
- strncmp durch memcmp ausgetauscht im Netzwerkcode
- Userlib: Weitere Funktionen implementiert
- Bugfix: strncmp repariert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:23:23 02.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.71 - Rev: ..." (nicht committed)
- UDPSend korrigiert (src- und destPort mit htons gedreht)
- Funktion ergänzt in network.c: network_adapter_t* network_getAdapter(uint8_t IP[4]);
- In keyboard.c die Erzeugung eines Netzwerkpakets per Tastendruck strg+n für Experimente ergänzt:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | if(retchar == 'n') // If you want to test something in networking
{
uint8_t sourceIP_address[4] ={192,168,10,97};
uint8_t destIP_address[4] ={192,168,10,103};
network_adapter_t* adapter = network_getAdapter(sourceIP_address);
printf("network adapter: %X\n", adapter); // check
uint16_t srcPort = 40; // unassigend
uint16_t destPort = 40;
if (adapter)
{
UDPSend(adapter, "PrettyOS says hello", strlen("PrettyOS says hello"), srcPort, adapter->IP_address, destPort, destIP_address);
}
return 0;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | if(retchar == 'n') // If you want to test something in networking
{
uint8_t sourceIP_address[4] ={192,168,10,97};
uint8_t destIP_address[4] ={192,168,10,103};
network_adapter_t* adapter = network_getAdapter(sourceIP_address);
printf("network adapter: %X\n", adapter); // check
uint16_t srcPort = 40; // unassigend
uint16_t destPort = 40;
if (adapter)
{
UDPSend(adapter, "PrettyOS says hello", strlen("PrettyOS says hello"), srcPort, adapter->IP_address, destPort, destIP_address);
}
return 0;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | if(retchar == 'n') // If you want to test something in networking
{
uint8_t sourceIP_address[4] ={192,168,10,97};
uint8_t destIP_address[4] ={192,168,10,103};
network_adapter_t* adapter = network_getAdapter(sourceIP_address);
printf("network adapter: %X\n", adapter); // check
uint16_t srcPort = 40; // unassigend
uint16_t destPort = 40;
if (adapter)
{
UDPSend(adapter, "PrettyOS says hello", strlen("PrettyOS says hello"), srcPort, adapter->IP_address, destPort, destIP_address);
}
return 0;
} | |
Kontrolle mittels wireshark: http://www.henkessoft.de/OS_Dev/Bilder/rev911_UDPsend_TEST.PNG |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:05:17 02.06.2011, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:48:39 02.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.72 - Rev: 911" (ACHTUNG: in ckernel.c versehentlich 912)
- Weiterer Fehler in UDPSend behoben (Länge)
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | 1 2 3 4 5 6 7 8 9 | void UDPSend(network_adapter_t* adapter, void* data, uint32_t length, uint16_t srcPort, uint8_t srcIP[4], uint16_t destPort, uint8_t destIP[4])
{
udpPacket_t* packet = (udpPacket_t*)((uintptr_t)data -sizeof(udpPacket_t));
packet->sourcePort = htons(srcPort);
packet->destPort = htons(destPort);
packet->length = htons(length + sizeof(udpPacket_t));
packet->checksum = packet->checksum = udpCalculateChecksum(packet, length + sizeof(udpPacket_t), srcIP, destIP);
ipv4_send(adapter,packet,length + sizeof(udpPacket_t),destIP,17);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | void UDPSend(network_adapter_t* adapter, void* data, uint32_t length, uint16_t srcPort, uint8_t srcIP[4], uint16_t destPort, uint8_t destIP[4])
{
udpPacket_t* packet = (udpPacket_t*)((uintptr_t)data -sizeof(udpPacket_t));
packet->sourcePort = htons(srcPort);
packet->destPort = htons(destPort);
packet->length = htons(length + sizeof(udpPacket_t));
packet->checksum = packet->checksum = udpCalculateChecksum(packet, length + sizeof(udpPacket_t), srcIP, destIP);
ipv4_send(adapter,packet,length + sizeof(udpPacket_t),destIP,17);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | void UDPSend(network_adapter_t* adapter, void* data, uint32_t length, uint16_t srcPort, uint8_t srcIP[4], uint16_t destPort, uint8_t destIP[4])
{
udpPacket_t* packet = (udpPacket_t*)((uintptr_t)data -sizeof(udpPacket_t));
packet->sourcePort = htons(srcPort);
packet->destPort = htons(destPort);
packet->length = htons(length + sizeof(udpPacket_t));
packet->checksum = packet->checksum = udpCalculateChecksum(packet, length + sizeof(udpPacket_t), srcIP, destIP);
ipv4_send(adapter,packet,length + sizeof(udpPacket_t),destIP,17);
} | |
Foto des Wireshark-Pakets: http://www.henkessoft.de/OS_Dev/Bilder/rev912_UDPsend_TEST.PNG
PS: Man muss zuvor PrettyOS pingen, damit die IP/MAC Kombination der destIP in der arp table unseres OS steht.
Nachdem UDPSend funktioniert, kann man sich an DHCPDiscover heran wagen.
An htons denken! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:14:19 02.06.2011, insgesamt 4-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:42:03 02.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.73:
- UDPSend repariert. (Gefährliches Spiel mit Pointern entfernt)
- Ansatz für DHCP_Discover
- 255.255.255.255 statisch in ARP-Tabellen eingetragen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:09:12 02.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.74 - Rev: 913"
Meilenstein: Erfolgreicher DHCP Discover
Thanks to: MrX, cefour
Foto (wireshark): http://www.henkessoft.de/OS_Dev/Bilder/DHCPDiscover.PNG
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | 1 2 3 4 5 6 7 8 9 | // options
packet.options[0] = 99; // MAGIC
packet.options[1] = 130; // MAGIC
packet.options[2] = 83; // MAGIC
packet.options[3] = 99; // MAGIC
packet.options[4] = 53; // DHCP message type
packet.options[5] = 1; // Length
packet.options[6] = 1; // data: DHCP Discover
packet.options[7] = 255; // end | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | // options
packet.options[0] = 99; // MAGIC
packet.options[1] = 130; // MAGIC
packet.options[2] = 83; // MAGIC
packet.options[3] = 99; // MAGIC
packet.options[4] = 53; // DHCP message type
packet.options[5] = 1; // Length
packet.options[6] = 1; // data: DHCP Discover
packet.options[7] = 255; // end | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 | // options
packet.options[0] = 99; // MAGIC
packet.options[1] = 130; // MAGIC
packet.options[2] = 83; // MAGIC
packet.options[3] = 99; // MAGIC
packet.options[4] = 53; // DHCP message type
packet.options[5] = 1; // Length
packet.options[6] = 1; // data: DHCP Discover
packet.options[7] = 255; // end | |
Options: code/tag, length, data
http://www.networksorcery.com/enp/protocol/bootp/options.htm |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:10:58 02.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:11:41 03.06.2011 Titel: |
|
Zitieren |
Ergänzende Versuche, die jedoch nicht zu DHCP OFFER führten:
1) DHCP Options:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // options
packet.options[0] = 99; // MAGIC
packet.options[1] = 130; // MAGIC
packet.options[2] = 83; // MAGIC
packet.options[3] = 99; // MAGIC
packet.options[4] = 53; // MESSAGE TYPE
packet.options[5] = 1; // Length
packet.options[6] = 1; // (data)
packet.options[7] = 55; //
packet.options[8] = 6; // Length
packet.options[9] = 1; // SUBNET MASK
packet.options[10] = 3; // ROUTERS
packet.options[11] = 6; // DOMAIN NAME SERVER
packet.options[12] = 15; // DOMAIN NAME
packet.options[13] = 28; // BROADCAST ADDRESS
packet.options[14] = 42; // Network Time Protocol (NTP) SERVERS
packet.options[15] = 57; // MAX MESSAGE SIZE
packet.options[16] = 2; // Length
packet.options[17] = 2; // (data)
packet.options[18] = 64; // (data)
packet.options[19] = 255; // end
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // options
packet.options[0] = 99; // MAGIC
packet.options[1] = 130; // MAGIC
packet.options[2] = 83; // MAGIC
packet.options[3] = 99; // MAGIC
packet.options[4] = 53; // MESSAGE TYPE
packet.options[5] = 1; // Length
packet.options[6] = 1; // (data)
packet.options[7] = 55; //
packet.options[8] = 6; // Length
packet.options[9] = 1; // SUBNET MASK
packet.options[10] = 3; // ROUTERS
packet.options[11] = 6; // DOMAIN NAME SERVER
packet.options[12] = 15; // DOMAIN NAME
packet.options[13] = 28; // BROADCAST ADDRESS
packet.options[14] = 42; // Network Time Protocol (NTP) SERVERS
packet.options[15] = 57; // MAX MESSAGE SIZE
packet.options[16] = 2; // Length
packet.options[17] = 2; // (data)
packet.options[18] = 64; // (data)
packet.options[19] = 255; // end
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // options
packet.options[0] = 99; // MAGIC
packet.options[1] = 130; // MAGIC
packet.options[2] = 83; // MAGIC
packet.options[3] = 99; // MAGIC
packet.options[4] = 53; // MESSAGE TYPE
packet.options[5] = 1; // Length
packet.options[6] = 1; // (data)
packet.options[7] = 55; //
packet.options[8] = 6; // Length
packet.options[9] = 1; // SUBNET MASK
packet.options[10] = 3; // ROUTERS
packet.options[11] = 6; // DOMAIN NAME SERVER
packet.options[12] = 15; // DOMAIN NAME
packet.options[13] = 28; // BROADCAST ADDRESS
packet.options[14] = 42; // Network Time Protocol (NTP) SERVERS
packet.options[15] = 57; // MAX MESSAGE SIZE
packet.options[16] = 2; // Length
packet.options[17] = 2; // (data)
packet.options[18] = 64; // (data)
packet.options[19] = 255; // end
| |
2) Next Server IP eingetragen:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | 1 2 3 4 5 6 7 8 9 10 11 12 13 | for(uint8_t i = 0; i < 4; i++)
{
packet.ciaddr[i] = 0;
packet.yiaddr[i] = 0;
// packet.siaddr[i] = 0;
packet.giaddr[i] = 0;
}
// next server IP
packet.siaddr[0] = 192;
packet.siaddr[1] = 168;
packet.siaddr[2] = 10;
packet.siaddr[3] = 1; | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | for(uint8_t i = 0; i < 4; i++)
{
packet.ciaddr[i] = 0;
packet.yiaddr[i] = 0;
// packet.siaddr[i] = 0;
packet.giaddr[i] = 0;
}
// next server IP
packet.siaddr[0] = 192;
packet.siaddr[1] = 168;
packet.siaddr[2] = 10;
packet.siaddr[3] = 1; | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | for(uint8_t i = 0; i < 4; i++)
{
packet.ciaddr[i] = 0;
packet.yiaddr[i] = 0;
// packet.siaddr[i] = 0;
packet.giaddr[i] = 0;
}
// next server IP
packet.siaddr[0] = 192;
packet.siaddr[1] = 168;
packet.siaddr[2] = 10;
packet.siaddr[3] = 1; | |
Die Versuche wurden analog mit qemu ausgeführt.
Auch ein Versuch mit
| C/C++ Code: | #define IP_1 0
#define IP_2 0
#define IP_3 0
#define IP_4 0
| |
| C/C++ Code: | #define IP_1 0
#define IP_2 0
#define IP_3 0
#define IP_4 0
| |
| C/C++ Code: | #define IP_1 0
#define IP_2 0
#define IP_3 0
#define IP_4 0
| |
zu starten führt bei realer Hardware zu nichts.
Leider kein Erfolg bezüglich DHCP Offer.
------------------------------------------------------
Hier ein erfolgreicher DHCP-Vorgang eines anderen Rechners:
http://www.henkessoft.de/OS_Dev/Bilder/DHCPDiscover01a.PNG (Abfolge, zeitlich seltsam)
http://www.henkessoft.de/OS_Dev/Bilder/DHCPDiscover01.PNG (DHCP Discover)
http://www.henkessoft.de/OS_Dev/Bilder/DHCPDiscover01b.PNG (Options) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 08:44:32 03.06.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
09:23:53 03.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.75 - Rev: 914"
IP 0.0.0.0 als source, andere Options, DHCP Autoconfig
Für qemu konfiguriert.
Leider noch kein Offer. Gute Ideen sind gesucht. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:52:37 03.06.2011 Titel: |
|
Zitieren |
Einen weiteren PC probiert mit einer RTL8139C, eingestellter IP 192.168.10.96 und natürlich anderer MAC:
ebenfalls kein DHCP OFFER als Antwort
Ergänzung:
1) kein zugang zum router http://www.c-plusplus.de/forum/287416-60
2) IP ... 97 MAC ... ist fest dort eingetragen
jetzt habe ich noch einen testrechner mit passender netzwerkkarte gefunden mit anderer MAC, und da konnte ich nun auch mit 0.0.0.0 starten, hat aber auch keine OFFER gebracht. Nun läuft es aber so, wie es wohl sein soll, nämlich dass die sourceIP 0.0.0.0 ist.
Fazit: wir stecken fest.
Routing? DNS? Gateway? |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:08:58 03.06.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:53:27 03.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.76 - Rev: 915"
- DHCP Discover: Options bearbeitet, z.B. Wunsch-IP. AFFE00xx als laufende xid gebaut, damit man mehrere Messages auseinander halten kann.
- showARPTable optisch verbessert
- bootscreen unterdrückt (macht bei manchen Maschinen Probleme: freeze)
Leider noch kein OFFER |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:33:42 03.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.77 - Rev: 916"
in rtl8139.c:
sleepMilliseconds(...) durch delay(...) getauscht, weil ein Testrechner dort >50% hängen blieb (endless loop, freeze). Merkwürdiger Fehler, da es ja ab und zu klappte, also kein systematisches Ereignis. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:41:48 03.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:10:29 04.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.78 - Rev: 917"
- Systemfrequenz von 250 Hz (Linux) auf 100 Hz zurückgesetzt, weil es auch bei delay zu Problemen kam (Danke an MrX für diesen Hinweis).
- Options auf 340 Byte erweitert, damit die DHCP-Gesamtgröße von 576 erreicht wird.
- sname und file komplett genullt (sieht in wireshark besser aus ^^)
DHCP Discover sieht in wireshark absolut korrekt aus.
==> bisher kein DHCP OFFER |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:24:57 04.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.79 - Rev: 918"
- DHCP_INFORM ergänzt
- IP (beim start), SIP (server), RIP (requested) nach vorne in network.h
==> bisher weder OFFER noch ACK (allerdings erhielt auch ein anderer PC keine Antwort auf sein gesendetes INFORM)
... kann alles an meinem Router, DHCP server liegen
... Qemu + TAP ist noch verstockter |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:16:28 04.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:58:43 05.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.80:
- Verbesserungen an Netzwerktreibern (PCNet und RTL8168): Ausgaben im Interrupt-Handler hinter Makro versteckt.
- Memoryleak beseitigt: Mutex der Keyqueues wurde nicht gelöscht, wenn die keyqueue gelöscht wird.
- userPT und userPD werden nicht mehr "doppelt" freigegeben.
- Überflüssige Membervariablen von task_t entfernt
- Kleinigkeiten/Codestyle. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:22:57 05.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.81:
- Bugfix unter Bochs
- bochs.bxrc geupdated |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:14:25 05.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.82 - Rev: 921"
- Kleinere Formatierungen in task.h/c, kernelStackSize in die Implementierungsdatei verlegt (kein #define)
- Kommentar in arp.c
Test mit Emulatoren Bochs, VBox, MS VPC, VMware Player, Qemu verlaufen alle positiv. Herzlichen Dank hierfür an alle Developer und Tester.
Wir hatten auch schon andere Zeiten. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:32:52 05.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:19:40 06.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.83 - Rev: 922"
dma.h/c und executable.h/c Formatierung |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:31:59 07.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.84 - Rev: 923"
- udp checksum auf 0 (Hinweis von cefour aufgrund RFC), allerdings war hier beim DHCP-Einloggen des Notebooks eine udp checksum voranden: http://www.henkessoft.de/OS_Dev/Bilder/DHCPDiscover01.PNG
- Auf DHCP Discover erfolgte Antwort des Servers an den Client (67 an 68), leider noch ohne Debug (in wireshark nicht sichtbar ?!)
Wir wissen also noch nicht, was uns der DHCP server auf unser DHCP_Discover mitteilt.
Beweisfoto: Screenshot (strg+s)
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | PrettyOS [Version 0.0.2.84 - Rev: 923]
--------------------------------------------------------------------------------
packet sent.
DHCP Discover sent.
EthernetSend: length: 618.
>>> Transmission starts <<<
Physical Address of Tx Buffer = 014051D8h
packet sent.
DHCP Discover sent.
EthernetSend: length: 618.
>>> Transmission starts <<<
Physical Address of Tx Buffer = 014051D8h
packet sent.
Length: 594
MAC Receiver: 00h 10h A7h 0Fh 0Ah 0Ch MAC Transmitter: 00h 22h CFh 36h 9Dh 1Ch
Ethernet: type 2, Type: 08h 00h
Ethernet 2. Ethernet type: IP.
IPv4 packet received. We are not the addressee.
Length: 594
MAC Receiver: 00h 10h A7h 0Fh 0Ah 0Ch MAC Transmitter: 00h 22h CFh 36h 9Dh 1Ch
Ethernet: type 2, Type: 08h 00h
Ethernet 2. Ethernet type: IP. IP version: 4, IP Header Length: 20 byte
UDP.
UDP Header information:
+--------------+----------------+
| 67 | 68 | (source port, destination port)
+-------------------------------+
| 556 | 5338h | (length, checksum)
+-------------------------------+
UDP Bootstrap Protocol (BOOTP) Client, also used by DHCP Client
Screenshot to Floppy (Thread) | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | PrettyOS [Version 0.0.2.84 - Rev: 923]
--------------------------------------------------------------------------------
packet sent.
DHCP Discover sent.
EthernetSend: length: 618.
>>> Transmission starts <<<
Physical Address of Tx Buffer = 014051D8h
packet sent.
DHCP Discover sent.
EthernetSend: length: 618.
>>> Transmission starts <<<
Physical Address of Tx Buffer = 014051D8h
packet sent.
Length: 594
MAC Receiver: 00h 10h A7h 0Fh 0Ah 0Ch MAC Transmitter: 00h 22h CFh 36h 9Dh 1Ch
Ethernet: type 2, Type: 08h 00h
Ethernet 2. Ethernet type: IP.
IPv4 packet received. We are not the addressee.
Length: 594
MAC Receiver: 00h 10h A7h 0Fh 0Ah 0Ch MAC Transmitter: 00h 22h CFh 36h 9Dh 1Ch
Ethernet: type 2, Type: 08h 00h
Ethernet 2. Ethernet type: IP. IP version: 4, IP Header Length: 20 byte
UDP.
UDP Header information:
+--------------+----------------+
| 67 | 68 | (source port, destination port)
+-------------------------------+
| 556 | 5338h | (length, checksum)
+-------------------------------+
UDP Bootstrap Protocol (BOOTP) Client, also used by DHCP Client
Screenshot to Floppy (Thread) | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | PrettyOS [Version 0.0.2.84 - Rev: 923]
--------------------------------------------------------------------------------
packet sent.
DHCP Discover sent.
EthernetSend: length: 618.
>>> Transmission starts <<<
Physical Address of Tx Buffer = 014051D8h
packet sent.
DHCP Discover sent.
EthernetSend: length: 618.
>>> Transmission starts <<<
Physical Address of Tx Buffer = 014051D8h
packet sent.
Length: 594
MAC Receiver: 00h 10h A7h 0Fh 0Ah 0Ch MAC Transmitter: 00h 22h CFh 36h 9Dh 1Ch
Ethernet: type 2, Type: 08h 00h
Ethernet 2. Ethernet type: IP.
IPv4 packet received. We are not the addressee.
Length: 594
MAC Receiver: 00h 10h A7h 0Fh 0Ah 0Ch MAC Transmitter: 00h 22h CFh 36h 9Dh 1Ch
Ethernet: type 2, Type: 08h 00h
Ethernet 2. Ethernet type: IP. IP version: 4, IP Header Length: 20 byte
UDP.
UDP Header information:
+--------------+----------------+
| 67 | 68 | (source port, destination port)
+-------------------------------+
| 556 | 5338h | (length, checksum)
+-------------------------------+
UDP Bootstrap Protocol (BOOTP) Client, also used by DHCP Client
Screenshot to Floppy (Thread) | |
Einstellungen:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #define IP_1 0
#define IP_2 0
#define IP_3 0
#define IP_4 0
// server IP
#define SIP_1 192
#define SIP_2 168
#define SIP_3 1
#define SIP_4 1
// requested IP
#define RIP_1 192
#define RIP_2 168
#define RIP_3 1
#define RIP_4 97
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #define IP_1 0
#define IP_2 0
#define IP_3 0
#define IP_4 0
// server IP
#define SIP_1 192
#define SIP_2 168
#define SIP_3 1
#define SIP_4 1
// requested IP
#define RIP_1 192
#define RIP_2 168
#define RIP_3 1
#define RIP_4 97
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #define IP_1 0
#define IP_2 0
#define IP_3 0
#define IP_4 0
// server IP
#define SIP_1 192
#define SIP_2 168
#define SIP_3 1
#define SIP_4 1
// requested IP
#define RIP_1 192
#define RIP_2 168
#define RIP_3 1
#define RIP_4 97
| |
Nächste Aufgabe: Funktion DHCP_Debug schreiben
Vorbild (?): http://www.koders.com/c/fid179E56E3C11D80DFE25DD6D819369416B3BF583D.aspx |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:27:24 07.06.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:21:57 07.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.85 - Rev: 924"
Wir haben ein erstes DHCP-Paket vom Server. Ein "ACK" auf ein "INFORM".
DHCP_AnalyzeServerMessage:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | --------------------------------------------------------------------------------
Monday, June 06, 2011, 22:44:17 141 s runtime. CPU: 1399 MHz \
PrettyOS [Version 0.0.2.85 - Rev: 924]
--------------------------------------------------------------------------------
UDP.
UDP Header information:
+--------------+----------------+
| 67 | 68 | (source port, destination port)
+-------------------------------+
| 556 | 5338h | (length, checksum)
+-------------------------------+
UDP BOOTP/DHCP Client
op: 2 htype: 1 hlen: 6 hops: 0 xid: 0AFFE003h secs: 0 flags: 0000h
cIP: 0.0.0.0
yIP: 0.0.0.0
sIP: 0.0.0.0
gIP: 0.0.0.0
MAC: 00h-10h-A7h-0Fh-0Ah-0Ch
63h 82h 53h 63h 35h 01h 05h 36h 04h C0h A8h 01h 01h 01h 04h FFh FFh FFh 00h 03h
04h C0h A8h 01h 01h 06h 04h C0h A8h 01h 01h 0Fh 0Bh 6Ch 6Fh 63h 61h 6Ch 64h 6Fh
6Dh 61h 69h 6Eh 2Ch 08h 00h 00h 00h 00h 00h 00h 00h 00h FFh 00h 00h 00h 00h 00h
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | --------------------------------------------------------------------------------
Monday, June 06, 2011, 22:44:17 141 s runtime. CPU: 1399 MHz \
PrettyOS [Version 0.0.2.85 - Rev: 924]
--------------------------------------------------------------------------------
UDP.
UDP Header information:
+--------------+----------------+
| 67 | 68 | (source port, destination port)
+-------------------------------+
| 556 | 5338h | (length, checksum)
+-------------------------------+
UDP BOOTP/DHCP Client
op: 2 htype: 1 hlen: 6 hops: 0 xid: 0AFFE003h secs: 0 flags: 0000h
cIP: 0.0.0.0
yIP: 0.0.0.0
sIP: 0.0.0.0
gIP: 0.0.0.0
MAC: 00h-10h-A7h-0Fh-0Ah-0Ch
63h 82h 53h 63h 35h 01h 05h 36h 04h C0h A8h 01h 01h 01h 04h FFh FFh FFh 00h 03h
04h C0h A8h 01h 01h 06h 04h C0h A8h 01h 01h 0Fh 0Bh 6Ch 6Fh 63h 61h 6Ch 64h 6Fh
6Dh 61h 69h 6Eh 2Ch 08h 00h 00h 00h 00h 00h 00h 00h 00h FFh 00h 00h 00h 00h 00h
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | --------------------------------------------------------------------------------
Monday, June 06, 2011, 22:44:17 141 s runtime. CPU: 1399 MHz \
PrettyOS [Version 0.0.2.85 - Rev: 924]
--------------------------------------------------------------------------------
UDP.
UDP Header information:
+--------------+----------------+
| 67 | 68 | (source port, destination port)
+-------------------------------+
| 556 | 5338h | (length, checksum)
+-------------------------------+
UDP BOOTP/DHCP Client
op: 2 htype: 1 hlen: 6 hops: 0 xid: 0AFFE003h secs: 0 flags: 0000h
cIP: 0.0.0.0
yIP: 0.0.0.0
sIP: 0.0.0.0
gIP: 0.0.0.0
MAC: 00h-10h-A7h-0Fh-0Ah-0Ch
63h 82h 53h 63h 35h 01h 05h 36h 04h C0h A8h 01h 01h 01h 04h FFh FFh FFh 00h 03h
04h C0h A8h 01h 01h 06h 04h C0h A8h 01h 01h 0Fh 0Bh 6Ch 6Fh 63h 61h 6Ch 64h 6Fh
6Dh 61h 69h 6Eh 2Ch 08h 00h 00h 00h 00h 00h 00h 00h 00h FFh 00h 00h 00h 00h 00h
| |
Übersetzung / Analyse:
0AFFE003 ist die Kennung für das von mir per strg+n gesendete DHCP_INFORM
MAC: 00h-10h-A7h-0Fh-0Ah-0Ch <--- mein test-PC
63h 82h 53h 63h magic
35h 01h 05h: 53dec len:1 data:5
DHCP message type: 5 DHCPACK
36h 04h C0h A8h 01h 01h Server Identifier: C0h A8h 01h 01h = 192.168.1.1
01h 04h FFh FFh FFh 00h subnet 255.255.255.0
03h 04h C0h A8h 01h 01h listet alle router auf (s.o., 192.168.1.1)
06h 04h C0h A8h 01h 01h DNS macht er auch ^^
0Fh 0Bh 6Ch 6Fh 63h 61h 6Ch 64h 6Fh 6Dh 61h 69h 6Eh ist der Domain-Name, insgesamt 11 Zeichen lang: "localdomain"
2Ch 08h 00h 00h 00h 00h 00h 00h 00h 00h NetBIOS over TCP/IP name server
FFh happy end!
Dafür benötigen wir eine Funktion. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:53:32 07.06.2011, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:34:21 07.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.86:
- gdt.c und descriptor_tables.c zusammengeführt und aufgeräumt
- PageDirectory wird nur noch bei Bedarf gewechselt (d.h. wenn der neue Task ein anderes hat als der Alte)
- task_switch greift nun über Funktionen auf TSS zu und nicht mehr direkt
- delayedInitTasks durch kernel_idleTasks ersetzt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:39:38 07.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.87 - Rev: 926"
DHCP Options Analyse begonnen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:39:54 07.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:38:07 07.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.88 - Rev: 927"
Ausgabe der daten bei Options verbessert
Screenshot eines DHCP_ACK vom router / dhcp server:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | PrettyOS [Version 0.0.2.88 - Rev: 927]
--------------------------------------------------------------------------------
+--------------+----------------+
| 67 | 68 | (source port, destination port)
+-------------------------------+
| 556 | 8DB2h | (length, checksum)
+-------------------------------+
UDP BOOTP/DHCP Client
op: 2 htype: 1 hlen: 6 hops: 0 xid: 0AFFE003h secs: 0 flags: 0000h
cIP: 0.0.0.0 yIP: 0.0.0.0
sIP: 0.0.0.0 gIP: 0.0.0.0
MAC: 00h-30h-84h-2Bh-F2h-55h
MAGIC OK
Message Type: 5
Server IP: 192 168 1 1
Subnet Mask: 255 255 255 0
Routers: 192 168 1 1
DNS IP: 192 168 1 1
Domain name: localdomain
NetBIOS over TCP/IP Name Server: 0 0 0 0 0 0 0 0
END OF OPTIONS | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | PrettyOS [Version 0.0.2.88 - Rev: 927]
--------------------------------------------------------------------------------
+--------------+----------------+
| 67 | 68 | (source port, destination port)
+-------------------------------+
| 556 | 8DB2h | (length, checksum)
+-------------------------------+
UDP BOOTP/DHCP Client
op: 2 htype: 1 hlen: 6 hops: 0 xid: 0AFFE003h secs: 0 flags: 0000h
cIP: 0.0.0.0 yIP: 0.0.0.0
sIP: 0.0.0.0 gIP: 0.0.0.0
MAC: 00h-30h-84h-2Bh-F2h-55h
MAGIC OK
Message Type: 5
Server IP: 192 168 1 1
Subnet Mask: 255 255 255 0
Routers: 192 168 1 1
DNS IP: 192 168 1 1
Domain name: localdomain
NetBIOS over TCP/IP Name Server: 0 0 0 0 0 0 0 0
END OF OPTIONS | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | PrettyOS [Version 0.0.2.88 - Rev: 927]
--------------------------------------------------------------------------------
+--------------+----------------+
| 67 | 68 | (source port, destination port)
+-------------------------------+
| 556 | 8DB2h | (length, checksum)
+-------------------------------+
UDP BOOTP/DHCP Client
op: 2 htype: 1 hlen: 6 hops: 0 xid: 0AFFE003h secs: 0 flags: 0000h
cIP: 0.0.0.0 yIP: 0.0.0.0
sIP: 0.0.0.0 gIP: 0.0.0.0
MAC: 00h-30h-84h-2Bh-F2h-55h
MAGIC OK
Message Type: 5
Server IP: 192 168 1 1
Subnet Mask: 255 255 255 0
Routers: 192 168 1 1
DNS IP: 192 168 1 1
Domain name: localdomain
NetBIOS over TCP/IP Name Server: 0 0 0 0 0 0 0 0
END OF OPTIONS | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:15:48 07.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.89 - Rev: 928"
DHCP OFFER mit qemu (Windows, TAP) erreicht:
http://www.henkessoft.de/OS_Dev/Bilder/rev928_DHCP_OFFER.PNG
qemu batch: qemu.exe -fda FloppyImage.img -soundhw pcspk -net nic,model=rtl8139,addr=1A,macaddr=00:12:12:12:12:12 -net tap,ifname=TAP2 -net user -localtime
Wichtiger Hinweis zum Testen:
Es gibt noch irgendwie Blockaden unter Windows bei TAP. Diese kann man umgehen, indem man andere virtuelle Netzwerkadapter (z.B. anderes TAP, VBox oder VMware Adapter) aktiviert oder deaktiviert. Hierdurch "lösen" sich die aufgestauten DHCP_OFFER-Pakete des qemuservers und sie "purzeln" mehrfach auf den Bildschirm.
Man kann das OFFER nicht via wireshark (neueste Vers. 1.6.0) empfangen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:14:03 07.06.2011, insgesamt 5-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:23:34 08.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.90 - Rev: 929"
Startet nur mit DHCP_REQUEST hoch ohne DHCP_DISCOVER (ergibt DHCP_ACK bei qemu)
DHCP_REQUEST_and_DHCP_ACK: http://www.henkessoft.de/OS_Dev/Bilder/DHCP_REQUEST_and_DHCP_ACK.PNG
Die angezeigte lease time 0 1 81 128 (big endian) ist 86400 sec = 24 * 3600 sec = 1 Tag
Eingebaute Befehle:
strg+n = DHCP_DISCOVER
strg+i = DHCP_INFORM
strg+r = DHCP_REQUEST
Mit einer Änderung (weg von qemu) zum Test-PC und in network.c:
// Try to get an IP by DHCP
DHCP_Discover(adapter);
delay(1000000);
DHCP_Request(adapter);
erhält man in wireshark: http://www.henkessoft.de/OS_Dev/Bilder/rev929a_DHCP_REQUEST_DHCP_NAK.PNG
PrettyOS zeigt das NAK:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | PrettyOS [Version 0.0.2.90 - Rev: 929]
--------------------------------------------------------------------------------
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h 22h CFh 36h 9Dh 1Ch
Ethernet: type 2, Type: 08h 00h
Ethernet 2. Ethernet type: IP. IP version: 4, IP Header Length: 20 byte
UDP.
UDP Header information:
+--------------+----------------+
| 67 | 68 | (source port, destination port)
+-------------------------------+
| 556 | 2ED4h | (length, checksum)
+-------------------------------+
UDP BOOTP/DHCP Client
op: 2 htype: 1 hlen: 6 hops: 0 xid: 0AFFE002h secs: 0 flags: 0000h
cIP: 0.0.0.0 yIP: 0.0.0.0
sIP: 0.0.0.0 gIP: 0.0.0.0
MAC: 00h-30h-84h-2Bh-F2h-55h
MAGIC OK
Message Type: 6
Server IP: 192 168 1 1
END OF OPTIONS | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | PrettyOS [Version 0.0.2.90 - Rev: 929]
--------------------------------------------------------------------------------
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h 22h CFh 36h 9Dh 1Ch
Ethernet: type 2, Type: 08h 00h
Ethernet 2. Ethernet type: IP. IP version: 4, IP Header Length: 20 byte
UDP.
UDP Header information:
+--------------+----------------+
| 67 | 68 | (source port, destination port)
+-------------------------------+
| 556 | 2ED4h | (length, checksum)
+-------------------------------+
UDP BOOTP/DHCP Client
op: 2 htype: 1 hlen: 6 hops: 0 xid: 0AFFE002h secs: 0 flags: 0000h
cIP: 0.0.0.0 yIP: 0.0.0.0
sIP: 0.0.0.0 gIP: 0.0.0.0
MAC: 00h-30h-84h-2Bh-F2h-55h
MAGIC OK
Message Type: 6
Server IP: 192 168 1 1
END OF OPTIONS | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | PrettyOS [Version 0.0.2.90 - Rev: 929]
--------------------------------------------------------------------------------
MAC Receiver: FFh FFh FFh FFh FFh FFh MAC Transmitter: 00h 22h CFh 36h 9Dh 1Ch
Ethernet: type 2, Type: 08h 00h
Ethernet 2. Ethernet type: IP. IP version: 4, IP Header Length: 20 byte
UDP.
UDP Header information:
+--------------+----------------+
| 67 | 68 | (source port, destination port)
+-------------------------------+
| 556 | 2ED4h | (length, checksum)
+-------------------------------+
UDP BOOTP/DHCP Client
op: 2 htype: 1 hlen: 6 hops: 0 xid: 0AFFE002h secs: 0 flags: 0000h
cIP: 0.0.0.0 yIP: 0.0.0.0
sIP: 0.0.0.0 gIP: 0.0.0.0
MAC: 00h-30h-84h-2Bh-F2h-55h
MAGIC OK
Message Type: 6
Server IP: 192 168 1 1
END OF OPTIONS | |
Request mit XID: 0AFFE002 erhält ein DHCP_NAK:
| Zitat: | 1 = DHCP Discover message (DHCPDiscover).
2 = DHCP Offer message (DHCPOffer).
3 = DHCP Request message (DHCPRequest).
4 = DHCP Decline message (DHCPDecline).
5 = DHCP Acknowledgment message (DHCPAck).
6 = DHCP Negative Acknowledgment message (DHCPNak).
7 = DHCP Release message (DHCPRelease).
8 = DHCP Informational message (DHCPInform).
|
Dies ist in diesem Fall klar, da diese MAC bereits unter einer anderen IP im DHCP lease des Servers eingetragen ist.
Nun haben wir bereits mit Message Type 1, 2, 3, 5, 6, 8 experimentiert. Fehlt nur noch DHCPRelease und DHCPDecline.
Nun sollte ein Ablauf etwa wie hier aufgebaut werden: http://www.tcpipguide.com/free/diagrams/dhcpfsm.png |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:34:41 08.06.2011, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:44:32 10.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.91 - Rev: 930"
DHCP_State eingebaut:
network.c:
| C/C++ Code: | // Try to get an IP by DHCP
adapter->DHCP_State = START;
DHCP_Discover(adapter); | |
| C/C++ Code: | // Try to get an IP by DHCP
adapter->DHCP_State = START;
DHCP_Discover(adapter); | |
| C/C++ Code: | // Try to get an IP by DHCP
adapter->DHCP_State = START;
DHCP_Discover(adapter); | |
dhcp.c:
| C/C++ Code: | DHCP_AnalyzeOptions(adapter, dhcp->options);
if(adapter->DHCP_State == OFFER) { printf("\n >>> PrettyOS got a DHCP OFFER. <<<"); DHCP_Request(adapter); }
if(adapter->DHCP_State == ACK) { printf("\n >>> PrettyOS got a DHCP ACK. <<<"); useDHCP_IP(adapter, dhcp); }
if(adapter->DHCP_State == NAK) { printf("\n >>> DHCP was not successful (NAK). <<<"); } | |
| C/C++ Code: | DHCP_AnalyzeOptions(adapter, dhcp->options);
if(adapter->DHCP_State == OFFER) { printf("\n >>> PrettyOS got a DHCP OFFER. <<<"); DHCP_Request(adapter); }
if(adapter->DHCP_State == ACK) { printf("\n >>> PrettyOS got a DHCP ACK. <<<"); useDHCP_IP(adapter, dhcp); }
if(adapter->DHCP_State == NAK) { printf("\n >>> DHCP was not successful (NAK). <<<"); } | |
| C/C++ Code: | DHCP_AnalyzeOptions(adapter, dhcp->options);
if(adapter->DHCP_State == OFFER) { printf("\n >>> PrettyOS got a DHCP OFFER. <<<"); DHCP_Request(adapter); }
if(adapter->DHCP_State == ACK) { printf("\n >>> PrettyOS got a DHCP ACK. <<<"); useDHCP_IP(adapter, dhcp); }
if(adapter->DHCP_State == NAK) { printf("\n >>> DHCP was not successful (NAK). <<<"); } | |
| C/C++ Code: | static void useDHCP_IP(network_adapter_t* adapter, dhcp_t* dhcp)
{
for(uint8_t i = 0; i < 4; i++)
adapter->IP_address[i] = dhcp->yiaddr[i];
} | |
| C/C++ Code: | static void useDHCP_IP(network_adapter_t* adapter, dhcp_t* dhcp)
{
for(uint8_t i = 0; i < 4; i++)
adapter->IP_address[i] = dhcp->yiaddr[i];
} | |
| C/C++ Code: | static void useDHCP_IP(network_adapter_t* adapter, dhcp_t* dhcp)
{
for(uint8_t i = 0; i < 4; i++)
adapter->IP_address[i] = dhcp->yiaddr[i];
} | |
Discover - Offer - Request - ACK (Erfolgreicher Hardwaretest mit Testrechner)
In der DHCP-Lease-Übersicht des Router/DHCP-Servers wurde der Testrechner mit seiner Wunsch-IP hinzugefügt. Wireshark auf einem Rechner im LAN zeigt leider nur die Anfragen von PrettyOS, aber nicht die Antworten des DHCP-Servers.
Damit ist DHCP in grundlegender Form nun in PrettyOS implementiert.
Mit Qemu/TAP ist das Aufzeigen der ganzen Kette unter Windows bisher nicht gelungen.
PS: In keyboard.c wurde DHCP_Discover(...) und DHCP_Request(...) entfernt. strg+n sendet wie zuvor ein UDP-Paket mit aufgesetztem Freitext für UDP-Experimente. strg+i sendet DHCP_Inform. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:10:21 11.06.2011, insgesamt 5-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:57:26 11.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.92 - Rev: 931"
- DHCP Release ergänzt, z.Z. strg+f (gibt bei meinem Router allerdings noch nicht frei)
- Lease Time Daten auch in Std. angezeigt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:22:55 11.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.93:
- Initialisierungsreihenfolge verbessert: U.a. wird Video früher installiert (-> je eher, desto besser. Ermöglicht frühere Debugausgaben).
- printf unterstützt nun %M und %I für die Ausgabe von IP und MAC Adressen. Angewendet im Netzwerkcode
- Strg+A resultiert nicht mehr in #PF, wenn keine Netzwerkkarte vorhanden ist
- Code aufgeräumt |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:36:53 11.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.94:
- Analyse der DHCP-Option-Bytes vereinfacht
- c/s/vs/v/printf geben nun Anzahl geschriebener Zeichen zurück
- i2Hex (und damit auch c/s/vs/v/printf) gibt kein h mehr am Ende hexadezimaler Zahlen aus
- Ausgabe der ARP-Tabelle verbessert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:30:56 11.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.95 - Rev: 934"
SIP ersatzlos gestrichen
Problem: Zusammenhang netzwork adapter und IP geht verloren |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:59:41 11.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.96 - Rev: 935"
Fehler bei ACK auf DHCP_Inform korrigiert. Your IP (dhcp->yiaddr) wird nur übernommen, wenn ungleich 0.0.0.0:
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 1 2 3 4 5 6 7 8 | static void useDHCP_IP(network_adapter_t* adapter, dhcp_t* dhcp)
{
if (dhcp->yiaddr[0] || dhcp->yiaddr[1] || dhcp->yiaddr[2] || dhcp->yiaddr[3])
{
for(uint8_t i = 0; i < 4; i++)
adapter->IP_address[i] = dhcp->yiaddr[i];
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | static void useDHCP_IP(network_adapter_t* adapter, dhcp_t* dhcp)
{
if (dhcp->yiaddr[0] || dhcp->yiaddr[1] || dhcp->yiaddr[2] || dhcp->yiaddr[3])
{
for(uint8_t i = 0; i < 4; i++)
adapter->IP_address[i] = dhcp->yiaddr[i];
}
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | static void useDHCP_IP(network_adapter_t* adapter, dhcp_t* dhcp)
{
if (dhcp->yiaddr[0] || dhcp->yiaddr[1] || dhcp->yiaddr[2] || dhcp->yiaddr[3])
{
for(uint8_t i = 0; i < 4; i++)
adapter->IP_address[i] = dhcp->yiaddr[i];
}
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:00:04 12.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.97 - Rev: 936"
Endlich habe ich einen Trick gefunden, wie man auch die Antworten des DHCP-Servers in wireshark von einem anderen PC im LAN beobachten kann. Man muss bei den Anfragen die Forderung stellen, dass die Antwort an alle (BROADCAST) gesendet wird.
Beweis-Foto: http://www.henkessoft.de/OS_Dev/Bilder/rev936.PNG
Nachdem dieser Ablauf nun eindeutig demonstriert werden konnte, bitte ich um Reproduktion auch an anderer Stelle. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:10:47 12.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
10:50:44 12.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.98:
- Unterstützung von Parametern beim Programmstart
- Hello-Userprogramm zeigt übergebene Parameter an
- Verbessertes makefile für other_userprogs |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:12:32 12.06.2011 Titel: |
|
Zitieren |
Tests von Cuervo mit der vorhergehenden Vesrion:
- DHCP_Release funktioniert. Wenn der DHCP-Server will, wird es als abgelaufen angezeigt
- Wir müssen das Angebot aus OFFER verwenden für REQUEST anstelle der konstanten RIP (das kann der Server anders sehen ^^) aus network.h
- HOST NAME angeben bei den options
Fotos (Cuervo): http://prettyos.fanofblitzbasic.de/PrettyNWPics.zip
MrX: deine Version produziert einen #PF F000EF6F eip: 115391
ckernel.c: shell auskommentiert, "executeFile("1:/ttt.ELF", 0, 0); // TEST" eingefügt, klappt bestens. Bitte in Ordnung bringen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:57:53 12.06.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:27:40 12.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.99 - Rev: 938"
shell auskommentiert, ttt wird testweise ausgeführt.
Netzwerk: Hostname "PrettyOS" eingeführt bei DHCP, DHCP_Request übernimmt IP aus DHCP_Offer. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:08:50 12.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:07:56 12.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.100:
- cpu.c: Es wird überprüft, ob cpuid unterstützt wird; Funktionen zum Lesen und Schreiben des MSR implementiert
- memory.txt geupdated und erweitert
- Bugfix/Hack: Shell nimmt nun argv/argc-Parameter beim Start
- Projektmappen: Verbesserte Intellisense-Kompatibilität durch Dummy-Header VCcompatibility.h und verbesserte Includepfad-Einstellungen |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:56:31 12.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.101:
- Neuer Bugfix-Versuch. argc/argv nun via user stack übergeben. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:52:40 12.06.2011 Titel: |
|
Zitieren |
Bitte darauf achten, dass bei den cross-tools die enthaltenen binutils, darunter auch ld.exe nicht mehr zu einem lauffähigen produkt führen (#PF).
MrX wird demnächst ein neues bundle für die crosstools hochladen.
http://kloke-witten.dyndns.org/~philipp/bin.zip <--- wenn es eilt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:55:55 12.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
13:57:30 13.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.102:
- Parameterübergabe wieder über eax/ecx
- Fehlerbehandlung im Floppytreiber verbessert
- Konsolen überarbeitet (Stabilität, Code vereinfacht) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:28:37 13.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.103 - Rev: 942"
TCP weiter ausgebaut:
- Senden klappt
- Checksum (UDP, TCP) bewirkt #PF
- 3-way-handshake: SYN kann bereits mit SYN ACK beantwortet werden |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:46:05 13.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.105 - Rev: 944" (beim nächsten Mal bitte stehen lassen, wurde offenbar eine übersprungen)
checksum für UDP: 0 (wegen DHCP)
checksum für TCP: aktiviert, wireshark validiert diese aber als "incorrect"
| Code: | | Checksum: 0x7754 [incorrect, should be 0xba47 (maybe caused by "TCP checksum offload"?)] | |
| Code: | | Checksum: 0x7754 [incorrect, should be 0xba47 (maybe caused by "TCP checksum offload"?)] | |
| Code: | | Checksum: 0x7754 [incorrect, should be 0xba47 (maybe caused by "TCP checksum offload"?)] | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:54:31 14.06.2011, insgesamt 6-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:58:36 13.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.105 - Rev: 944"
Parameter "protocol" ergänzt:
uint16_t udptcpCalculateChecksum(void* p, size_t length, uint8_t sourceIp[4], uint8_t destinationIp[4], uint16_t protocol)
Checksum falsch. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:55:45 14.06.2011, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:20:45 14.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.106 - Rev: 945"
- TCP-Checksum noch nicht korrekt
- internetChecksum (Fkt. wird bereits bei ip und icmp eingesetzt) mit verwendet |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:56:29 14.06.2011, insgesamt 5-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:55:23 14.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.107 - Rev: 946"
- tcp checksum noch nicht korrekt, aber schon nahe dran ^^ |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:57:16 14.06.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:31:19 14.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.108 - Rev: 947"
- tcp checksum noch falsch
- pseudoheader byteweise aufgebaut für besseren Überblick
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | uint16_t udptcpCalculateChecksum(void* p, uint16_t length, uint8_t srcIP[4], uint8_t destIP[4], uint16_t protocol)
{
uint32_t pseudoHeaderChecksum = 0;
uint8_t header[12]; // Pseudo header
uint8_t* data = header;
uint8_t count = 12; // pseudo header contains 12 byte
for (uint8_t i=0; i<4; i++)
{
header[i] = srcIP[i];
}
for (uint8_t i=4; i<8; i++)
{
header[i] = destIP[i-4];
}
header[8] = 0;
header[9] = protocol;
header[10] = length & 0xFF;
header[11] = (length >> 8) & 0xFF;
while (count > 1)
{
// pseudo header contains 6 WORD
pseudoHeaderChecksum += (data[0] << 8) | data[1]; // Big Endian
data += 2;
count -= 2;
}
return internetChecksum(p, length, pseudoHeaderChecksum); // util.c
}
// compute internet checksum for "count" bytes beginning at location "addr"
uint16_t internetChecksum(void* addr, size_t count, uint32_t pseudoHeaderChecksum)
{
uint32_t sum = pseudoHeaderChecksum;
uint8_t* data = addr;
while (count > 1) // inner loop
{
sum += (data[0] << 8) | data[1]; // Big Endian
data += 2;
count -= 2;
}
if (count > 0) // add left-over byte, if any
{
sum += data[0] << 8;
}
while (sum >> 16) // fold 32-bit sum to 16 bits
{
sum = (sum & 0xFFFF) + (sum >> 16);
}
return ~sum & 0xFFFF;
}
void tcpSend(network_adapter_t* adapter, void* data, uint32_t length, uint16_t srcPort, uint8_t srcIP[4], uint16_t destPort, uint8_t destIP[4], tcpFlags flags, uint32_t seqNumber, uint32_t ackNumber)
{
//...
packet->checksum = 0; // for checksum calculation
packet->checksum = htons(udptcpCalculateChecksum((void*)packet, length + sizeof(tcpPacket_t), srcIP, destIP, 6));
ipv4_send(adapter, packet, length + sizeof(tcpPacket_t), destIP, 6);
//...
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | uint16_t udptcpCalculateChecksum(void* p, uint16_t length, uint8_t srcIP[4], uint8_t destIP[4], uint16_t protocol)
{
uint32_t pseudoHeaderChecksum = 0;
uint8_t header[12]; // Pseudo header
uint8_t* data = header;
uint8_t count = 12; // pseudo header contains 12 byte
for (uint8_t i=0; i<4; i++)
{
header[i] = srcIP[i];
}
for (uint8_t i=4; i<8; i++)
{
header[i] = destIP[i-4];
}
header[8] = 0;
header[9] = protocol;
header[10] = length & 0xFF;
header[11] = (length >> 8) & 0xFF;
while (count > 1)
{
// pseudo header contains 6 WORD
pseudoHeaderChecksum += (data[0] << 8) | data[1]; // Big Endian
data += 2;
count -= 2;
}
return internetChecksum(p, length, pseudoHeaderChecksum); // util.c
}
// compute internet checksum for "count" bytes beginning at location "addr"
uint16_t internetChecksum(void* addr, size_t count, uint32_t pseudoHeaderChecksum)
{
uint32_t sum = pseudoHeaderChecksum;
uint8_t* data = addr;
while (count > 1) // inner loop
{
sum += (data[0] << 8) | data[1]; // Big Endian
data += 2;
count -= 2;
}
if (count > 0) // add left-over byte, if any
{
sum += data[0] << 8;
}
while (sum >> 16) // fold 32-bit sum to 16 bits
{
sum = (sum & 0xFFFF) + (sum >> 16);
}
return ~sum & 0xFFFF;
}
void tcpSend(network_adapter_t* adapter, void* data, uint32_t length, uint16_t srcPort, uint8_t srcIP[4], uint16_t destPort, uint8_t destIP[4], tcpFlags flags, uint32_t seqNumber, uint32_t ackNumber)
{
//...
packet->checksum = 0; // for checksum calculation
packet->checksum = htons(udptcpCalculateChecksum((void*)packet, length + sizeof(tcpPacket_t), srcIP, destIP, 6));
ipv4_send(adapter, packet, length + sizeof(tcpPacket_t), destIP, 6);
//...
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | uint16_t udptcpCalculateChecksum(void* p, uint16_t length, uint8_t srcIP[4], uint8_t destIP[4], uint16_t protocol)
{
uint32_t pseudoHeaderChecksum = 0;
uint8_t header[12]; // Pseudo header
uint8_t* data = header;
uint8_t count = 12; // pseudo header contains 12 byte
for (uint8_t i=0; i<4; i++)
{
header[i] = srcIP[i];
}
for (uint8_t i=4; i<8; i++)
{
header[i] = destIP[i-4];
}
header[8] = 0;
header[9] = protocol;
header[10] = length & 0xFF;
header[11] = (length >> 8) & 0xFF;
while (count > 1)
{
// pseudo header contains 6 WORD
pseudoHeaderChecksum += (data[0] << 8) | data[1]; // Big Endian
data += 2;
count -= 2;
}
return internetChecksum(p, length, pseudoHeaderChecksum); // util.c
}
// compute internet checksum for "count" bytes beginning at location "addr"
uint16_t internetChecksum(void* addr, size_t count, uint32_t pseudoHeaderChecksum)
{
uint32_t sum = pseudoHeaderChecksum;
uint8_t* data = addr;
while (count > 1) // inner loop
{
sum += (data[0] << 8) | data[1]; // Big Endian
data += 2;
count -= 2;
}
if (count > 0) // add left-over byte, if any
{
sum += data[0] << 8;
}
while (sum >> 16) // fold 32-bit sum to 16 bits
{
sum = (sum & 0xFFFF) + (sum >> 16);
}
return ~sum & 0xFFFF;
}
void tcpSend(network_adapter_t* adapter, void* data, uint32_t length, uint16_t srcPort, uint8_t srcIP[4], uint16_t destPort, uint8_t destIP[4], tcpFlags flags, uint32_t seqNumber, uint32_t ackNumber)
{
//...
packet->checksum = 0; // for checksum calculation
packet->checksum = htons(udptcpCalculateChecksum((void*)packet, length + sizeof(tcpPacket_t), srcIP, destIP, 6));
ipv4_send(adapter, packet, length + sizeof(tcpPacket_t), destIP, 6);
//...
}
| |
Wenn man header[8] ... [11] dreht, wird die differenz kleiner.
Hier ein Hexpaket:
0013d41127a50010a70f0a0c0800450000280000400080067707c0a80161c0a8011700170607000000001cb30fc95012fffff3750000000000000000
Checksum: 0xf375 [incorrect, should be 0xf96f (maybe caused by "TCP checksum offload"?)]
Hex-Code:
IP-Paket: 450000280000400080067707c0a80161c0a80117
TCP-Paket: 00170607000000001cb30fc95012fffff3750000
Internet Protocol Version 4, Src: 192.168.1.97 (192.168.1.97), Dst: 192.168.1.23 (192.168.1.23)
Transmission Control Protocol, Src Port: telnet (23), Dst Port: simba-cs (1543), Seq: 0, Ack: 1, Len: 0
(Len ist hier die Datenlänge)
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | 1 2 3 4 5 6 7 8 9 10 11 12 13 | chat:
<ehenkes>TCP-Paket: 00170607000000001cb30fc95012fffff3750000
<ehenkes>Src: 192.168.1.97 (192.168.1.97), Dst: 192.168.1.23 (192.168.1.23)
<ehenkes>raus kommen muss: 0xf96f
<ehenkes>daten gibts keine, reiner header
<ehenkes>udptcpCalculateChecksum(void* p, uint16_t length, uint8_t srcIP[4], uint8_t destIP[4], uint16_t protocol)
<ehenkes>p zeigt auf den tcp-header
<ehenkes>length = sizeof(tcp_header)
<ehenkes>IPs sind klar
<ehenkes>MrX: gut so?
<MrX>ja
<ehenkes>Header length: 20 bytes
<ehenkes>des TCP headers | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | chat:
<ehenkes>TCP-Paket: 00170607000000001cb30fc95012fffff3750000
<ehenkes>Src: 192.168.1.97 (192.168.1.97), Dst: 192.168.1.23 (192.168.1.23)
<ehenkes>raus kommen muss: 0xf96f
<ehenkes>daten gibts keine, reiner header
<ehenkes>udptcpCalculateChecksum(void* p, uint16_t length, uint8_t srcIP[4], uint8_t destIP[4], uint16_t protocol)
<ehenkes>p zeigt auf den tcp-header
<ehenkes>length = sizeof(tcp_header)
<ehenkes>IPs sind klar
<ehenkes>MrX: gut so?
<MrX>ja
<ehenkes>Header length: 20 bytes
<ehenkes>des TCP headers | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | chat:
<ehenkes>TCP-Paket: 00170607000000001cb30fc95012fffff3750000
<ehenkes>Src: 192.168.1.97 (192.168.1.97), Dst: 192.168.1.23 (192.168.1.23)
<ehenkes>raus kommen muss: 0xf96f
<ehenkes>daten gibts keine, reiner header
<ehenkes>udptcpCalculateChecksum(void* p, uint16_t length, uint8_t srcIP[4], uint8_t destIP[4], uint16_t protocol)
<ehenkes>p zeigt auf den tcp-header
<ehenkes>length = sizeof(tcp_header)
<ehenkes>IPs sind klar
<ehenkes>MrX: gut so?
<MrX>ja
<ehenkes>Header length: 20 bytes
<ehenkes>des TCP headers | |
Weitere Pakete: (IPs gleich)
| Code: | <ehenkes>0017062800000000c56a32495012ffff007827a5 Checksum: 0x0078 [incorrect, should be 0x0672 (maybe caused by "TCP checksum offload"?)]
<ehenkes>0017062900000000591dc44a5012fffffc630604 Checksum: 0xfc63 [incorrect, should be 0x025e (maybe caused by "TCP checksum offload"?)] | |
| Code: | <ehenkes>0017062800000000c56a32495012ffff007827a5 Checksum: 0x0078 [incorrect, should be 0x0672 (maybe caused by "TCP checksum offload"?)]
<ehenkes>0017062900000000591dc44a5012fffffc630604 Checksum: 0xfc63 [incorrect, should be 0x025e (maybe caused by "TCP checksum offload"?)] | |
| Code: | <ehenkes>0017062800000000c56a32495012ffff007827a5 Checksum: 0x0078 [incorrect, should be 0x0672 (maybe caused by "TCP checksum offload"?)]
<ehenkes>0017062900000000591dc44a5012fffffc630604 Checksum: 0xfc63 [incorrect, should be 0x025e (maybe caused by "TCP checksum offload"?)] | |
erzeugt mit:
| C/C++ Code: | header[11] = 0;
header[10] = protocol;
header[9] = length & 0xFF;
header[8] = (length >> 8) & 0xFF;
| |
| C/C++ Code: | header[11] = 0;
header[10] = protocol;
header[9] = length & 0xFF;
header[8] = (length >> 8) & 0xFF;
| |
| C/C++ Code: | header[11] = 0;
header[10] = protocol;
header[9] = length & 0xFF;
header[8] = (length >> 8) & 0xFF;
| |
Nach Simulation:
<MrX>Übrigens weiß ich, wie Du deine Variante lauffähig kriegst.
| C/C++ Code: | header[8] = 0;
header[9] = protocol;
header[11] = length & 0xFF;
header[10] = (length >> 8) & 0xFF; | |
| C/C++ Code: | header[8] = 0;
header[9] = protocol;
header[11] = length & 0xFF;
header[10] = (length >> 8) & 0xFF; | |
| C/C++ Code: | header[8] = 0;
header[9] = protocol;
header[11] = length & 0xFF;
header[10] = (length >> 8) & 0xFF; | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:42:40 14.06.2011, insgesamt 5-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:46:07 14.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.109 - Rev: 948"
MEILENSTEIN: http://www.c-plusplus.de/forum/p2078201#2078201
Erfolg! (thx to Mrx for simulating TCP checksum)
tcp.h:
| C/C++ Code: | 1 2 3 4 5 6 7 8 | 1 2 3 4 5 6 7 8 | typedef struct
{
uint8_t src[4];
uint8_t dest[4];
uint8_t res;
uint8_t prot;
uint16_t length;
} __attribute__((packed)) tcpPseudoHeader_t; | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | typedef struct
{
uint8_t src[4];
uint8_t dest[4];
uint8_t res;
uint8_t prot;
uint16_t length;
} __attribute__((packed)) tcpPseudoHeader_t; | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 | typedef struct
{
uint8_t src[4];
uint8_t dest[4];
uint8_t res;
uint8_t prot;
uint16_t length;
} __attribute__((packed)) tcpPseudoHeader_t; | |
network.c:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | uint16_t udptcpCalculateChecksum(void* p, uint16_t length, uint8_t srcIP[4], uint8_t destIP[4], uint16_t protocol)
{
tcpPseudoHeader_t pseudo;
for (uint8_t i=0; i<4; i++)
{
pseudo.src[i] = srcIP[i];
pseudo.dest[i] = destIP[i];
}
pseudo.length = htons(length);
pseudo.prot = protocol;
pseudo.res = 0;
uint32_t pseudoHeaderChecksum = 0;
uint8_t count = 12; // pseudo header contains 12 byte
uint8_t* data = (uint8_t*)&pseudo;
while (count > 1)
{
// pseudo header contains 6 WORD
pseudoHeaderChecksum += (data[0] << 8) | data[1]; // Big Endian
data += 2;
count -= 2;
}
return internetChecksum(p, length, pseudoHeaderChecksum); // util.c
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | uint16_t udptcpCalculateChecksum(void* p, uint16_t length, uint8_t srcIP[4], uint8_t destIP[4], uint16_t protocol)
{
tcpPseudoHeader_t pseudo;
for (uint8_t i=0; i<4; i++)
{
pseudo.src[i] = srcIP[i];
pseudo.dest[i] = destIP[i];
}
pseudo.length = htons(length);
pseudo.prot = protocol;
pseudo.res = 0;
uint32_t pseudoHeaderChecksum = 0;
uint8_t count = 12; // pseudo header contains 12 byte
uint8_t* data = (uint8_t*)&pseudo;
while (count > 1)
{
// pseudo header contains 6 WORD
pseudoHeaderChecksum += (data[0] << 8) | data[1]; // Big Endian
data += 2;
count -= 2;
}
return internetChecksum(p, length, pseudoHeaderChecksum); // util.c
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | uint16_t udptcpCalculateChecksum(void* p, uint16_t length, uint8_t srcIP[4], uint8_t destIP[4], uint16_t protocol)
{
tcpPseudoHeader_t pseudo;
for (uint8_t i=0; i<4; i++)
{
pseudo.src[i] = srcIP[i];
pseudo.dest[i] = destIP[i];
}
pseudo.length = htons(length);
pseudo.prot = protocol;
pseudo.res = 0;
uint32_t pseudoHeaderChecksum = 0;
uint8_t count = 12; // pseudo header contains 12 byte
uint8_t* data = (uint8_t*)&pseudo;
while (count > 1)
{
// pseudo header contains 6 WORD
pseudoHeaderChecksum += (data[0] << 8) | data[1]; // Big Endian
data += 2;
count -= 2;
}
return internetChecksum(p, length, pseudoHeaderChecksum); // util.c
} | |
... und schon geht der Weg zum ESTABLISHED:
| Zitat: | 12 14.042894 192.168.1.23 192.168.1.97 TCP 62 shockwave > telnet [SYN] Seq=0 Win=65535 Len=0 MSS=1460 SACK_PERM=1
13 14.052667 192.168.1.97 192.168.1.23 TCP 60 telnet > shockwave [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0
14 14.052691 192.168.1.23 192.168.1.97 TCP 54 shockwave > telnet [ACK] Seq=1 Ack=1 Win=65535 Len=0
|
syn - syn ack - ack (TCP 3-way-handshake)
Mit dieser Version kann man erste versuche bei TCP/IP unternehmen, z.B. TELNET nutzen: http://www.henkessoft.de/OS_Dev/Bilder/rev.948_TCP_TELNET.PNG
http://www.manpagez.com/man/1/telnet/ <--- Kommandos |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:45:17 15.06.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:33:08 15.06.2011 Titel: |
|
Zitieren |
rev. 949:
TCP weiter ausgebaut, vor allem werden nun die Transition States angezeigt:
(CLOSED -->) LISTEN --> SYN_RECEIVED --> ESTABLISHED
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | Length: 66 Rcv: 00-10-A7-0F-0A-0C Transm.: 00-13-D4-11-27-A5
Ethernet 2. Prot. type: IP. IP version: 4, IP Header Length: 20 byte
TCP: src port: 1232 dest port: 23 URG: 0 ACK: 0 PSH: 0 RST: 0 SYN: 1 FIN: 0
TCP prev. state: CLOSED
TCP set from CLOSED to LISTEN.
TCP curr. state: LISTEN
Length: 66 Rcv: 00-10-A7-0F-0A-0C Transm.: 00-13-D4-11-27-A5
Ethernet 2. Prot. type: IP. IP version: 4, IP Header Length: 20 byte
TCP: src port: 1232 dest port: 23 URG: 0 ACK: 0 PSH: 0 RST: 0 SYN: 1 FIN: 0
TCP prev. state: LISTEN
EthernetSend: length: 54.
>>> Transmission starts <<<
Physical Address of Tx Buffer = 014051D8h
packet sent.
TCP curr. state: SYN_RECEIVED
Length: 64 Rcv: 00-10-A7-0F-0A-0C Transm.: 00-13-D4-11-27-A5
Ethernet 2. Prot. type: IP. IP version: 4, IP Header Length: 20 byte
TCP: src port: 1232 dest port: 23 URG: 0 ACK: 1 PSH: 0 RST: 0 SYN: 0 FIN: 0
TCP prev. state: SYN_RECEIVED
TCP curr. state: ESTABLISHED | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | Length: 66 Rcv: 00-10-A7-0F-0A-0C Transm.: 00-13-D4-11-27-A5
Ethernet 2. Prot. type: IP. IP version: 4, IP Header Length: 20 byte
TCP: src port: 1232 dest port: 23 URG: 0 ACK: 0 PSH: 0 RST: 0 SYN: 1 FIN: 0
TCP prev. state: CLOSED
TCP set from CLOSED to LISTEN.
TCP curr. state: LISTEN
Length: 66 Rcv: 00-10-A7-0F-0A-0C Transm.: 00-13-D4-11-27-A5
Ethernet 2. Prot. type: IP. IP version: 4, IP Header Length: 20 byte
TCP: src port: 1232 dest port: 23 URG: 0 ACK: 0 PSH: 0 RST: 0 SYN: 1 FIN: 0
TCP prev. state: LISTEN
EthernetSend: length: 54.
>>> Transmission starts <<<
Physical Address of Tx Buffer = 014051D8h
packet sent.
TCP curr. state: SYN_RECEIVED
Length: 64 Rcv: 00-10-A7-0F-0A-0C Transm.: 00-13-D4-11-27-A5
Ethernet 2. Prot. type: IP. IP version: 4, IP Header Length: 20 byte
TCP: src port: 1232 dest port: 23 URG: 0 ACK: 1 PSH: 0 RST: 0 SYN: 0 FIN: 0
TCP prev. state: SYN_RECEIVED
TCP curr. state: ESTABLISHED | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | Length: 66 Rcv: 00-10-A7-0F-0A-0C Transm.: 00-13-D4-11-27-A5
Ethernet 2. Prot. type: IP. IP version: 4, IP Header Length: 20 byte
TCP: src port: 1232 dest port: 23 URG: 0 ACK: 0 PSH: 0 RST: 0 SYN: 1 FIN: 0
TCP prev. state: CLOSED
TCP set from CLOSED to LISTEN.
TCP curr. state: LISTEN
Length: 66 Rcv: 00-10-A7-0F-0A-0C Transm.: 00-13-D4-11-27-A5
Ethernet 2. Prot. type: IP. IP version: 4, IP Header Length: 20 byte
TCP: src port: 1232 dest port: 23 URG: 0 ACK: 0 PSH: 0 RST: 0 SYN: 1 FIN: 0
TCP prev. state: LISTEN
EthernetSend: length: 54.
>>> Transmission starts <<<
Physical Address of Tx Buffer = 014051D8h
packet sent.
TCP curr. state: SYN_RECEIVED
Length: 64 Rcv: 00-10-A7-0F-0A-0C Transm.: 00-13-D4-11-27-A5
Ethernet 2. Prot. type: IP. IP version: 4, IP Header Length: 20 byte
TCP: src port: 1232 dest port: 23 URG: 0 ACK: 1 PSH: 0 RST: 0 SYN: 0 FIN: 0
TCP prev. state: SYN_RECEIVED
TCP curr. state: ESTABLISHED | |
Da wir mit CLOSED starten und noch keine sockets bauen, müssen wir den Übergang zu LISTEN noch etwas künstlich durchführen:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | void tcpListen(network_adapter_t* adapter)
{
adapter->TCP_PrevState = adapter->TCP_CurrState;
adapter->TCP_CurrState = LISTEN;
// TODO: more action needed?
}
Erst ab dort geht es geregelt weiter:
[cpp]if (tcp->SYN && !tcp->ACK) // SYN
{
adapter->TCP_PrevState = adapter->TCP_CurrState;
if (adapter->TCP_CurrState == CLOSED)
{
printf("TCP set from CLOSED to LISTEN.\n");
tcpListen(adapter);
}
else if (adapter->TCP_CurrState == LISTEN)
{
tcpSend(adapter, 0, 0, htons(tcp->destPort), adapter->IP_address, htons(tcp->sourcePort), transmittingIP, SYN_ACK_FLAG, 0 /*seqNumber*/ , tcp->sequenceNumber+htonl(1) /*ackNumber*/);
adapter->TCP_CurrState = SYN_RECEIVED;
}
//...
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | void tcpListen(network_adapter_t* adapter)
{
adapter->TCP_PrevState = adapter->TCP_CurrState;
adapter->TCP_CurrState = LISTEN;
// TODO: more action needed?
}
Erst ab dort geht es geregelt weiter:
[cpp]if (tcp->SYN && !tcp->ACK) // SYN
{
adapter->TCP_PrevState = adapter->TCP_CurrState;
if (adapter->TCP_CurrState == CLOSED)
{
printf("TCP set from CLOSED to LISTEN.\n");
tcpListen(adapter);
}
else if (adapter->TCP_CurrState == LISTEN)
{
tcpSend(adapter, 0, 0, htons(tcp->destPort), adapter->IP_address, htons(tcp->sourcePort), transmittingIP, SYN_ACK_FLAG, 0 /*seqNumber*/ , tcp->sequenceNumber+htonl(1) /*ackNumber*/);
adapter->TCP_CurrState = SYN_RECEIVED;
}
//...
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | void tcpListen(network_adapter_t* adapter)
{
adapter->TCP_PrevState = adapter->TCP_CurrState;
adapter->TCP_CurrState = LISTEN;
// TODO: more action needed?
}
Erst ab dort geht es geregelt weiter:
[cpp]if (tcp->SYN && !tcp->ACK) // SYN
{
adapter->TCP_PrevState = adapter->TCP_CurrState;
if (adapter->TCP_CurrState == CLOSED)
{
printf("TCP set from CLOSED to LISTEN.\n");
tcpListen(adapter);
}
else if (adapter->TCP_CurrState == LISTEN)
{
tcpSend(adapter, 0, 0, htons(tcp->destPort), adapter->IP_address, htons(tcp->sourcePort), transmittingIP, SYN_ACK_FLAG, 0 /*seqNumber*/ , tcp->sequenceNumber+htonl(1) /*ackNumber*/);
adapter->TCP_CurrState = SYN_RECEIVED;
}
//...
| |
telnet baut zumindest einen "Kontakt" zu uns auf, erwartet aber wohl mehr von seinem "Server" als nur einen 3-way-handshake:
| Code: | Microsoft Telnet> open 192.168.1.97
Verbindungsaufbau zu 192.168.1.97... | |
| Code: | Microsoft Telnet> open 192.168.1.97
Verbindungsaufbau zu 192.168.1.97... | |
| Code: | Microsoft Telnet> open 192.168.1.97
Verbindungsaufbau zu 192.168.1.97... | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:58:31 15.06.2011, insgesamt 6-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:17:19 16.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.111 - Rev: 950"
TCP/Telnet-Datenübertragung, allerdings noch ohne aktive Bestätigung seitens PrettyOS:
http://www.henkessoft.de/OS_Dev/Bilder/rev.950_TCP_TELNET_DATEN.PNG
Mit strg+c kann man für Experimente den Zustand LISTEN erneut setzen.
TODO: Im state "ESTABLISHED" den Empfang von Daten mit der korrekten ACK bestätigen, damit der "Retransmission Timer" des Senders keine erneute Versendung dieses Paktes veranlasst (s. Bild oben).
Hier ist eine gute Literaturstelle für den Datenaustausch-Mechanismus: http://www.rhyshaden.com/tcp.htm |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:49:29 16.06.2011, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:04:19 16.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.112 - Rev: 951"
Experimentelle Version: Man muss genau 10 Byte senden, damit es genau klappt.
TODO: Länge des TCP-Datenpakets bestimmen und übergeben.
Foto: http://www.henkessoft.de/OS_Dev/Bilder/rev.951_TCP_TELNET_DATENAUSTAUSCH.PNG
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | if (!tcp->SYN && !tcp->FIN && tcp->ACK) // ACK
{
adapter->TCP_PrevState = adapter->TCP_CurrState;
if (adapter->TCP_CurrState == ESTABLISHED) // ESTABLISHED --> DATA TRANSFER
{
uint32_t length_of_tcpData = 10; // TODO: find length of data !
printf("\ntcp packet data:");
for (uint16_t i=0; i<length_of_tcpData; i++)
{
printf("%c", *(((uint8_t*)(tcp+1))+i) );
}
tcpSend(adapter, 0, 0, htons(tcp->destPort), adapter->IP_address, htons(tcp->sourcePort), transmittingIP, ACK_FLAG, tcp->acknowledgmentNumber /*seqNumber*/, tcp->sequenceNumber+htonl(length_of_tcpData) /*ackNumber*/);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | if (!tcp->SYN && !tcp->FIN && tcp->ACK) // ACK
{
adapter->TCP_PrevState = adapter->TCP_CurrState;
if (adapter->TCP_CurrState == ESTABLISHED) // ESTABLISHED --> DATA TRANSFER
{
uint32_t length_of_tcpData = 10; // TODO: find length of data !
printf("\ntcp packet data:");
for (uint16_t i=0; i<length_of_tcpData; i++)
{
printf("%c", *(((uint8_t*)(tcp+1))+i) );
}
tcpSend(adapter, 0, 0, htons(tcp->destPort), adapter->IP_address, htons(tcp->sourcePort), transmittingIP, ACK_FLAG, tcp->acknowledgmentNumber /*seqNumber*/, tcp->sequenceNumber+htonl(length_of_tcpData) /*ackNumber*/);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | if (!tcp->SYN && !tcp->FIN && tcp->ACK) // ACK
{
adapter->TCP_PrevState = adapter->TCP_CurrState;
if (adapter->TCP_CurrState == ESTABLISHED) // ESTABLISHED --> DATA TRANSFER
{
uint32_t length_of_tcpData = 10; // TODO: find length of data !
printf("\ntcp packet data:");
for (uint16_t i=0; i<length_of_tcpData; i++)
{
printf("%c", *(((uint8_t*)(tcp+1))+i) );
}
tcpSend(adapter, 0, 0, htons(tcp->destPort), adapter->IP_address, htons(tcp->sourcePort), transmittingIP, ACK_FLAG, tcp->acknowledgmentNumber /*seqNumber*/, tcp->sequenceNumber+htonl(length_of_tcpData) /*ackNumber*/);
} | |
ACK bei Datenempfang klappt nun auch (Berechnung von Seq.- und Ack.-Nummer).
Tippt man bei telnet "close" ein, kommt auch ein ACK. Mit strg+c kann man dann wieder bei LISTEN starten. Alles noch etwas "getrickst". Aber die ACK-Technik kann man sehr schön testen, und vor allem klappt es. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:12:10 16.06.2011, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:07:13 16.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.113:
- Kernel Stack von 0x190000 nach 0x1000000 verschoben (Vermeidung einer Kollision mit KERNEL.BIN)
- Code aufgeräumt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:49:34 16.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.114 - Rev: 953"
Nun sind auch variable Längen des TCP-Datenpakets möglich. Wir reichen uns die Paketlänge von unten nach tcpReceive(network_adapter_t* adapter, tcpPacket_t* tcp, uint8_t transmittingIP[4], size_t length) durch.
Codeausschnitt:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | 1 2 3 4 5 6 7 8 9 10 | if (adapter->TCP_CurrState == ESTABLISHED) // ESTABLISHED --> DATA TRANSFER
{
uint32_t tcpDataLength = -4 /* frame ? */ + length - (tcp->dataOffset << 2);
printf("\ntcp packet data:");
for (uint16_t i=0; i<tcpDataLength; i++)
{
printf("%c", *(((uint8_t*)(tcp+1))+i) );
}
tcpSend(adapter, 0, 0, htons(tcp->destPort), adapter->IP_address, htons(tcp->sourcePort), transmittingIP, ACK_FLAG, tcp->acknowledgmentNumber /*seqNumber*/, tcp->sequenceNumber+htonl(tcpDataLength) /*ackNumber*/);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | if (adapter->TCP_CurrState == ESTABLISHED) // ESTABLISHED --> DATA TRANSFER
{
uint32_t tcpDataLength = -4 /* frame ? */ + length - (tcp->dataOffset << 2);
printf("\ntcp packet data:");
for (uint16_t i=0; i<tcpDataLength; i++)
{
printf("%c", *(((uint8_t*)(tcp+1))+i) );
}
tcpSend(adapter, 0, 0, htons(tcp->destPort), adapter->IP_address, htons(tcp->sourcePort), transmittingIP, ACK_FLAG, tcp->acknowledgmentNumber /*seqNumber*/, tcp->sequenceNumber+htonl(tcpDataLength) /*ackNumber*/);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 | if (adapter->TCP_CurrState == ESTABLISHED) // ESTABLISHED --> DATA TRANSFER
{
uint32_t tcpDataLength = -4 /* frame ? */ + length - (tcp->dataOffset << 2);
printf("\ntcp packet data:");
for (uint16_t i=0; i<tcpDataLength; i++)
{
printf("%c", *(((uint8_t*)(tcp+1))+i) );
}
tcpSend(adapter, 0, 0, htons(tcp->destPort), adapter->IP_address, htons(tcp->sourcePort), transmittingIP, ACK_FLAG, tcp->acknowledgmentNumber /*seqNumber*/, tcp->sequenceNumber+htonl(tcpDataLength) /*ackNumber*/);
} | |
telnet:
| Code: | open 192.168.1.97
sen ...
sen ................
sen .......
close
| |
| Code: | open 192.168.1.97
sen ...
sen ................
sen .......
close
| |
| Code: | open 192.168.1.97
sen ...
sen ................
sen .......
close
| |
anschließend bei PrettyOS wieder strg+c und erneut connection aufbauen, oder auch direkt open ... .
Kann alles in wireshark und bei PrettyOS verfolgt werden. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:02:20 16.06.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:45:17 16.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.115 - Rev: 954"
tcp.h weiter mit structs (DRAFT) gefüllt, um mit connections und dazu gehörigen sockets arbeiten zu können:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | typedef struct
{
uint32_t SND_UNA; // Send Unacknowledged
uint32_t SND_NXT; // Send Next
uint16_t SND_WND; // Send Window
uint32_t SND_ISS; // Initial send sequence number
uint32_t RCV_NXT; // Sequence number of next received set
uint16_t RCV_WND; // Receive Window
uint32_t RCV_IRS; // Initial receive sequence number
} __attribute__((packed)) tcpTransmissionControlBlock_t;
typedef struct
{
uint16_t port;
uint8_t IP[4];
network_adapter_t* adapter;
} __attribute__((packed)) tcpSocket_t;
typedef struct
{
tcpSocket_t localSocket;
tcpSocket_t remoteSocket;
tcpTransmissionControlBlock_t tcb;
TCP_state TCP_PrevState;
TCP_state TCP_CurrState;
} __attribute__((packed)) tcpConnection_t;
typedef struct
{
uint32_t SEG_SEQ; // Sequence number
uint32_t SEG_ACK; // Acknoledgement number
uint32_t SEG_LEN; // segment length
uint32_t SEG_WND; // segment windows
tcpFlags SEG_CTL; // control bits
} __attribute__((packed)) tcpSegment_t; | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | typedef struct
{
uint32_t SND_UNA; // Send Unacknowledged
uint32_t SND_NXT; // Send Next
uint16_t SND_WND; // Send Window
uint32_t SND_ISS; // Initial send sequence number
uint32_t RCV_NXT; // Sequence number of next received set
uint16_t RCV_WND; // Receive Window
uint32_t RCV_IRS; // Initial receive sequence number
} __attribute__((packed)) tcpTransmissionControlBlock_t;
typedef struct
{
uint16_t port;
uint8_t IP[4];
network_adapter_t* adapter;
} __attribute__((packed)) tcpSocket_t;
typedef struct
{
tcpSocket_t localSocket;
tcpSocket_t remoteSocket;
tcpTransmissionControlBlock_t tcb;
TCP_state TCP_PrevState;
TCP_state TCP_CurrState;
} __attribute__((packed)) tcpConnection_t;
typedef struct
{
uint32_t SEG_SEQ; // Sequence number
uint32_t SEG_ACK; // Acknoledgement number
uint32_t SEG_LEN; // segment length
uint32_t SEG_WND; // segment windows
tcpFlags SEG_CTL; // control bits
} __attribute__((packed)) tcpSegment_t; | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | typedef struct
{
uint32_t SND_UNA; // Send Unacknowledged
uint32_t SND_NXT; // Send Next
uint16_t SND_WND; // Send Window
uint32_t SND_ISS; // Initial send sequence number
uint32_t RCV_NXT; // Sequence number of next received set
uint16_t RCV_WND; // Receive Window
uint32_t RCV_IRS; // Initial receive sequence number
} __attribute__((packed)) tcpTransmissionControlBlock_t;
typedef struct
{
uint16_t port;
uint8_t IP[4];
network_adapter_t* adapter;
} __attribute__((packed)) tcpSocket_t;
typedef struct
{
tcpSocket_t localSocket;
tcpSocket_t remoteSocket;
tcpTransmissionControlBlock_t tcb;
TCP_state TCP_PrevState;
TCP_state TCP_CurrState;
} __attribute__((packed)) tcpConnection_t;
typedef struct
{
uint32_t SEG_SEQ; // Sequence number
uint32_t SEG_ACK; // Acknoledgement number
uint32_t SEG_LEN; // segment length
uint32_t SEG_WND; // segment windows
tcpFlags SEG_CTL; // control bits
} __attribute__((packed)) tcpSegment_t; | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:15:08 17.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.116 - Rev: 955"
TCP weiter ausgebaut. Die TCP States zu tcpConn umgehängt.
In network.c das TCP Server "passive open" eingerichtet:
| C/C++ Code: | // open TCP Server with State "LISTEN"
adapter->tcpConn = malloc(sizeof(tcpConnection_t), 0, "tcp connection");
adapter->tcpConn->localSocket.port = getFreeSocket();
memcpy(adapter->tcpConn->localSocket.IP, adapter->IP_address, 4);
adapter->tcpConn->TCP_PrevState = CLOSED;
adapter->tcpConn->TCP_CurrState = LISTEN;
// TODO: ... | |
| C/C++ Code: | // open TCP Server with State "LISTEN"
adapter->tcpConn = malloc(sizeof(tcpConnection_t), 0, "tcp connection");
adapter->tcpConn->localSocket.port = getFreeSocket();
memcpy(adapter->tcpConn->localSocket.IP, adapter->IP_address, 4);
adapter->tcpConn->TCP_PrevState = CLOSED;
adapter->tcpConn->TCP_CurrState = LISTEN;
// TODO: ... | |
| C/C++ Code: | // open TCP Server with State "LISTEN"
adapter->tcpConn = malloc(sizeof(tcpConnection_t), 0, "tcp connection");
adapter->tcpConn->localSocket.port = getFreeSocket();
memcpy(adapter->tcpConn->localSocket.IP, adapter->IP_address, 4);
adapter->tcpConn->TCP_PrevState = CLOSED;
adapter->tcpConn->TCP_CurrState = LISTEN;
// TODO: ... | |
networktypes.h fehlt im Commit |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:21:02 17.06.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:31:52 17.06.2011 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:36:08 17.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.118:
- Ausgabe verbessert
- Mutexes verbessert
- PCI nutzt nun eine Liste statt eines statischen Arrays
- Aufgeräumt |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:27:09 17.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.119:
- TCP überarbeitet. (BUG: Datentransfer funktioniert nicht.) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:41:56 18.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.120 - Rev: 959"
Aktives öffnen und TCP ("SYN") senden (mit strg+w) klappt.
Problem: Internet Checksum ist falsch! (Ursache bisher unklar, da das Senden von SYN ACK oder FIN ACK als server bisher klappt)
Ablauf:
1) PrettyOS bootet, holt sich per DHCP seine IP
2) Man pingt PrettyOS von 192.168.1.23 an, damit der rechner in die ARP-Tabelle eingetragen wird (diese IP steht konkret in strg+w in keyboard.c drinnen, also ändern auf eigenen rechner)
3) Man gibt strg+w ein bei PrettyOS um aktiv ein SYN zu senden
Fazit: SYN senden klappt, aber checksum falsch
| Code: | TCP-Paket: 0402001700000000000000005002ffff88b00000
Checksum: 0x88b0 [incorrect, should be 0x2801 ...]
| |
| Code: | TCP-Paket: 0402001700000000000000005002ffff88b00000
Checksum: 0x88b0 [incorrect, should be 0x2801 ...]
| |
| Code: | TCP-Paket: 0402001700000000000000005002ffff88b00000
Checksum: 0x88b0 [incorrect, should be 0x2801 ...]
| |
Test mit dem Simulationsprogramm ergibt die korrekte Checksum, also stimmen die Eingangsdaten in die Berechnung für diese nicht.
PS: der datentransfer in rev. 958 klappt (war offenbar ein TCP-Netzproblem) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:09:05 18.06.2011, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:19:25 18.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.121 - Rev: 960"
Nun erfolgt die korrekte Berechnung der internet checksum. Fehler war im Pseudoheader. Dort fehlte noch die source IP.
Erstes erfolgreiches "active open" mit Senden von SYN, das zum State SYN_SENT führt (wireshark):
| Code: | | 8 22.328396 192.168.1.97 192.168.1.23 TCP 60 blackjack > telnet [SYN] Seq=0 Win=65535 Len=0 | |
| Code: | | 8 22.328396 192.168.1.97 192.168.1.23 TCP 60 blackjack > telnet [SYN] Seq=0 Win=65535 Len=0 | |
| Code: | | 8 22.328396 192.168.1.97 192.168.1.23 TCP 60 blackjack > telnet [SYN] Seq=0 Win=65535 Len=0 | |
blackjack steht für den gewählten Port mit der Nr. 1025.
| C/C++ Code: | static uint16_t getFreeSocket()
{
static uint16_t srcPort = 1025;
return srcPort++;
} | |
| C/C++ Code: | static uint16_t getFreeSocket()
{
static uint16_t srcPort = 1025;
return srcPort++;
} | |
| C/C++ Code: | static uint16_t getFreeSocket()
{
static uint16_t srcPort = 1025;
return srcPort++;
} | |
Um den kompletten Handshake zu sehen, gibt es einen einfachen Weg:
1) telnet dienst (server) in Windows starten
2) firewall tcp port 23 öffnen
3) strg+w (active open mit SYN)
Resultat:
http://www.henkessoft.de/OS_Dev/Bilder/rev.960_TCP_TELNET_ACTIVE_OPEN.PNG
SYN - SYN ACK - ACK
MrX hat auf die Schnelle einen kleinen TCP-Server geschrieben:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #include <SFML/Network.hpp>
#include <iostream>
#include <string>
#include <cstdint>
sf::TcpSocket Socket;
void Func()
{
while(true)
{
char buffer[512];
size_t size;
if(Socket.Receive(buffer, 512, size) == sf::Socket::Disconnected) return;
buffer[size] = 0;
std::cout << buffer;
}
}
sf::Thread Thr(&Func);
int main() {
sf::TcpListener Listener;
Listener.SetBlocking(true);
uint16_t port;
std::cout << "Bitte Port eingeben: ";
std::cin >> port;
Listener.Listen(port);
std::cout << "Server lauscht... ";
Listener.Accept(Socket);
std::cout << "Verbunden." << std::endl;
Thr.Launch();
std::string str;
std::cin >> str;
while(str != "exit")
{
Socket.Send(str.c_str(), str.length());
std::cin >> str;
}
return(0);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #include <SFML/Network.hpp>
#include <iostream>
#include <string>
#include <cstdint>
sf::TcpSocket Socket;
void Func()
{
while(true)
{
char buffer[512];
size_t size;
if(Socket.Receive(buffer, 512, size) == sf::Socket::Disconnected) return;
buffer[size] = 0;
std::cout << buffer;
}
}
sf::Thread Thr(&Func);
int main() {
sf::TcpListener Listener;
Listener.SetBlocking(true);
uint16_t port;
std::cout << "Bitte Port eingeben: ";
std::cin >> port;
Listener.Listen(port);
std::cout << "Server lauscht... ";
Listener.Accept(Socket);
std::cout << "Verbunden." << std::endl;
Thr.Launch();
std::string str;
std::cin >> str;
while(str != "exit")
{
Socket.Send(str.c_str(), str.length());
std::cin >> str;
}
return(0);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #include <SFML/Network.hpp>
#include <iostream>
#include <string>
#include <cstdint>
sf::TcpSocket Socket;
void Func()
{
while(true)
{
char buffer[512];
size_t size;
if(Socket.Receive(buffer, 512, size) == sf::Socket::Disconnected) return;
buffer[size] = 0;
std::cout << buffer;
}
}
sf::Thread Thr(&Func);
int main() {
sf::TcpListener Listener;
Listener.SetBlocking(true);
uint16_t port;
std::cout << "Bitte Port eingeben: ";
std::cin >> port;
Listener.Listen(port);
std::cout << "Server lauscht... ";
Listener.Accept(Socket);
std::cout << "Verbunden." << std::endl;
Thr.Launch();
std::string str;
std::cin >> str;
while(str != "exit")
{
Socket.Send(str.c_str(), str.length());
std::cin >> str;
}
return(0);
} | |
Download der exe-Datei zusammen mit dem Sourcecode: http://www.henkessoft.de/OS_Dev/Downloads/TCPServer.zip (EXE etwas weiter entwickelt bezüglich Ausgaben) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 09:49:37 19.06.2011, insgesamt 6-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:33:00 18.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.122 - Rev: 960"
- Beseitigung eines Fehlers, der nur ab und zu aufgetreten ist: versehentlich wurde mit bigEndian-Zahlen gerechnet, dabei verschiebt sich der Überlauf - falls vorhanden - nach rechts, da wir immer mit littleEndian-Zahlen "rechnen". Daher immer erst nach littleEndian umwandeln, dann rechnen, anschließend zurück nach bigEndian umwandeln:
| C/C++ Code: | | htonl(htonl(tcp->sequenceNumber)+1) | |
| C/C++ Code: | | htonl(htonl(tcp->sequenceNumber)+1) | |
| C/C++ Code: | | htonl(htonl(tcp->sequenceNumber)+1) | |
<--- EDIT: das zweite htonl müsste ein ntohl sein, wurde inzwischen behoben.
- internetChecksumTest.cpp (von MrX, für code::blocks umgeschrieben) in /tools |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 08:46:04 19.06.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:18:35 19.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.123 - Rev: 961"
ntohs/ntohl und htons/htonl im Code aus Gründen der Dokumentation geordnet.
vgl. http://beej.us/guide/bgnet/output/html/multipage/htonsman.html
Die Inhalte der Macros sind für IA32 bei x86 zufällig gleich, aber es geht um den Weg (Netz <---> Host), der verschieden ist.
| C/C++ Code: | // htonl = Host To Network Long // htons = Host To Network Short
#define htons(v) ((((v) >> 8) & 0xFF) | (((v) & 0xFF) << 8))
#define htonl(v) ((((v) >> 24) & 0xFF) | (((v) >> 8) & 0xFF00) | (((v) & 0xFF00) << 8) | (((v) & 0xFF) << 24))
// ntohl = Network To Host Long // ntohs = Network To Host Short
#define ntohs(v) htons(v)
#define ntohl(v) htonl(v)
| |
| C/C++ Code: | // htonl = Host To Network Long // htons = Host To Network Short
#define htons(v) ((((v) >> 8) & 0xFF) | (((v) & 0xFF) << 8))
#define htonl(v) ((((v) >> 24) & 0xFF) | (((v) >> 8) & 0xFF00) | (((v) & 0xFF00) << 8) | (((v) & 0xFF) << 24))
// ntohl = Network To Host Long // ntohs = Network To Host Short
#define ntohs(v) htons(v)
#define ntohl(v) htonl(v)
| |
| C/C++ Code: | // htonl = Host To Network Long // htons = Host To Network Short
#define htons(v) ((((v) >> 8) & 0xFF) | (((v) & 0xFF) << 8))
#define htonl(v) ((((v) >> 24) & 0xFF) | (((v) >> 8) & 0xFF00) | (((v) & 0xFF00) << 8) | (((v) & 0xFF) << 24))
// ntohl = Network To Host Long // ntohs = Network To Host Short
#define ntohs(v) htons(v)
#define ntohl(v) htonl(v)
| |
Diese Macros machen den Code mehr portabel, denn wenn z.B. die CPU gemäß Big Endian arbeitet dann ist die Umsetzung eben einfach ein "no operation".
Beispiel aus tpc.c:
| Zitat: | | tcp_send(connection, 0, 0, ACK_FLAG, tcp->acknowledgmentNumber /*seqNumber*/, htonl(ntohl(tcp->sequenceNumber)+tcpDataLength) /*ackNumber*/); | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 08:44:48 19.06.2011, insgesamt 6-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
09:38:02 19.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.124 - Rev: 962"
Ausgaben bei networking etwas vereinfacht. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:17:26 19.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.125 - Rev: 963"
Kleine Veränderungen in networking Ausgabe |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
10:23:39 19.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.126:
- netutils.c/h gebildet. Enthält ntohl (u.ä.) sowie checksum-Funktionen
- Syscall-Aufruf verwendet festgelegte Register (vermeidet Fehler mit -fomit-frame-pointer)
- Code wird nun mit -fomit-frame-pointer gebaut
- Kleinigkeiten |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:12:44 19.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.127:
- IPs und MACs jetzt mit memcmp verglichen
- IP_address und MAC_address in IP und MAC umbenannt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:58:24 19.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.128 - Rev: 966" (versehentlich zu hoch gedreht in ckernel.c)
PrettyOS goes to INTERNET via routing (FIRST TEST)
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | if(retchar == 'w') // Create & Bind connection
{
connection = tcp_createConnection(); // 94.142.241.111 auf Port 23
uint8_t destIP[4] ={94,142,241,111};
memcpy(connection->remoteSocket.IP, destIP, 4);
connection->remoteSocket.port = 23;
uint8_t sourceIP[4] ={IP_1,IP_2,IP_3,IP_4}; //HACK
memcpy(connection->localSocket.IP, sourceIP, 4);
network_adapter_t* adapter = network_getAdapter(sourceIP);
printf("network adapter: %Xh\n", adapter); // check
connection->adapter = adapter;
if(adapter)
{
tcp_connect(connection);
}
return 0;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | if(retchar == 'w') // Create & Bind connection
{
connection = tcp_createConnection(); // 94.142.241.111 auf Port 23
uint8_t destIP[4] ={94,142,241,111};
memcpy(connection->remoteSocket.IP, destIP, 4);
connection->remoteSocket.port = 23;
uint8_t sourceIP[4] ={IP_1,IP_2,IP_3,IP_4}; //HACK
memcpy(connection->localSocket.IP, sourceIP, 4);
network_adapter_t* adapter = network_getAdapter(sourceIP);
printf("network adapter: %Xh\n", adapter); // check
connection->adapter = adapter;
if(adapter)
{
tcp_connect(connection);
}
return 0;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | if(retchar == 'w') // Create & Bind connection
{
connection = tcp_createConnection(); // 94.142.241.111 auf Port 23
uint8_t destIP[4] ={94,142,241,111};
memcpy(connection->remoteSocket.IP, destIP, 4);
connection->remoteSocket.port = 23;
uint8_t sourceIP[4] ={IP_1,IP_2,IP_3,IP_4}; //HACK
memcpy(connection->localSocket.IP, sourceIP, 4);
network_adapter_t* adapter = network_getAdapter(sourceIP);
printf("network adapter: %Xh\n", adapter); // check
connection->adapter = adapter;
if(adapter)
{
tcp_connect(connection);
}
return 0;
} | |
Da wird die Starwars Story erzählt von einem sehr geschwätzigen telnet server (IP: 94.142.241.111). Vielen Dank an Cuervo für diesen Bomben-Tipp!
Foto: http://www.henkessoft.de/OS_Dev/Bilder/rev.966_INTERNET.PNG
Wer dies nachstellen möchte, benötigt eine rtl8139 Netzwerkkarte, und bitte die router-mac (erhält man oft mit arp -a aus dem arp-cache) und die IP/RIP (gleich), die man von DHCP erhält, in network.h eintragen. Das muss alles noch automatisiert werden.
Start ist z.Z. mit strg+w
HTTP geht noch nicht (fehlt noch die ACH-Number aus dem SYN-ACK des handshake), kommt demnächst wenn der TCB in connection gefüttert wird. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 13:34:16 19.06.2011, insgesamt 4-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
13:48:47 19.06.2011 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:38:55 19.06.2011 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:25:23 19.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.130 - Rev: 968"
- srand, rand eingebaut für Erzeugung von ISS in tcp.c
- Extra eine eigene Übungsseite gebaut: http://www.henkessoft.de/OS_Dev/PrettyOS.htm
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | if(retchar == 'w') // Create & Bind connection
{
connection = tcp_createConnection();
// uint8_t destIP[4] ={94,142,241,111}; // 94.142.241.111 at Port 23, starwars story
uint8_t destIP[4] = {82,100,220,68}; // www.henkessoft.de Port 80
memcpy(connection->remoteSocket.IP, destIP, 4);
connection->remoteSocket.port = 80;
uint8_t sourceIP[4] ={IP_1,IP_2,IP_3,IP_4}; //HACK
memcpy(connection->localSocket.IP, sourceIP, 4);
network_adapter_t* adapter = network_getAdapter(sourceIP);
printf("network adapter: %Xh\n", adapter); // check
connection->adapter = adapter;
if(adapter)
{
tcp_connect(connection);
}
return 0;
}
if(retchar == 'x') // send data to the connection
{
tcp_send(connection, "GET /OS_Dev/PrettyOS.htm HTTP/1.1\r\nHost: www.henkessoft.de\r\nConnection: close\r\n\r\n", strlen("GET /OS_Dev/PrettyOS.htm HTTP/1.1\r\nHost: www.henkessoft.de\r\nConnection: close\r\n\r\n"), ACK_FLAG, connection->tcb.SND_NXT, connection->tcb.SND_UNA);
return 0;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | if(retchar == 'w') // Create & Bind connection
{
connection = tcp_createConnection();
// uint8_t destIP[4] ={94,142,241,111}; // 94.142.241.111 at Port 23, starwars story
uint8_t destIP[4] = {82,100,220,68}; // www.henkessoft.de Port 80
memcpy(connection->remoteSocket.IP, destIP, 4);
connection->remoteSocket.port = 80;
uint8_t sourceIP[4] ={IP_1,IP_2,IP_3,IP_4}; //HACK
memcpy(connection->localSocket.IP, sourceIP, 4);
network_adapter_t* adapter = network_getAdapter(sourceIP);
printf("network adapter: %Xh\n", adapter); // check
connection->adapter = adapter;
if(adapter)
{
tcp_connect(connection);
}
return 0;
}
if(retchar == 'x') // send data to the connection
{
tcp_send(connection, "GET /OS_Dev/PrettyOS.htm HTTP/1.1\r\nHost: www.henkessoft.de\r\nConnection: close\r\n\r\n", strlen("GET /OS_Dev/PrettyOS.htm HTTP/1.1\r\nHost: www.henkessoft.de\r\nConnection: close\r\n\r\n"), ACK_FLAG, connection->tcb.SND_NXT, connection->tcb.SND_UNA);
return 0;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | if(retchar == 'w') // Create & Bind connection
{
connection = tcp_createConnection();
// uint8_t destIP[4] ={94,142,241,111}; // 94.142.241.111 at Port 23, starwars story
uint8_t destIP[4] = {82,100,220,68}; // www.henkessoft.de Port 80
memcpy(connection->remoteSocket.IP, destIP, 4);
connection->remoteSocket.port = 80;
uint8_t sourceIP[4] ={IP_1,IP_2,IP_3,IP_4}; //HACK
memcpy(connection->localSocket.IP, sourceIP, 4);
network_adapter_t* adapter = network_getAdapter(sourceIP);
printf("network adapter: %Xh\n", adapter); // check
connection->adapter = adapter;
if(adapter)
{
tcp_connect(connection);
}
return 0;
}
if(retchar == 'x') // send data to the connection
{
tcp_send(connection, "GET /OS_Dev/PrettyOS.htm HTTP/1.1\r\nHost: www.henkessoft.de\r\nConnection: close\r\n\r\n", strlen("GET /OS_Dev/PrettyOS.htm HTTP/1.1\r\nHost: www.henkessoft.de\r\nConnection: close\r\n\r\n"), ACK_FLAG, connection->tcb.SND_NXT, connection->tcb.SND_UNA);
return 0;
} | |
Klappt gut!
HTTP hat natürlich im eigentlichen Kernel nichts verloren. Dies hier in keyboard ist sozusagen ein "Steckbrett". |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 04:12:00 21.06.2011, insgesamt 5-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:46:28 19.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.131 - Rev: 969"
- Gateway IP aus DHCP ACK gezogen und bei adpater->... eingehängt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:06:59 20.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.132 - Rev: 970"
- Subnet Mask aus DHCP ACK gezogen und bei adpater->... eingehängt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:58:48 20.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.132 - Rev: 970" <--- Simulation mit qemu:
qemu gestartet mit TAP1/TAP2 unter Windows XP.
Foto: http://www.henkessoft.de/OS_Dev/Bilder/rev.970_INTERNET_HTTP.PNG
strg+w baut die connection via router zum Internet auf Port 80 (HTTP) auf, strg+x fordert Daten mittels GET ... an.
DHCP läuft hierbei nicht sauber zum Ende durch (bleibt bei OFFER hängen, wobwi REQUEST gesendet wird, man muss mit TAP1 Aktivierung/Deaktivierung toggeln). Daher sind die HACKs wichtig.
So wie es aussieht, kann man TCP/IP damit trotz des DHCP-Problems testen.
qemu batch datei: | Code: | | qemu.exe -fda FloppyImage.img -soundhw pcspk -net nic,model=rtl8139,addr=1A,macaddr=00:12:12:12:12:12 -net tap,ifname=TAP2 -net user -localtime | |
| Code: | | qemu.exe -fda FloppyImage.img -soundhw pcspk -net nic,model=rtl8139,addr=1A,macaddr=00:12:12:12:12:12 -net tap,ifname=TAP2 -net user -localtime | |
| Code: | | qemu.exe -fda FloppyImage.img -soundhw pcspk -net nic,model=rtl8139,addr=1A,macaddr=00:12:12:12:12:12 -net tap,ifname=TAP2 -net user -localtime | |
Die Emulation mit qemu funktioniert auch mit dem pcnet-Treiber.
pcnet anstelle rtl8139
Noch besser: Da qemu und der HOST zusammen NAT spielen, werden die PrettyOS-Pakete unter der IP des HOST verschickt, sodass man in wireshark jedes Paket sieht: http://www.henkessoft.de/OS_Dev/Bilder/rev.970_INTERNET_HTTP_WIRESHARK.PNG
PrOS = PrettyOS, web = Website
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Send Recv flags seq# ack# nextseq# window
---------------------------------------------------------------------------
PrOS web SYN 0 - 65535
web PrOS SYN ACK 0 1 65535
PrOS web ACK 1 1 65535
PrOS web PSH ACK 1 1 82 65535 GET /OS_Dev/...
web PrOS ACK 1 82 248 65535 1. Teil Header
web PrOS ACK 248 82 755 65535 OK 2. Teil <!DOCTYPE ...
PrOS web ACK 82 755 64781
web PrOS FIN ACK 755 82 65535
PrOS web ACK 82 756 64781
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Send Recv flags seq# ack# nextseq# window
---------------------------------------------------------------------------
PrOS web SYN 0 - 65535
web PrOS SYN ACK 0 1 65535
PrOS web ACK 1 1 65535
PrOS web PSH ACK 1 1 82 65535 GET /OS_Dev/...
web PrOS ACK 1 82 248 65535 1. Teil Header
web PrOS ACK 248 82 755 65535 OK 2. Teil <!DOCTYPE ...
PrOS web ACK 82 755 64781
web PrOS FIN ACK 755 82 65535
PrOS web ACK 82 756 64781
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Send Recv flags seq# ack# nextseq# window
---------------------------------------------------------------------------
PrOS web SYN 0 - 65535
web PrOS SYN ACK 0 1 65535
PrOS web ACK 1 1 65535
PrOS web PSH ACK 1 1 82 65535 GET /OS_Dev/...
web PrOS ACK 1 82 248 65535 1. Teil Header
web PrOS ACK 248 82 755 65535 OK 2. Teil <!DOCTYPE ...
PrOS web ACK 82 755 64781
web PrOS FIN ACK 755 82 65535
PrOS web ACK 82 756 64781
| |
Anmerkung: beim ersten Datenpaket vom Webserver steht: TCP segment of a reassembled PDU
HTTP Protokollschicht:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | GET /OS_Dev/PrettyOS.htm HTTP/1.1
Host: www.henkessoft.de
Connection: close
HTTP/1.1 200 OK
Date: Mon, 20 Jun 2011 19:45:22 GMT
Server: Apache/2.2.17
Last-Modified: Sun, 19 Jun 2011 16:32:48 GMT
ETag: "1e07e25-1fb-4a6132b4e8c00"
Accept-Ranges: bytes
Content-Length: 507
Connection: close
Content-Type: text/html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-15"
http-equiv="Content-Type">
<title>PrettyOS</title>
</head>
<body>
<h1>Hallo, hier spricht PrettyOS. </h1>
<h1>Ich wurde in C und Assembler erstellt. </h1>
<h1>Es gibt eine Community, die mich hingebungsvoll pflegt und weiter
entwickelt.<br>
</h1>
<h1><a href="http://www.c-plusplus.de/forum/f62">http://www.c-plusplus.de/forumf62</a></h1>
<br>
</body>
</html>
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | GET /OS_Dev/PrettyOS.htm HTTP/1.1
Host: www.henkessoft.de
Connection: close
HTTP/1.1 200 OK
Date: Mon, 20 Jun 2011 19:45:22 GMT
Server: Apache/2.2.17
Last-Modified: Sun, 19 Jun 2011 16:32:48 GMT
ETag: "1e07e25-1fb-4a6132b4e8c00"
Accept-Ranges: bytes
Content-Length: 507
Connection: close
Content-Type: text/html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-15"
http-equiv="Content-Type">
<title>PrettyOS</title>
</head>
<body>
<h1>Hallo, hier spricht PrettyOS. </h1>
<h1>Ich wurde in C und Assembler erstellt. </h1>
<h1>Es gibt eine Community, die mich hingebungsvoll pflegt und weiter
entwickelt.<br>
</h1>
<h1><a href="http://www.c-plusplus.de/forum/f62">http://www.c-plusplus.de/forumf62</a></h1>
<br>
</body>
</html>
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | GET /OS_Dev/PrettyOS.htm HTTP/1.1
Host: www.henkessoft.de
Connection: close
HTTP/1.1 200 OK
Date: Mon, 20 Jun 2011 19:45:22 GMT
Server: Apache/2.2.17
Last-Modified: Sun, 19 Jun 2011 16:32:48 GMT
ETag: "1e07e25-1fb-4a6132b4e8c00"
Accept-Ranges: bytes
Content-Length: 507
Connection: close
Content-Type: text/html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-15"
http-equiv="Content-Type">
<title>PrettyOS</title>
</head>
<body>
<h1>Hallo, hier spricht PrettyOS. </h1>
<h1>Ich wurde in C und Assembler erstellt. </h1>
<h1>Es gibt eine Community, die mich hingebungsvoll pflegt und weiter
entwickelt.<br>
</h1>
<h1><a href="http://www.c-plusplus.de/forum/f62">http://www.c-plusplus.de/forumf62</a></h1>
<br>
</body>
</html>
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 04:13:31 21.06.2011, insgesamt 9-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:01:33 21.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.133 - Rev: 971"
- tcp etwas überarbeitet: mehr Ausgaben über connection (addr) und port
- bei strg+b und strg+w (gemischt) geht noch einiges durcheinander! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:21:21 21.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:12:10 21.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.134 - Rev: 972"
- strg+c: listet alle connections auf
- tcp kleine änderungen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:37:44 22.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.135:
- Keyboard-Treiber komplett neu geschrieben
-- Alle Tasten der Tastatur werden nun unterstützt (z.B. war früher der Num-Block unbenutzbar)
-- Bessere Unterstützung für US-International-Layout (fast vollständig)
-- Änderungen bei der Bedienung: Screenshots werden mit Print im Speicher angelegt. Drückt man unmittelbar danach f oder u, wird er auf Floppy bzw. USB-Stick gespeichert.
- Bessere ASCII -> CP437-Übersetzung: Mehr Zeichen darstellbar.
- Event-System
- getCursor nimmt nun position_t* (in den die Position geschrieben wird) und gibt void zurück. (Führte vorher zu #PF bei Verwendung als Syscall)
- Bugfix in list_Delete (führte ggf. zur Zerstörung der Listen)
- Keysound etwas verbessert: Tonhöhe hängt von gedrückter Taste ab, ESC beendet das Programm.
Bekannte Probleme:
- Jedes zweite %-Zeichen wird von der Shell (genauer: printLine/kprintf) verschluckt (Problem existiert schon länger, ist erst jetzt aufgefallen)
- Unter Qemu 0.14.1 und 0.14.0 senden E0-Tasten kein 0xE0. Sie funktionieren daher nicht. |
Zuletzt bearbeitet von Erhard Henkes am 09:31:57 23.06.2011, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
22:17:40 22.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.135 - Rev: 974:
- events.h/c nachgeliefert
- Bugfix: Rebuild der Userprogramme geht wieder |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:15:41 23.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.136 - Rev: 975
Experimenteller Zwischenstand mit arp_sendRequest und dem Versuch das Gateway einzutragen, klappt leider nicht (s. wireshark). Ursache unklar. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:01:13 23.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.137
- Berücksichtigung des Subnets beim Senden von Paketen. Problem: ARP-Requests funktionieren nicht
- Events mit mutex geschützt
- Für Tests die Funktion network_getFirstAdapter bereitgestellt
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:43:07 23.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.138 - Rev: 977"
- arp_sendRequest korrigiert
- arp_waitForReply geändert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:10:15 23.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.139 - Rev: 978"
- arp_sendRequest eingebaut in DHCP ACK options
- qemu HACK dort eingebaut
aber es läuft noch nicht rund, qemu gar nicht mit TCP wegen der nun fehlenden MAC-Adresse des gateways des externen routers, an den qemu/TAP nicht ran kommt. Da muss wohl ein MAC-HACK her wie vorher.
In findConnection (tcp.c) ist auch noch ein blöder HACK für passive open im ersten recveive schritt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:39:35 23.06.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:14:00 23.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.140 - Rev: 979"
- QEMU_HACK (in network.h zusammen mit externer router MAC definiert) eingebaut in ipv4.c beim Senden
- tcpConnection_t* findConnectionID(uint32_t ID) neu eingeführt (zur Brückung strg+w und strg+x)
- QEMU HACK aus DHCP entfernt
- strg c listet nun incl. ID und Adresse auf |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:20:37 23.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.141 - Rev: 980"
Fehler behoben in tcp.c bezüglich Übergabe des Ports an findConnection(...)
Es gibt nun drei Versionen:
- tcpConnection_t* findConnectionID(uint32_t ID)
- tcpConnection_t* findConnectionListen(network_adapter_t* adapter)
- tcpConnection_t* findConnection(uint8_t IP[4], uint16_t port, network_adapter_t* adapter)
Es wird nun jeweils die qemu-Version von mir ins Repo gestellt. Bitte daran denken, die router-MACs in network.h anzupassen (qemu HACK). Man erhält diese mittels arp -a, evtl. vorher den router pingen, wenn er noch nicht im arp cache steht.
Die Zuordnung der empfangenen Pakete zu den connections sollte nun recht gut klappen.
Probleme:
- strg c (connection list) ohne \n am Ende
- telnet daten empfang macht probleme (ACK passt nicht?? Funktionierte aber schon gut) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:37:29 23.06.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:34:28 24.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.142 - Rev: 981"
Veränderungen in ckernel.c und tcp.c, die durch Suchen der passenden Verbindung helfen, dass die Experimente gelingen.
Wichtig: Hinzufügen von ESTABLISHED als Parameter bei findConnection(...).
Probieren Sie folgendes aus: (bitte MACs für Ihren externen Router zum Internet anpassen)
Mehrfach strg+w drücken. Hierdurch werden zu meiner Homepage mehrere Verbindungen geöffnet, allerdings nur die erste wird auf ESTABLISHED gesetzt. Die anderen sitzen auf SYN_SENT. Wenn Sie nun strg+x drücken wird die angesprochene HTML-Datei gezogen und die Verbindung anschließend geschlossen. Daraufhin wird die nächste connection von SYN_SENT auf ESTABLISHED gesetzt (einige Sekunden warten). Das geht immer so weiter (mit strg+c die connections auflisten), bis keine HTTP-Verbindung mehr vorhanden ist. Dann erfolgt auf strg+x hin eine Fehlermeldung. Sie können auch beliebig passive LISTEN Sockets eröffnen. Diese kann man ebenfalls auf diese Weise mit z.B. telnet (gelingt bisher nur bei Hardware Tests) "abarbeiten".
Diese Version zeigt die Möglichkeiten, wie man mehrere Verbindungen beispielhaft strukturieren kann, und die Abläufe, wenn man sich mit der gleichen Client-IP mit mehreren Verbindungen (verschiedene Port-Nummern) auf dieselbe Datei auf einem HTTP-Server (im Internet) aufsetzt.
Sonstiges:
copy_kernel_bin_to_floppy.bat wurde hinzugefügt:
| Code: | | xcopy /y kernel\kernel.bin a:\kernel.bin | |
| Code: | | xcopy /y kernel\kernel.bin a:\kernel.bin | |
| Code: | | xcopy /y kernel\kernel.bin a:\kernel.bin | |
Beschleunigt das Erstellen von Floppydisks bei Reihenversuchen, bei denen nur kernel.bin verändert wird.
Bedienungshinweise:
strg+w: baut HTTP-Verbindung auf zu meiner Homepage (ESTABLISHED)
strg+x: zieht den HTML Text. Die Verbindung wird geschlossen
strg+b: erstellt LISTEN socket (wartet auf SYN von außen)
strg+c: listet alle Verbindungen auf
qemu batch: qemu.exe -fda FloppyImage.img -soundhw pcspk -net nic,model=pcnet,addr=1A,macaddr=00:12:12:12:12:12 -net tap,ifname=TAP2 -net user -localtime
wichtig: -net user |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:52:01 24.06.2011, insgesamt 8-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:44:34 24.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.143 - Rev: 982"
- bei qemu wird DHCP_Discover nun übergangen in network.c
- unwichtige Korrektur in tcp.c
Die Verbindung mit strg+w klappt nicht immer zuverlässig. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 11:45:02 24.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:48:51 24.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.143 - Rev: 983"
Farbwerte aus video.h eingesetzt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:39:25 24.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.144 - Rev: 984"
Neues Farbschema eingefügt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:06:58 24.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
14:53:26 24.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.145
- Stack Trace implementiert
- Ausgabe bei Exceptions verbessert
- Kleinigkeiten |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
16:02:14 24.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.146:
- Textausgabe gemeinsam mit ehenkes verbessert |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:32:57 24.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.147:
- Ausgaben (hauptsächlich im Netzwerkcode) zusammen mit ehenkes wesentlich verbessert. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:31:38 24.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.148 - Rev: 988"
- Ausgabe-Fehler in tcp.c behoben |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:22:39 25.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.149 - Rev: 989"
Netzwerk-Ausgaben weiter verfeinert, dass man IPs, MACs, TCP flags klar erkennt, bei connections nur noch die ID anstelle der längeren und bedeutungslosen Adresse. Man kann nun auch Empfang und Senden von Paketen besser erkennen.
Dank an MrX für die Unterstützung bei der Einleitung der Umgestaltung der Ausgabe!
Man erkennt nun auch merkwürdige Adressierungen klar, z.B. den nicht funktionierenden DHCP Ablauf in qemu oder wenn Nachzügler-Pakete an offenbar zu rasch (ohne time_wait) gelöschte Verbindungen geschickt werden. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:26:26 25.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:54:25 25.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.150 - Rev: 990"
SEQ und ACK Nummern in Host-Format umgewandelt zum Speichern, Rechnen und als Parameter
Anmerkung:
qemu version, bitte router MAC in network.h anpassen an eigene Daten. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:56:11 25.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
13:05:39 25.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.151:
- IP_t als Typ für IPs geschaffen (union, Zugriff auf Integer-Repräsentation mit .iIP, auf die uint8t[4]-repräsentation mit .IP). (Fukanos Tipp).
- USB-Ausgabe gekürzt
- Bugfix in Floppy-Motorsteuerung: Motor wird wieder ausgestellt, nachdem ein Screenshot erstellt wurde
- Heap besser mit Mutexen geschützt
- F12 als Alias für PrintScreen bei Screenshots (-> Bessere Kompatibilität mit Emulatoren)
- Hack für Qemu verbessert: MAC des Qemu-Gateways statt des externen Gateways angegeben (Ehenkes Tipp) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:08:03 25.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.152 - Rev: 992"
- qemu IP/MAC statisch in arp cache hinzugefügt
- Korrektur in ethernet.c für _NETWORK_DIAGNOSIS_
- Ausgabe bei arp_sendRequest für gesuchte IP
- DHCP_Discover gestrichen bei qemu (wirklich?), dafür 10.0.2.15 eingestellt in network.h
- beep off |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 13:12:57 26.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:59:16 25.06.2011 Titel: |
|
Zitieren |
Tipp für Testumgebung qemu (von taljeth):
-net dump,file=xyz.pcap (hinterher mit wireshark öffnen)
aktueller qemu batch:
| Code: | | qemu.exe -fda FloppyImage.img -soundhw pcspk -net nic,model=rtl8139,addr=1A,macaddr=00:12:12:12:12:12 -net tap,ifname=TAP2 -localtime -net user -net dump,file=netdump.pcap
| |
| Code: | | qemu.exe -fda FloppyImage.img -soundhw pcspk -net nic,model=rtl8139,addr=1A,macaddr=00:12:12:12:12:12 -net tap,ifname=TAP2 -localtime -net user -net dump,file=netdump.pcap
| |
| Code: | | qemu.exe -fda FloppyImage.img -soundhw pcspk -net nic,model=rtl8139,addr=1A,macaddr=00:12:12:12:12:12 -net tap,ifname=TAP2 -localtime -net user -net dump,file=netdump.pcap
| |
Eigene Erfahrungen: Bridge TAP/LAN macht wenig Sinn, gibt Probleme mit -net user. Ohne -net user geht es nicht, dann bleibt alles stecken nach dem ersten Senden, keine Antwort an PrettyOS. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:34:34 26.06.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:00:59 26.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.153 - Rev: 993"
- struct zur Speicherung von Daten während des Empfangs über die verschiedenen Protokolle hinweg eingebaut (bisher gesammelt: senderMAC, senderIP).
- ACHTUNG: Änderung in network.h
Mit Qemu wurde bisher kein vollständiges DHCP erreicht, was selbst bei Hardware ohne Probleme verlief.
EDIT: diese version macht auch mit Test-PC Probleme. Ursache wird ermittelt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:21:33 26.06.2011, insgesamt 7-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:35:05 26.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.154 - Rev: 994"
- DHCP Request wieder auf BROADCAST Flag umgerüstet (nur damit läuft der Test-PC).
Committed wurde die Qemu-Version. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:10:29 26.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.154 - Rev: 995"
Wir verzichten nun in Qemu auf das DHCP Discover (network.c). Damit erhalten wir von lästigen DHCP-Paketen freie und wirklich interessante Wireshark-Protokolle (pcap), die man direkt mit wireshark aus dem Internet als Vergleich zu eigenen Versuchen öffnen kann.
Hier ein Beispiel mit strg+w (Handshake mit Homepage) und strg+x (Daten laden, Verbindung ordnungsgemäß schließen). Hier wirkt vor allem der Host zusätzlich mit, so dass wir davon lernen können, wie man es richtig macht.
http://www.henkessoft.de/OS_Dev/wireshark_captions/rev.995_netdump.pcap
Es kam letzt die Frage auf, ob 00-12-12-12-12-12 eine gültige MAC-Adresse ist (The first 3 byte of each MAC address are assigned to a specific vendor.). Sie ist es in der Tat:
http://www.base64online.com/mac_address.php?mac=00%3A12%3A12
Mac address: 00:12:12 Vendor: Plus PLUS Corporation |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 13:16:43 26.06.2011, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:59:47 26.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.155:
- Floppytreiber: Dump-Funktion implementiert, Configure-Kommando genutzt, IRQ-Timeout bei Calibrate gesenkt, Reset gemäß Spezifikation implementiert.
- Bugfix: BL2 übergibt korrekte mmap-Länge an Kernel -> Keine Reboot-Probleme mehr.
- Code angepasst, sodass keine Compilerfehler beim kompilieren mit -O2 oder -O3 kommen.
- DHCP: Redundanten Code in Funktion ausgelagert.
- Kleinigkeiten |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:16:33 26.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.156:
- Netzwerk-API implementiert -> Userprogramme im Netzwerk mit TCP sind jetzt möglich
- starwars.ELF als erstes Netzwerk-Userprogramm hinzugefügt |
Zuletzt bearbeitet von Erhard Henkes am 23:58:13 26.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:53:38 26.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.157 - Rev: 998"
- Fehler (Parameterreihenfolge) berichtigt in tcp_usend
- user program "browser.elf" beispielhaft erstellt (Zugriff auf Homepage ehenkes), um tcp_usend (kernel) aus dem user-land mittels syscall zu testen. Funktioniert nun prächtig! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:44:54 27.06.2011 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:14:20 28.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.159 - Rev: 1000" und
version = "0.0.2.160 - Rev: 1001"
Weiterentwicklung bei tcp.h/c gemäßt rfc 793.
Problem: SEQs und ACKs beim Datentausch auf auf FIN offenbar noch falsch.
Letzte korrekte Rev: 999 |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:01:25 28.06.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:42:49 28.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.161 - Rev: 1002"
Problem bei tcp.c:
Mischung aus Rev. 1001 und rollback zu Rev. 999. Nun kann man systematisch den Logikfehler im Ablauf suchen.
Ein Fehler war die Verwechslung zwischen length und tcpDataLength = -4 /* frame ? */ + length - (tcp->dataOffset << 2);
Die -4 wird bis jetzt nicht verstanden!!!
Die passive open Seite läuft leider nicht ok (Test-PC, strg+b, telnet: open geht, send blabla <--- ACK-Problem) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:15:49 28.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.162 - Rev: 1003"
Wesentliche Fehler beseitigt in tcp.c:
- kein Erhöhen der SND.NXT beim Empfang bei ESTABLISHED (die +1 gilt nur für den 3-way-handshake)
- dafür Erhöhen der SND.NXT beim eigenen Senden ^^
Unklar nach wie vor: | C/C++ Code: | | uint32_t tcpDataLength = -4 /* frame ? */ + length - (tcp->dataOffset << 2); | |
| C/C++ Code: | | uint32_t tcpDataLength = -4 /* frame ? */ + length - (tcp->dataOffset << 2); | |
| C/C++ Code: | | uint32_t tcpDataLength = -4 /* frame ? */ + length - (tcp->dataOffset << 2); | |
Problem: passive open noch nicht in Ordnung! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:16:14 28.06.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:54:37 28.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.163 - Rev: 1004"
Nun gelingt auch passive open mit anschließendem Datentausch:
Hierbei Test-PC verwenden, dafür #define QEMU_HACK auskommentieren.
Für telnet (PrettyOS als Server) unbedingt #define _NETWORK_DATA_ aktivieren, damit man die ankommenden Daten sieht. Hier müsste jemand ein telnet-Server-Programm schreiben im user-land von PrettyOS. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:03:39 28.06.2011 Titel: |
|
Zitieren |
Version 0.0.2.164:
- Funktion zum verschieben von Elementen zwischen Ringen implementiert: Scheduler verursacht weniger Speicherallokationen/Deallokationen
- Code aufgeräumt, Änderung an dummy.c reverted.
- rtl8139_eeprom.c/h gelöscht, da kein konkreter Anwendungszweck vorhanden (wurde ohne klaren Zweck mit Rev. 708 von bheide hinzugefügt) |
Zuletzt bearbeitet von Erhard Henkes am 23:58:41 28.06.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:56:12 28.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.165 - Rev: 1006"
static bool IsSegmentAcceptable (tcpPacket_t* tcp, tcpConnection_t* connection, uint16_t tcpDatalength) hinzugefügt und im TCP-Datenempfang eingesetzt, um eingehende Pakete zu prüfen.
beep ausgeschaltet |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:19:11 30.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.166 - Rev: 1007" (??)
Codevereinfachungen in tcp.c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:20:15 30.06.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:18:12 30.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.167 - Rev: 1007"
SND.WND, RCV.WND. SEG.WND verwendet.
Aktuell:
Vorgabe:
const uint16_t STARTWINDOWS = 8192; // Wert des Empfangspuffers
Reduktion des Empfangspuffers nach Empfang (vor tcp_send):
connection->tcb.SND.WND -= tcpDataLength;
connection->tcb.SEG.WND = connection->tcb.SND.WND;
Wiederherstellung des Empfangspuffers (mach tcp_send):
connection->tcb.SND.WND = STARTWINDOWS; // Simuliert Weitergabe der Daten an user-App, z.B. unseren Browser. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:21:03 30.06.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:50:38 30.06.2011 Titel: |
|
Zitieren |
version = "0.0.2.168 - Rev: 1008"
TCP: kleine Verbesserungen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:18:13 01.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.169 - Rev: 1009"
Funktion tcp_receive(...) wurde intern komplett umgebaut. Die erste Ordnungspriorität haben nun die Zustände (states) und nicht mehr die Flags.
Damit lässt sich das Modul besser mit den Plänen in http://www.medianet.kent.edu/techreports/TR2005-07-22-tcp-EFSM.pdf vergleichen.
Tests: browser , starwars (beides active open) und telnet-server (passive open, zur Zeit nur mit Hardware testbar) gehen noch. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:56:12 01.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:02:56 01.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.170 - Rev: 1010"
Verbesserungen in tcp.c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:33:57 02.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.171 - Rev: 1011"
Verbesserungen tcp.c und network.h (nun kann einfacher zwischen Qemu und Hardware umgestellt werden)
Anmerkungen :
Will man Qemu als telnet-Server verwenden: _NETWORK_DATA_ aktivieren in os.h, damit die Daten angezeigt werden (vielleicht hat dies auch noch einen Seiteneffekt).
Mit Qemu/TAP klappt es leider noch nicht korrekt. Es bleibt beim SYN (telnet) - SYN,ACK (PrettyOS) hängen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:56:58 02.07.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:59:30 02.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.172 - Rev: 1012"
Farbschemata weiter angepasst, z.B. textColor(WHITE) durch textColor(TEXT) usw. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:13:52 02.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.173 - Rev: 1013"
#define _TCP_NETWORK_DATA_ geschaffen. Damit klappt dann auch der telnet-Server Hardwaretest. Offensichtlich ein Zeitproblem, bei Hardware nicht erstaunlich. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:34:41 02.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.174 - Rev: 1014"
Einige Fehler bei passive open in tcp.c behoben.
tcp_data_Längenberechnung noch falsch. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:05:57 02.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.175 - Rev: 1015"
lastPacket erweitert, um die verbleibenden Datenlängen auf den einzelnen Stufen zu ermitteln
Kette bei uns:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | 1 2 3 4 5 6 7 8 9 10 11 12 | EthernetRecv(buffer->adapter, (ethernet_t*)buffer->data, buffer->length); // network.c
EthernetRecv(network_adapter_t* adapter, ethernet_t* eth, uint32_t length){...} // ethernet.c
if ((eth->type_len[0] == 0x08) && (eth->type_len[1] == 0x00)) // IPv4 // ethernet.c
{
ipv4_received(adapter, (void*)(eth+1), length-sizeof(ethernet_t));
}
ipv4_received(struct network_adapter* adapter, ipv4Packet_t* packet, uint32_t length) // ipv4.c
tcp_receive(adapter, (void*)(packet+1), packet->sourceIP, length-sizeof(ipv4Packet_t)); // ipv4.c
uint32_t tcpDataLength = -4 /* CRC ? */ + length - (tcp->dataOffset << 2); // tcp.c
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | EthernetRecv(buffer->adapter, (ethernet_t*)buffer->data, buffer->length); // network.c
EthernetRecv(network_adapter_t* adapter, ethernet_t* eth, uint32_t length){...} // ethernet.c
if ((eth->type_len[0] == 0x08) && (eth->type_len[1] == 0x00)) // IPv4 // ethernet.c
{
ipv4_received(adapter, (void*)(eth+1), length-sizeof(ethernet_t));
}
ipv4_received(struct network_adapter* adapter, ipv4Packet_t* packet, uint32_t length) // ipv4.c
tcp_receive(adapter, (void*)(packet+1), packet->sourceIP, length-sizeof(ipv4Packet_t)); // ipv4.c
uint32_t tcpDataLength = -4 /* CRC ? */ + length - (tcp->dataOffset << 2); // tcp.c
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | EthernetRecv(buffer->adapter, (ethernet_t*)buffer->data, buffer->length); // network.c
EthernetRecv(network_adapter_t* adapter, ethernet_t* eth, uint32_t length){...} // ethernet.c
if ((eth->type_len[0] == 0x08) && (eth->type_len[1] == 0x00)) // IPv4 // ethernet.c
{
ipv4_received(adapter, (void*)(eth+1), length-sizeof(ethernet_t));
}
ipv4_received(struct network_adapter* adapter, ipv4Packet_t* packet, uint32_t length) // ipv4.c
tcp_receive(adapter, (void*)(packet+1), packet->sourceIP, length-sizeof(ipv4Packet_t)); // ipv4.c
uint32_t tcpDataLength = -4 /* CRC ? */ + length - (tcp->dataOffset << 2); // tcp.c
| |
Die -4 könnte die CRC sein, wenn diese im Paket noch dabei ist.
TODO: das ganze verbleibende TCP-Paket zeigen in PrettyOS (in wireshark sieht man hinter den tcp-Daten nichts) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:12:59 02.07.2011, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:56:29 02.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.176 - Rev: 1016" (in ckernel.c zu hoch gedreht)
Analyse des TCP Daten Pakets, dort hinten hängt noch ggf. PAD und 4 bytes CRC
TODO: CRC und PAD müssen korrekt behandelt werden!
Tests mit Cuervo (bei ihm klappts in qemu ohne TAP):
Cuervo:
mit pcnet:| Code: | send 123456: 31 32 33 34 35 36 0D 0A
send 12345: 31 32 33 34 35 0D 0A | |
| Code: | send 123456: 31 32 33 34 35 36 0D 0A
send 12345: 31 32 33 34 35 0D 0A | |
| Code: | send 123456: 31 32 33 34 35 36 0D 0A
send 12345: 31 32 33 34 35 0D 0A | |
mit rtl8139:| Code: | | send 1: 31 0D 0A 00 00 00 16 FC 7F A0 | |
| Code: | | send 1: 31 0D 0A 00 00 00 16 FC 7F A0 | |
| Code: | | send 1: 31 0D 0A 00 00 00 16 FC 7F A0 | |
also mehrere PADs möglich.
| Zitat: | | Das PAD-Feld wird verwendet, um den Ethernet-Frame auf die erforderliche Minimalgröße von 64 Byte zu bringen. Das ist bei alten Übertragungsverfahren wichtig, um Kollisionen in der sogenannten Collision-Domain sicher zu erkennen. Präambel und SFD (8 Bytes) werden bei der erforderlichen Mindestlänge des Frames nicht mitgezählt, wohl aber ein VLAN-Tag. Ein PAD-Feld wird somit erforderlich, wenn als Nutzdaten weniger als 46 bzw. 42 Bytes (ohne bzw. mit 802.1Q-VLAN-Tag) zu übertragen sind. Das in Type angegebene Protokoll muss dafür sorgen, dass diese als Pad angefügten Bytes (auch „Padding Bytes“ genannt) nicht interpretiert werden, wofür es üblicherweise eine eigene Nutzdaten-Längenangabe bereithält. |
http://upload.wikimedia.org/wikipedia/de/a/aa/Ethernetpaket.svg
testPC ehenkes:
| Code: | send 123456: 31 32 33 34 35 36 .. .. .. ..
send 12345: 31 32 33 34 35 00 .. .. .. .. | |
| Code: | send 123456: 31 32 33 34 35 36 .. .. .. ..
send 12345: 31 32 33 34 35 00 .. .. .. .. | |
| Code: | send 123456: 31 32 33 34 35 36 .. .. .. ..
send 12345: 31 32 33 34 35 00 .. .. .. .. | |
Cuervo: mit pcnet kommt die CRC nicht, mit rtl8139 schon (in qemu)
Die Frage ist nun: wie analysiert man das ganz vorne in ethernet.c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:56:38 02.07.2011, insgesamt 8-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:17:19 02.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.177 - Rev: 1017"
tcp.c: Test auf PADs im Ethernet-Paket zur Korrektur von tcpDataLength
Erläuterung: bei Ethernet-Paketen < 64 byte (ohne VLAN tag gerechnet, aber mit CRC) wird mit Nullen aufgefüllt. Wir setzen uns genau auf das letzte mit tcpDataLength ermittelte Byte, dann klappern wir die Bytes ab. Bei 0x00 (padding) wird tcpDataLength jeweils um 1 verkürzt.
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | uint32_t tcpDataLength = tcpDataLength = length - (tcp->dataOffset << 2) - 4; /* FCS */;
uint8_t PadCount = 0;
for (uint16_t i=tcpDataLength-1; i>=0; i--)
{
if ( (*(uint8_t*)((uintptr_t)tcp + (tcp->dataOffset << 2) + i) ) == 0x00 )
{
PadCount++;
}
else
{
break;
}
}
tcpDataLength -= PadCount; | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | uint32_t tcpDataLength = tcpDataLength = length - (tcp->dataOffset << 2) - 4; /* FCS */;
uint8_t PadCount = 0;
for (uint16_t i=tcpDataLength-1; i>=0; i--)
{
if ( (*(uint8_t*)((uintptr_t)tcp + (tcp->dataOffset << 2) + i) ) == 0x00 )
{
PadCount++;
}
else
{
break;
}
}
tcpDataLength -= PadCount; | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | uint32_t tcpDataLength = tcpDataLength = length - (tcp->dataOffset << 2) - 4; /* FCS */;
uint8_t PadCount = 0;
for (uint16_t i=tcpDataLength-1; i>=0; i--)
{
if ( (*(uint8_t*)((uintptr_t)tcp + (tcp->dataOffset << 2) + i) ) == 0x00 )
{
PadCount++;
}
else
{
break;
}
}
tcpDataLength -= PadCount; | |
Damit erzielen wir gültige ACKs.
version = "0.0.2.177 - Rev: 1018"
ohne lästiger Stop |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:59:33 02.07.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:36:21 02.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.178 - Rev: 1019"
Farbkorrektur bei ARP Cache: ... (thx to Cuervo) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:25:07 03.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.178 - Rev: 1020"
irc.c hinzugefügt, experimentalstatus, aber es gelang damit der eintritt in den euirc chat #PrettyOS
Meilenstein IRC! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:26:42 03.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:42:38 03.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.179 - Rev: 1021"
| C/C++ Code: | | connection->tcb.SEG.SEQ = connection->tcb.SND.NXT; | |
| C/C++ Code: | | connection->tcb.SEG.SEQ = connection->tcb.SND.NXT; | |
| C/C++ Code: | | connection->tcb.SEG.SEQ = connection->tcb.SND.NXT; | |
ergänzt in tcp.c bei tcp_send(...) für ESTABLISHED |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:20:21 03.07.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:49:33 03.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.179 - Rev: 1022"
irc.c weiter entwickelt, man kann texte bis max. 7 zeichen (gets oder event Problem?) eingeben. Diese werden in den channel #PrettyOS gesendet.
Problem:
<Pretty00001>1234567 sieben zeichen gehen
bei 12345678 (Eingabe) bleibt das User-Programm hängen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:56:51 03.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:54:36 04.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.180 - Rev: 1023"
#define MAX_EVENTS 2000 <--- damit der IRC Client funktioniert (ist nun auf max. 667 Zeichen beschränkt, da drei Events pro Zeichen: EVENT_KEY_DOWN, EVENT_KEY_UP und EVENT_TEXT_ENTERED)
Nicht perfekt, aber eine Zwischenlösung. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:56:49 04.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:15:24 04.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.181 - Rev: 1024"
list und ring mit ASSERT gesichert (list.c), damit fehlerhafte Parameter sichtbar werden. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:17:40 04.07.2011 Titel: |
|
Zitieren |
Version 0.0.2.182:
- PCI: pci_deviceSentInterrupt implementiert, PCI-Bars 2-6 nur ausgelesen, wenn headerType 0
- listHead_t in list_t umbenannt
- CRC nun im RTL8139-Treiber aus empfangenen Paketen entfernt.
- Dummy.c: Schon wieder reverted. Das ist keine Spielwiese! Zum testen einfach eine neue .c-Datei in other_userprogs anlegen. Das funktioniert viel besser, weil die dann automatisch übersetzt und auf die Floppy gepackt wird.
- fdir-Anzeige überarbeitet, Code verständlich gemacht
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:24:35 05.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.183 - Rev: 1026" (in ckernel.c: versehentlich 1025)
tcp: in/out Buffer angefangen
arp: nicht table, sondern cache (führt zu cache->table, besser als table->table)
user-prg:
irc.elf etwas weiter entwickelt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:04:16 06.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.184 - Rev: 1027"
tcpIn_t, tcpOut_t, ... hinzu gefügt.
Problem: tcp.c, Zeile 432 ff.: Fill in-buffer list arbeitet zu langsam.
Aktiviert man memcpy(In->data, ...), dann bleibt der starwars-Empfang in Qemu hängen (Test auf einen hohen Dateninput). Kann man event.buffer und In->data (dauerhaft auf dem Heap) kombinieren und das doppelte memcpy sparen?
Vielleicht benötigen wir auch ein schnelleres memcpy in Assembler.
beep weg (sehr lästig beim Testen)
Code läst sich bis -O2 compilieren, dann gehen auch beide memcpy, allerdings nicht mit -O3, dort kommt ein Fehler bei der checksum-Routine. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:20:12 06.07.2011, insgesamt 5-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:21:03 06.07.2011 Titel: |
|
Zitieren |
Lösungsvorschlag:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | 1 2 3 4 5 6 7 8 9 10 11 12 | uint16_t udptcpCalculateChecksum(void* p, uint16_t length, IP_t srcIP, IP_t destIP, uint16_t protocol)
{
updtcpPseudoHeader_t pseudo = { srcIP, destIP, 0, protocol, htons(length) };
uint32_t pseudoHeaderChecksum = 0;
for(uint32_t i = 0; i < sizeof(updtcpPseudoHeader_t); i+=2)
{
pseudoHeaderChecksum += htons(((uint16_t*)&pseudo)[i]);
}
return internetChecksum(p, length, pseudoHeaderChecksum);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | uint16_t udptcpCalculateChecksum(void* p, uint16_t length, IP_t srcIP, IP_t destIP, uint16_t protocol)
{
updtcpPseudoHeader_t pseudo = { srcIP, destIP, 0, protocol, htons(length) };
uint32_t pseudoHeaderChecksum = 0;
for(uint32_t i = 0; i < sizeof(updtcpPseudoHeader_t); i+=2)
{
pseudoHeaderChecksum += htons(((uint16_t*)&pseudo)[i]);
}
return internetChecksum(p, length, pseudoHeaderChecksum);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 | uint16_t udptcpCalculateChecksum(void* p, uint16_t length, IP_t srcIP, IP_t destIP, uint16_t protocol)
{
updtcpPseudoHeader_t pseudo = { srcIP, destIP, 0, protocol, htons(length) };
uint32_t pseudoHeaderChecksum = 0;
for(uint32_t i = 0; i < sizeof(updtcpPseudoHeader_t); i+=2)
{
pseudoHeaderChecksum += htons(((uint16_t*)&pseudo)[i]);
}
return internetChecksum(p, length, pseudoHeaderChecksum);
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
14:14:50 06.07.2011 Titel: |
|
Zitieren |
Den O3-Fehler kenne ich. Ist afaik ein Bug in GCC 4.4.0, der in gcc 4.4.4? gefixt wurde. Da es aber keinen Grund gibt, mit -O3 zu kompilieren, denke ich, dass ein Workaround nicht nötig ist. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:50:20 06.07.2011 Titel: |
|
Zitieren |
Version 0.0.2.185:
- IRC-Programm verbessert: Joinen mit Strg+J, Senden an #PrettyOS mit Strg+P
- Padding wird nun in ipv4.c entfernt und nicht mehr (fehlerhaft) in tcp.c.
- Paket- und Headerlängen in tcp.c und ipv4.c korrekt verwendet. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:57:01 06.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.186 - Rev: 1029"
@MrX: hab deinen Vorschlag umgesetzt, aber es besteht ein Zugriffsproblem von user nach kernel heap.
Experimenteller Zwischenstatus: Übergabe eines Events in tcp.c mit buffer als Zeiger. Ist Array notwendig? Wenn ja, welche Größe?
Problem: Daten stecken im Kernel Heap. Wie greift man darauf von user-land aus zu? (Erfolgloser Versuch in browser.c, irc und starwars noch unverändert, wieso gibt das keinen #PF?)
MrX: Idee, wie man das auflösen kann?
memcpy durch etwas schnellere Assembler-Version ersetzt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:59:49 06.07.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:59:46 07.07.2011 Titel: |
|
Zitieren |
Anmerkung aus #lost: wir sollten mehr Unterordner einziehen unter \kernel. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:48:12 07.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.187 - Rev: 1030"
- TCP-Datentransfer nun korrekt von kernel nach user
- TCP-Datentransfer beschleunigt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:35:16 07.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.188 - Rev: 1031"
- kleine Änderungen in tcp.c und types.h (connectionID)
- bei receive FIN,ACK (geht bei browser.c) werden testweise die Pakete in der IN-Queue angezeigt: Seq, len, data (funktioniert!) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:30:28 07.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.188 - Rev: 1032"
- irc angepasst, damit ein zufälliger Name (Pretty+Zufallszahl) gebildet wird.
| Zitat: | - Pretty14309 joined
<Pretty14309>hi
<ehenkes>test
- Pretty14309 quit (Client exited)
- Pretty17705 joined
<Pretty17705>schon wieder da ^^
- Pretty17705 quit (Connection reset by peer)
- Pretty19370 joined
...
- Pretty19370 quit (Connection reset by peer)
| |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:39:23 07.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:00:22 08.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.188 - Rev: 1033"
Hinweis von Kollegen aus #lost auf die Pflicht, sich mit QUIT zu entfernen.
“A client session is ended with a quit message.”
Dem kommen wir gerne nach. Kostet aber schon wieder zwei Zeilen.
| C/C++ Code: | case KEY_ESC:
{
char* msgQuit = "QUIT\r\n";
tcp_send(connection, msgQuit, strlen(msgQuit));
tcp_close(connection);
return(0);
} | |
| C/C++ Code: | case KEY_ESC:
{
char* msgQuit = "QUIT\r\n";
tcp_send(connection, msgQuit, strlen(msgQuit));
tcp_close(connection);
return(0);
} | |
| C/C++ Code: | case KEY_ESC:
{
char* msgQuit = "QUIT\r\n";
tcp_send(connection, msgQuit, strlen(msgQuit));
tcp_close(connection);
return(0);
} | |
| Zitat: | - Pretty31812 joined
<Pretty31812>test auf quit
- Pretty31812 quit (Life is too short...)
- Pretty28547 joined
<Pretty28547>nochmal jetzt mit ESC weg
- Pretty28547 quit (Life is too short...)
| |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:01:48 08.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:05:25 08.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.189 - Rev: 1034"
- memcpy, memset nun schneller (MrX)
- irc.c (Nummernausgabe weg) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:26:27 08.07.2011 Titel: |
|
Zitieren |
Version 0.0.2.190:
- console.c: Bugfix: console_clear ändert Textfarbe nicht mehr.
- memshow: Bugfix bei count%16!=0: Darstellung korrigiert.
- memsetl durch memset ersetzt (Performance-Hack nicht mehr nötig)
- optimiertes memset/memcpy auch im Userspace, memsetw ebenfalls optimiert
- Shell:
-- Bugfix: Eingabezeile nun korrekt gelöscht.
-- Bugfix: Cursorposition wird zurückgesetzt, wenn Eintrag mit Pfeiltaste nach unten gelöscht wird.
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:42:42 08.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.191 - Rev: 1036"
Steuerungsmechanismus window mittels Feedback aus event_issue testweise installiert, um Erfahrung zu bekommen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:22:15 08.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.192 - Rev: 1037"
Gesamtgröße der TCP-Daten in der Event-Queue bestimmt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:30:14 09.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.193 - Rev: 1038"
Versuchsweise Steuerung des sliding window mit der Gesamtmenge an TCP-Data (bytes) in der Event Queue des task. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 09:20:50 09.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:38:25 09.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.194 - Rev: 1039"
tcp ausgaben stark vereinfacht |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:33:31 09.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.195 - Rev: 1040"
Fehler in TCP korrigiert (z.B. window Steuerung) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:10:55 10.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.196 - Rev: 1041"
Eigenes Ping, also ICMP_echoRequest, eingebaut, und Empfang auf den ICMP_echoReply erweitert. leider funktioniert das auf der VM Qemu bisher noch nicht. Daher sollte man zunächst auf Hardware testen.
Hier das Ergebnis auf strg+p:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | 1 2 3 4 5 6 7 8 9 10 11 12 13 | case 'p':
{
IP_t destIP; // www.henkessoft.de
destIP.IP[0] = 82; destIP.IP[1] = 100;
destIP.IP[2] = 220; destIP.IP[3] = 68;
network_adapter_t* adapter = network_getFirstAdapter();
if (adapter)
{
ICMP_echoRequest(adapter, destIP);
}
break;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | case 'p':
{
IP_t destIP; // www.henkessoft.de
destIP.IP[0] = 82; destIP.IP[1] = 100;
destIP.IP[2] = 220; destIP.IP[3] = 68;
network_adapter_t* adapter = network_getFirstAdapter();
if (adapter)
{
ICMP_echoRequest(adapter, destIP);
}
break;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | case 'p':
{
IP_t destIP; // www.henkessoft.de
destIP.IP[0] = 82; destIP.IP[1] = 100;
destIP.IP[2] = 220; destIP.IP[3] = 68;
network_adapter_t* adapter = network_getFirstAdapter();
if (adapter)
{
ICMP_echoRequest(adapter, destIP);
}
break;
} | |
Folgendes tauscht dann als Analyse des Echos in PrettyOS wieder auf:
| Code: | ICMP_echoReply: ID: AFFE seq: 1
PrettyOS ist das Betriebssystem der Projektgru
ppe "OS-Development" im deutschsprachigen C++-Forum ...
| |
| Code: | ICMP_echoReply: ID: AFFE seq: 1
PrettyOS ist das Betriebssystem der Projektgru
ppe "OS-Development" im deutschsprachigen C++-Forum ...
| |
| Code: | ICMP_echoReply: ID: AFFE seq: 1
PrettyOS ist das Betriebssystem der Projektgru
ppe "OS-Development" im deutschsprachigen C++-Forum ...
| |
(Anmerkung: string wird noch nicht korrekt ausgelesen. Zeichen danach?)
aus wiki: Das „Daten“-Feld kann jedoch auch dazu missbraucht werden, um Nutzdaten zu übertragen (ICMP-Tunneling). Werbung für PrettyOS und c++.de
hrping hat Cäsars de bello Gallico als Datensatz.
Macht man dies mit dem qemu hack, so taucht beim Versuch des Erreichens des Host-Subnets eine ICMP Botschaft in wireshark auf, die wir bisher noch nicht analysieren: "destination unreachable".
| Zitat: | 264 27.444422 10.0.2.15 192.168.1.1 ICMP 2187 Echo (ping) request id=0xaffe, seq=1/256, ttl=128
265 27.444593 10.0.2.2 10.0.2.16 ICMP 120 Destination unreachable (Port unreachable) |
ICMP bietet hiermit einen vielleicht guten Weg, um das qemu subnet 10.0.2.x und den Zusammenhang zum Host subnet (hier 192.168.1.x) zu analysieren und qemu so einzurichten, dass wir letztendlich auch unter Windows auf den störenden qemu hack verzichten können.
siehe: http://de.wikipedia.org/wiki/Internet_Control_Message_Protocol |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 02:00:42 10.07.2011, insgesamt 6-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
12:45:30 10.07.2011 Titel: |
|
Zitieren |
Version 0.0.2.197:
- BL1 und BL2: Code aufgeräumt/optimiert, Hotfixes gesichtet und ggf. entfernt.
- memcpy, memset und memsetw weiter verbessert; Zwei Bugs entfernt.
- Weitere Funktionen in Standardlib implementiert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:47:52 10.07.2011 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:30:42 10.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.199 - Rev: 1044"
- Kleine Korrekturen im Netzwerkbereich |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:21:29 11.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.200 - Rev: 1045"
- #defines ... in os.h getestet und Fehler beseitigt (nun können alle geöffnet werden. Code compiliert, aber das Programm ist nicht mehr wirklich lauffähig. )
- icmp.c Zahlen gegen die defines ausgetauscht aus icmp.h
- Ausgaben bei Netzwerk verfeinert (z.B. nur eigenes tcp-window beim Senden)
- tcp-window-Steuerung verbessert
TODO: tcp In-Buffer freigeben nach Weitergabe an die Application |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:29:25 11.07.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:48:02 11.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.200 - Rev: 1046"
starwars:
Bildschirmlöschen eingebaut (vielleicht muss man noch Pakete zusammenfassen) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:34:47 11.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.201 - Rev: 1047"
- NetBIOS hinzugefügt
- tcp Out Buffer versuchsweise verwendet (log-Fkt. eingebaut)
- strg+p pingt jetzt 10.0.2.x (x = 0 ... 254) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:35:20 11.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:02:55 11.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.202 - Rev: 1048"
Fehler korrigiert in tcp.c, der zu #PF führte (malloc ...)
tcp_showOutBuffers(connection,true); <--- testweise in tcp.c, zeile 460 |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:17:40 11.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.203 - Rev: 1049"
Netzwerk: Fehlerbeseitigung, Verfeinerung |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:06:41 11.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.204 - Rev: 1050"
bei tcp_showOutBuffers werden bereits per ACK bestätigte Daten grün und die anderen braun angzeigt.
Idee: Die grün angezeigten Daten können gelöscht werden, weil bereits angekommen und bestätigt. Die braun angezeigten Daten werden nach einer gewissen Zeit erneut gesendet. Hierbei wird keine Sinnfrage gestellt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:37:23 11.07.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:58:10 12.07.2011 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:50:24 12.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.206 - Rev: 1052"
- Verbesserte Version für RTT |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:04:03 12.07.2011 Titel: |
|
Zitieren |
Version 0.0.2.207:
- tcp_findConnection verbessert: Mit tcp_findConnectionListen zusammengeführt, beachtet beim passiven Verbinden die Angabe des Ports
- Angefangen, lastPacket zu entfernen. Nur noch der derzeit nötige Teil ist vorhanden
- Zahlreiche Codestyle-Anpassungen. Bitte Styleguide beachten: Leerzeichen statt Tabs, keine Leerzeichen am Zeilenende. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:29:57 12.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.208 - Rev: 1054"
- RTO wird bestimmt nach RFC 2988 und aufgerundet auf 1000 msec (typische RTT sind ca. 100 ms ins Internet)
- #define SYSTEMFREQUENCY 100 in timer.h (nicht mehr versteckt in ckernel.c) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:35:51 12.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.209 - Rev: 1055"
- retransmission eingefügt (rfc2988)
version = "0.0.2.210 - Rev: 1056"
- Fehler korrigiert bei retransmit (seq.nxt anstelle alte seq wurde in tcp_send geschickt)
version = "0.0.2.211 - Rev: 1057"
- Testwert für RTO in tcp.c entfernt. Jetzt wieder check auf time > RTO. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:15:04 13.07.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:01:07 13.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.212 - Rev: 1058"
Vereinfachungen im Code von tcp.c, z.B. send_ACK(...) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:26:29 13.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.213 - Rev: 1059"
- Fehler in RTO calculation (in letzter Versioin versehentlich eingebaut) wieder behoben |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:09:33 14.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.214 - Rev: 1060"
- Eigenen tcp-Log auf die serielle Schittstelle 1 implementiert, der empfangene und gesendete Pakete mit relativen seq-/ack-Numbers dokumentiert
- Fehler korrigiert (mit Hilfe des serial Logs aufgefallen!)
Einfügen in qemu-Batch: -serial file:serielleSchnittstelle1.txt (nicht com1.txt verwenden. Das wird bereits unsichtbar verwendet, kann also nicht erstellt werden.)
Bsp. mit "browser":
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | 1 2 3 4 5 6 7 8 9 10 11 12 13 | send: SYN seq: 0 seq nxt: 1
recv: SYN ACK seq: 0 rcv nxt: 1 ack: 1
send: ACK seq: 1 seq nxt: 1 ack: 1 SND.UNA: 0
send: ACK seq: 1 seq nxt: 82 ack: 1
recv: ACK PSH seq: 1 rcv nxt: 248 ack: 82 SND.UNA: 82
send: ACK seq: 82 seq nxt: 82 ack: 248
recv: ACK PSH seq: 248 rcv nxt: 755 ack: 82 SND.UNA: 82
send: ACK seq: 82 seq nxt: 82 ack: 755
recv: ACK PSH seq: 248 rcv nxt: 755 ack: 82 SND.UNA: 82
send: ACK seq: 82 seq nxt: 82 ack: 755
send: RST seq: 82 seq nxt: 82
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | send: SYN seq: 0 seq nxt: 1
recv: SYN ACK seq: 0 rcv nxt: 1 ack: 1
send: ACK seq: 1 seq nxt: 1 ack: 1 SND.UNA: 0
send: ACK seq: 1 seq nxt: 82 ack: 1
recv: ACK PSH seq: 1 rcv nxt: 248 ack: 82 SND.UNA: 82
send: ACK seq: 82 seq nxt: 82 ack: 248
recv: ACK PSH seq: 248 rcv nxt: 755 ack: 82 SND.UNA: 82
send: ACK seq: 82 seq nxt: 82 ack: 755
recv: ACK PSH seq: 248 rcv nxt: 755 ack: 82 SND.UNA: 82
send: ACK seq: 82 seq nxt: 82 ack: 755
send: RST seq: 82 seq nxt: 82
| |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | send: SYN seq: 0 seq nxt: 1
recv: SYN ACK seq: 0 rcv nxt: 1 ack: 1
send: ACK seq: 1 seq nxt: 1 ack: 1 SND.UNA: 0
send: ACK seq: 1 seq nxt: 82 ack: 1
recv: ACK PSH seq: 1 rcv nxt: 248 ack: 82 SND.UNA: 82
send: ACK seq: 82 seq nxt: 82 ack: 248
recv: ACK PSH seq: 248 rcv nxt: 755 ack: 82 SND.UNA: 82
send: ACK seq: 82 seq nxt: 82 ack: 755
recv: ACK PSH seq: 248 rcv nxt: 755 ack: 82 SND.UNA: 82
send: ACK seq: 82 seq nxt: 82 ack: 755
send: RST seq: 82 seq nxt: 82
| |
Reihenfolge der Pakete stimmt so wie oben (dort manuell sortiert) in der Ausgabe noch nicht, liegt noch am Sourcecode, da wir dort noch sofort senden, den serial_log gebe ich erst am Ende der tcp_receive aus. Sollte noch sinnvoll umgebaut werden. Die Abläufe funktionieren noch nicht komplett RFC793ff. konform. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:35:11 14.07.2011, insgesamt 7-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:15:40 14.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.215 - Rev: 1061"
- tcp structs und abläufe weiter optimiert (Paket-Reihenfolge kommt nun richtig) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:53:31 14.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:57:50 14.07.2011 Titel: |
|
Zitieren |
Version 0.0.2.216:
- Unterstützung für PE-Dateien implementiert
- VM86-Tasks haben nun ein eigenes PD -> Mehrere VM86-Tasks mit gleicher virtuellen Adresse (0x100) sind nun möglich
- waitForEvent implementiert, Als syscall eingeführt, in Userprogrammen genutzt
- RTO-Formel korrigiert (Klammern falsch gesetzt)
- Kleinigkeiten. U.a. Include-Gruppierung in ckernel.c überarbeitet |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
09:36:45 15.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.217 - Rev: 1063"
Kleine Korrekturen in tcp.c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:06:37 15.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.218 - Rev: 1064"
| C/C++ Code: | //serial.h:
static inline void serial_logUINT(uint8_t com, uint32_t num)
static inline void serial_logINT (uint8_t com, int32_t num) | |
| C/C++ Code: | //serial.h:
static inline void serial_logUINT(uint8_t com, uint32_t num)
static inline void serial_logINT (uint8_t com, int32_t num) | |
| C/C++ Code: | //serial.h:
static inline void serial_logUINT(uint8_t com, uint32_t num)
static inline void serial_logINT (uint8_t com, int32_t num) | |
Anwendung in tcp.c (vereinfachter code) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:07:22 15.07.2011 Titel: |
|
Zitieren |
Version 0.0.2.219:
- serial_log verhält sich nun analog zu printf
- Code von network.h/usb_hc.c nach pci.c verlegt
- Bugfix: Memoryleak beim löschen von eventqueues beseitigt
- Bugfix: Freetimetask nimmt nun keine events mehr an
- Verbesserungen am heap (placementMalloc in Funktion ausgelagert, unnötigen code hinter _MALLOC_FREE_ versteckt) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:47:11 15.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.220 - Rev: 1066"
- starwars darstellung optimiert (Folge ESC,[,H als Bildtrenner nach clearScreen übersetzt und RU (bedeutung?) gelöscht)
- region_t nun als packed (spart 2 byte) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:13:48 15.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.220 - Rev: 1067"
- Fehler in starwars.c korrigiert (das RU entstammt der MAC des qemu gateway???) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:44:39 15.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.221 - Rev: 1068"
Weitere Korrekturen in tcp.c (ports nun zufällig zwischen 49152 und 65535) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:28:32 16.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.222 - Rev: 1069"
- Im Heap gespeicherte tcp In/Out-Pakete werden beim Schließen gelöscht (Test: Browser klappt)
- Anmerkung: ge-ackte Pakete in der out-Liste werden nun sofort vollständig gelöscht (nicht erst beim Schließen). In den vorhergehenden Versionen wurde nur das Listenelement gelöscht, ohne die Struct und die Daten zu löschen (üble Fehlerquelle). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:31:08 16.07.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:26:39 16.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.223 - Rev: 1070"
tcp.h/c: msl (maximum segment lifetime) eingebaut in connection->tcb und auf 10 sec gesetzt in createConnection(...) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:28:32 16.07.2011, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:24:34 16.07.2011 Titel: |
|
Zitieren |
Version 0.0.2.224:
- memcpyr geschaffen (optimiert mit rep movsl), genutzt durch memmove. -> memmove optimiert.
- kheap nutzt nun memmove statt for-Schleife
- CPU-Cache in kernel.asm aktiviert (Bits 30 und 29 in CR0 gelöscht)
- todolist enthält nun timer-ähnliche Funktion |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:11:39 16.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.225 - Rev: 1072"
Neue timer-Funktion verwendet im tcp-Prozess. Allerdings sind da noch Fehler im Ablauf im ACTIVE CLOSE Ablauf (qemu, irc). In FIN_WAIT_2 kommt ein ACK PSH und nicht das erwartete FIN. TODO: analysieren. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:27:00 17.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.226 - Rev: 1073"
Duplicate ACK Empfang / Senden in tcp.c versuchsweise ergänzt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:34:18 17.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:54:20 17.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.227 - Rev: 1074"
list_insert(list_t* list, element_t* next, void* data) hinzugefügt
Vorbereitung für den Übertrag vom noch zu schaffenden Out-of-Order Receive In-Buffer zum regulären In-Buffer. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:55:48 17.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:34:03 18.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.228 - Rev: 1075"
tcpRCV_t ergänzt um: uint32_t ACKforDupACK // Speicher für letztes in Serie eingegangenes Paket, wird bei Lücke verwendet. Damit wurde das Dup-ACK Procedere korrigiert, sodass nun das korrekte ACK wiederholt wird. Die Sendung wird aber vom Sender nicht immer zeitnah (oder garnicht?) beachtet.
Gutes Testmodell: starwars.elf, weil von dort massenweise Pakete in korrekter Serie erscheinen sollen, der ideale Testserver für Dup-ACK.
TODO: Sortiervorgang aufbauen bei falscher Eingangsreihenfolge, wenn das, mittels Duplicate ACK angeforderte, fehlende frühere Paket in tcp_receive(...) erscheint oder bei Paketversetzungen durch Überholvorgänge über verschiedene Routen durchs Internet. Liste für Out-of-Order RCV Buffer schaffen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:43:06 18.07.2011, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:44:49 18.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.229 - Rev: 1076"
tcp modul weiter entwickelt: Out-of-Order-Buffer List geschaffen
(Zahlen im serial_log bei ACK auf SYN ACK sind falsch, in wireshark aber ok. Ursache?) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:45:48 18.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:07:13 18.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.230 - Rev: 1077"
Ausgabefehler im serial_log korrigiert. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:44:40 18.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.231 - Rev: 1078"
tcp.c:
Statische Funktion tcp_timeoutDeleteConnection(tcpConnection_t* connection, uint32_t timeMilliseconds) zur Vereinfachung/Kapselung geschaffen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:50:52 19.07.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:43:16 19.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.232 - Rev: 1079"
Fehler in tcp.c behoben. timeouts korrigiert. tcp_prepare_send_FIN gelöscht.
Anzeige: | C/C++ Code: | printf("\nconnection ID %u will be deletetd at %u sec runtime.",
connection->ID, (timeMilliseconds + timer_getMilliseconds()) / 1000); | |
| C/C++ Code: | printf("\nconnection ID %u will be deletetd at %u sec runtime.",
connection->ID, (timeMilliseconds + timer_getMilliseconds()) / 1000); | |
| C/C++ Code: | printf("\nconnection ID %u will be deletetd at %u sec runtime.",
connection->ID, (timeMilliseconds + timer_getMilliseconds()) / 1000); | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:39:52 19.07.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:37:41 19.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.233 - Rev: 1080"
tcp.c: tcp_sendFin(tcpConnection_t* connection)
Bsp.:
| C/C++ Code: | case CLOSE_WAIT:
tcp_sendFin(connection);
connection->TCP_CurrState = LAST_ACK;
tcp_timeoutDeleteConnection(connection, 2*connection->tcb.msl);
break;
| |
| C/C++ Code: | case CLOSE_WAIT:
tcp_sendFin(connection);
connection->TCP_CurrState = LAST_ACK;
tcp_timeoutDeleteConnection(connection, 2*connection->tcb.msl);
break;
| |
| C/C++ Code: | case CLOSE_WAIT:
tcp_sendFin(connection);
connection->TCP_CurrState = LAST_ACK;
tcp_timeoutDeleteConnection(connection, 2*connection->tcb.msl);
break;
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:39:29 19.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:37:22 19.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.234 - Rev: 1081"
Finishing process improved:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | case FIN_WAIT_1:
{
if (tcp->FIN && !tcp->ACK) // FIN
{
tcp_sendFlag = tcp_prepare_send_ACK(connection, tcp, true);
connection->TCP_CurrState = CLOSING;
}
else if (tcp->FIN && tcp->ACK) // FIN ACK
{
tcp_sendFlag = tcp_prepare_send_ACK(connection, tcp, true);
tcp_timeoutDeleteConnection(connection, 2*connection->tcb.msl);
connection->TCP_CurrState = TIME_WAIT;
}
else if (!tcp->SYN && !tcp->FIN && tcp->ACK && (length - 4*tcp->dataOffset == 0)) // ACK
{
connection->TCP_CurrState = FIN_WAIT_2;
}
else if (!tcp->SYN && !tcp->FIN && tcp->ACK && (length - 4*tcp->dataOffset > 0)) // ACK with data
{
tcp_timeoutDeleteConnection(connection, 2*connection->tcb.msl); // if there will not come a FIN at FIN_WAIT_2
connection->TCP_CurrState = FIN_WAIT_2;
}
break;
}
case FIN_WAIT_2:
{
if (tcp->FIN) // FIN
{
tcp_sendFlag = tcp_prepare_send_ACK(connection, tcp, true);
tcp_timeoutDeleteConnection(connection, 2*connection->tcb.msl);
connection->TCP_CurrState = TIME_WAIT;
}
break;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | case FIN_WAIT_1:
{
if (tcp->FIN && !tcp->ACK) // FIN
{
tcp_sendFlag = tcp_prepare_send_ACK(connection, tcp, true);
connection->TCP_CurrState = CLOSING;
}
else if (tcp->FIN && tcp->ACK) // FIN ACK
{
tcp_sendFlag = tcp_prepare_send_ACK(connection, tcp, true);
tcp_timeoutDeleteConnection(connection, 2*connection->tcb.msl);
connection->TCP_CurrState = TIME_WAIT;
}
else if (!tcp->SYN && !tcp->FIN && tcp->ACK && (length - 4*tcp->dataOffset == 0)) // ACK
{
connection->TCP_CurrState = FIN_WAIT_2;
}
else if (!tcp->SYN && !tcp->FIN && tcp->ACK && (length - 4*tcp->dataOffset > 0)) // ACK with data
{
tcp_timeoutDeleteConnection(connection, 2*connection->tcb.msl); // if there will not come a FIN at FIN_WAIT_2
connection->TCP_CurrState = FIN_WAIT_2;
}
break;
}
case FIN_WAIT_2:
{
if (tcp->FIN) // FIN
{
tcp_sendFlag = tcp_prepare_send_ACK(connection, tcp, true);
tcp_timeoutDeleteConnection(connection, 2*connection->tcb.msl);
connection->TCP_CurrState = TIME_WAIT;
}
break;
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | case FIN_WAIT_1:
{
if (tcp->FIN && !tcp->ACK) // FIN
{
tcp_sendFlag = tcp_prepare_send_ACK(connection, tcp, true);
connection->TCP_CurrState = CLOSING;
}
else if (tcp->FIN && tcp->ACK) // FIN ACK
{
tcp_sendFlag = tcp_prepare_send_ACK(connection, tcp, true);
tcp_timeoutDeleteConnection(connection, 2*connection->tcb.msl);
connection->TCP_CurrState = TIME_WAIT;
}
else if (!tcp->SYN && !tcp->FIN && tcp->ACK && (length - 4*tcp->dataOffset == 0)) // ACK
{
connection->TCP_CurrState = FIN_WAIT_2;
}
else if (!tcp->SYN && !tcp->FIN && tcp->ACK && (length - 4*tcp->dataOffset > 0)) // ACK with data
{
tcp_timeoutDeleteConnection(connection, 2*connection->tcb.msl); // if there will not come a FIN at FIN_WAIT_2
connection->TCP_CurrState = FIN_WAIT_2;
}
break;
}
case FIN_WAIT_2:
{
if (tcp->FIN) // FIN
{
tcp_sendFlag = tcp_prepare_send_ACK(connection, tcp, true);
tcp_timeoutDeleteConnection(connection, 2*connection->tcb.msl);
connection->TCP_CurrState = TIME_WAIT;
}
break;
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:38:12 19.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:50:53 19.07.2011 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:12:45 20.07.2011 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:44:19 21.07.2011 Titel: |
|
Zitieren |
Version 0.0.2.237:
- Grafikschnittstelle implementiert, VBE-Treiber entsprechend angepasst
- VBEShell auf aktuellste Text-Shell-Version aktualisiert (Event-Handling u.a.)
- Events optimiert: Daten, die in 4 Bytes passen, werden im data-Pointer selbst gespeichert (spart Speicherallokationen)
- Heap: Schutz gegen überlauf der placement-Area
- Netzwerkcode (ipv4 und arp) vereinfacht und optimiert (Pufferung eingehender Pakete läuft nun über die todolist) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:53:14 21.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.238 - Rev: 1085"
Da irc.elf nicht funktionierte, habe ich die Retransmission aufgrund fehlenden ACKs (rto-Vergleich) deaktiviert. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:47:00 21.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.239 - Rev: 1086"
Zeitausgaben (Laufzeit) inkludiert in output nach COM1 |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:17:41 22.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.240 - Rev: 1087"
tcp.c: in tcp_receive korrigiert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:54:59 22.07.2011 Titel: |
|
Zitieren |
Version 0.0.2.241:
- TCP überarbeitet, Code vereinfacht
- Makefile wird nun mit --jobs ausgeführt (Multithreading) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:59:14 22.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.242 - Rev: 1089"
tcp.c: retransmission due to wrong dup-acks corrected |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:27:51 22.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.243 - Rev: 1090"
tcp.c: tcp_sendReset(tcpConnection_t* connection, tcpPacket_t* tcp, bool ack, uint32_t length) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:50:25 24.07.2011 Titel: |
|
Zitieren |
Version 0.0.2.244:
- Ramdisk nicht mehr an 4 KiB-Grenzen ausgerichtet
- Erstellen und Starten von Tasks getrennt:
-> Race-Condition beim Warten auf VM86-Tasks behoben: Probleme auf bestimmten Systemen mit VBE sollten damit behoben sein
-> Race-Condition beim Erstellen von Tasks mit eigener Konsole behoben: Selten auftretenes Erscheinen von Text in der falschen Konsole sollte damit behoben sein.
- VM86-Monitor überarbeitet
- APM-Code überarbeitet: Läuft nun unter Qemu, Bochs und VBox, nicht aber auf VPC und echter Hardware. Zum Testen Zeile 131 in power_management.c ändern |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
12:14:34 25.07.2011 Titel: |
|
Zitieren |
Version 0.0.2.245:
- Bessere logische Trennung zwischen Tasks, Prozessen und Threads (Vorschlag von kosmick):
-> Task: Allgemeine Containerstruktur für Prozesse und Threads
-> Prozess: Task in eigenen Paging-Context
-> Thread: Task im Context des Erstellers, Abhängig vom Ersteller
- Memory-Übersicht erweitert
- Bugfix: Shell-Prozess wird nicht mehr gestartet, wenn Shell.elf nicht gefunden werden konnte |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:23:14 25.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.246 - Rev: 1093"
DHCP gelingt nun auch unter Emulation mit Qemu.
Foto: http://www.henkessoft.de/OS_Dev/Bilder/DHCP_on_Qemu.PNG
qemu-batch:
| Code: | del serielleSchnittstelle1.txt
qemu.exe -fda G:\OSDev\PrettyOS\trunk\Source\FloppyImage.img -soundhw pcspk -net nic,model=rtl8139 -localtime -net user -net dump,file=netdump.pcap -serial file:serielleSchnittstelle1.txt | |
| Code: | del serielleSchnittstelle1.txt
qemu.exe -fda G:\OSDev\PrettyOS\trunk\Source\FloppyImage.img -soundhw pcspk -net nic,model=rtl8139 -localtime -net user -net dump,file=netdump.pcap -serial file:serielleSchnittstelle1.txt | |
| Code: | del serielleSchnittstelle1.txt
qemu.exe -fda G:\OSDev\PrettyOS\trunk\Source\FloppyImage.img -soundhw pcspk -net nic,model=rtl8139 -localtime -net user -net dump,file=netdump.pcap -serial file:serielleSchnittstelle1.txt | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:09:40 26.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.247 - Rev: 1094"
list.c kleine Korrektur |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:56:26 26.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.248 - Rev: 1095"
list.h/c und ring.h/c getrennt.
ring.h/c wird bisher nur in scheduler.c eingesetzt und wurde von MrX speziell dafür entwickelt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
16:57:37 27.07.2011 Titel: |
|
Zitieren |
Version 0.0.2.249:
- ring.h/c comittet (hat ehenkes vergessen)
- Neuer Interrupt-Code: Mehrfachbelegung von IRQs möglich, Interrupt-Handler mit anderen Prototypen (z.B. für PCI-Geräte oder für CDI) möglich. Benutzung des Interrupt-Status-Bits von PCI erstmal auskommentiert.
-> Es sollten nun mehrere baugleiche Netzwerkkarten zugleich unterstützt werden. Zumindest theoretisch.
- CDI-Implementation deutlich erweitert - Es ist nun möglich, den e1000-CDI-Treiber zu kompilieren und in den Kernel zu linken |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:42:37 28.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.250 - Rev: 1097"
Netzwerkausgaben arp, dhcp, udp hinter debug (os.h) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:29:20 29.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.251 - Rev: 1098"
tcp-Ausgaben hinter debug (os.h: _TCP_DEBUG_)
Screen Photo (PrettyOS emuliert mit qemu. Erfolgreiches DHCP und Ausführung von browser.elf und starwars.elf in eigener jeweils separater Konsole): http://www.henkessoft.de/OS_Dev/Bilder/rev.1098.PNG |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:35:10 29.07.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:35:25 29.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.251 - Rev: 1099"
browser.elf verallgemeinert: Man kann nun eine IP-Adresse (Zahlenwerte) eingeben.
Tipps:
| Code: | 82 100 220 68 goneo.de
65 55 175 254 bing.com
209 85 149 105 google
188 40 141 82 c-plusplus.de | |
| Code: | 82 100 220 68 goneo.de
65 55 175 254 bing.com
209 85 149 105 google
188 40 141 82 c-plusplus.de | |
| Code: | 82 100 220 68 goneo.de
65 55 175 254 bing.com
209 85 149 105 google
188 40 141 82 c-plusplus.de | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:52:25 29.07.2011, insgesamt 3-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:15:49 29.07.2011 Titel: |
|
Zitieren |
Version 0.0.2.252:
- Listen nun doppelt verkettet
- Linkerscript aufgeräumt
- strstr im Userspace implementiert |
|
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
21:23:44 29.07.2011 Titel: |
|
Zitieren |
Rev. 1101; 0.0.2.253:
* Workaround DNS Resolver (hack, proof of concept)
Anmerkung (ehenkes):
- browser.c mit Auflösung von Namen (thx to Cuervo)
- TCP beendet manchmal nicht, wenn TCP_DEBUG nicht eingeschlatet ist |
Zuletzt bearbeitet von Erhard Henkes am 21:37:13 29.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:40:21 29.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.254 - Rev: 1102"
Experimentelle Version:
- zusätzliche Sicherheits-Timeouts angestoßen bei Übergang zu CLOSE_WAIT und zu FIN_WAIT_1 (nicht schön)
- Leider treten nun vermehrt #PF auf, z.B. beim Erfolgen des Timeouts.
- resolve.php unter tools/ (wurde von Cuervo erstellt) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:42:09 29.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:08:28 30.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.255 - Rev: 1103"
version = "0.0.2.256 - Rev: 1104"
tcp.c: stabiler, aber leider immer noch #PF bei tcp_deleteConnection (erfolgt exakt beim timeout)
Foto: http://www.henkessoft.de/OS_Dev/Bilder/rev.1104_PF.PNG
| C/C++ Code: | static void scheduledDeleteConnection(void* data, size_t length)
{
if ( (*(tcpConnection_t**)data) && (deleteProtection != (*(tcpConnection_t**)data)->ID) )
{
tcp_deleteConnection(*(tcpConnection_t**)data);
}
} | |
| C/C++ Code: | static void scheduledDeleteConnection(void* data, size_t length)
{
if ( (*(tcpConnection_t**)data) && (deleteProtection != (*(tcpConnection_t**)data)->ID) )
{
tcp_deleteConnection(*(tcpConnection_t**)data);
}
} | |
| C/C++ Code: | static void scheduledDeleteConnection(void* data, size_t length)
{
if ( (*(tcpConnection_t**)data) && (deleteProtection != (*(tcpConnection_t**)data)->ID) )
{
tcp_deleteConnection(*(tcpConnection_t**)data);
}
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:22:28 30.07.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:36:20 30.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.257 - Rev: 1105"
version = "0.0.2.258 - Rev: 1106"
#PF durch multiple deleteConnection mittels Variable "deleteProtection" endlich besiegt.
Warum sind die Verbindungen bei einer Wiederholung so langsam?
Anmerkung: Nun kommen neue #PF (browser.elf, aber auch vom kernel, nun aber nicht mehr tcp_deleteConnection) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 02:17:17 30.07.2011, insgesamt 4-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:05:08 30.07.2011 Titel: |
|
Zitieren |
Version 0.0.2.259:
- Protection-Hack durch list_find ersetzt
- Code aus browser.c, userlib.c und tcp vereinfacht
- srand jetzt einmal beim Start und anschließend nicht mehr aufgerufen |
|
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
11:43:01 30.07.2011 Titel: |
|
Zitieren |
Rev. 1108 (0.0.2.260):
* Shell makefile und shell.c aktualisiert (helptext)
* DNS Resolver verhübscht |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:18:44 30.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.261 - Rev: 1109"
- srand nur einmal in ckernel.c ist ok
- rand() im Kernel repariert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:35:36 30.07.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:51:48 30.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.262 - Rev: 1110"
Interface zwischen user app und tcp-Modul beim Senden erweitert um sendBuffer, um Datenmengen, die größer MSS bzw. connection->tcb.RCV.WND sind, segmentiert versenden zu können.
TODO: segmentation / buffering / steering data flow |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:29:59 30.07.2011 Titel: |
|
Zitieren |
Version mit sendBuffer zum Testen (Tester: Cuervo, ehenkes):
version = "0.0.2.263 - Rev: 1111" (Fehler)
version = "0.0.2.264 - Rev: 1112" (Fehler: 2. abgeschnittenes Paket kommt nicht an)
version = "0.0.2.265 - Rev: 1113" (funktioniert, man muss nur noch alle Pakete im sendBuffer "flushen" mittels dummy schicken.)
version = "0.0.2.266 - Rev: 1114" ("flush" des sendBuffer erfolgt nun ohne dummy senden.)
Mit dem Programm rt.elf kann man beispielhaft testen (schickt langen lateinischen Text "lorum ipsum").
memshow (util.c) wurde erweitert mit bool alpha, sodass man wahlweise auch Texte zeigen kann (siehe auskommentierten Code in tcp_usend).
PrettyOS ist Server (passive open):
cmd: telnet 127.0.0.1 8080 (client erhält den Text)
qemu-batch:
| Zitat: | del serielleSchnittstelle1.txt
qemu.exe -fda G:\OSDev\PrettyOS\trunk\Source\FloppyImage.img -net nic,model=rtl8139 -redir tcp:5023::23 -redir tcp:8080::80 -localtime -net user -net dump,file=netdump.pcap -serial file:serielleSchnittstelle1.txt | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 02:13:25 31.07.2011, insgesamt 11-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:55:16 31.07.2011 Titel: |
|
Zitieren |
version = "0.0.2.267 - Rev: 1115"
- ESC+h auf serial output umgeleitet (inzwischen zu groß)
Aktuell auf dem Heap nach dem Start:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | ---------------- HEAP REGIONS ----------------
address size number comment
C0000000h 00000008h 1 mutex
C0000008h 00000008h 2 listHead
C0000010h 0000000Ch 3 event_queue
C000001Ch 00000008h 4 mutex
C0000024h 00000008h 5 listHead
C000002Ch 0000000Ch 6 listElement
C0000038h 0000000Ch 7 listElement
C0000044h 00000008h 8 ring
C000004Ch 00000008h 9 ring
C0000054h 00000008h 10 ring-element
C000005Ch 00000008h 11 listHead
C0000064h 00000004h 13 todoList
C0000068h 00000008h 14 listHead
C0000070h 00001CD8h 15 thread-console
C0001D48h 0000000Ch 16 console-name
C0001D54h 00000008h 17 listHead
C0001D5Ch 00000008h 18 mutex
C0001D64h 00000048h 19 task_t
C0001DACh 00001000h 20 task-kernelstack
C0002DACh 0000000Ch 21 listElement
C0002DB8h 0000000Ch 22 listElement
C0002DC4h 00000008h 23 listHead
C0002DCCh 0000000Ch 24 listElement
C0002DD8h 0000000Ch 25 event_queue
C0002DE4h 00000008h 26 mutex
C0002DECh 00000008h 27 listHead
C0002DF4h 00000008h 28 ring-element
C0002DFCh 0000006Ch 29 FPUptr
C0002E68h 00000008h 30 listHead
C0002E70h 0000005Ch 31 pciDev_t
C0002ECCh 0000000Ch 32 listElement
C0002ED8h 0000005Ch 33 pciDev_t
C0002F34h 0000000Ch 34 listElement
C0002F40h 0000005Ch 35 pciDev_t
C0002F9Ch 0000000Ch 36 listElement
C0002FA8h 0000005Ch 37 pciDev_t
C0003004h 0000000Ch 38 listElement
C0003010h 0000005Ch 39 pciDev_t
C000306Ch 0000000Ch 40 listElement
C0003078h 0000005Ch 41 pciDev_t
C00030D4h 0000000Ch 42 listElement
C00030E0h 00000034h 43 network apdapter
C0003114h 00000008h 44 listHead
C000311Ch 00000014h 45 arp entry
C0003130h 0000000Ch 46 listElement
C000313Ch 00000014h 47 arp entry
C0003150h 0000000Ch 48 listElement
C000315Ch 00000018h 49 RTL8139
C0003174h 00002000h 50 RTL8139-RxBuf
C0005174h 00001000h 51 RTL8139-TxBuf
C0006174h 00000008h 52 listHead
C000617Ch 0000000Ch 53 listElement
C0006188h 00000030h 60 flpydsk-FDD
C00061B8h 00000008h 61 mutex
C00061C0h 00000038h 63 flpydsk-Disk
C00061F8h 00000048h 64 task_t
C0006240h 0000000Ch 66 listElement
C000624Ch 0000000Ch 67 listElement
C0006258h 00000028h 68 partition_t
C0006280h 00000200h 69 part->buffer
C0006480h 00000028h 70 FAT_partition_t
C00064A8h 00000008h 71 part->serial
C00064B0h 000000B8h 73 initrd-root
C0006568h 000000B8h 74 initrd-dev
C0006620h 00000170h 75 initrd-rootnodes
C0006790h 00000028h 76 initrd-part
C00067B8h 00000008h 77 initrd-partdata
C00067C0h 00000010h 79 initrd-partserial
C00067D0h 00000048h 83 task_t
C0006818h 0000000Ch 85 listElement
C0006824h 0000000Ch 86 listElement
C0006830h 0000000Ch 87 event_queue
C000683Ch 00000008h 88 mutex
C0006844h 00000008h 89 listHead
C000684Ch 00000008h 90 ring-element
C0006898h 00000010h 57 todoList_task_t
C00068D4h 00000010h 115 todoList_task_t
C0006B08h 00002400h 62 flpydsk-TrackBuffer
C0008F08h 00001000h 65 task-kernelstack
C0009F08h 00200000h 72 initrd-RAMD-start
C0209F08h 00000200h 78 initrd-partbuffer
C020CE40h 00000010h 111 todoList_task_t
C020CE6Ch 00000010h 105 todoList_task_t
C020E000h 00002004h 81 pag-userPD
C0211000h 00001000h 82 pageTable
C0212000h 00001000h 84 task-kernelstack
---------------- HEAP REGIONS ---------------- | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | ---------------- HEAP REGIONS ----------------
address size number comment
C0000000h 00000008h 1 mutex
C0000008h 00000008h 2 listHead
C0000010h 0000000Ch 3 event_queue
C000001Ch 00000008h 4 mutex
C0000024h 00000008h 5 listHead
C000002Ch 0000000Ch 6 listElement
C0000038h 0000000Ch 7 listElement
C0000044h 00000008h 8 ring
C000004Ch 00000008h 9 ring
C0000054h 00000008h 10 ring-element
C000005Ch 00000008h 11 listHead
C0000064h 00000004h 13 todoList
C0000068h 00000008h 14 listHead
C0000070h 00001CD8h 15 thread-console
C0001D48h 0000000Ch 16 console-name
C0001D54h 00000008h 17 listHead
C0001D5Ch 00000008h 18 mutex
C0001D64h 00000048h 19 task_t
C0001DACh 00001000h 20 task-kernelstack
C0002DACh 0000000Ch 21 listElement
C0002DB8h 0000000Ch 22 listElement
C0002DC4h 00000008h 23 listHead
C0002DCCh 0000000Ch 24 listElement
C0002DD8h 0000000Ch 25 event_queue
C0002DE4h 00000008h 26 mutex
C0002DECh 00000008h 27 listHead
C0002DF4h 00000008h 28 ring-element
C0002DFCh 0000006Ch 29 FPUptr
C0002E68h 00000008h 30 listHead
C0002E70h 0000005Ch 31 pciDev_t
C0002ECCh 0000000Ch 32 listElement
C0002ED8h 0000005Ch 33 pciDev_t
C0002F34h 0000000Ch 34 listElement
C0002F40h 0000005Ch 35 pciDev_t
C0002F9Ch 0000000Ch 36 listElement
C0002FA8h 0000005Ch 37 pciDev_t
C0003004h 0000000Ch 38 listElement
C0003010h 0000005Ch 39 pciDev_t
C000306Ch 0000000Ch 40 listElement
C0003078h 0000005Ch 41 pciDev_t
C00030D4h 0000000Ch 42 listElement
C00030E0h 00000034h 43 network apdapter
C0003114h 00000008h 44 listHead
C000311Ch 00000014h 45 arp entry
C0003130h 0000000Ch 46 listElement
C000313Ch 00000014h 47 arp entry
C0003150h 0000000Ch 48 listElement
C000315Ch 00000018h 49 RTL8139
C0003174h 00002000h 50 RTL8139-RxBuf
C0005174h 00001000h 51 RTL8139-TxBuf
C0006174h 00000008h 52 listHead
C000617Ch 0000000Ch 53 listElement
C0006188h 00000030h 60 flpydsk-FDD
C00061B8h 00000008h 61 mutex
C00061C0h 00000038h 63 flpydsk-Disk
C00061F8h 00000048h 64 task_t
C0006240h 0000000Ch 66 listElement
C000624Ch 0000000Ch 67 listElement
C0006258h 00000028h 68 partition_t
C0006280h 00000200h 69 part->buffer
C0006480h 00000028h 70 FAT_partition_t
C00064A8h 00000008h 71 part->serial
C00064B0h 000000B8h 73 initrd-root
C0006568h 000000B8h 74 initrd-dev
C0006620h 00000170h 75 initrd-rootnodes
C0006790h 00000028h 76 initrd-part
C00067B8h 00000008h 77 initrd-partdata
C00067C0h 00000010h 79 initrd-partserial
C00067D0h 00000048h 83 task_t
C0006818h 0000000Ch 85 listElement
C0006824h 0000000Ch 86 listElement
C0006830h 0000000Ch 87 event_queue
C000683Ch 00000008h 88 mutex
C0006844h 00000008h 89 listHead
C000684Ch 00000008h 90 ring-element
C0006898h 00000010h 57 todoList_task_t
C00068D4h 00000010h 115 todoList_task_t
C0006B08h 00002400h 62 flpydsk-TrackBuffer
C0008F08h 00001000h 65 task-kernelstack
C0009F08h 00200000h 72 initrd-RAMD-start
C0209F08h 00000200h 78 initrd-partbuffer
C020CE40h 00000010h 111 todoList_task_t
C020CE6Ch 00000010h 105 todoList_task_t
C020E000h 00002004h 81 pag-userPD
C0211000h 00001000h 82 pageTable
C0212000h 00001000h 84 task-kernelstack
---------------- HEAP REGIONS ---------------- | |
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | ---------------- HEAP REGIONS ----------------
address size number comment
C0000000h 00000008h 1 mutex
C0000008h 00000008h 2 listHead
C0000010h 0000000Ch 3 event_queue
C000001Ch 00000008h 4 mutex
C0000024h 00000008h 5 listHead
C000002Ch 0000000Ch 6 listElement
C0000038h 0000000Ch 7 listElement
C0000044h 00000008h 8 ring
C000004Ch 00000008h 9 ring
C0000054h 00000008h 10 ring-element
C000005Ch 00000008h 11 listHead
C0000064h 00000004h 13 todoList
C0000068h 00000008h 14 listHead
C0000070h 00001CD8h 15 thread-console
C0001D48h 0000000Ch 16 console-name
C0001D54h 00000008h 17 listHead
C0001D5Ch 00000008h 18 mutex
C0001D64h 00000048h 19 task_t
C0001DACh 00001000h 20 task-kernelstack
C0002DACh 0000000Ch 21 listElement
C0002DB8h 0000000Ch 22 listElement
C0002DC4h 00000008h 23 listHead
C0002DCCh 0000000Ch 24 listElement
C0002DD8h 0000000Ch 25 event_queue
C0002DE4h 00000008h 26 mutex
C0002DECh 00000008h 27 listHead
C0002DF4h 00000008h 28 ring-element
C0002DFCh 0000006Ch 29 FPUptr
C0002E68h 00000008h 30 listHead
C0002E70h 0000005Ch 31 pciDev_t
C0002ECCh 0000000Ch 32 listElement
C0002ED8h 0000005Ch 33 pciDev_t
C0002F34h 0000000Ch 34 listElement
C0002F40h 0000005Ch 35 pciDev_t
C0002F9Ch 0000000Ch 36 listElement
C0002FA8h 0000005Ch 37 pciDev_t
C0003004h 0000000Ch 38 listElement
C0003010h 0000005Ch 39 pciDev_t
C000306Ch 0000000Ch 40 listElement
C0003078h 0000005Ch 41 pciDev_t
C00030D4h 0000000Ch 42 listElement
C00030E0h 00000034h 43 network apdapter
C0003114h 00000008h 44 listHead
C000311Ch 00000014h 45 arp entry
C0003130h 0000000Ch 46 listElement
C000313Ch 00000014h 47 arp entry
C0003150h 0000000Ch 48 listElement
C000315Ch 00000018h 49 RTL8139
C0003174h 00002000h 50 RTL8139-RxBuf
C0005174h 00001000h 51 RTL8139-TxBuf
C0006174h 00000008h 52 listHead
C000617Ch 0000000Ch 53 listElement
C0006188h 00000030h 60 flpydsk-FDD
C00061B8h 00000008h 61 mutex
C00061C0h 00000038h 63 flpydsk-Disk
C00061F8h 00000048h 64 task_t
C0006240h 0000000Ch 66 listElement
C000624Ch 0000000Ch 67 listElement
C0006258h 00000028h 68 partition_t
C0006280h 00000200h 69 part->buffer
C0006480h 00000028h 70 FAT_partition_t
C00064A8h 00000008h 71 part->serial
C00064B0h 000000B8h 73 initrd-root
C0006568h 000000B8h 74 initrd-dev
C0006620h 00000170h 75 initrd-rootnodes
C0006790h 00000028h 76 initrd-part
C00067B8h 00000008h 77 initrd-partdata
C00067C0h 00000010h 79 initrd-partserial
C00067D0h 00000048h 83 task_t
C0006818h 0000000Ch 85 listElement
C0006824h 0000000Ch 86 listElement
C0006830h 0000000Ch 87 event_queue
C000683Ch 00000008h 88 mutex
C0006844h 00000008h 89 listHead
C000684Ch 00000008h 90 ring-element
C0006898h 00000010h 57 todoList_task_t
C00068D4h 00000010h 115 todoList_task_t
C0006B08h 00002400h 62 flpydsk-TrackBuffer
C0008F08h 00001000h 65 task-kernelstack
C0009F08h 00200000h 72 initrd-RAMD-start
C0209F08h 00000200h 78 initrd-partbuffer
C020CE40h 00000010h 111 todoList_task_t
C020CE6Ch 00000010h 105 todoList_task_t
C020E000h 00002004h 81 pag-userPD
C0211000h 00001000h 82 pageTable
C0212000h 00001000h 84 task-kernelstack
---------------- HEAP REGIONS ---------------- | |
- tcp.c serial output optimiert, z.B. connection-ID integriert (da inzwischen mehrere connections parallel laufen)
Anmerkung: Dup-Acks kommen zum Teil nicht von uns, da wir mit Qemu gekapselt laufen. Qemu greift leider ein mit Dup-Acks und tcp-Options. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:48:53 04.08.2011, insgesamt 6-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
19:03:57 31.07.2011 Titel: |
|
Zitieren |
Rev. 1116 - 0.0.2.268:
* rctl.c: Remote Control als User-Programm hinzugefügt
Rev. 1117:
* Updated rctl.c
Anmerkung (ehenkes):
http://127.0.0.1:8080/ <--- im Browser eingeben und -redir tcp:8080::80 in Qemu. |
Zuletzt bearbeitet von Cuervo am 22:07:14 31.07.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:50:29 31.07.2011 Titel: |
|
Zitieren |
Wichtig: in Qemu -net nic,model=pcnet einstellen. Mit der rtl8139 gibt es massive Probleme ab der zweiten Verbindung.
TODO: Tatsache ist, dass es auch beim Test-PC sehr langsam war. Das deutet auf einen Fehler im rtl8139 Treiber hin.
| Code: | del serielleSchnittstelle1.txt
qemu.exe -fda G:\OSDev\PrettyOS\trunk\Source\FloppyImage.img -net nic,model=pcnet -redir tcp:5023::23 -redir tcp:8080::80 -localtime -net user -net dump,file=netdump.pcap -serial file:serielleSchnittstelle1.txt | |
| Code: | del serielleSchnittstelle1.txt
qemu.exe -fda G:\OSDev\PrettyOS\trunk\Source\FloppyImage.img -net nic,model=pcnet -redir tcp:5023::23 -redir tcp:8080::80 -localtime -net user -net dump,file=netdump.pcap -serial file:serielleSchnittstelle1.txt | |
| Code: | del serielleSchnittstelle1.txt
qemu.exe -fda G:\OSDev\PrettyOS\trunk\Source\FloppyImage.img -net nic,model=pcnet -redir tcp:5023::23 -redir tcp:8080::80 -localtime -net user -net dump,file=netdump.pcap -serial file:serielleSchnittstelle1.txt | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:05:05 01.08.2011, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:30:47 01.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.269 - Rev: 1118"
rtl8139.h/c etwas verändert. Fehler aber noch nicht gefunden. Die Frage ist daher noch offen, ob der Fehler dort im Modul liegt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:48:32 04.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:12:20 02.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.270 - Rev: 1119"
Netzwerkkarten-Modul rtl8139.c erfolgreich korrigiert. Nun ist man nicht mehr gezwungen, auf pcnet auszuweichen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:48:19 04.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:28:49 02.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.271 - Rev: 1120"
- tcp.c: SND.UNA korrigiert bei ACK im passiven 3-way-handshake
- timer.h: System-Frequenz wieder auf 100 Hz eingestellt (war versuchsweise bei 10 Hz)
- Kleinigkeiten |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:48:06 04.08.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:01:04 02.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.272 - Rev: 1121"
rtl8139.c: Fehler bei rtl8139_isRxBufEmpty korrigiert. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
20:38:51 02.08.2011 Titel: |
|
Zitieren |
Rev. 1122:
* file.c hinzugefügt für Dateitests (vllt 0 zurückgeben wenn Datei nicht existent beim Lesen?)
* shell.c: Fehler in format behoben, 'ls' als Äquivalent zu 'fdir' eingebaut, Farben überarbeitet
* AdditionalFiles/ hinzugefügt für Dateitests, Entsprechende Änderung im Makefile
Dateispeichern klappt nicht |
Zuletzt bearbeitet von Cuervo am 23:42:21 02.08.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:39:30 02.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.273 - Rev: 1123"
tcp.c: kleine Änderungen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:47:41 04.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
12:13:32 03.08.2011 Titel: |
|
Zitieren |
Rev. 1124:
* Bootvorgang optisch verändert: Baumstruktur (da bräuchte man eine library für^^), Bootscreen, Farben
* Shell optisch verändert
* mouse.c: Ein unbekanntes Paket wird erst beim 2. Mal angezeigt, da einige Emulatoren (und auch einige PCs) seltsamerweise beim Booten ungültige Pakete senden
Das einzige was noch nicht in den Bootvorgang passt ist pci_scan(), da müsste mal jemand die Ausgabe verändern. Hier der Vergleich:
Bisheriges Booten (Rev. 1123)
Neues Booten (Rev. 1124) - Ohne pci_scan()
Neues Booten (Rev. 1124) - Mit pci_scan()
Man sieht ganz klar, dass pci_scan(); eine sehr ungünstige Ausgabe erzeugt. Ich traue mich aber nicht, diese zu verändern^^
Leider wird in pci_scan auch die Netzwerkkarte installiert (wer ist denn auf diese Idee gekommen? oO) |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:42:53 03.08.2011 Titel: |
|
Zitieren |
Version 0.0.2.275:
- Bootscreen wiederhergestellt und zugleich gekürzt, Sound und Ladebalken nun parallel
- _BOOTSCREEN_ und _VIDEOTEST_ geschaffen; _BEEP_ entfernt
- /additionalfiles entfernt
- file.c entfernt, Test in test.c integriert
- Readcaches werden beim Schreiben aktualisiert anstatt gelöscht
- fgetc gibt nun -1 zurück, wenn Dateiende erreicht.
- cli, sti, hlt, nop, rdtsc, inportX, outportX nun static inline |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:45:38 04.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.276 - Rev: 1126"
- Optimierung der Ausgaben bei EHCI/USB2.0
- Sprechende Konstanten bei usb_hc.h/c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:47:26 04.08.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:39:08 04.08.2011 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:37:31 05.08.2011 Titel: |
|
Zitieren |
Version 0.0.2.277:
- Videotest nun auf strg+v gelegt: Muss nicht mehr über _VIDEOTEST_ (de-)aktiviert werden, ist mehrfach startbar
- Bugfix: Shell und VBE-Shell akzeptieren Leerzeichen wieder |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:34:02 05.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.278 - Rev: 1129"
tcp.c: kleine Veränderungen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:24:25 06.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.279 - Rev: 1130"
tcp.c: Korrekturen bezüglich tcp_RemoveAckedPacketsFromOutBuffer |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:18:04 06.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.280 - Rev: 1131"
- Memory-Fehler in tcp_RemoveAckedPacketsFromOutBuffer behoben
- Bedien-Anzeige in arrow.c korrigiert (Dank an "neuer_user" für Hinweis) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:50:15 06.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:13:28 06.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.281 - Rev: 1132"
Fehler korrigiert, damit man wieder mit #define _TCP_DEBUG_ kompilieren kann. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:50:57 06.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:31:26 06.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.282 - Rev: 1133"
Fehler in rtl8139.c korrigiert. Buffer muss genau xxx KiB groß sein, nicht xxx KiB plus 16 Byte (war ein fehlerhafter Versuch, weil es in der Doku nicht richtig steht).
Nun sollte die RTL8139 langsam aber sicher korrekt funktionieren. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:51:34 06.08.2011, insgesamt 3-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
19:44:11 06.08.2011 Titel: |
|
Zitieren |
Rev.: 1134 - Version 0.0.2.283
* TextGUI hinzugefügt (MessageBox und Yes/No)
* Bootscreen deaktiviert, gibt derzeit noch Grafikfehler
TODO (WICHTIG!!!):
EVENT_SCREEN_UPDATED einbauen, das ausgelöst wird, wenn ein anderer Task (!!!) sichtbar malt. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:30:34 06.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.284 - Rev: 1135"
- Tastenkombinationen in ckernel.c bereinigt
- arrow.c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
21:50:10 06.08.2011 Titel: |
|
Zitieren |
Rev.: 1136 - Version 0.0.2.285
* TextGUI - Wiederherstellung des Videobuffers klappt |
|
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
21:56:09 06.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.286 - Rev: 1137";
* free(oldvidmem) in textgui.c |
Zuletzt bearbeitet von Cuervo am 21:56:35 06.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
22:02:04 06.08.2011 Titel: |
|
Zitieren |
Rev. 1138:
* alignment = 4 |
Zuletzt bearbeitet von Cuervo am 22:02:23 06.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:42:37 06.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.288 - Rev: 1139"
- QEMU_HACK entfernt (bitte intensiv prüfen, ob es wirklich geht)
- NIC IP (Start und Wunsch) und Gateway IP (Wunsch) sind in network.h eingetragen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:17:33 07.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.289 - Rev: 1140"
- EVENT_TCP_CLOSED hinzugefügt (bitte testen).
- log des heaps auf COM4 umgeleitet (die Ausgaben auf COMx sollte man noch in os.h definierbar machen)
qemu-batch:
| Code: | del serielleSchnittstelle1.txt
del serielleSchnittstelle2.txt
del serielleSchnittstelle3.txt
del serielleSchnittstelle4.txt
set QEMU_AUDIO_DRV=wav
qemu.exe -boot a -fda FloppyImage.img -soundhw pcspk -net nic,model=rtl8139 -redir tcp:5023::23 -redir tcp:8080::80 -localtime -net user -net dump,file=netdump.pcap -serial file:serielleSchnittstelle1.txt -serial file:serielleSchnittstelle2.txt -serial file:serielleSchnittstelle3.txt -serial file:serielleSchnittstelle4.txt -usb | |
| Code: | del serielleSchnittstelle1.txt
del serielleSchnittstelle2.txt
del serielleSchnittstelle3.txt
del serielleSchnittstelle4.txt
set QEMU_AUDIO_DRV=wav
qemu.exe -boot a -fda FloppyImage.img -soundhw pcspk -net nic,model=rtl8139 -redir tcp:5023::23 -redir tcp:8080::80 -localtime -net user -net dump,file=netdump.pcap -serial file:serielleSchnittstelle1.txt -serial file:serielleSchnittstelle2.txt -serial file:serielleSchnittstelle3.txt -serial file:serielleSchnittstelle4.txt -usb | |
| Code: | del serielleSchnittstelle1.txt
del serielleSchnittstelle2.txt
del serielleSchnittstelle3.txt
del serielleSchnittstelle4.txt
set QEMU_AUDIO_DRV=wav
qemu.exe -boot a -fda FloppyImage.img -soundhw pcspk -net nic,model=rtl8139 -redir tcp:5023::23 -redir tcp:8080::80 -localtime -net user -net dump,file=netdump.pcap -serial file:serielleSchnittstelle1.txt -serial file:serielleSchnittstelle2.txt -serial file:serielleSchnittstelle3.txt -serial file:serielleSchnittstelle4.txt -usb | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:42:52 07.08.2011, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:21:48 07.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.290 - Rev: 1141"
- rtl8139.c: Änderung der Reihenfolge im handler analog programming guide
- os.h: defines zur Wahl der vier COMx für serial_log
- Kleinigkeiten |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:44:51 07.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.291 - Rev: 1142"
Einbau einer Zeitabfrage zur Vermeidung/Verzögerung eines Absturzes (freeze des asteriks) bei dauernd gehaltener Tastenkombination in kernel idle loop, z.B. strg+c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:46:48 07.08.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:29:08 07.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.292 - Rev: 1143"
- Personenwaggon vergrößert
- TODO: weitere Bewegungsabläufe / Infos in den unteren 3 Zeilen
- userlib.c formale Kleinigkeiten |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:34:12 08.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.292 - Rev: 1144"
- userlib.c:
Der Zug in der "Scrolling Ticker Line" wurde um ein Schiff (Die Idee hierzu hatte Cuervo, ich musste nur die Schornsteine für die Fahrtrichtung nach rechts umformen ^^) ergänzt.
- shell.c:
Nach jeweils 20 sec wird in der shell das motiv getauscht: (getCurrentSeconds()/20) % 2 + 1 ergibt 1 oder 2 |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:39:03 08.08.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:12:01 08.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.293 - Rev: 1145"
Kleine Veränderungen in fs.h/c und ckernel.c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:37:44 09.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.294 - Rev: 1146"
Fehler in todoList.c korrigiert: task wird in todoList_execute nun ebenfalls frei gegeben. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:39:25 09.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:38:23 09.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.295 - Rev: 1147"
userlib.h:
bool udp_send(void* data, uint32_t length, IP_t destIP, uint16_t srcPort, uint16_t destPort) hinzugefügt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:13:57 09.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:13:29 09.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.296 - Rev: 1148"
udpsend.c und udprecv.c und default in udp.c zum testen von udp-tranfers
EMPFANG geht nicht in user (Problem: event-system ?) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:38:04 09.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.297 - Rev: 1149"
TextGUI_ShowMSG, TextGUI_AskYN (syscalls) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
22:41:45 09.08.2011 Titel: |
|
Zitieren |
Rev. 1152:
* ftp.c von neuer_user hinzugefügt
* Userprogramm-Maps werden erzeugt in documentation/
* pong.c hinzugefügt (nutzlos für normale Benutzer) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:06:12 10.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.298 - Rev: 1153"
Problem gelöst. udpsend, udprecv im user-land funktioniert nun grundsätzlich.
qemu-batch:
| Zitat: | del serielleSchnittstelle1.txt
del serielleSchnittstelle2.txt
del serielleSchnittstelle3.txt
del serielleSchnittstelle4.txt
set QEMU_AUDIO_DRV=wav
qemu.exe -boot a -fda FloppyImage.img -soundhw pcspk -net nic,model=pcnet -redir tcp:5023::23 -redir tcp:8080::80 -redir udp:8084::8084 -redir udp:8085::8085 -localtime -net user -net dump,file=netdump.pcap -serial file:serielleSchnittstelle1.txt -serial file:serielleSchnittstelle2.txt -serial file:serielleSchnittstelle3.txt -serial file:serielleSchnittstelle4.txt -usb | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:26:39 10.08.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:24:34 10.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.299 - Rev: 1154"
- udp.c: alle blocked tasks erhalten den Payload im UDP-Paket (ist in rev. 1157/1158 korrigiert)
- udpsend/udprecv.c leicht überarbeitet
- pit.h eingefügt (für timer.c und sys_speaker.c)
- Sonstiges |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:56:39 11.08.2011, insgesamt 2-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
21:31:15 10.08.2011 Titel: |
|
Zitieren |
Rev. 1155 (Version 0.0.2.300):
* Codeaufräumarbeiten laut Styleguide
Wenn nicht gewünscht bitte auf Rev. 1154, Version 0.0.2.299 reverten. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:26:19 11.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.301 - Rev: 1156"
pit.h, timer.c, sys_speaker.c: Konstanten für Counter 0,1,2 des PIT überarbeitet. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:05:21 11.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.302 - Rev: 1157"
bool flushEvents(EVENT_t filter); eingefügt in userlib.h/c (als syscall)
(Fehlerhaft: versehentlich wird der task gelöscht anstelle das event )
udp.c wird umgebaut auf "tasks" (Liste aller tasks, siehe task.c) anstelle blocked tasks (aus scheduler.c). Die beiden Ringe werden wieder static. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:55:45 11.08.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:43:22 11.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.303 - Rev: 1158"
bool flushEvents(EVENT_t filter) korrigiert. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:52:55 11.08.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:05:48 11.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.304 - Rev: 1159"
- void flip() und void autorefresh(bool on) in video.c. (syscall)
- Variable autoRefresh in video.c |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:16:52 12.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.305 - Rev: 1160"
userlib.h/c: uint32_t getMyIP() (syscall nach network.h/c)
Verwendung in test.c:
| C/C++ Code: | IP_t ip;
ip.iIP = getMyIP();
printf("My IP is %u.%u.%u.%u", ip.IP[0], ip.IP[1], ip.IP[2], ip.IP[3]); | |
| C/C++ Code: | IP_t ip;
ip.iIP = getMyIP();
printf("My IP is %u.%u.%u.%u", ip.IP[0], ip.IP[1], ip.IP[2], ip.IP[3]); | |
| C/C++ Code: | IP_t ip;
ip.iIP = getMyIP();
printf("My IP is %u.%u.%u.%u", ip.IP[0], ip.IP[1], ip.IP[2], ip.IP[3]); | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:20:04 12.08.2011, insgesamt 2-mal bearbeitet |
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
10:46:18 12.08.2011 Titel: |
|
Zitieren |
Rev. 1161, v0.0.2.306:
* DoubleBuffering kann jetzt für jede Konsole einzeln eingestellt werden (gab vorher echte Probleme beim Umschalten in andere Konsolen, die kein DoubleBuffering konnten, wie z.B. die Kernelkonsole)
Das hätte man nicht global in video.c einbauen dürfen, sondern in console_t.
* Scrollen in Konsolen kann ausgeschaltet werden (auch im Userland) (yeah, erster eigener Syscall!)
* Kleinere Fehlerbehebungen
DoubleBuffering funktioniert immer noch nicht korrekt, clearScreen(0x00); löscht komischerweise nicht... -.-
"Beweisbild":
http://prettyos.fanofblitzbasic.de/ppong2dbuffng.png
Erklärung:
Das Menü wird von unten in das Bild hereingeschoben und zieht anscheinend "Schlieren", allerdings nur über etwas mehr als die linke Hälfte des Bildes.
clearScreen(); ist anscheinend ganz oder nur teilweise nicht funktionsfähig.
Leider brauche ich DoubleBuffering, sonst flackert das Bild die ganze Zeit. |
Zuletzt bearbeitet von Erhard Henkes am 14:58:00 12.08.2011, insgesamt 7-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:34:34 12.08.2011 Titel: |
|
Zitieren |
Lösung im chat:
| C/C++ Code: | void flip()
{
autorefresh(true);
__asm__ volatile("int $0x7F" : : "a"(67));
autorefresh(false);
} | |
| C/C++ Code: | void flip()
{
autorefresh(true);
__asm__ volatile("int $0x7F" : : "a"(67));
autorefresh(false);
} | |
| C/C++ Code: | void flip()
{
autorefresh(true);
__asm__ volatile("int $0x7F" : : "a"(67));
autorefresh(false);
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
15:46:25 12.08.2011 Titel: |
|
Zitieren |
Rev. 1162:
* DoubleBuffering geht jetzt (zwar mit Hack, aber immerhin)
* tcp.c korrigiert (Korrektur von Dr. Erhard Henkes) |
|
|
|
 |
neuer_user
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.12.2010
Beiträge: 210
|
neuer_user Mitglied
16:39:59 12.08.2011 Titel: |
|
Zitieren |
0.0.2.307 - Rev: 1163:
-ftp.c: Funktionen hinzugefügt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:21:17 12.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.308 - Rev: 1164"
defines in video.h für updateCursor hinzugefügt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:04:53 13.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.309 - Rev: 1165"
- Kleinigkeiten, defines
- const uint32_t RAMDISKSIZE = 0x100000; |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
neuer_user
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.12.2010
Beiträge: 210
|
neuer_user Mitglied
20:26:18 13.08.2011 Titel: |
|
Zitieren |
0.0.2.309 - Rev: 1166
browser.c:
-Neue Funktionen
ftp.c:
-Dateien herunterladen/speichern
-unterschiedliche Ports möglich |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:33:22 14.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.310 - Rev: 1167"
- tcp.c: EVENT_TCP_CLOSED wird nun ausgelöst, wenn die Verbindung ESTABLISHED verlässt, nicht erst, wenn sie gelöscht wird
- fat.c: FAT_showDirectoryEntry(dir); in fillFILEPTR wurde mit _FAT_DIAGNOSIS_ auskommentiert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 13:17:53 14.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:16:34 14.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.311 - Rev: 1168"
tcp.c: Unkritische Error-Ausgaben hinter _TCP_DEBUG_ verbannt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
neuer_user
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.12.2010
Beiträge: 210
|
neuer_user Mitglied
13:31:25 14.08.2011 Titel: |
|
Zitieren |
0.0.2.311 - Rev: 1169:
browser.c: tcp_close(connection) aus EVENT_TCP_RECEIVED verschoben. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:56:57 14.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.311 - Rev: 1170"
userlip.hpp: Ersatz für new/delete ist nicht notwendig (Dank an cooky451 für den Hinweis) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:33:43 15.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.312 - Rev: 1171"
Neue User-Fkt. in userlib.h/c (syscalls):
void dns_setServer(IP_t server);
void dns_getServer(IP_t* server);
Startwert DNS-Server: 0.0.0.0.
Nach DHCP ACK wird auf gateway (DHCP server) gesetzt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
cooky451
Mitglied
Benutzerprofil
Anmeldungsdatum: 16.10.2010
Beiträge: 4799
|
cooky451 Mitglied
20:41:41 15.08.2011 Titel: |
|
Zitieren |
"0.0.2.313 - Rev: 1175"
- Neue Dateien in user_tools: dns.c dns.h dns_help.c dns_help.h
- Neue Datei in other_userprogs: showdns.c
dns.h bietet Funktionen zum parsen/erstellen von DNS Anfragen.
Momentan können nur header, questions und answers geparst werden, für Näheres siehe dns.c.
dns_help.h bietet kleine Helferfunktionen, wie:
getAddrByName(); // gibt erste gefundene Adresse zurück
showDNSQuery();
showdns.c: Ruft einfach showDNSQuery() auf; zum testen.
---
DNS Server auf statische IP 208.67.222.222 geändert, da es noch Probleme mit der automatischen Findung gibt. (@Erhard: 10.0.2.2 funktioniert leider nicht wie vermutet.) |
_________________ Sie sind nicht berechtigt unrechtmäßige Kopien dieses Datenträgers zu erstellen.™
Zuletzt bearbeitet von cooky451 am 22:11:50 15.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:08:34 15.08.2011 Titel: |
|
Zitieren |
DNS server (name server) in qemu ist 10.0.2.3 |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:38:42 16.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.314 - Rev: 1176"
- syscall.c etwas erweitert und userlib.c nach Nummern sortiert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:46:06 16.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.315 - Rev: 1177"
- events.c (style)
- network.h: working DNS server |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:02:34 17.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.316 - Rev: 1178"
task.c, scheduler.c: Anzeige der tasks (strg+t) optimiert
Lustiger Nebeneffekt: dauerhaft strg+t gedrückt halten. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:26:39 17.08.2011, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:24:06 18.08.2011 Titel: |
|
Zitieren |
Version 0.0.2.317:
- showInfobar, autorefresh, autoscroll zu console_setProperties zusammengefasst
- Vollbildmodus möglich (console_setProperties(CONSOLE_FULLSCREEN))
- flushEvent entfernt. Das gleiche Verhalten kann mit event_poll simuliert werden.
- Kleinigkeiten (u.a. Codestyle) |
Zuletzt bearbeitet von Mr X am 23:24:39 18.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:06:08 19.08.2011 Titel: |
|
Zitieren |
Version 0.0.2.317 - Rev. 1180:
- resolveIP-Hack durch DNS ersetzt
- Bugfix im DNS: Einmal zuviel dereferenziert
- syscalls.c von userlib.c abgespalten
- Bugfix in Shell: Keine doppelte not-Found-Ausgabe mehr
- Codestyle, Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:35:30 19.08.2011 Titel: |
|
Zitieren |
version = "0.0.2.317 - Rev: 1181"
ftp.c korrigiert:
| C/C++ Code: | | IP_t IP = getAddrByName(hostname) | |
| C/C++ Code: | | IP_t IP = getAddrByName(hostname) | |
| C/C++ Code: | | IP_t IP = getAddrByName(hostname) | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
cooky451
Mitglied
Benutzerprofil
Anmeldungsdatum: 16.10.2010
Beiträge: 4799
|
cooky451 Mitglied
10:23:51 20.08.2011 Titel: |
|
Zitieren |
0.0.2.318 - Rev: 1182
- Kleine Änderung an DNS
- stdlib: qsort, strtol, strtoul, strtod eingefügt.
+ atoi/atol gefixt (rufen jetzt strtol() auf)
+ atof() gibt jetzt double zurück. (ruft strtod() auf)
- stdio: strrchr gefixt, alte Version hat den ersten Buchstaben ignoriert.
- stoupper/stolower: strlen() entfernt |
_________________ Sie sind nicht berechtigt unrechtmäßige Kopien dieses Datenträgers zu erstellen.™
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:49:30 20.08.2011 Titel: |
|
Zitieren |
Fast ein Jahr nach Version 0.0.2.0 veröffentlichen wir hiermit:
PrettyOS 0.0.3.0
Neue Features:
- Clang-Kompatibilität
- Erweiterte Netzwerkkartenunterstützung
- Interface für Netzwerktreiber
- Treiber für AMD PCNet
- Erweiterte Netzwerkprotokollunterstützung
- VBE-GUI-Ansatz
- Halbwegs vollständige C-Standardbibliothek (Userbereich)
- Parameter beim Programmstart
(- Powermanagement (APM))
Verbesserungen:
- Besserer Tastaturtreiber
- Besserer Maustreiber
- Besserer Floppy/DMA-Treiber
- Besserer Scheduler
- VBE-Schnittstelle
- Zahlreiche Bugfixes und kleine Verbesserungen
- Erweiterte Dateisystemformatierung
Version 0.0.3.0 - Rev. 1183
- IPC-Stubs hinzugefügt
- Codestyle |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:28:10 21.08.2011 Titel: |
|
Zitieren |
Version 0.0.3.1:
- Bugfix: Partitionen 1 bis 3 werden bei nicht-Vorhandensein korrekt mit 0 initialisiert.
- Bugfix: setCursor prüft nun übergebene Werte auf Plausibilität
- test-results.txt aktualisiert
- Vendorliste um Leereinträge bereinigt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:37:36 22.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.2 - Rev: 1185"
subversion von rtl8139 wird festgestellt und ausgegeben.
qemu 0.11.5 mit EHCI und qemu 0.14.1 verwenden rtl8139C+. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:19:13 22.08.2011 Titel: |
|
Zitieren |
Version 0.0.3.3:
- Floppytreiber gibt Zugriffsversuche nach weniger Versuchen auf.
- Events schreiben, wenn möglich, Größe des Events in Puffer, wenn dieser zu klein für das Event selbst ist.
- upd_bind/udp_unbind ermöglichen Zuordnung von UDP-Paketen zu tasks.
- tcpConnectedEventHeader_t enthält Informationen zum Remotesocket.
- udpReceivedEventHeader_t enthält zusätzlich die sourceIP des Pakets.
- Codestil&Codevereinfachungen |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:49:15 22.08.2011 Titel: |
|
Zitieren |
Version 0.0.3.4:
- Bugfix: Keine Nullpointerdereferenzierung bei UDP mehr
- Bugfix: Kein "Broken free" beim Löschen von gefüllten Event queues mehr
- Bugfix: udprecv nutzt nun udp_unbind
- "Garbage Collector" für offengebliebene Dateien, TCP-Verbindungen, UDP-Ports und angeschaltetem PC-Speaker
- Tasks können mit Strg+Esc und Strg+e (da Strg+Esc unter Windows das Startmenü öffnet und darum bei Emulatoren Probleme auftreten) abgeschossen werden (Wirkt jeweils auf alle Tasks, die zur aktuellen Konsole gehören)
- Cuervos Textgui debugged und aufgeräumt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:21:54 22.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.5 - Rev: 1188" (im kernel fasch bezeichnet)
ckernel.c: formale Änderungen, unnötige Header entfernt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:22:28 22.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:29:34 22.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.6 - Rev: 1189"
rtl8139.c: Fehler bei Versionsausgabe korrigiert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:32:32 22.08.2011 Titel: |
|
Zitieren |
Version 0.0.3.7:
- Bugfix: event_poll mit kleinem Puffer geht wieder (führte dazu, dass getch nicht funktionierte)
- Bugfix: Fehlendes ntohs in udp.c ergänzt -> udp_bind funktioniert nun
- Makefiles unterstützen nun auch clang (funktioniert bislang nur teilweise)
- dns-Funktionen nutzen udp_bind/udp_unbind |
|
|
|
 |
cooky451
Mitglied
Benutzerprofil
Anmeldungsdatum: 16.10.2010
Beiträge: 4799
|
cooky451 Mitglied
00:03:57 23.08.2011 Titel: |
|
Zitieren |
Version 0.0.3.8 - Revision 1191
- DNS CNAME Parser gefixt. |
_________________ Sie sind nicht berechtigt unrechtmäßige Kopien dieses Datenträgers zu erstellen.™
|
|
 |
Cuervo
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2009
Beiträge: 112
|
Cuervo Mitglied
18:31:48 23.08.2011 Titel: |
|
Zitieren |
Rev. 1192: (v0.0.3.8)
* ppong.c added (WIP) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:04:25 23.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.8 - Rev: 1193"
ppong.c:
- W und S als Steuerung im Spiel nachgerüstet.
- Fehlende breaks ergänzt.
- #defines teilweise durch echte Typen ersetzt
Ich finde ppong ein hervorragendes User-Projekt. Dank an Cuervo für die Erstellung des bisherigen Apps. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:05:45 23.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:08:03 23.08.2011 Titel: |
|
Zitieren |
Version 0.0.3.9:
- Bugfix: Freetimetask wird keiner Konsole mehr zugewiesen -> Strg+Esc führt nicht mehr zu Reboots bei strg+t
- IP/MAC-Filter in Ethernet- und IPv4-Modul wieder in Betrieb genommen (-> Bitte testen, ob noch alles geht)
- IPv4-Code überarbeitet
- Codestil und Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:28:29 23.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.9 - Rev: 1195"
ppong.c:
- double für ball position/speed
- gegenerisches "Tor" etwas geöffnet |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:25:15 23.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.9 - Rev: 1197" (1196 hatte Fehler)
ppong.c:
- Wichtige Ball-Parameter oben aufgeführt
- Sound bei Treffer
TODO: Ball-/Wandkollision noch fehlerhaft |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:30:57 23.08.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:39:03 24.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.9 - Rev: 1198"
ppong.c weiter verbessert (Kollision, random, Goal mit Ton, Anstoßrichtung entsprechend dem vorherigem Tor, ...) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 02:54:58 25.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
05:27:20 25.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.9 - Rev: 1199"
ppong.c: Spielverlauf noch etwas verbessert (UpdateGame(), ...) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 05:42:26 25.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
12:51:02 25.08.2011 Titel: |
|
Zitieren |
Version 0.0.3.10:
- Bugfix: flpydsk_read_directory überspringt nun gelöschte Dateien
- IPC-Implementation erweitert
- strpbrk in kernel und stdlib implementiert
- Strg+b-Shortcut entfernt (-> Bei Bedarf als Userprogramm implementieren)
- Code einiger Userprogramme überarbeitet (gefährlichen/langsamen/unflexiblen Code ersetzt, aufgeräumt, kleine Bugfixes) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:16:50 25.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.10 - Rev: 1201"
ppong.c:
- AI für den Computer-Gegner eingeführt
- Scores und Games
- Schlägergröße variiert von game zu Game bei AI |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
13:36:26 25.08.2011 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:03:03 25.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.10 - Rev: 1203"
ppong.c:
- random angepasst (RAND_MAX war falsch), nun springt der Ball sowohl nach oben als auch nach unten beim Anstoß
TODO: Festfressen einer Laufbahn verhindern! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:34:24 25.08.2011, insgesamt 3-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:47:28 25.08.2011 Titel: |
|
Zitieren |
Version 0.0.3.11:
- sprintf, vsprintf, snprintf und vsnprintf im kernel und Userspace optimiert. Dabei Bugfix für #PF in browser und irc.
- strcat/strncat stellenweise durch snprintf ersetzt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:53:48 26.08.2011 Titel: |
|
Zitieren |
irc.c geht wieder.
Fehler bei browser.c:
fa.de eingeben: #PF EIP 100F8Eh
0x00100f75 memcmp
aufgerufen von: ethernet_received
aufgerufen von: network_receivedPacket
aufgerufen von: todoList_execute |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:18:42 26.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.11 - Rev: 1205"
ppong.c: Geschwindigkeit verringert, Festfressen verhindert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:19:39 26.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:19:37 26.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.11 - Rev: 1206"
ppong.c:
- 1 Player
- 2 Players (W/S and P/L)
Nun kann man endlich gegen sich selbst spielen (W/S und P/L als Steuerung) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:41:51 26.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.12 - Rev: 1207"
uhci.h begonnen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:13:00 26.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.12 - Rev: 1210" (1208,1209 fehlerhaft)
ppong.c:
- ppong.h geschaffen
- Ball kann nicht mehr hinter Schläger abgefangen werden (Fehler beseitigt)
- Menü wieder schöner (ohne Tastenanzeige) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:33:53 26.08.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:31:57 26.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.13 - Rev: 1211"
uhci.h: structs für qh und td modelliert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:32:58 27.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.14 - Rev: 1212"
memory.h: Großzügiger Stack für user-Programme (1 MiB minus Programmgröße) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:19:56 27.08.2011 Titel: |
|
Zitieren |
Version 0.0.3.15:
- Abhängigkeit von Systemfrequenz bei scheduler_blockCurrentTask entfernt
- Bugfixes in vsnprintf, vsprintf
- Optimierungen an String- und Ausgabefunktionen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:38:57 27.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.16 - Rev: 1214"
uhci.c hinzugefügt (Start/Handler soll analog EHCI aufgebaut werden) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
cooky451
Mitglied
Benutzerprofil
Anmeldungsdatum: 16.10.2010
Beiträge: 4799
|
cooky451 Mitglied
14:16:50 27.08.2011 Titel: |
|
Zitieren |
Version 0.0.3.16, Revision 1215
- qsort fixed
- psort.c als Userprogramm eingefügt. |
_________________ Sie sind nicht berechtigt unrechtmäßige Kopien dieses Datenträgers zu erstellen.™
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:23:02 27.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.17 - Rev: 1216"
uhci.h/c, ehci.c, usb_hc.c: uhci weiter ausgebaut
vm86.c: cli/sti ersetzt durch task_switching false/true
memory.txt und Syscalls.odt aktualisiert
syscalls.c: TODOs eingefügt gemäß Planung
TODO: user-threads erzeugen (syscall auf Kombination von createTask, scheduler_insertTask, ret task->pid) MrX: befürchtet rat race condition ehenkes: fordert Begrenzung auf max. Anzahl an User-Threads pro User-Programm. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:21:13 27.08.2011 Titel: |
|
Zitieren |
Version 0.0.3.18:
- Angefangen, Lizenzprobleme bei Userprogrammen zu beheben:
-- calc, hello, music, readme, test, dummy, dummy-cpp und ttt stehen nun unter 2-Klausel-BSD
-- keysound in piano, rctl in webshell und ppong in pong umbenannt (-> 2-Klausel-BSD)
- Userprogramme pong und rt entfernt
- Kleinigkeiten am BL |
Zuletzt bearbeitet von Mr X am 21:21:23 27.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:10:05 27.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.18 - Rev: 1218"
Weitere User-Programme unter BSD-2-Klausel-Lizenz gestellt.
Diese BSD-2-Klausel-Lizenz wird zukünftig die Regel sein bei User-Programmen, um den freien Zugriff des gesamten Teams auf den Code von User-Programmen zu gewährleisten. Ausnahmen müssen von allen für das Repo zugelassenen Developern getragen werden. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:23:49 27.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:22:37 28.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.19 - Rev: 1219"
uhci.c: Interrupterkennung u. -Reset (I/O BASE+USBSTS) implementiert. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:18:03 28.08.2011 Titel: |
|
Zitieren |
|
 |
cooky451
Mitglied
Benutzerprofil
Anmeldungsdatum: 16.10.2010
Beiträge: 4799
|
cooky451 Mitglied
08:39:00 28.08.2011 Titel: |
|
Zitieren |
Version: 0.0.3.20 - Revision: 1221
- Alle meine Userprogramme unter die BSD-Lizenz gestellt, unter welcher jetzt alle Userprogramme stehen. |
_________________ Sie sind nicht berechtigt unrechtmäßige Kopien dieses Datenträgers zu erstellen.™
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:56:29 28.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.21 - Rev: 1222"
uhci.h/c: UHCI reset ausgeführt, frame list definiert
pci.h/c: pci_config_write_word ergänzt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:58:25 28.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.22 - Rev: 1223"
uhci.c: LEGSUP vor/nach reset auslesen, ports mit UHCI_PORT_CS_CHANGE schreiben
| Code: | qemu: vor: 8F00 nach: 2000
VMWare-Player: vor: 2000 nach: 2000
test-PC 1: vor: 2000 nach: 2000
test-PC 2: vor: 2000 nach: 2000
| |
| Code: | qemu: vor: 8F00 nach: 2000
VMWare-Player: vor: 2000 nach: 2000
test-PC 1: vor: 2000 nach: 2000
test-PC 2: vor: 2000 nach: 2000
| |
| Code: | qemu: vor: 8F00 nach: 2000
VMWare-Player: vor: 2000 nach: 2000
test-PC 1: vor: 2000 nach: 2000
test-PC 2: vor: 2000 nach: 2000
| |
| C/C++ Code: | // Interrupt carried out as a PCI interrupt
#define UHCI_PCI_LEGACY_SUPPORT_PIRQ 0x2000
// Status bits that are cleared by setting to 1
#define UHCI_PCI_LEGACY_SUPPORT_STATUS 0x8F00
| |
| C/C++ Code: | // Interrupt carried out as a PCI interrupt
#define UHCI_PCI_LEGACY_SUPPORT_PIRQ 0x2000
// Status bits that are cleared by setting to 1
#define UHCI_PCI_LEGACY_SUPPORT_STATUS 0x8F00
| |
| C/C++ Code: | // Interrupt carried out as a PCI interrupt
#define UHCI_PCI_LEGACY_SUPPORT_PIRQ 0x2000
// Status bits that are cleared by setting to 1
#define UHCI_PCI_LEGACY_SUPPORT_STATUS 0x8F00
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:08:10 28.08.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:54:46 28.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.23 - Rev: 1224"
uhci.c: Fehler korrigiert: framelist base address nun page-aligned und 4K groß. Auf physischen Wert im Speicher achten (wird ausgegeben) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:17:46 29.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.24 - Rev: 1225"
uhci.h/c auf struct umgestellt. Test-PC 1: Zwei uhci werden initiiert. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:55:48 29.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.25 - Rev: 1226"
uhci.c: start von mehreren UHCI
qemu: -usb -device piix4-usb-uhci -device piix4-usb-uhci (3 UHCI) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:32:01 29.08.2011 Titel: |
|
Zitieren |
Version 0.0.3.26:
- TTT überarbeitet: Schönere und klarere Ausgabe. Spieler, der an der Reihe ist, wird angezeigt. Spieler, der beginnt, wird durch Zufall "ausgelost"
- Kleinere Bugfixes und Überarbeitungen an UHCI, serial, Maustreiber und ISA-DMA.
- GCC-generierte mmap-Konvertierung im BL2 verbessert. U.a. Funktionsprolog und -epilog entfernt.
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:09:53 30.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.27 - Rev: 1228"
uhci.c: Handler weiter optimiert (Abfangen von gleichen fremden IRQ)
Nun muss auf Hardware getestet werden, ob LEGSUP problemlos umgeschaltet werden kann. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:59:18 30.08.2011 Titel: |
|
Zitieren |
version = "0.0.3.28 - Rev: 1229"
devicemanager.h/c: USB 1.1 und USB 2.0
uhci.h/c: attach to device manager as USB 1.1
ehic.c: USB 2.0
strg+d provides correct results
TODO: enable/reset port does not yet work |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:00:47 30.08.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:08:52 30.08.2011 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:05:30 01.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.30 - Rev: 1231
uhci.c: weiter testweise ausgebaut, läuft auf Test-PC und VMware Player ohne HChalted durch (kein Freeze!), in qemu noch ein unverständliches HChalted.
Screenshot auf VMWare Player: http://www.henkessoft.de/OS_Dev/Bilder/uhci.PNG
LEGSUP im Beispiel probeweise auf 0x0000 eingestellt (anstelle 0x2000).
Portstatus nach enable: 0x0085 = 10000101
bit0: Current Connect Status ReadOnly. 1=Device is present on port. 0=No device is present.
bit2: Port Enabled/Disabled R/W. 1=Enable. 0=Disable. Ports can be enabled by host software only. <--- das haben wir gerade durchgeführt.
bit7: Reserved ReadOnly. Always read as 1.
Nach diesem Ergebis empfehle ich uhci-Tests auf VMWarePlayer (war bei ehci ebenfalls der entscheidende Helfer) bzw. Hardware.
rtl8139.c: Filter gegen falsche interrupts eingebaut (in pcnet funktioniert analoge Vorgehensweise nicht?! MrX: bitte checken) - Auf Test-PC gibt es mit Netzwerk noch Probleme (#PF), aber nun rebootet er nicht mehr sofort, wenn Netzwerk verbunden ist, damit kann man das Problem einkreisen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:57:34 01.09.2011, insgesamt 9-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:17:46 01.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.31 - Rev: 1232"
uhci.c: Auswertung portstatus weiter entwickelt, LEGSUP auf 0x0000 gestellt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:26:04 01.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.32 - Rev: 1233"
uhci.c: Ausgaben verbessert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:48:02 01.09.2011 Titel: |
|
Zitieren |
Version 0.0.3.33:
- Zusammenspiel von IRQs, PCI, Netzwerkadaptern und HCIs verbessert
- Übler Bug im UHCI-Handler beseitigt - Dieser ist nun nichtmehr tot
- IRQ-Filter im Netzwerkcode verbessert
- todolist aus UHCI entfernt |
Zuletzt bearbeitet von Mr X am 21:48:41 01.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:58:34 01.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.34 - Rev: 1235"
uhci.c: showPortState(uhci_t* u, uint8_t j) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:32:46 02.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.35 - Rev: 1236"
uhci.h/c: Fehler beseitigt, code umgestellt
qemu: läuft (invalid interrupts)
vmware: halted
test-pc 1: halted / process error
test-pc 2: läuft
| C/C++ Code: | // set PIRQ or zero (???)
pci_config_write_word(bus, dev, func, UHCI_PCI_LEGACY_SUPPORT, 0 /*UHCI_PCI_LEGACY_SUPPORT_PIRQ*/); | |
| C/C++ Code: | // set PIRQ or zero (???)
pci_config_write_word(bus, dev, func, UHCI_PCI_LEGACY_SUPPORT, 0 /*UHCI_PCI_LEGACY_SUPPORT_PIRQ*/); | |
| C/C++ Code: | // set PIRQ or zero (???)
pci_config_write_word(bus, dev, func, UHCI_PCI_LEGACY_SUPPORT, 0 /*UHCI_PCI_LEGACY_SUPPORT_PIRQ*/); | |
Mit 0 läuft es auf VMWare besser, richtig ist aber UHCI_PCI_LEGACY_SUPPORT_PIRQ.
| Zitat: | | USB PIRQ Enable (USBPIRQDEN) R/W. 1 (default) = USB interrupt is routed to PIRQD. 0 = USB interrupt does not route to PIRQD. This bit prevents the USB controller from generating an interrupt. Note that it will probably be configured to generate an SMI using bit 4 of this register. Default to 1 for compatibility with older USB software. | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:00:22 02.09.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:51:47 02.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.36 - Rev: 1237"
uhci.c: 0x2000 in LEGSUP und nur einen QH der horizontal/vertikal das T-Bit (inaktiv) geschaltet hat, keine TDs.
Test-PC 1 (1400 MHz): erkennt angesteckte usb-sticks (high-speed) als fullspeed:
- fullspeed device
- device changed (CSC)
- device attached (CS)
- line state: D+
screenshot: http://www.henkessoft.de/OS_Dev/Bilder/rev.1236_uhci.PNG
Das ist eine Basis. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:14:09 02.09.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:01:02 02.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.37 - Rev: 1238"
uhci.c: invalid interrupts gefiltert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:46:58 02.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.38 - Rev: 1239"
uhci.h/c: Fehler behoben bezüglich BIT_T und BIT_Q, Ausgaben verbessert (z.B. RS bit zur Sicherheit)
Tests: qemu und Test-PC 1 laufen gut, vmware und Test-PC 2 halted und process error
TODO: Fehlerstelle finden durch debuggen mittels vmware
Wichtig: die Interrupts kommen manchmal doppelt/dreifach für den gleichen UHCI! EDIT: lag am mehrfachen Setzen des RS-Bits, also völlig korrekt! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:23:40 03.09.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:07:37 03.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.39 - Rev: 1240"
uhci.c:
- Fehler korrigiert: | C/C++ Code: | | u->framelistAddrVirt->frPtr[i] = paging_getPhysAddr(qhIn) | BIT_QH; | |
| C/C++ Code: | | u->framelistAddrVirt->frPtr[i] = paging_getPhysAddr(qhIn) | BIT_QH; | |
| C/C++ Code: | | u->framelistAddrVirt->frPtr[i] = paging_getPhysAddr(qhIn) | BIT_QH; | |
( Vorher & anstelle | )
Nun laufen alle! MrX: bitte Hardware (alle 3 PCs) testen.
Damit sind nur Test-PC 2 und VMWare als "echte Tester" geeignet.
VMWare war auch bereits bei EHCI die ideale Emulation. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:22:44 03.09.2011, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:15:47 03.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.40 - Rev: 1241"
uhci.c: experimentelle Variante für eigene qh/td-Versuche
siehe uhci.c, zeile 14, #define UHCI_SCENARIO // qh/td experiments
wenn's stört: uhci.c, zeile 14, #define UHCI_SCENARIO wegnehmen (qemu bockt mit HC Process Error) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:22:23 03.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:27:40 03.09.2011 Titel: |
|
Zitieren |
Version 0.0.3.41:
- IO/MMIO-Bit im PCI-Commandregister bei allen Gerätetreibern korrekt gesetzt
- PCNet-Handler gefixt, Interrupt-Filter geht nun
- Codestil (im Zusammenhang mit PCI)
- Optimierungen am Bootloader |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:20:25 03.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.42 - Rev: 1243"
ohci.h/c: erster Rahmen analog uhci.h/c eingefügt (ohci verwendet MMIO) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:26:18 03.09.2011 Titel: |
|
Zitieren |
Version 0.0.3.43:
- UHCI/OHCI-Funktionsnamen aufgeräumt
- Portscan-Mechanismus im Devicemanager, implementiert für UHCI
- Ausgabe verbessert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:26:37 04.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.44 - Rev: 1245"
OHCI Operational Registers implementiert (Open Host Controller Interface Specification for USB 1.0a, Kap. 7; S. 108)
Als Test fragen wir in der PCI-Device-List die HCI Revision und die Number Downstream Ports ab. Klappt alles bestens.
Wer keinen PC mit OHCI hat, verwendet VBox. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:54:00 04.09.2011, insgesamt 1-mal bearbeitet |
|
 |
taljeth
Mitglied
Benutzerprofil
Anmeldungsdatum: 11.09.2009
Beiträge: 148
|
taljeth Mitglied
15:08:01 04.09.2011 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:45:22 04.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.45 - Rev: 1246"
ohci.c: HC Reset begonnen
@taljeth: Danke für den Hinweis!
2*UHCI und 2*OHCI:
| Code: | | -usb -device piix4-usb-uhci -device pci-ohci -device pci-ohci | |
| Code: | | -usb -device piix4-usb-uhci -device pci-ohci -device pci-ohci | |
| Code: | | -usb -device piix4-usb-uhci -device pci-ohci -device pci-ohci | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:51:18 04.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:41:00 04.09.2011 Titel: |
|
Zitieren |
Version 0.0.3.46:
- EHCI-Code aufgeräumt
- Bugfix in ftp, kein #PF mehr beim Verbinden
- A20-Code im BL2 verbessert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:03:19 04.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.47 - Rev: 1248"
ohci.c: handler ausgebaut, um Interrupts zu zeigen und zurück zu setzen (kommt bei einem Test-PC). Hilft bei einem PC aber nichts, kommt massiv Port Status Changed.
Zeit für Übernahme von SMM wurde erweitert. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:54:54 04.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.48 - Rev: 1249"
ohci.c: handler leicht verbessert
Test mit VBox:
- usb2.0 deaktivieren in VBox
- PrettyOS starten (ohne Stick im Port)
- Stick in Port einstecken
---> Interrupt: "Root hub status change." kommt einmal |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:56:40 04.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:01:50 04.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.49 - Rev: 1250"
ohci.c: HCCA eingebunden, Interrupts enabled (SF - start of frame - wurde deaktiviert wegen Dauerbeschuss in qemu)
Ideal: Test der ohci OpRegs im VBox debugger (Tipp von MrX) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:46:09 04.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.50 - Rev: 1251"
ohci.h/c, ehci.h/c, ... Formelle Verbesserungen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:02:37 05.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.51 - Rev: 1252"
ohci.h/c: defines/comments; ohci_handler vervollstandigt
Anmerkung: EHCI in os.h deaktiviert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:18:26 05.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:04:32 05.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.52 - Rev: 1253"
ohci.c: HC setup überarbeitet entsprechend Kap. 5 der OHCI Spec (rev. 1.0a) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:03:28 06.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.53 - Rev: 1254"
ohci.c:
- Übernahme von SMM durch IR bit setzen (nach erfolglosem request) wird angezeigt
- Ports werden gezeigt und untersucht (attached, low/full speed, power) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:44:46 06.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.54 - Rev: 1255"
ohci.c: nun wird der Port aktiviert ("enabled"), erfolgt nur beim Anstecken eines Device. Alle PortStatusBits werden ausgewertet/zurückgesetzt(falls notwendig). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:39:11 06.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:27:36 06.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.55 - Rev: 1256"
ohci.h/c: ED, TD |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:28:28 06.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:02:33 07.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.56 - Rev: 1257"
ohci.c: Port-Aktivierung im Code vereinfacht (MrX: bitte testen, Start-of-frame muss aktiviert bleiben für die Porterkennung)
usb1.h/c: als frame hinzugefügt (für UHCI und OHCI)
TODO: bei EHCI Abgabe an companion HC überprüfen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:06:13 07.09.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:24:45 07.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.57 - Rev: 1258"
ehci.c: Wechsel zwischen EHCI und Companion HC eingebaut (nun ist UHCI und OHCI ja verfügbar). Es wird z.Z. die "lowest cHC number" verwendet.
(SE0 --> EHCI, K-State --> lowest cHC) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:26:40 07.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:09:01 07.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.58 - Rev: 1259"
siehe: http://www.c-plusplus.de/forum/p2116360#2116360
ehci.c: K- und J-State werden abgegeben. Code als switch/case übersichtlicher.
J-State kann z.B. mit einer Fullspeed Gamer-Maus getestet werden. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:17:55 07.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:52:33 08.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.59 - Rev: 1260"
ehci.h/c. kleine Veränderungen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:35:54 08.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.60 - Rev: 1261"
ohci.h/c: ED, TD, TDbuffer eingerichtet |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:11:08 10.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.61 - Rev: 1262"
ehci umgebaut von global auf Struktur ehci_t pro EHCI |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:32:46 10.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.62 - Rev: 1263"
Auch für _EHCI_DIAGNOSIS_ und _USB2_DIAGNOSIS_ nun fehlerfrei.
Nun kann man in os.h alle HCI gezielt für die Installation in PrettyOS einstellen:
| C/C++ Code: | #define _EHCI_ENABLE_ // EHCI will be installed, if this is defined, otherwise not
#define _OHCI_ENABLE_ // OHCI will be installed, if this is defined, otherwise not
#define _UHCI_ENABLE_ // UHCI will be installed, if this is defined, otherwise not | |
| C/C++ Code: | #define _EHCI_ENABLE_ // EHCI will be installed, if this is defined, otherwise not
#define _OHCI_ENABLE_ // OHCI will be installed, if this is defined, otherwise not
#define _UHCI_ENABLE_ // UHCI will be installed, if this is defined, otherwise not | |
| C/C++ Code: | #define _EHCI_ENABLE_ // EHCI will be installed, if this is defined, otherwise not
#define _OHCI_ENABLE_ // OHCI will be installed, if this is defined, otherwise not
#define _UHCI_ENABLE_ // UHCI will be installed, if this is defined, otherwise not | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 15:34:57 10.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
10:35:40 11.09.2011 Titel: |
|
Zitieren |
Version 0.0.3.63:
- Interrupt-Filter für EHCI, OHCI und UHCI verbessert
- Code umsortiert, Codestyle |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:55:44 11.09.2011 Titel: |
|
Zitieren |
Version 0.0.3.64:
- EHCI-Transactions implementiert, mit usbTransferEnumerate und usbTransferDevice getestet |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:23:56 11.09.2011 Titel: |
|
Zitieren |
Version 0.0.3.65:
- usb2.c auf neue Transaction-Funktionen umgestellt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:46:55 11.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.66 - Rev: 1267"
usb2_msd.c: control-transfers umgesetzt auf neues usb-interface |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:25:37 11.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.67 - Rev: 1268"
ehci.c: VMWare läuft nun wieder (seit rev. 1258: HCHalted)
| C/C++ Code: | | // e->CapRegs->HCSPPORTROUTE_Hi = e->CapRegs->HCSPPORTROUTE_Lo = 0; // all valid ports go to lowest cHC number // VMWare does not reset!
| |
| C/C++ Code: | | // e->CapRegs->HCSPPORTROUTE_Hi = e->CapRegs->HCSPPORTROUTE_Lo = 0; // all valid ports go to lowest cHC number // VMWare does not reset!
| |
| C/C++ Code: | | // e->CapRegs->HCSPPORTROUTE_Hi = e->CapRegs->HCSPPORTROUTE_Lo = 0; // all valid ports go to lowest cHC number // VMWare does not reset!
| |
Dieses 15-nibble-array-Register sollte sowieso RO sein, also ein netter VMWare-Bug. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:53:04 11.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:18:56 12.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.68 - Rev: 1269"
- ohci-Ports werden nun ebenfalls "attached"
- Ausgabe der Port-Liste bezüglich Formatierung verbessert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:58:25 13.09.2011 Titel: |
|
Zitieren |
Version 0.0.3.69:
- USB/EHCI-Code aufgeräumt
- Bugfix: Unicode-Strings werden wieder korrekt transferriert (Vergessene Verweise auf dataQTDpage0 entfernt) |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:27:38 13.09.2011 Titel: |
|
Zitieren |
Version 0.0.3.70:
- SCSI-Commands umgeschrieben. (Funktioniert emuliert, aber nicht auf echter Hardware) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:45:19 13.09.2011 Titel: |
|
Zitieren |
sehr fragil, stick-abhängig.
USB_BULK ist besser als USB_CONTROL für die bulk-tranfers. Damit ging es am PC mit einem anderen Stick, bei dem dann ttt ausgeführt werden konnte.
Probleme:
1) hispeed-sticks werden am PC nicht sicher erkannt, dann Umschalten auf cHC
2) 3:/ttt --> file not found (obwohl es da sein muss, floppy geht manchmal!)
3) Kombination aus TestUnitReady und RequestSense in testDeviceReady(...) klappt mit dem neuen Code nicht bei jedem Stick zuverlässig (kein ehci/usb Code-Problem)
Die Probleme tauchen auf bei VBox 4.08 und beim EHCI-Test-PC (OHCI als cHC) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:59:10 13.09.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:31:06 14.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.71 - Rev: 1272"
usb msd etwas optimiert (VBox 4.08 und test-PC läuft nun).
Der ehci/usb-Umbau ist gelungen.
| C/C++ Code: | | sleepMilliSeconds(50 + velocity * 200); | |
| C/C++ Code: | | sleepMilliSeconds(50 + velocity * 200); | |
| C/C++ Code: | | sleepMilliSeconds(50 + velocity * 200); | |
Es spielt also das Zeitverhalten eine große Rolle.
Das Wechselspiel zwischen den SCSI commands TestUnitReady und RequestSense läuft solange, bis das Ergebnis zufriedenstellend ist, siehe testDeviceReady(...), allerdings z.Z. höchstens drei Runden ( const uint8_t maxTest = 3; ).
In der Regel klappt es nach dem zweiten TestUnitReady.
TODO: usb- und usb_msd-Funktionen unabhängig machen von e/o/uhci! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 13:47:13 14.09.2011, insgesamt 6-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:49:38 14.09.2011 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: | version = "0.0.3.71 - Rev: 1272"
usb msd etwas optimiert (VBox 4.08 und test-PC läuft nun).
Der ehci/usb-Umbau ist gelungen.
| C/C++ Code: | | sleepMilliSeconds(50 + velocity * 200); | |
| C/C++ Code: | | sleepMilliSeconds(50 + velocity * 200); | |
| C/C++ Code: | | sleepMilliSeconds(50 + velocity * 200); | |
Es spielt also das Zeitverhalten eine große Rolle. |
Sehr schön, dass Du den Fehler gefunden hast.
Ärgerlich allerdings, dass es ausgerechnet mit der Ausführungsgeschwindigkeit des asyncSchedulers zusammenhängt - wir müssen unbedingt einen Weg finden, diese langen Wartezeiten loszuwerden, andernfalls bleibt unser EHCI so lahm wie ein Floppylaufwerk.
| Erhard Henkes schrieb: | | TODO: usb- und usb_msd-Funktionen unabhängig machen von e/o/uhci! |
Weitgehend obsolet - Genau das haben wir doch jetzt getan. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:33:17 14.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.72 - Rev: 1273"
Zwei (bisher ignorierte) Fehler bei der Eingabe ungültiger Laufwerke in die Shell abgefangen (fsmanager.c, fopen). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:55:05 14.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:40:02 14.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.73 - Rev: 1274"
#define _EHCI_DIAGNOSIS_ // Debug EHCI
#define _USB2_DIAGNOSIS_ // Debug USB 2.0 transfers
können nun wieder verwendet werden (liefert Einsichten in Details des Transfer-Ablaufs). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:15:15 15.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.74 - Rev: 1275"
ehci-usb-Transfer signifikant beschleunigt durch Nutzung der doorbell und des bit5 im Statusregister. Stabil?
usbsts:
| Zitat: | | USBSTS - USB Status Register, bit5: Interrupt on Async Advance R/WC 0=Default. System software can force the host controller to issue an interrupt the next time the host controller advances the asynchronous schedule by writing a one to the Interrupt on Async Advance Doorbell bit in the USBCMD register. This status bit indicates the assertion of that interrupt source. |
doorbell:
| Zitat: | | USBCMD – USB Command Register, bit 6: Interrupt on Async Advance Doorbell R/W. This bit is used as a doorbell by software to tell the host controller to issue an interrupt the next time it advances asynchronous schedule. Software must write a 1 to this bit to ring the doorbell. When the host controller has evicted all appropriate cached schedule state, it sets the Interrupt on Async Advance status bit in the USBSTS register. If the Interrupt on Async Advance Enable bit in the USBINTR register is a one then the host controller will assert an interrupt at the next interrupt threshold. See Section 4.8.2 for operational details. The host controller sets this bit to a zero after it has set the Interrupt on Async Advance status bit in the USBSTS register to a one. Software should not write a one to this bit when the asynchronous schedule is disabled. Doing so will yield undefined results. |
Test auf PC mit zwei usb2.0-Sticks: viele asyncInt time outs, noch immer langsam. Funktioniert aber. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:14:12 16.09.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:10:44 16.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.75 - Rev: 1276"
irq.h/c: sprechende defines eingefügt, BIT(n) verwendet
Bezüglich ehci/usb2.0 hier ein Ablauf (4 screenshots) in VMWare Player beim Anstecken eines usb-sticks: http://www.henkessoft.de/OS_Dev/Bilder/rev.1276_ehci_asyncScheduler.PNG
3:/arrow wird erfolgreich geladen. Zeitbedarf beim Laden: ca. 50 sec, insgesamt 23 asyncInterrupt Timeouts beim Laden, das aber funktioniert.
Manche Dateien werden gefunden, manche nicht (Kopie des FAT12 FloppyImages auf den usb-stick mit dd_for_windows aus dem FloppyImage):
Gefunden werden: arrow, ftp, pqeq, readme (der readcache funktioniert beim Mehrfachladen sehr gut!)
Nicht gefunden werden: browser, calc, hello, irc, music, piano, pong, psort, showdns, starwars, , test, ttt, udprecv, udpsend, webshell
Schaut man bei den geladenen Dateien nach einer Gemeinsamkeit, so findet man diese: http://www.henkessoft.de/OS_Dev/Bilder/rev.1276_ehci_asyncScheduler_GeladeneDateien.PNG
Sie starten bei cluster 1450, 1493, 1429, 1410. Der Ort der Datei im FAT12-Filesystem (1410 - 1493) bestimmt also, ob sie auf dem usb-stick gefunden wird. Von Floppy werden bei gleichem Zustand des devicemanagers, also mit zugefügtem usb-stick, alle Dateien geladen!
Auch mit einem anderen Stick wurde das gleiche Ergebnis gefunden.
Ausnahmen: einmal wurde test gefunden, manchmal wird garnichts gefunden.
Ein Stick wurde dann auf FAT32 formatiert und alle Dateien im Windows Explorer von Floppy auf den Stick kopiert (keine Ahnung, wie die dort ankommen, dürfte bezüglich Reihenfolge aber bleiben). Dateien konnte geladen werden!
Vielleicht bringt uns dieser umfangreiche Test bei der Fehlersuche weiter. Da dieser Vorgang "früher" problemlos lief, fragt sich, was geändert wurde. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 13:46:03 16.09.2011, insgesamt 6-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:58:21 16.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.76 - Rev: 1277"
fat.c: Ausgaben umgelegt nach serial output (VMWare kann das in ein File umleiten)
ehci-asyncScheduler deutlich beschleunigt! (asyncInt wird pos./neg. angezeigt) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:20:28 18.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:39:23 16.09.2011 Titel: |
|
Zitieren |
Version 0.0.3.77:
- EHCI: J-State und undefined state werden nicht mehr an Companion HC abgegeben (Änderung gemäß EHCI-Spezifikation 1.0, Seite 28, 56), port-Reset nach Auslesen des states
- readCacheFlag entfernt - Readcaches nun dauerhaft aktiv
- getPartition stabilisiert - Bugfixes in fopen von ehenkes dahingehend überarbeitet.
- VM86-Tasks mit cli/sti statt task_switching=false/true gesichert -> VBE geht nun wieder
- flpydsk_refreshVolumeName optimiert, weniger Zugriffe bei mehreren Diskettenlaufwerken, nur noch für Floppylaufwerke aufgerufen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:57:18 17.09.2011 Titel: |
|
Zitieren |
Bezüglich der Fehlersuche "File not found" wude festgestellt, dass bei einem usb-Stick mit FAT12 (hergestellt durch Kopieren des Floppy-Images mit dd) das rootdir falsch angesteuert wurde.
Partitions-Start gemäß MasterBootRecord(MBR): sector 32
Angesteuert wurde Sector 52 bei der Suche nach einem File.
Das hätte aber 32+19 sein müssen, also 51.
Ein Test zeigte, dass diese Annahme richtig ist.
Die Ursache der fehlerhaften Berechnung wurde bisher noch nicht gefunden.
Eine FATx-abhängige Stelle in fat.c:
uint32_t cluster2sector(FAT_partition_t* volume, uint32_t cluster)
Hier erfolgt die Berechnung des Sectors. Für die root dir von FAT12 und FAT16 ist die Formel: sector = (volume->root + cluster * volume->SecPerClus);
Eine falsche Zahl könnte hier durch volume->root entstehen.
Anylsiert man die Revisionen, so tritt ein/der Fehler bei dem Übergang Rev. 1178 --> 1179 (MrX) ein. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:57:08 17.09.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:59:56 17.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.78 - Rev: 1279"
ehci: asyncScheduler umgebaut
FloppyImage fehlt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:46:36 17.09.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:47:44 17.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.79 - Rev: 1280"
fat.c: Fehler bei FAT12/16 korrigiert
Es fehlte: fpart->FatRootDirCluster = 0; bei FAT12/16 |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:23:28 18.09.2011 Titel: |
|
Zitieren |
Version 0.0.3.80:
- Erkennung und Abgabe von Fullspeed-Geräten
- Erkennung von fehlgeschlagenen Transfers ergänzt, Timeout von 5 zur Wiederholung
- Codestil und -vereinfachungen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:22:15 18.09.2011 Titel: |
|
Zitieren |
Diese Version läuft bezüglich usb hervorragend (vor allem richtig schnell) auf VMWare, allerdings schlecht (transfers klappen nicht vernünftig) auf meinem EHCI-Test-PC (lief früher dort perfekt).
Hispeed sticks werden auf dem PC abgewiesen und nach ohci (noch nicht in usb-Transfers eingebunden) abgegeben. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:24:01 18.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:22:43 18.09.2011 Titel: |
|
Zitieren |
Version 0.0.3.81:
- USB-Abstraktion verbessert, zahlreiche EHCI-Abhängigkeiten beseitigt
- statische disk- und usb2_Device_t-Arrays beseitigt
- Patch von neuer_user für FTP-Client: Shortcuts umgebaut, neue Funktionen (Upload, Dateirechte), Ausgaben verbessert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:14:20 18.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.82 - Rev: 1283"
asyncScheduler: Zeitsteuerung optimiert, so dass sowohl VMWare als auch PC mit verschiedenen Sticks läuft.
performAsyncScheduler(e, true, true, 1 + transfer->packetSize/100);
timeout = 3 * velocity + 1;
sleepMilliSeconds(10);
Bei 512 Byte: ( 3 * 6 + 1 ) * 10 = 190 ms |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:19:26 18.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.83 - Rev: 1284"
usb_hc.c: Implementierung für u/o/ehci vorgesehen unter Nutzung der Schnittstelle transfer->HC->type |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:30:15 19.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.84 - Rev: 1285"
ohci.h/c: USB-Transfers vorbereitet
Für Tests:
OHCI_USB_TRANSFER aktivieren in ohci.c, line 16
Offene Fragen/TODOs:
Beim Anstecken eines Low-Speed-Device (einfache Maus) werden sofort alle Konsolen belegt (Grund nicht klar).
Die Zahl der von Anfang an vorhandenen rootports bei ohci reicht nicht aus, wenn weitere ports von ehci abgegeben werden können, im Prinzip alle. Hier sollte ein separater Portmanager her, der alle usb-Ports verwaltet.
Aber die Abstraktion von USB und HC ist gelungen! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:38:00 19.09.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:41:00 19.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.85 - Rev: 1286"
ohci.c korrigiert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:37:57 19.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.86 - Rev: 1287"
ohci.c: Korrektur im handler (OHCI_MAX)
uhci.h/c: analog ohci in usb eingehängt |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:53:11 20.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.87 - Rev: 1288"
ohci/usb weiter ausgebaut |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:38:14 20.09.2011 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:18:48 21.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.89 - Rev: 1290"
ohci/usb weiter entwickelt. Verbindung zwischen setup-TD und Rest fehlt noch in der TD-Queue (durch die Umstellung der TDs von vorne nach hinten ist das nun schwieriger. MrX: wie hast du dir das gedacht bei deinem Modell?). Hier wird um Ideen gebeten.
TD->cond (condition = status) wird nun mit 15 (NOT ACCESSED) gefüllt, damit man sieht, ob der TD korrekt abgearbeitet wird (bei setup klappt es bereits). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 18:29:49 21.09.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:17:27 21.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.90 - Rev: 1291"
ohci.c: Fehler (hoffentlich) korrigiert, curOHCI ersetzt.
Transfers laufen noch nicht. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:19:47 21.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:26:39 22.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.91 - Rev: 1292"
ohci.h/c: Fehlerkorrekturen (Ausgabe der ED -> TD queue zur Kontrolle)
| Code: | ED -> ED -> ...
| |
TD TD
| |
TD TD
| |
| Code: | ED -> ED -> ...
| |
TD TD
| |
TD TD
| |
| Code: | ED -> ED -> ...
| |
TD TD
| |
TD TD
| |
Ketten sind ok (check der struct member)
Nun muss man den OHCI noch ordentlich gemäß spec bewegen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:46:26 22.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.92 - Rev: 1293"
Fehler in ohci.c beseitigt, z.B. tailPointer und directions |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:30:01 22.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.93 - Rev: 1294"
ohci.h/c: Transfer-Mechnanismus läuft nun endlich, aber Fehler bei den Paketen in den Transactions: Device: no response to IN or no handshake (OUT) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:30:57 22.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:11:54 22.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.94 - Rev: 1295"
ohci.c: donehead begonnen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:01:28 23.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.95 - Rev: 1296"
ohci: weiter entwickelt, Transfers funktionieren aber noch nicht korrekt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:00:21 23.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.96 - Rev: 1297" experimentelle Version (Rückbau von ohci_createQTD_SETUP auf rev. 1290 - ist zwar falsch, aber die transaction läuft) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:20:38 23.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.97 - Rev: 1298"
ohci.h/c: noch einige Korrekturen, es hakt aber immer noch gewaltig. ^^ |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:04:26 23.09.2011 Titel: |
|
Zitieren |
Version 0.0.3.98:
- OHCI aufgeräumt, kleinere Fehler behoben
- Kein #PF bei OHCI mehr, wenn usbTransferStringUnicode aufgerufen wird
- Kein #PF bei unbekanntem Partitionstyp mehr
- SCSI-Commands werden bis zu 5 mal wiederholt bei Fehlschlag
- Kleinigkeiten & Codestil |
Zuletzt bearbeitet von Mr X am 20:04:54 23.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:08:56 23.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.99 - Rev: 1300"
ohci.c: Ausgaben verbessert, Zeitschleifen in issueTransfer
Hauptproblem: Device: no response to IN or no handshake (OUT). (bei Setup Transaction) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
10:56:34 24.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.100 - Rev: 1301"
ohci.h/c: weitere Veränderungen (hoffentlich Fehler behoben, usb läuft noch nicht)
Wichtiger Hinweis: // #define _EHCI_ENABLE_ in os.h
Wer den EHCI nutzen möchte, dies bitte vorher aktivieren. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 11:26:30 24.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:07:15 24.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.101 - Rev: 1302"
ohci.c: Ausgaben erweitert zur Kontrolle ( skip, halted in HeadPointer )
EHCI wieder enabled |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:30:05 24.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.102 - Rev: 1303"
ohci weiter entwickelt. Immer noch Fehler beim ersten TD (setup).
VBox zeigt übrigens immer toggle 0 an, obwohl ohci.c sauber togglet. Auch buffer werden nicht angezeigt. Tests mit PCs sind aussagekräftiger. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:53:24 24.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
13:35:42 25.09.2011 Titel: |
|
Zitieren |
Version 0.0.3.103:
- PCNet: "Undefined error" hinter _NETWORK_DIAGNOSIS_ versteckt
- createQTD_SETUP und createQTD_IO vereinheitlicht: Beide allokieren einen Puffer.
- restrict zu VCcompatibility.h hinzugefügt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:49:52 25.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.104 - Rev: 1305"
ohci.c: ausgaben weiter verbessert, CLE,CLF umpositoniert, Haltestellen eingefügt für VBox Debugger |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:41:14 25.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.105 - Rev: 1306"
ohci.c: buffer zusätzlich ausgegeben zur Kontrolle
ED, TD, TD-buffer sieht alles gut aus.
CLE als Hauptschalter
Bei Fehler:
- CLF (Control List Filled) auf 0
- currentED auf 0
- ED->HeadP Halted-Bit auf 0
- Fehlerausgabe via condition Feld (Status) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:04:39 25.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.106 - Rev: 1307"
ohci.c: weiter optimiert (z.B. Rücksetzen des HeadPtr Halted Bit) - transfer läuft noch nicht |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:48:42 26.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.107 - Rev: 1308"
ohci_ und ehci_request zu usb_request vereinigt.
usb1.h/c gelöscht. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:52:23 26.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:05:57 29.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.108 - Rev: 1309"
ohci-Ausgaben reduziert (hinter define)
In VBox: Device Not Responding
http://www.ti.com/lit/ug/sprufm8/sprufm8.pdf
| Zitat: | | The USB1.1 host controller ignores upstream traffic from downstream devices for about 3 ms after the host controller state (HCCONTROL.HCFS) changes from USB resume state to USB operational state. If any TDs cause generation of downstream packets during that time, the downstream packets are sent, but downstream device responses are ignored. Any such TDs are aborted with completion codes marked as Device Not Responding. TDs on any of the lists (periodic, control, bulk, and isochronous) can cause such an occurrence. | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 03:22:19 29.09.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:14:11 30.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.109 - Rev: 1310"
ohci - Zwischenstand |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:11:22 30.09.2011 Titel: |
|
Zitieren |
version = "0.0.3.110 - Rev: 1311"
ohci.h/c: erweitert um einige Port-Funktionen analog EHCI.
Transfer läuft aber noch nicht (Fehler: Device not responding, wie bisher) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:08:59 01.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.111 - Rev: 1312"
ohci.c: Die erste Transaktion verläuft inzwischen nach Status-Meldung erfolgreich! Nun sind wir - auch bei ohci - endlich im Thema usb angekommen.
(ehci läuft schon lange)
Hinweis: Wer EHCI testen will, bitte erst in os.h per define aktivieren (versehentlich noch ausgeschaltet)
TODO: Abarbeiten der TDs analysieren unter Berücksichtigung, dass "done" TDs ausgehängt werden. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 14:00:30 01.10.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:52:45 02.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.112 - Rev: 1313"
Reihenfolge verändert/ergänzt in ohci_setupUSBDevice:
- usbTransferDevice
- usbTransferEnumerate
- usbTransferDevice
Leider schlagen irgendwo noch interrupts zu.
Aber man sieht bei dieser Version (mit Glück), dass die In-Transaktion erfolgreich durchgeführt werden kann
TODO: bitte helfen, den Interrupt-Fehler zu finden, damit wir wieder vernünftig testen können
| C/C++ Code: | if (val & OHCI_INT_RHSC) // root hub status change
{
// printf("Root hub status change.");
handledInterrupts |= OHCI_INT_RHSC;
scheduler_insertTask(create_cthread(&ohci_portCheck, "OHCI Ports"));
} | |
| C/C++ Code: | if (val & OHCI_INT_RHSC) // root hub status change
{
// printf("Root hub status change.");
handledInterrupts |= OHCI_INT_RHSC;
scheduler_insertTask(create_cthread(&ohci_portCheck, "OHCI Ports"));
} | |
| C/C++ Code: | if (val & OHCI_INT_RHSC) // root hub status change
{
// printf("Root hub status change.");
handledInterrupts |= OHCI_INT_RHSC;
scheduler_insertTask(create_cthread(&ohci_portCheck, "OHCI Ports"));
} | |
Hier liegt wohl ein Problem. VBox hat hier alleine schon 8 Ports.
Weiter geht's hier:
| C/C++ Code: | void ohci_portCheck()
{
//...
if (o->OpRegs->HcRhPortStatus[j] & OHCI_PORT_CCS) // connected
ohci_showPortstatus(o,j); | |
| C/C++ Code: | void ohci_portCheck()
{
//...
if (o->OpRegs->HcRhPortStatus[j] & OHCI_PORT_CCS) // connected
ohci_showPortstatus(o,j); | |
| C/C++ Code: | void ohci_portCheck()
{
//...
if (o->OpRegs->HcRhPortStatus[j] & OHCI_PORT_CCS) // connected
ohci_showPortstatus(o,j); | |
Das Problem (Absturz VBox) beginnt hier:
| C/C++ Code: | | ohci_resetPort(o, j); | |
| C/C++ Code: | | ohci_resetPort(o, j); | |
| C/C++ Code: | | ohci_resetPort(o, j); | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:12:51 02.10.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:24:51 02.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.113 - Rev: 1314" (experimentelle Version)
Verbesserte Version: Damit sieht man die ersten erfolgreichen Transaktionen (setup, in). Anschließend "freeze" (VBox muss abgeschossen werden).
Freeze ist hier:
| C/C++ Code: | | o->ports[portNumber]->num = 1 + usbTransferEnumerate(&o->ports[portNumber]->port, portNumber); | |
| C/C++ Code: | | o->ports[portNumber]->num = 1 + usbTransferEnumerate(&o->ports[portNumber]->port, portNumber); | |
| C/C++ Code: | | o->ports[portNumber]->num = 1 + usbTransferEnumerate(&o->ports[portNumber]->port, portNumber); | |
Korrekte Darstellung der usb-Version 01.10:
| C/C++ Code: | | printf("\nUSB %y.%y\t", BYTE2(usbDev->usbSpec), BYTE1(usbDev->usbSpec)); | |
| C/C++ Code: | | printf("\nUSB %y.%y\t", BYTE2(usbDev->usbSpec), BYTE1(usbDev->usbSpec)); | |
| C/C++ Code: | | printf("\nUSB %y.%y\t", BYTE2(usbDev->usbSpec), BYTE1(usbDev->usbSpec)); | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 13:50:20 02.10.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:03:11 02.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.114 - Rev: 1315"
ohci funktioniert! Problem ist momentan im usb-Transfer enumerate (set address)
screenshot: http://www.henkessoft.de/OS_Dev/Bilder/rev.1315_OHCI_USB.PNG
Endlich!
Nun müssen wir den Freeze finden und das usb-Problem, aber das ist sicher machbar, wenn man endlich mal die übertragenen Daten sehen kann. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 14:06:11 02.10.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:26:53 02.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.115 - Rev: 1316"
endlich freeze-free (delay anstelle sleep...)
sof-check in jetziger Form gestrichen (Programm ist nicht in die while-loop eingetreten). In spec steht: "Perform SOF check" und "Time available?". Diese beiden Punkte werden bisher ignoriert.
Probleme:
- Bei EHCI/UHCI- oder EHCI/OHCI-Übergang "prellt" das OS, sodass schnell alle 10 Konsolen (0-9) verbraucht sind.
- Bei OHCI klappen die IO-Transfers mit 0 byte (handshake) noch nicht (egal ob OUT oder IN)
- OHCI und PC läuft noch nicht (freeze wegen ständiger interrupts)
- Emulator VBox (0.4.12) auf Host Win XP bei USB völlig unzuverlässig (ehenkes) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:35:27 03.10.2011, insgesamt 4-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:38:39 03.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.116 - Rev: 1317"
ohci: wieder testbar mit VBox
| C/C++ Code: | if (val & OHCI_INT_RHSC) // root hub status change
{
// printf("Root hub status change.");
handledInterrupts |= OHCI_INT_RHSC;
// scheduler_insertTask(create_cthread(&ohci_portCheck, "OHCI Ports"));
ohci_portCheck();
}
| |
| C/C++ Code: | if (val & OHCI_INT_RHSC) // root hub status change
{
// printf("Root hub status change.");
handledInterrupts |= OHCI_INT_RHSC;
// scheduler_insertTask(create_cthread(&ohci_portCheck, "OHCI Ports"));
ohci_portCheck();
}
| |
| C/C++ Code: | if (val & OHCI_INT_RHSC) // root hub status change
{
// printf("Root hub status change.");
handledInterrupts |= OHCI_INT_RHSC;
// scheduler_insertTask(create_cthread(&ohci_portCheck, "OHCI Ports"));
ohci_portCheck();
}
| |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:14:57 03.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.117 - Rev: 1318"
void ohci_portCheck(ohci_t* o)
Problem: bei dem test-PC: dauerinterrupt root hub change bei ohci 0, port 3
(EHCI nicht enabled, s. os.h) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:16:23 03.10.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:58:42 03.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.118 - Rev: 1319"
ohci.c: ohne enumeration (set address), also mit 0, läuft der ohci die control transfers durch.
SET ADDRESS läuft anders als andere control transfers. Nummerierung wird erst nach erfolgreichem Transfer ausgeführt. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 08:44:27 04.10.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:16:16 04.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.119 - Rev: 1320"
ohci.c: issueTransfer überarbeitet, sodass man die Wartezeiten nach transaction und transfer getrennt einstellen kann.
Der letzte TD wird momentan nicht ausgeführt, weil er der letzte ist! (einfach einen dummy handshake dahinter setzen) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:23:23 04.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.120 - Rev: 1321"
ohci.c: Durch Anhängen eines Dummy-TD in ohci_issueTransfer und check der conditions nach Ende des Transfers klappt nun auch set_address (Enumeration).
Meilenstein: Die USB 1.1 control-Transfers (mit ohci) laufen auf VBox!
screenshot: http://www.henkessoft.de/OS_Dev/Bilder/rev.1321_OHCI_USB.PNG |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:57:38 04.10.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:29:33 04.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.121 - Rev: 1322"
usb2_msd.c:
curEHCI bzw. showUSBSTS(e) in diesem Modul eliminiert, um es auch für ohci- und uhci-bulk-Transfers benutzen zu können. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:00:14 05.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.122 - Rev: 1323"
ohci.c: bulk transfers laufen test-weise (tranfer/transaction system funktioniert auch dort) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:45:01 05.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.123 - Rev: 1324"
ohci.c: recycling der bulk-ED/TD Ressourcen
Nun kann man ttt mittels usb 1.1 mit ohci laden! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:21:59 06.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.124 - Rev: 1325"
ohci.c:
- recycling der control-ED/TD
- "disk" und "usb-device" entfernen beim Entfernen einer USB Mass Storage Device vom Port (usb slot) <--- funktioniert noch nicht, da zur Zeit nur connected behandelt wird |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 21:36:32 06.10.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:00:08 06.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.125 - Rev: 1326"
ohci.h/c: "device removed" wird nun wieder angezeigt (aber nur bei Ports, bei denen vorher ein connect war) und die Disk-Liste aktualisiert. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
15:25:18 08.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.126 - Rev: 1327"
list.h/c: Zahl der Elemente kann nun erfragt werden (Test in ohci.c) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:21:54 08.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.127 - Rev: 1328"
Formale Änderungen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:27:07 08.10.2011 Titel: |
|
Zitieren |
Version 0.0.3.128:
- IPC verbessert:
-- Funktional nun fast vollständig
-- Strg+i zeigt Inhalt der IPC an
-- IPC-Syscalls implementiert
- EHCI AsyncScheduler verbessert. Kein Start-Stop mehr. (-> Deutlich beschleunigt, aber nicht 100% zuverlässig)
- Codestil und kleinere Optimierungen |
Zuletzt bearbeitet von Mr X am 21:28:08 08.10.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:24:31 09.10.2011 Titel: |
|
Zitieren |
Version 0.0.3.129:
- IN-Transfer von SCSI-Commands werden bei Fehlschlag nicht mehr wiederholt (-> führte zu Freeze)
- EHCI-AsyncScheduler prüft nun, ob das Active-Bit jeder qTD gelöscht wurde (-> wesentliche Beschleunigung) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
12:39:21 09.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.130 - Rev: 1331"
ohci.c: bei Transfer-Ausführung code vereinfacht und stop-Vorgänge zwischen transactions gestrichen
ehci.c: reset-Wartezeit von 250 ms auf 100 ms verkürzt (OpenBSD nimmt 100 ms). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 12:42:56 09.10.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:33:44 09.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.131 - Rev: 1332"
ehci.c: Code klarer formuliert
usb2_msd.c: Fehler bei Paketgröße (control transfers) berichtigt
EHCI-Tests auf PC: Vorgänge verlaufen sehr schnell, leider funktionieren Memory-Sticks der Marke Intenso Rainbowline (4GB) z.Z. nicht (allerdings problemlos mit VMWare Player), Grund leider unklar. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:18:07 09.10.2011 Titel: |
|
Zitieren |
Version 0.0.3.132:
- EHCI-Funktionen gemäß Styleguide benannt
- Start of Frame Interrupt bei OHCI deaktiviert
- Kein Broken Free mehr bei OHCI (EDs dürfen nicht gelöscht werden, da sie in einem Mempool sind)
- _BROKENFREE_DIAGNOSIS_ implementiert: Wenn definiert, werden Datei und Zeilennummern des dazugehörenden free-Aufrufs angezeigt
- Code vereinfacht |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:36:30 09.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.133 - Rev: 1334"
ohci.h/c: Structs/Funktionen/Parameter korrekt auf das bei ohci übliche ED/TD umbenannt. Debug-Ausgaben stark reduziert. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:26:32 10.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.134 - Rev: 1335"
uhci.c: Fehler bei usb-attach-Erkennung repariert, usb-Transfer/Transaction-frame als Interface für das usb-Modul aufgebaut. TODO: Mit Leben füllen
pcnet.c: Versuchsweise auf full-duplex geschaltet, um collision error in VBox zu vermeiden (klappt nicht) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:35:33 10.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.135 - Rev: 1336"
uhci.h/c: Weiter implementiert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:26:26 11.10.2011 Titel: |
|
Zitieren |
Version 0.0.3.136:
- Bugfix: Shell stürzt nicht mehr ab, wenn man den Schreibcursor nach links bewegt
- Bugfix: Kein #GPF mehr, wenn ein USB-Stick schon beim boot steckt (EHCI)
- Einige fehlende E0-Tasten ergänzt - Entf, Pos1, End, ...-Tasten funktionieren wieder (u.a. von der Shell unterstützt)
- Timer-Ticks jetzt als uint64_t gespeichert (Rechnungen weiterhin mit uint32_t, da keine 64-bit-Unterstützung)
- video_updateCursor in vga_updateCursor umbenannt. Einsatz überarbeitet. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:36:52 11.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.137 - Rev: 1338"
uhci.c: transfer/transactions/QH- u. TD-Funktionen eingerichtet (Transfers klappen noch nicht) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:10:50 11.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.138 - Rev: 1339"
uhci.c: Fehler beseitigt (Transfers laufen noch nicht korrekt) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:12:02 12.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.139 - Rev: 1340"
uhci.c: weiter gecheckt, aber Transfers laufen noch nicht. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:40:17 12.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.140 - Rev: 1341"
uhci.c: Verkettung und Vf, QH, T sollte nun stimmen nach debugging.
Aufgabe: TDs werden noch nicht abgearbeitet (active bit). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 19:41:06 12.10.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
06:05:41 13.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.141 - Rev: 1342"
uhci.c: Port Reset nach attach, alle 1024 Frames auf QH
Debugging zeigt korrekte Verknüpfung, Transfers laufen trotzdem noch nicht (wie wenn device nicht vorhanden; evtl. noch nicht korrekt konfiguriert nach attach) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
16:38:11 13.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.142 - Rev: 1343"
uhci.h/c: Erste erfolgreiche uhci usb 1.1 Transfers erfolgen, nun kann die Optimierung beginnen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:03:56 13.10.2011 Titel: |
|
Zitieren |
Version 0.0.3.143:
- Einige Memory-Leaks im Videomanager und VBE beseitigt
- Kleinere Optimierungen im Paging-Modul
- TransferFlag bei UHCI, OHCI und EHCI eliminiert (redundant durch andere Flags, inkonsequente Nutzung)
- UHCI kompiliert nun auch ohne _UHCI_DIAGNOSIS_ |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:49:42 13.10.2011 Titel: |
|
Zitieren |
Version 0.0.3.144:
- Bugfix: Backspace funktioniert wieder (Daten wurden nicht in Videospeicher durchgeschrieben)
- Bugfix: Kein #PF mehr in IPC (folder-Inhalt war nicht initialisiert)
- IPC in Betrieb genommen - system_t-Struktur entfernt
- Callstack automatisch angezeigt bei Fehlern |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:16:18 13.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.145 - Rev: 1346"
uhci.c: Transfers laufen bei einem Stick bis read capacity komplett fehlerfrei durch. Fehler (babble) tauchen bei singleSectorRead(0, buffer, disk) auf.
Screenshot: http://www.henkessoft.de/OS_Dev/Bilder/rev.1346_UHCI_USB.PNG
Babble:
| Zitat: | | When a device transmits on the USB for a time greater than its assigned Max Length, it is said to be babbling. Since isochrony can be destroyed by a babbling device, this error results in the Active bit in the TD being cleared to 0 and the Stalled and Babble bits being set to one. The C_Err field is not decremented for a babble. The USB Error Interrupt bit in the HC Status register is set to 1 at the end of the frame. A hardware interrupt is signaled to the system. If an EOF babble was caused by the host controller (due to incorrect schedule for instance), the host controller will force a bit stuff error followed by an EOP and the start of the next frame. |
USB COMMAND REGISTER - Bit 7:
| Zitat: | | Max Packet (MAXP). 1=64 bytes. 0=32 bytes. This bit selects the maximum packet size that can be used for full speed bandwidth reclamation at the end of a frame. This value is used by the Host Controller to determine whether it should initiate another transaction based on the time remaining in the SOF counter. Use of reclamation packets larger than the programmed size will cause a Babble error if executed during the critical window at frame end. The Babble error results in the offending endpoint being stalled. Software is responsible for ensuring that any packet which could be executed under bandwidth reclamation be within this size limit. |
Wir wollen hier 512 Byte übertragen (bei ohci geht es in irgendeiner Form problemlos).
Die Stichworte sind: Babble und Stall
Auf einem anderen PC mit UHCI wurden analoge Resultate erzielt, also repräsentativ. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 23:34:29 13.10.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
11:06:10 14.10.2011 Titel: |
|
Zitieren |
Funktionskette zur Unterstützung bei Abhilfe bezüglich Fehler (Babble):
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | // usb2_msd.c, line 600
analyzeDisk(device->disk);
// devicemanager.c, line 296 ff.
FS_ERROR analyzeDisk(disk_t* disk)
{
uint8_t buffer[512];
singleSectorRead(0, buffer, disk); // first sector of partition
// devicemanager.c, line 456
FS_ERROR singleSectorRead(uint32_t sector, uint8_t* buffer, disk_t* disk)
{
disk->accessRemaining++;
return sectorRead(sector, buffer, disk);
}
// devicemanager.c, line 28 ff.
diskType_t FLOPPYDISK = {.readSector = &flpydsk_readSector, .writeSector = &flpydsk_writeSector},
USB_MSD = {.readSector = &usbRead, .writeSector = &usbWrite},
RAMDISK = {.readSector = 0, .writeSector = 0};
// usb2_msd.c, line 603 ff.
FS_ERROR usbRead(uint32_t sector, void* buffer, void* dev)
{
usb2_Device_t* device = dev;
uint32_t blocks = 1; // number of blocks to be read
usbBulkTransfer_t read;
startLogBulkTransfer(&read, 0x28, blocks, 0);
usbSendSCSIcmd(device, device->numInterfaceMSD, device->numEndpointOutMSD, device->numEndpointInMSD,
read.SCSIopcode,
sector, // LBA
read.DataBytesToTransferIN,
&read, buffer, 0);
logBulkTransfer(&read);
return(CE_GOOD);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | // usb2_msd.c, line 600
analyzeDisk(device->disk);
// devicemanager.c, line 296 ff.
FS_ERROR analyzeDisk(disk_t* disk)
{
uint8_t buffer[512];
singleSectorRead(0, buffer, disk); // first sector of partition
// devicemanager.c, line 456
FS_ERROR singleSectorRead(uint32_t sector, uint8_t* buffer, disk_t* disk)
{
disk->accessRemaining++;
return sectorRead(sector, buffer, disk);
}
// devicemanager.c, line 28 ff.
diskType_t FLOPPYDISK = {.readSector = &flpydsk_readSector, .writeSector = &flpydsk_writeSector},
USB_MSD = {.readSector = &usbRead, .writeSector = &usbWrite},
RAMDISK = {.readSector = 0, .writeSector = 0};
// usb2_msd.c, line 603 ff.
FS_ERROR usbRead(uint32_t sector, void* buffer, void* dev)
{
usb2_Device_t* device = dev;
uint32_t blocks = 1; // number of blocks to be read
usbBulkTransfer_t read;
startLogBulkTransfer(&read, 0x28, blocks, 0);
usbSendSCSIcmd(device, device->numInterfaceMSD, device->numEndpointOutMSD, device->numEndpointInMSD,
read.SCSIopcode,
sector, // LBA
read.DataBytesToTransferIN,
&read, buffer, 0);
logBulkTransfer(&read);
return(CE_GOOD);
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | // usb2_msd.c, line 600
analyzeDisk(device->disk);
// devicemanager.c, line 296 ff.
FS_ERROR analyzeDisk(disk_t* disk)
{
uint8_t buffer[512];
singleSectorRead(0, buffer, disk); // first sector of partition
// devicemanager.c, line 456
FS_ERROR singleSectorRead(uint32_t sector, uint8_t* buffer, disk_t* disk)
{
disk->accessRemaining++;
return sectorRead(sector, buffer, disk);
}
// devicemanager.c, line 28 ff.
diskType_t FLOPPYDISK = {.readSector = &flpydsk_readSector, .writeSector = &flpydsk_writeSector},
USB_MSD = {.readSector = &usbRead, .writeSector = &usbWrite},
RAMDISK = {.readSector = 0, .writeSector = 0};
// usb2_msd.c, line 603 ff.
FS_ERROR usbRead(uint32_t sector, void* buffer, void* dev)
{
usb2_Device_t* device = dev;
uint32_t blocks = 1; // number of blocks to be read
usbBulkTransfer_t read;
startLogBulkTransfer(&read, 0x28, blocks, 0);
usbSendSCSIcmd(device, device->numInterfaceMSD, device->numEndpointOutMSD, device->numEndpointInMSD,
read.SCSIopcode,
sector, // LBA
read.DataBytesToTransferIN,
&read, buffer, 0);
logBulkTransfer(&read);
return(CE_GOOD);
} | |
Experiment: Tauscht man in usb2_msd.c 512 konsequent gegen 64 aus, so verschwindet babble (und das daraus folgende stall und USB error). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 16:50:26 14.10.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:18:46 14.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.146 - Rev: 1347"
uhci.h/c: Funktion bool isTransactionSuccessful(uhci_transaction_t* uT) geschaffen, damit der Erfolg korrekt festgestellt werden kann, denn auch bei manchen Fehlern (z.B. babble) stellt der UHCI das inactive-Bit (active==0) ein.
usb2_msd.c: Unterscheidung zwischen ohci/ehci und uhci bei usbRead und usbWrite
TODO: implement 64-byte-packet transfers with UHCI instead of 512-byte-packets with OHCI (obviously auto-split) and EHCI |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:21:36 14.10.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
18:48:51 15.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.147 - Rev: 1348"
ipc.c und paging.c: Style Anpassungen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:27:04 15.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.148 - Rev: 1349" (in ckernel.c versehentlich nicht angepasst)
paging.h/c: uint32_t paging_getVirtAddr(void* physAddress);
Liefert virtuelle Adresse, wenn die phys. Adresse zugeordnet ist, bzw. 0, falls nicht. Damit kann man also auch feststellen, ob eine physische Adresse bereits im Paging verwendet wird. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 20:30:31 15.10.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
21:08:34 15.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.149 - Rev: 1350"
paging.h/c: uintptr_t paging_getVirtAddr(uintptr_t physAddress) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:40:58 15.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.150 - Rev: 1351"
paging_getVirtAddr(uintptr_t physAddress) bezüglich Geschwindigkeit optimiert |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:10:26 16.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.151 - Rev: 1352"
kheap.c: kleine Änderungen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:02:44 17.10.2011 Titel: |
|
Zitieren |
Version 0.0.3.152:
- Initialisierungsreihenfolge bei USB-HCs geändert (*hci_setupUSBDevice)
-> Kein #PF bei UHCI mehr
- Aufsplitten von Transaktionen, die größer als die MPS des Endpoints sind (-> Funktioniert nicht?)
- usbRead/usbWrite werden auch bei UHCI wieder ausgeführt (Teilweiser revert von r1347)
- Bugfix: RAM in Bytes wird wieder korrekt angezeigt (nicht mehr 0 Bytes)
- IPC weiter gefüllt (PCI-Daten)
- IPC-Ausgabe verbessert: waitForKeyStroke alle 36 Zeilen
- Kleinigkeiten |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
08:55:29 18.10.2011 Titel: |
|
Zitieren |
Problem liegt im toggle-Verhalten. Durch Verändern von 1 Transfer auf 8 Transfers passt das nicht mehr (Status In-Transfer (13 bytes) ebenfalls 0 wie der letzte der acht vorherigen In-Transfers):
512: 1 - 0
64: 1 0 1 0 1 0 1 0 - 0 (bumm!) |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 10:19:48 22.10.2011, insgesamt 2-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:22:21 18.10.2011 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: | Problem liegt im toggle-Verhalten. Durch Verändern von 1 Transfer auf 8 Transfers passt das nicht mehr (Status In-Transfer (13 bytes) ebenfalls 0 wie der letzte der acht vorherigen In-Transfers):
512: 1 - 0
64: 1 0 1 0 1 0 1 0 - 0 (bumm!)
|
Dann hat eine Internetquelle, die ich dazu konsultiert habe, unrecht. Die hat nämlich behauptet dass der Split keinen Einfluss auf das Toggle folgender Transaktions hat (die nicht zum gesplitteten Teil gehören) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
20:04:25 21.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.153 - Rev: 1354"
Formale Änderungen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:41:19 21.10.2011 Titel: |
|
Zitieren |
Version 0.0.3.154:
- *hci_setupUSBDevice-Funktionen zusammengefasst in usb_setupDevice
- Neues, generischeres Toggle-System (-> UHCI läuft nun)
- Kleinigkeiten (u.a. überflüssige printf-Parameter an 3 Stellen entfernt) |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
22:10:06 21.10.2011 Titel: |
|
Zitieren |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
14:06:35 23.10.2011 Titel: |
|
Zitieren |
Version 0.0.3.155:
- Speicherverbrauch der *HCI-Treiber reduziert
- USB-Code aufgeräumt und z.T. logischer gestaltet |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:38:50 23.10.2011 Titel: |
|
Zitieren |
Test-Resultat:
3 Typen bei Test mit uhci:
1) Corsair Flash Voyager funktioniert komplett incl. 3:/ttt (lediglich 2 * HC Halted ohne Schadwirkung)
2) EMTEC 4GB: SET ADDRESS ok, GET DEVICE: usb error & stalled
3) Intenso Rainbow Line: bei SET ADDRESS: No response from Device
uhci spec:
| Zitat: | 4.1.5 STALLED
This event indicates that a device/endpoint returned a STALL handshake during a transaction or that the transaction ended in an error condition. This indicates that the endpoint has reached a condition where no more activity can occur without intervention from the driver. In addition to the TDs Stalled bit being set, the Active bit will be cleared. HCD will not accept any more transfers on this endpoint until the condition is cleared by driver software. Like the Babble event, reception of a STALL does not decrement the error counter. A hardware interrupt is signaled to the system. | |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 14:49:25 23.10.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:22:16 23.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.156 - Rev: 1357"
usb weiter optimiert. Bei ausbleibendem Erfolg von GET_DEVICE wird mit Fehlermeldung abgebrochen!
Kleine Korrekturen in uhci (z.B. korrekte Port-Ausgaben j+1).
TODO: Leider wurde der wesentliche Erfolgsfaktor für alle Typen von usb-Sticks bei uhci noch nicht gefunden (s.o.). |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:37:23 23.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.157 - Rev: 1358"
Reihenfolge umgebaut:
Einer der drei EMTEC pensticks, mit denen u.a. getestet wird, läuft basierend auf uhci durch die controls durch und steigt erst bei test-unit-ready (also ab bulk) aus. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 22:06:03 23.10.2011, insgesamt 2-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:20:51 24.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.158 - Rev: 1359"
usb uhci weiter analysiert/optimiert.
- Fehler beseitigt:
- Ergebnisse nur in usb-structs bei transfer.success (sonst: schwere Fehler)
- Disk entfernt beim Ziehen des Pensticks |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:40:55 24.10.2011 Titel: |
|
Zitieren |
Version 0.0.3.159:
- Umbenennungen: usb2 nach usb, USB-Funktionsnamen analog Styleguide und Ausgabe
- usbBulkTransfer_t entfernt
- Anzahl der Retries für fehlgeschlagene Transfers bei allen HC-Typen auf 3 gesetzt |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:00:26 28.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.160 - Rev: 1361"
Formale Änderungen |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
23:45:07 31.10.2011 Titel: |
|
Zitieren |
version = "0.0.3.161 - Rev: 1362"
e1000 via cdi-schnittstelle eingebaut (funktioniert noch nicht), vlt. noch falsche Aufruf-Funktion:
| C/C++ Code: | else if (PCIdev->classID == 0x02 && PCIdev->subclassID == 0x00 &&
PCIdev->deviceID == 0x100E && PCIdev->vendorID == 0x8086) // Intel Gigabit Ethernet Controller // CDI-Interface
{
// driver = &network_drivers[...]; // CDI
printf("\nIntel Gigabit Ethernet Controller");
e1000_driver_init(); // CDI
} | |
| C/C++ Code: | else if (PCIdev->classID == 0x02 && PCIdev->subclassID == 0x00 &&
PCIdev->deviceID == 0x100E && PCIdev->vendorID == 0x8086) // Intel Gigabit Ethernet Controller // CDI-Interface
{
// driver = &network_drivers[...]; // CDI
printf("\nIntel Gigabit Ethernet Controller");
e1000_driver_init(); // CDI
} | |
| C/C++ Code: | else if (PCIdev->classID == 0x02 && PCIdev->subclassID == 0x00 &&
PCIdev->deviceID == 0x100E && PCIdev->vendorID == 0x8086) // Intel Gigabit Ethernet Controller // CDI-Interface
{
// driver = &network_drivers[...]; // CDI
printf("\nIntel Gigabit Ethernet Controller");
e1000_driver_init(); // CDI
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 00:23:57 01.11.2011, insgesamt 3-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
23:52:38 31.10.2011 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: | version = "0.0.3.161 - Rev: 1362"
e1000 via cdi-schnittstelle eingebaut (funktioniert noch nicht), vlt. noch falsche Aufruf-Funktion:
| C/C++ Code: | else if (PCIdev->classID == 0x02 && PCIdev->subclassID == 0x00 &&
PCIdev->deviceID == 0x100E && PCIdev->vendorID == 0x8086) // Intel Gigabit Ethernet Controller // CDI-Interface
{
// driver = &network_drivers[...]; // CDI
printf("\nIntel Gigabit Ethernet Controller");
e1000_driver_init(); // CDI
} | |
| C/C++ Code: | else if (PCIdev->classID == 0x02 && PCIdev->subclassID == 0x00 &&
PCIdev->deviceID == 0x100E && PCIdev->vendorID == 0x8086) // Intel Gigabit Ethernet Controller // CDI-Interface
{
// driver = &network_drivers[...]; // CDI
printf("\nIntel Gigabit Ethernet Controller");
e1000_driver_init(); // CDI
} | |
| C/C++ Code: | else if (PCIdev->classID == 0x02 && PCIdev->subclassID == 0x00 &&
PCIdev->deviceID == 0x100E && PCIdev->vendorID == 0x8086) // Intel Gigabit Ethernet Controller // CDI-Interface
{
// driver = &network_drivers[...]; // CDI
printf("\nIntel Gigabit Ethernet Controller");
e1000_driver_init(); // CDI
} | |
|
Nichts mit "vielleicht". Das ist die falsche Funktion. Nächste Aufgabe ist also, herauszufinden, welche Funktion aufgerufen werden soll. |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:24:07 01.11.2011 Titel: |
|
Zitieren |
taljeth in #lost: ... bei jedem Treiber das .driver_init aufrufen, und dann für jedes PCI-Gerät die .device_init, bis sich ein Treiber für zuständig erklärt
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | 1 2 3 4 5 6 7 8 9 10 11 12 13 | static struct cdi_net_driver driver = {
.drv = {
.name = DRIVER_NAME,
.type = CDI_NETWORK,
.bus = CDI_PCI,
.init = e1000_driver_init,
.destroy = e1000_driver_destroy,
.init_device = e1000_init_device,
.remove_device = e1000_remove_device,
},
.send_packet = e1000_send_packet,
}; | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | static struct cdi_net_driver driver = {
.drv = {
.name = DRIVER_NAME,
.type = CDI_NETWORK,
.bus = CDI_PCI,
.init = e1000_driver_init,
.destroy = e1000_driver_destroy,
.init_device = e1000_init_device,
.remove_device = e1000_remove_device,
},
.send_packet = e1000_send_packet,
}; | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | static struct cdi_net_driver driver = {
.drv = {
.name = DRIVER_NAME,
.type = CDI_NETWORK,
.bus = CDI_PCI,
.init = e1000_driver_init,
.destroy = e1000_driver_destroy,
.init_device = e1000_init_device,
.remove_device = e1000_remove_device,
},
.send_packet = e1000_send_packet,
}; | |
Es fehlt noch: | C/C++ Code: | | e1000_init_device(/* struct cdi_bus_data* */); // CDI | |
| C/C++ Code: | | e1000_init_device(/* struct cdi_bus_data* */); // CDI | |
| C/C++ Code: | | e1000_init_device(/* struct cdi_bus_data* */); // CDI | |
Woher bekommt man diese Daten für struct cdi_bus_data? Beim Aufruf haben wir das korrekte pci device bereits identifiziert mit allen PCI-Daten (bus:device.function).
Bei VBox kann man mit der "Intel PRO/1000 MT Desktop" die "e1000" im PCI Scan emulieren. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:17:34 01.11.2011, insgesamt 5-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:04:08 01.11.2011 Titel: |
|
Zitieren |
Version 0.0.3.162:
- CDI weitergebaut, läuft nun teilweise
-> "Linkermagie" gefixt. Section war falsch angegeben.
-> Geräte werden nun initialisiert
-> CDI-List vollständig implementiert, andere Teile weiter implementiert
- Makefile: Automatischer build aller Unterordner von /kernel
- Bugfix: Backspace-"Zeichen" wird nicht mehr auf den Bildschirm geschrieben
- Bugfix: PrettyOS läuft wieder auf Rechnern mit 4 GiB RAM. (Dazu musste die Speicheranordnung geändert werden, damit zugleich eine Optimierung für Rechner mit weniger Speicher möglich bleibt) |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:50:55 01.11.2011 Titel: |
|
Zitieren |
Version 0.0.3.163:
- Bugfix: MAC wird bei CDI-Netzwerkkarten in network_adapter_t-Struktur kopiert |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:06:37 01.11.2011 Titel: |
|
Zitieren |
Der via CDI eingebundene e1000-Treiber läuft nun.
Test: qemu 0.14.1 browser.elf |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:13:35 02.11.2011 Titel: |
|
Zitieren |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
01:33:45 02.11.2011 Titel: |
|
Zitieren |
version = "0.0.3.165 - Rev: 1366"
Wochentag-Formel nochmals überarbeitet:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | static uint16_t days[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
static bool isLeapyear(uint16_t year)
{
return (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0));
}
static uint8_t calculateWeekday(uint16_t year, uint8_t month, int32_t day)
{
day += 6; // 1.1.2000 was a saturday
day += (year-2000) * 146097.0/400.0 + days[month-1];
if (isLeapyear(year) && (month < 2 || (month == 2 && day <= 28)))
{
day--;
}
return ( day % 7 + 1 );
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | static uint16_t days[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
static bool isLeapyear(uint16_t year)
{
return (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0));
}
static uint8_t calculateWeekday(uint16_t year, uint8_t month, int32_t day)
{
day += 6; // 1.1.2000 was a saturday
day += (year-2000) * 146097.0/400.0 + days[month-1];
if (isLeapyear(year) && (month < 2 || (month == 2 && day <= 28)))
{
day--;
}
return ( day % 7 + 1 );
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | static uint16_t days[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
static bool isLeapyear(uint16_t year)
{
return (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0));
}
static uint8_t calculateWeekday(uint16_t year, uint8_t month, int32_t day)
{
day += 6; // 1.1.2000 was a saturday
day += (year-2000) * 146097.0/400.0 + days[month-1];
if (isLeapyear(year) && (month < 2 || (month == 2 && day <= 28)))
{
day--;
}
return ( day % 7 + 1 );
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 01:34:58 02.11.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:24:24 02.11.2011 Titel: |
|
Zitieren |
version = "0.0.3.166 - Rev: 1367" (in ckernel.c versehentlich eins zu hoch)
Dank an Volkard für seine Hinweise. Damit haben wir nun auch vor 2000 den Wochentag im Griff:
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | static uint16_t days[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
static bool isLeapyear(uint16_t year)
{
return (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0));
}
// Gregorian calender started 15th October 1582
static uint8_t calculateWeekday(uint16_t year, uint8_t month, int32_t day)
{
day += 6; // 1.1.1600 was a saturday
day += (year/*-1600*/) * 146097.0/400.0 + days[month-1];
if (isLeapyear(year) && (month < 2 || (month == 2 && day <= 28)))
{
day--;
}
return ( day % 7 + 1 );
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | static uint16_t days[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
static bool isLeapyear(uint16_t year)
{
return (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0));
}
// Gregorian calender started 15th October 1582
static uint8_t calculateWeekday(uint16_t year, uint8_t month, int32_t day)
{
day += 6; // 1.1.1600 was a saturday
day += (year/*-1600*/) * 146097.0/400.0 + days[month-1];
if (isLeapyear(year) && (month < 2 || (month == 2 && day <= 28)))
{
day--;
}
return ( day % 7 + 1 );
} | |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | static uint16_t days[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
static bool isLeapyear(uint16_t year)
{
return (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0));
}
// Gregorian calender started 15th October 1582
static uint8_t calculateWeekday(uint16_t year, uint8_t month, int32_t day)
{
day += 6; // 1.1.1600 was a saturday
day += (year/*-1600*/) * 146097.0/400.0 + days[month-1];
if (isLeapyear(year) && (month < 2 || (month == 2 && day <= 28)))
{
day--;
}
return ( day % 7 + 1 );
} | |
|
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 02:24:46 02.11.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
13:13:33 03.11.2011 Titel: |
|
Zitieren |
Version 0.0.3.168:
- Ordnerstruktur angepasst:
-- Ordner tasking und util geschaffen
- Devicemanager-Schnittstelle verbessert |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
13:41:34 04.11.2011 Titel: |
|
Zitieren |
Version 0.0.3.169:
- Clang ins Buildsystem vollständig integriert
- __unix__ durch Compilererkennung ersetzt (-> Damit "out-of-the-box"-Lauffähig mit GCC 4.5, 4.6 und clang)
- Ergebnis von calculateWeekday gecacht - Nur noch bei Veränderung des Wochentags aufgerufen |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
17:46:04 06.11.2011 Titel: |
|
Zitieren |
version = "0.0.3.170 - Rev: 1370"
Formale Änderungen, Arrays in keyboard.c als Tabelle übersichtlich angeordnet |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
Zuletzt bearbeitet von Erhard Henkes am 17:47:48 06.11.2011, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:57:36 08.11.2011 Titel: |
|
Zitieren |
Version 0.0.3.171:
- Maustreiber nutzt nun Event-System
- Paging-Modul invalidiert TLB-Einträge, wenn das aktive PD verändert wird
- setjmp "implementiert". Funktioniert leider nicht. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:53:17 11.11.2011 Titel: |
|
Zitieren |
Version 0.0.3.172:
- %S-Option bei printf (kernel) ergänzt (gibt Größen in Bytes aus)
- data.o/asm inkrementell gebaut
- Größe einer disk wird angegeben bei strg+d
- Bugfix: Event-Enum im Userspace synchronisiert -> Netzwerk geht wieder
- Kleinere Optimierungen. U.a.:
-- htonl und Makros CLEAR_BIT und SET_BIT (neu) als Assembler-"Intrinsics"
-- Speicher zwischen 0 und 20 MiB mit MEM_NOTLBUPDATE versehen (wird beim Setzen von cr3 nicht aus dem TLB-Cache genommen)
-- Weitere Funktionen inlined |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
14:57:02 12.11.2011 Titel: |
|
Zitieren |
version = "0.0.3.172 - Rev: 1373"
irc.c umgestellt auf DNS |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:03:02 13.11.2011 Titel: |
|
Zitieren |
Version 0.0.3.173:
- Führende 0 bei ftoa ergänzt (basiert nun auf itoa) <-- Das ist sogar standardisiert: http://de.wikipedia.org/wiki/ISO_31-0
- getc, fputs, putc, sinh, cosh, tanh implementiert (-> math.h vollständig)
- Calc überarbeitet (v0.4.0):
-- Unterstützt nun negative Zahlen, Potenzen und Klammern
-- Rechnung kann als Kommandozeilenargument übergeben werden
- IRC verbessert: Server kann beim Start ausgewählt werden
- Zeitmessung in psort verbessert: Zeit zur Ergebnisprüfung nicht mehr mitgemessen
- FloppyImage.img nicht mehr gelöscht vorm Build
- Bugfix: Größenangabe bei Floppys gefixt (1440 KB statt KiB als Ausgangsbasis)
- Bugfix: pow mit Workaround korrigiert für negative Exponenten |
Zuletzt bearbeitet von Mr X am 00:20:22 13.11.2011, insgesamt 3-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
00:14:48 13.11.2011 Titel: |
|
Zitieren |
Disketten verfügen über 1440 KiB (2880*512 byte), wird aber immer als KB geschrieben. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
00:19:50 13.11.2011 Titel: |
|
Zitieren |
| Erhard Henkes schrieb: | | Disketten verfügen über 1440 KiB (2880*512 byte), wird aber immer als KB geschrieben. |
Bug beim Bugfix eingebaut. Wird behoben. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
13:49:19 13.11.2011 Titel: |
|
Zitieren |
Version 0.0.3.174:
- Buildsystem verbessert:
-- Unbenutzte Symbole aus den Userbibliotheken werden nicht mehr gelinkt.
-- Strip bereits beim Linken angewandt
-- Userprogramme bei Änderungen an Userbibliotheken automatisch neu übersetzt
- pow, log und log10 gefixt (neu implementiert)
- Fix für Floppygröße aus r1374 reverted |
|
|
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
02:09:04 14.11.2011 Titel: |
|
Zitieren |
@MrX: calc.elf liefert nun bei 0^5 die 0, das ist fein, bei 5^3 kommt brav die 125, aber ab 5^4 kommt 624 raus, auch bei 5^5 eins zu wenig. Bei 25^0.5 kommt erst 1.5 dann 1. Da sollte man nachschärfen. |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
15:08:57 14.11.2011 Titel: |
|
Zitieren |
| Zitat: | | Bei 25^0.5 kommt erst 1.5 dann 1 |
Der Taschenrechner kann keine Fließkommazahlen. Er rechnet:
25^0 => 1 -> 1.5 => 1,5 -> atoi("1.5") => 1
| Zitat: | | 5^4 kommt 624 raus, auch bei 5^5 eins zu wenig |
Rundungsfehler, da der Taschenrechner Integer nutzt, aber mit dem Fließkommafunktionen rechnet. |
Zuletzt bearbeitet von Mr X am 15:11:48 14.11.2011, insgesamt 1-mal bearbeitet |
|
 |
Erhard Henkes
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2000
Beiträge: 11924
|
Erhard Henkes Mitglied
19:47:20 14.11.2011 Titel: |
|
Zitieren |
Vor der Benutzung der aktuellen Version von calc.elf wird gewarnt. Die Ergebnisse sind weitgehend falsch. Das PrettyOS Team übernimmt keinerlei Haftung für evtl. daraus entstehende Schäden! |
_________________ OS-Development-, C++, Win32-API-, MFC-, Chemie-, Robotik- und Flugsimulator-Tutorials
http://www.henkessoft.de/index.htm
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:18:19 15.11.2011 Titel: |
|
Zitieren |
Version 0.0.3.175:
- Unterstützung für Sysenter/Sysexit. Code aber deaktiviert (task.c, z. 146)
- Unterstützung für SSE: OSFXSR-Bit in CR4 gesetzt, FPU-Status bei Unterstützung entsprechend mit fxsave und fxrstor gesichert
- Global Pages aktiviert (in CR4)
- Bugfix: CPUID-Code früher initialisiert (vor erster Verwendung)
- Bugfix: Inkrementeller Build für initrd.dat gefixt
- Bugfix: "volatile foo*" durch "foo* volatile" ersetzt, wo sinnvoll. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
10:56:18 20.11.2011 Titel: |
|
Zitieren |
Version 0.0.3.176:
- fsmanager-Schnittstelle geändert: fwrite und fread statt fputc und fgetc als Treiberschnittstelle
- Write-Caching im Devicemanager implementiert
- Caching-Mechanismus im FAT-Treiber ausgebaut; Weitere Optimierungen dort. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:05:17 21.12.2011 Titel: |
|
Zitieren |
Version 0.0.3.177:
- FAT-Treiber weiter aufgeräumt
- System friert bei Fehlern wie "Division durch 0" nicht mehr ein
- bochs.bxrc auf Bochs 2.5 geupdated |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
21:43:23 08.01.2012 Titel: |
|
Zitieren |
Version 0.0.3.178:
- Stilistische Änderungen um ckernel.c (zusammen mit ehenkes ausgearbeitet)
- fpu.c in cpu.c integriert
- Kleiner Fix an der Compilererkennung in der userlib
- strg+s startet die Shell
- PrettyOS gibt nicht mehr stupide [OK] beim Start aus: Reihenfolge: Ausgabe "Was" - Ausführung - Ausgabe "Ergebnis" |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
18:35:38 13.01.2012 Titel: |
|
Zitieren |
Version 0.0.3.179:
- Speicherlayout überarbeitet: Löcher im Bereich ~ 10 MiB beseitigt. PrettyOS fordert nur noch 12 MiB RAM.
- paging.c überarbeitet bzgl. Kommentaren und Codelayout. Feste Adressen durch Makros ersetzt. (Zusammen mit ehenkes ausgearbeitet)
- Dokumentation in memory.txt verbessert |
Zuletzt bearbeitet von Mr X am 18:35:59 13.01.2012, insgesamt 1-mal bearbeitet |
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
20:40:42 16.01.2012 Titel: |
|
Zitieren |
Version 0.0.3.180:
- Code der ELF- und PE-Treiber überarbeitet, Funktionsnamen der Schnittstelle geändert (gemeinsam mit ehenkes erarbeitet) |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
19:22:01 31.03.2012 Titel: |
|
Zitieren |
Version 0.0.3.181:
- Bugfix: todolist_create allokiert nun Speicher richtiger Größe (cppcheck-Fund)
- Diverse Verbesserungen an der C-Standardbibliothek:
-- string.c: strcspn, strerror, strspn und strtok implementiert, Prototyp von strchr korrigiert
-- signal.c: Implementiert
-- stdlib.c: abort() sendet nun SIGABRT; atexit implementiert
-- errno.h: Namen der Fehler korrigiert (Präfix "E" statt "ERR")
- Calc fängt Division durch 0 nun ab
- Kleinigkeiten |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
17:03:27 08.04.2012 Titel: |
|
Zitieren |
Nach zahlreichen Änderungen, Verbesserungen und neuen Funktionen und genau 200 Revisionen nach 0.0.3.0 erhöhen wir die Versionsnummer auf:
PrettyOS 0.0.4.0
Neue Features:
- Erweiterte USB-Unterstützung
-> UHCI-, OHCI-Treiber neu
-> EHCI-Treiber deutlich verbessert
-> USB-Code deutlich überarbeitet
- CDI-Unterstützung
-> e1000-Treiber eingebunden
- PrettyIPC-Baum
- Vollständige Clang-Unterstützung
Verbesserungen:
- Bootloader optimiert
- "File not Found"-Fehler behoben
- Einige neue Userprogramme, alte verbessert. Lizenzen vereinheitlicht.
- Erweiterte Debug-Funktionalität: Broken-Free-Diagnose
- Ausgabecode von Kernel in Shell/Userspace verlagern
- fast vollständige C-Standardbibliothek (Userbereich)
- Zahlreiche kleine Bugfixes und Verbesserungen
Version 0.0.4.0 - Rev. 1383
- APIC-Rahmen eingefügt; noch deaktiviert. |
|
|
|
 |
Mr X
Mitglied
Benutzerprofil
Anmeldungsdatum: 18.09.2007
Beiträge: 1073
|
Mr X Mitglied
11:17:35 09.04.2012 Titel: |
|
Zitieren |
Version 0.0.4.1:
- APIC-Registeradressen korrigiert
- APIC+PIC-Modus, bis unser APIC-Treiber fertig ist; APIC-Treiber aktiviert |
|
|
|
 |