Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - Martin Erhardt

Seiten: 1 ... 3 4 [5] 6 7 ... 9
81
Lowlevel-Coding / Re: Qemu
« am: 22. January 2013, 15:12 »
/usr/bin/qemu-system-x86_64 -cdrom ~/git/el_toro_repo/bootable.iso -d int -no-kvm -d int
so starte ich das zumindest auf Linux in meinem build und run skript, ohne das img/iso als param weiß qemu ja gar nicht was es starten soll und im standard Qemu gibt es kein grafisches Auswahlmenu zum starten wie bei VirtualBox(ich habe auf Ubuntu ne zeitlang AQemu genutzt das)

PS: Wir Hardcore Kernel Hacker verwenden Windoof eh nur zum zocken ;-)
82
Lowlevel-Coding / Re: Userspace geht nicht
« am: 20. January 2013, 16:03 »
mhm ja stimmt jetzt gez :D Vielen Dank
Little Endian hat mich da bloß ein verwirrt.
Ich hätte es natürlich auch so lassen können wo es doch funktionierte aber ich habe gedacht dass die Handleradressen unter 0x10000 lägen und dieser "Fehler" daher keine auswirkungen hätte.
83
Lowlevel-Coding / Re: Userspace geht nicht
« am: 20. January 2013, 15:49 »
Sonstiges:
Du willst bestimmt nicht deine Assembler Files in der .gitignore haben. Also schmeiß die zeile *.S da raus.
Wie bin ich eig auf die Idee gekommen? :)
idt[i].isr_offset2 = (handler<< 16) & 0xffffLL;Ich dachte x86 ist Little Endian oder gilt dass nur für die Register?
84
OS-Design / Re: Hilfe in der OS-Dev-Tutorial (Teil 9)
« am: 20. January 2013, 15:45 »
Es gibt auch ein englisches Forum(http://forum.osdev.org/ ).Dieses Google Translate gequatsche kann man sich ja nicht anhören.

Der PageFault kommt daher ,dass für den Userspace nichts gemapt wurde(siehe hier: http://forum.lowlevel.eu/index.php?topic=3058.msg35562#msg35562)
85
Lowlevel-Coding / Re: Userspace geht nicht
« am: 19. January 2013, 19:44 »
Ich habe aber mehr das TSS im Verdacht weil da was neu dazugekommen ist Va. verstehe ich dass garnicht vollständig:
Was soll beispielsweise die Initialisierung mit 0x10:
static uint32_t tss[32] = { 0, 0, 0x10 };oder das einsetzen:
tss[1] = (uint32_t) (new_cpu + 1);wieso + 1 was soll da liegen und wieso tss[1]und nicht tss[0]
86
Lowlevel-Coding / Re: Userspace geht nicht
« am: 19. January 2013, 19:33 »
Das kann es nicht sein im Beispielkernel heißt es ja auch:
.macro intr_stub nr
.global intr_stub_\nr
intr_stub_\nr:
    pushl $0
    pushl $\nr
    jmp intr_common_handler
.endm

.macro intr_stub_error_code nr
.global intr_stub_\nr
intr_stub_\nr:
    pushl $\nr
    jmp intr_common_handler
.endm

// Exceptions
intr_stub 0
intr_stub 1
intr_stub 2
intr_stub 3
intr_stub 4
intr_stub 5
intr_stub 6
intr_stub 7
intr_stub_error_code 8
intr_stub 9
intr_stub_error_code 10
intr_stub_error_code 11
intr_stub_error_code 12
intr_stub_error_code 13
intr_stub_error_code 14
intr_stub 15
intr_stub 16
intr_stub_error_code 17
intr_stub 18

// IRQs
intr_stub 32
intr_stub 33
// usw. bis 47

// Syscall
intr_stub 48
Ich glaube bei diesen Exceptions wird automatisch von der CPU eine Errornumer gepusht.
@Jidder ja Ich werde was mit GDB versuchen was meinst du aber mit einem balancierten Stack?
87
Lowlevel-Coding / Re: Userspace geht nicht
« am: 19. January 2013, 18:05 »
Ja stimmt RaceCondition nennt man sowas nicht, weil das System ja so oder so nicht geht aber die Art wie qemu crasht nichts tut oder vor "Unimplemented flash cmd sequence"warnt, hat sicher was mit dem zeitlichen Verhalten bestimmter Einzeloperationen zu tun.
Zitat
Eine Race Condition (auf Deutsch „kritischer Wettlauf“, wörtlich „Wettlaufsituation“) ist eine Konstellation, in der das Resultat einer Operation vom zeitlichen Verhalten bestimmter Einzeloperationen abhängt. Sie stellen eine sehr schwer auffindbare Fehlerquelle dar, da das erfolgreiche Abschließen der bewussten Operation sozusagen vom Zufall abhängt – mal funktioniert das System, mal nicht.
88
Lowlevel-Coding / Re: Userspace geht nicht
« am: 19. January 2013, 17:51 »
Vielen Dank für die Info aber Ich habe trotzdem noch diesen RaceCondition ohne einen Exception oder Error zu bekommen
89
Lowlevel-Coding / Re: Userspace geht nicht
« am: 19. January 2013, 16:37 »
Hilfe! :wink:
Anfang von qemu.log bei pflash
SMM: enter
EAX=00000001 EBX=17fe1f30 ECX=02000000 EDX=00000cfc
ESI=000f28dd EDI=0003802d EBP=17fe1d50 ESP=00006eb0
EIP=000f2c4a EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     000fd3a8 00000037
IDT=     000fd3e6 00000000
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=000f28b0 CCD=00000001 CCO=LOGICB 
EFER=0000000000000000
SMM: after RSM
EAX=00000001 EBX=17fe1f30 ECX=02000000 EDX=00000cfc
ESI=000f28dd EDI=0003802d EBP=17fe1d50 ESP=00006eb0
EIP=000f2c4a EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00c09b00 DPL=0 CS32 [-RA]
SS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00c09300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT=     000fd3a8 00000037
IDT=     000fd3e6 00000000
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00000000 CCD=00000000 CCO=EFLAGS 
EFER=0000000000000000
     0: v=20 e=0000 i=0 cpl=0 IP=0008:0000000000100472 pc=0000000000100472 SP=0010:000000000010600c EAX=0000000000106018
EAX=00106018 EBX=00036d04 ECX=00000001 EDX=00106018
ESI=0005d980 EDI=0005d976 EBP=00067e5c ESP=0010600c
EIP=00100472 EFL=00000202 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00106040 00000080 0000e900 DPL=3 TSS32-avl
GDT=     0010a8c0 0000002f
IDT=     0010a0c0 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00000000 CCD=00105fdc CCO=EFLAGS 
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
     1: v=0d e=a0f8 i=0 cpl=0 IP=0008:0000000000001f81 pc=0000000000001f81 SP=0010:0000000000106018 EAX=0000000000106000
EAX=00106000 EBX=00036d04 ECX=00000001 EDX=00106030
ESI=0005d980 EDI=0005d976 EBP=00067e5c ESP=00106018
EIP=00001f81 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00106040 00000080 0000e900 DPL=3 TSS32-avl
GDT=     0010a8c0 0000002f
IDT=     0010a0c0 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00106018 CCD=0020c030 CCO=SHLB   
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
     2: v=0d e=0470 i=0 cpl=0 IP=0008:0000000000001f81 pc=0000000000001f81 SP=0010:0000000000106000 EAX=0000000000106008
EAX=00106008 EBX=00036d04 ECX=00000001 EDX=00106060
ESI=0005d980 EDI=0005d976 EBP=00067e5c ESP=00106000
EIP=00001f81 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00106040 00000080 0000e900 DPL=3 TSS32-avl
GDT=     0010a8c0 0000002f
IDT=     0010a0c0 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00106030 CCD=0020c060 CCO=SHLB   
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
     3: v=0d e=a000 i=0 cpl=0 IP=0008:0000000000001f81 pc=0000000000001f81 SP=0010:0000000000106008 EAX=0000000000105ff0
EAX=00105ff0 EBX=00036d04 ECX=00000001 EDX=001060c0
ESI=0005d980 EDI=0005d976 EBP=00067e5c ESP=00106008
EIP=00001f81 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00106040 00000080 0000e900 DPL=3 TSS32-avl
GDT=     0010a8c0 0000002f
IDT=     0010a0c0 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00106060 CCD=0020c0c0 CCO=SHLB   
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
     4: v=0d e=0460 i=0 cpl=0 IP=0008:0000000000001f81 pc=0000000000001f81 SP=0010:0000000000105ff0 EAX=0000000000105ff8
EAX=00105ff8 EBX=00036d04 ECX=00000001 EDX=00106080
ESI=0005d980 EDI=0005d976 EBP=00067e5c ESP=00105ff0
EIP=00001f81 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00106040 00000080 0000e900 DPL=3 TSS32-avl
GDT=     0010a8c0 0000002f
IDT=     0010a0c0 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=001060c0 CCD=0020c180 CCO=SHLB   
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
     5: v=0d e=a0f8 i=0 cpl=0 IP=0008:0000000000001f81 pc=0000000000001f81 SP=0010:0000000000105ff8 EAX=0000000000105fe0
EAX=00105fe0 EBX=00036d04 ECX=00000001 EDX=00106000
ESI=0005d980 EDI=0005d976 EBP=00067e5c ESP=00105ff8
EIP=00001f81 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00106040 00000080 0000e900 DPL=3 TSS32-avl
GDT=     0010a8c0 0000002f
IDT=     0010a0c0 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00106080 CCD=0020c100 CCO=SHLB   
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
     6: v=0d e=0440 i=0 cpl=0 IP=0008:0000000000001f81 pc=0000000000001f81 SP=0010:0000000000105fe0 EAX=0000000000105fe8
EAX=00105fe8 EBX=00036d04 ECX=00000001 EDX=00106000
ESI=0005d980 EDI=0005d976 EBP=00067e5c ESP=00105fe0
EIP=00001f81 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00106040 00000080 0000e900 DPL=3 TSS32-avl
GDT=     0010a8c0 0000002f
IDT=     0010a0c0 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00106000 CCD=0020c000 CCO=SHLB   
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
     7: v=0d e=a0e0 i=0 cpl=0 IP=0008:0000000000001f81 pc=0000000000001f81 SP=0010:0000000000105fe8 EAX=0000000000105fd0
EAX=00105fd0 EBX=00036d04 ECX=00000001 EDX=00106000
ESI=0005d980 EDI=0005d976 EBP=00067e5c ESP=00105fe8
EIP=00001f81 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00106040 00000080 0000e900 DPL=3 TSS32-avl
GDT=     0010a8c0 0000002f
IDT=     0010a0c0 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00106000 CCD=0020c000 CCO=SHLB   
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
     8: v=0d e=0410 i=0 cpl=0 IP=0008:0000000000001f81 pc=0000000000001f81 SP=0010:0000000000105fd0 EAX=0000000000105fd8
EAX=00105fd8 EBX=00036d04 ECX=00000001 EDX=00106000
ESI=0005d980 EDI=0005d976 EBP=00067e5c ESP=00105fd0
EIP=00001f81 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00106040 00000080 0000e900 DPL=3 TSS32-avl
GDT=     0010a8c0 0000002f
IDT=     0010a0c0 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00106000 CCD=0020c000 CCO=SHLB   
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
     9: v=0d e=a0b8 i=0 cpl=0 IP=0008:0000000000001f81 pc=0000000000001f81 SP=0010:0000000000105fd8 EAX=0000000000105fc0
EAX=00105fc0 EBX=00036d04 ECX=00000001 EDX=00106000
ESI=0005d980 EDI=0005d976 EBP=00067e5c ESP=00105fd8
EIP=00001f81 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00106040 00000080 0000e900 DPL=3 TSS32-avl
GDT=     0010a8c0 0000002f
IDT=     0010a0c0 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00106000 CCD=0020c000 CCO=SHLB   
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
    10: v=0d e=04d0 i=0 cpl=0 IP=0008:0000000000001f81 pc=0000000000001f81 SP=0010:0000000000105fc0 EAX=0000000000105fc8
EAX=00105fc8 EBX=00036d04 ECX=00000001 EDX=00106000
ESI=0005d980 EDI=0005d976 EBP=00067e5c ESP=00105fc0
EIP=00001f81 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00106040 00000080 0000e900 DPL=3 TSS32-avl
GDT=     0010a8c0 0000002f
IDT=     0010a0c0 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00106000 CCD=0020c000 CCO=SHLB   
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
    11: v=0d e=a080 i=0 cpl=0 IP=0008:0000000000001f81 pc=0000000000001f81 SP=0010:0000000000105fc8 EAX=0000000000105fb0
EAX=00105fb0 EBX=00036d04 ECX=00000001 EDX=00106000
ESI=0005d980 EDI=0005d976 EBP=00067e5c ESP=00105fc8
EIP=00001f81 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00106040 00000080 0000e900 DPL=3 TSS32-avl
GDT=     0010a8c0 0000002f
IDT=     0010a0c0 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00106000 CCD=0020c000 CCO=SHLB   
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
    12: v=0d e=0480 i=0 cpl=0 IP=0008:0000000000001f81 pc=0000000000001f81 SP=0010:0000000000105fb0 EAX=0000000000105fb8
90
Lowlevel-Coding / Userspace geht nicht
« am: 18. January 2013, 23:52 »
Ich will bei mir den Userspace implementieren aber es geht nicht;entweder passiert gar nichts (keine KBC Interrupts oder Multitasking "A"s"B"s)
meistens folgen aber in großer Zahl:
pflash_write: Unimplemented flash cmd sequence (offset 000000000001fff0, wcycle 0x0 cmd 0x0 value 0xda)oder qemu crasht:
qemu: fatal: Trying to execute code outside RAM or ROM at 0x0000000026f28966

EAX=00106621 EBX=00036d04 ECX=00000001 EDX=00106018
ESI=0005d980 EDI=0005d976 EBP=00067e5c ESP=00100009
EIP=26f28966 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0001 00000000 00000000 00000000
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00106040 00000080 0000e900 DPL=3 TSS32-avl
GDT=     0010a8c0 0000002f
IDT=     0010a0c0 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00106621 CCD=0010667a CCO=ADDB   
EFER=0000000000000000
FCW=037f FSW=0000 [ST=0] FTW=00 MXCSR=00001f80
FPR0=0000000000000000 0000 FPR1=0000000000000000 0000
FPR2=0000000000000000 0000 FPR3=0000000000000000 0000
FPR4=0000000000000000 0000 FPR5=0000000000000000 0000
FPR6=0000000000000000 0000 FPR7=0000000000000000 0000
XMM00=00000000000000000000000000000000 XMM01=00000000000000000000000000000000
XMM02=00000000000000000000000000000000 XMM03=00000000000000000000000000000000
XMM04=00000000000000000000000000000000 XMM05=00000000000000000000000000000000
XMM06=00000000000000000000000000000000 XMM07=00000000000000000000000000000000
/home/martin/git/el_toro_repo/build.sh: line 44: 12491 Aborted                 (core dumped) /usr/bin/qemu-system-x86_64 -cdrom ~/git/el_toro_repo/bootable.iso -d int -no-kvm -d int
oder:
qemu: fatal: Trying to execute code outside RAM or ROM at 0x0000000026f28966

EAX=00106621 EBX=00036d04 ECX=00000001 EDX=00106018
ESI=0005d980 EDI=0005d976 EBP=00067e5c ESP=00100009
EIP=26f28966 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0001 00000000 00000000 00000000
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00106040 00000080 0000e900 DPL=3 TSS32-avl
GDT=     0010a8c0 0000002f
IDT=     0010a0c0 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00106621 CCD=0010667a CCO=ADDB   
EFER=0000000000000000
FCW=037f FSW=0000 [ST=0] FTW=00 MXCSR=00001f80
FPR0=0000000000000000 0000 FPR1=0000000000000000 0000
FPR2=0000000000000000 0000 FPR3=0000000000000000 0000
FPR4=0000000000000000 0000 FPR5=0000000000000000 0000
FPR6=0000000000000000 0000 FPR7=0000000000000000 0000
XMM00=00000000000000000000000000000000 XMM01=00000000000000000000000000000000
XMM02=00000000000000000000000000000000 XMM03=00000000000000000000000000000000
XMM04=00000000000000000000000000000000 XMM05=00000000000000000000000000000000
XMM06=00000000000000000000000000000000 XMM07=00000000000000000000000000000000
/home/martin/git/el_toro_repo/build.sh: line 44:  5833 Aborted                 (core dumped) /usr/bin/qemu-system-x86_64 -cdrom ~/git/el_toro_repo/bootable.iso -d int -no-kvm -d int
Code:
http://uploadingit.com/file/b7dsflnyiislyhyq/el_toro_repo.zip

Wahrscheinlich ist die GDT falsch geladen zuminestens ist es komisch, dass sie fast gleich der IDT ist.
Sieht aus als ginge iwas mit dem TSS nicht und TSS überschreibt irgendwelche daten , Ich kann nur spekulieren.Ich habe den Quelltext wochenlang übrprüft und ägere mich jetzt wegen jedem feauture um Hilfe fragen zu müssen aber gut.
91
Okay vielen dank wenn mit dem Segmentwechsel also nicht der Rang gewechselt wird wie dann?
92
Lowlevel-Coding / Re: Windowstreiber-Schnittstelle
« am: 18. January 2013, 20:05 »
Hallo,
der große Vorteil eines Monolithen ist, dass du interne Funktionen ohne Overhead aufrufen kannst, es also bestimmte Funktionalität nur einmal im gesamten Kernel geben muss. Da sind Bugfixes maximal effektiv.
Also wenn diese Funktionen in einer DLL liegen dann sind sie aus mehreren User-Mode-Treibern mit genau so wenig Overhead aufzurufen und belegen auch nur einmal RAM/Cache
Das HauptperformanceProblem bei echten Mikrokernels ist ja weniger die Kommunikation mit dem ohnehin minimalen Kernel sondern die der UserspaceTreiber untereinander. Die Kommunikation zwischen SATA/USB/PATA dem FS und VFS muss über IPC erfolgen und das ist natürlich nicht so effizient wie Funktionsaufrufe.

Das andere Problem ist, dass die Schnittstellen innerhalb von Kernel nicht stabil sind.
Gut, man könnte aber auch zusätzliche standarisierte stabile Abstraktionschichten zwischen beispielsweise den Datenträger Treibern und den FS Treibern legen.(mit so einer Abstraktionsschicht könnten die FS Treiber auch verschiedene physche Datenträger gleich ansprechen)

Sorry das wir so vom Thema abgekommen sind.
93
Hallo, im Beispielkernel wird mit diesem Code in den Ring3 gewechselt:
    // Kernel-Datensegmente laden
    mov $0x10, %ax
    mov %ax, %ds
    mov %ax, %es
Aber wenn dieser Code doch noch im Userspace ist,wieso wird beim Segmentregister ax kein Invalid Opcode ausgelöst. Hat dass was mit dem InterruptFlag zu tun dass im Interrupt Context die CPU automitisch die Segmentregister sichtbar macht?
EDIT:
Ja gut AX sind die letzten 16Bits von EAX(das hätte ich wissen können :oops:)
94
Lowlevel-Coding / Re: Windowstreiber-Schnittstelle
« am: 16. January 2013, 19:34 »
Mmh ich kriegs nich richtig kompiliert(make: *** No targets specified and no makefile found.  Stop) aber egal.

Ich hab auf jeden fall mal sone source File geöffnet und mich gefragt ob man sonen *haufen ehrlich gesagt portieren sollte. :-)
PUSH_DATA (push, 0x10000001);
PUSH_DATA (push, 0x0423c788);
PUSH_DATA (push, 0x10000205);
PUSH_DATA (push, 0x0423c788);
PUSH_DATA (push, 0xc0800401);
PUSH_DATA (push, 0x00200780);
PUSH_DATA (push, 0xc0830405);
PUSH_DATA (push, 0x00200780);
PUSH_DATA (push, 0xc0860409);
PUSH_DATA (push, 0x00200780);
PUSH_DATA (push, 0xe0810601);
PUSH_DATA (push, 0x00200780);
PUSH_DATA (push, 0xe0840605);
PUSH_DATA (push, 0x00204780);
PUSH_DATA (push, 0xe0870609);
PUSH_DATA (push, 0x00208780);
PUSH_DATA (push, 0xb1000001);
PUSH_DATA (push, 0x00008780);
PUSH_DATA (push, 0xb1000205);
PUSH_DATA (push, 0x00014780);
PUSH_DATA (push, 0xb1000409);
PUSH_DATA (push, 0x00020780);
PUSH_DATA (push, 0x90000409);
PUSH_DATA (push, 0x00000780);
PUSH_DATA (push, 0xc0020001);
PUSH_DATA (push, 0x00000780);
PUSH_DATA (push, 0xc0020205);
PUSH_DATA (push, 0x00000780);
PUSH_DATA (push, 0xc0890009);
PUSH_DATA (push, 0x00000788);
PUSH_DATA (push, 0xc08a020d);
PUSH_DATA (push, 0x00000788);
PUSH_DATA (push, 0xc08b0801);
PUSH_DATA (push, 0x00200780);
PUSH_DATA (push, 0xc08e0805);
PUSH_DATA (push, 0x00200780);
PUSH_DATA (push, 0xc0910809);
PUSH_DATA (push, 0x00200780);
PUSH_DATA (push, 0xe08c0a01);
PUSH_DATA (push, 0x00200780);
PUSH_DATA (push, 0xe08f0a05);
PUSH_DATA (push, 0x00204780);
PUSH_DATA (push, 0xe0920a09);
PUSH_DATA (push, 0x00208780);
PUSH_DATA (push, 0xb1000001);
PUSH_DATA (push, 0x00034780);
PUSH_DATA (push, 0xb1000205);
PUSH_DATA (push, 0x00040780);
PUSH_DATA (push, 0xb1000409);
PUSH_DATA (push, 0x0004c780);
PUSH_DATA (push, 0x90000409);
PUSH_DATA (push, 0x00000780);
PUSH_DATA (push, 0xc0020001);
PUSH_DATA (push, 0x00000780);
PUSH_DATA (push, 0xc0020205);
PUSH_DATA (push, 0x00000780);
PUSH_DATA (push, 0xc0940011);
PUSH_DATA (push, 0x00000788);
PUSH_DATA (push, 0xc0950215);
PUSH_DATA (push, 0x00000789);

/* fetch only VTX_ATTR[0,8,9].xy */
BEGIN_NV04(push, NV50_3D(VP_ATTR_EN(0)), 2);
PUSH_DATA (push, 0x00000003);
PUSH_DATA (push, 0x00000033);
BEGIN_NV04(push, NV50_3D(VP_REG_ALLOC_RESULT), 1);
PUSH_DATA (push, 6);
BEGIN_NV04(push, NV50_3D(VP_RESULT_MAP_SIZE), 2);
PUSH_DATA (push, 8);
PUSH_DATA (push, 4); /* NV50_3D_VP_REG_ALLOC_TEMP */
BEGIN_NV04(push, NV50_3D(VP_ADDRESS_HIGH), 2);
PUSH_DATA (push, (pNv->scratch->offset + PVP_OFFSET) >> 32);
PUSH_DATA (push, (pNv->scratch->offset + PVP_OFFSET));
BEGIN_NV04(push, NV50_3D(CB_DEF_ADDRESS_HIGH), 3);
PUSH_DATA (push, (pNv->scratch->offset + PVP_DATA) >> 32);
PUSH_DATA (push, (pNv->scratch->offset + PVP_DATA));
PUSH_DATA (push, (CB_PVP << NV50_3D_CB_DEF_SET_BUFFER__SHIFT) | 256);
BEGIN_NV04(push, NV50_3D(SET_PROGRAM_CB), 1);
PUSH_DATA (push, 0x00000001 | (CB_PVP << 12));
BEGIN_NV04(push, NV50_3D(VP_START_ID), 1);
PUSH_DATA (push, 0);

PUSH_DATAu(push, pNv->scratch, PFP_OFFSET + PFP_S, 6);
PUSH_DATA (push, 0x80000000);
PUSH_DATA (push, 0x90000004);
PUSH_DATA (push, 0x82010200);
PUSH_DATA (push, 0x82020204);
PUSH_DATA (push, 0xf6400001);
PUSH_DATA (push, 0x0000c785);
PUSH_DATAu(push, pNv->scratch, PFP_OFFSET + PFP_C, 16);
PUSH_DATA (push, 0x80000000);
PUSH_DATA (push, 0x90000004);
PUSH_DATA (push, 0x82030210);
PUSH_DATA (push, 0x82040214);
PUSH_DATA (push, 0x82010200);
PUSH_DATA (push, 0x82020204);
PUSH_DATA (push, 0xf6400001);
PUSH_DATA (push, 0x0000c784);
PUSH_DATA (push, 0xf0400211);
PUSH_DATA (push, 0x00008784);
PUSH_DATA (push, 0xc0040000);
PUSH_DATA (push, 0xc0040204);
PUSH_DATA (push, 0xc0040409);
PUSH_DATA (push, 0x00000780);
PUSH_DATA (push, 0xc004060d);
PUSH_DATA (push, 0x00000781);
PUSH_DATAu(push, pNv->scratch, PFP_OFFSET + PFP_CCA, 16);
PUSH_DATA (push, 0x80000000);
PUSH_DATA (push, 0x90000004);
PUSH_DATA (push, 0x82030210);
PUSH_DATA (push, 0x82040214);
PUSH_DATA (push, 0x82010200);
PUSH_DATA (push, 0x82020204);
PUSH_DATA (push, 0xf6400001);
PUSH_DATA (push, 0x0000c784);
PUSH_DATA (push, 0xf6400211);
PUSH_DATA (push, 0x0000c784);
PUSH_DATA (push, 0xc0040000);
PUSH_DATA (push, 0xc0050204);
PUSH_DATA (push, 0xc0060409);
PUSH_DATA (push, 0x00000780);
PUSH_DATA (push, 0xc007060d);
PUSH_DATA (push, 0x00000781);
PUSH_DATAu(push, pNv->scratch, PFP_OFFSET + PFP_CCASA, 16);
PUSH_DATA (push, 0x80000000);
PUSH_DATA (push, 0x90000004);
PUSH_DATA (push, 0x82030200);
PUSH_DATA (push, 0x82040204);
PUSH_DATA (push, 0x82010210);
PUSH_DATA (push, 0x82020214);
PUSH_DATA (push, 0xf6400201);
PUSH_DATA (push, 0x0000c784);
PUSH_DATA (push, 0xf0400011);
PUSH_DATA (push, 0x00008784);
PUSH_DATA (push, 0xc0040000);
PUSH_DATA (push, 0xc0040204);
PUSH_DATA (push, 0xc0040409);
PUSH_DATA (push, 0x00000780);
PUSH_DATA (push, 0xc004060d);
PUSH_DATA (push, 0x00000781);
PUSH_DATAu(push, pNv->scratch, PFP_OFFSET + PFP_S_A8, 10);
PUSH_DATA (push, 0x80000000);
PUSH_DATA (push, 0x90000004);
PUSH_DATA (push, 0x82010200);
PUSH_DATA (push, 0x82020204);
PUSH_DATA (push, 0xf0400001);
PUSH_DATA (push, 0x00008784);
PUSH_DATA (push, 0x10008004);
PUSH_DATA (push, 0x10008008);
PUSH_DATA (push, 0x1000000d);
PUSH_DATA (push, 0x0403c781);
PUSH_DATAu(push, pNv->scratch, PFP_OFFSET + PFP_C_A8, 16);
PUSH_DATA (push, 0x80000000);
PUSH_DATA (push, 0x90000004);
PUSH_DATA (push, 0x82030208);
PUSH_DATA (push, 0x8204020c);
PUSH_DATA (push, 0x82010200);
PUSH_DATA (push, 0x82020204);
PUSH_DATA (push, 0xf0400001);
PUSH_DATA (push, 0x00008784);
PUSH_DATA (push, 0xf0400209);
PUSH_DATA (push, 0x00008784);
PUSH_DATA (push, 0xc002000d);
PUSH_DATA (push, 0x00000780);
PUSH_DATA (push, 0x10008600);
PUSH_DATA (push, 0x10008604);
PUSH_DATA (push, 0x10000609);
PUSH_DATA (push, 0x0403c781);
PUSH_DATAu(push, pNv->scratch, PFP_OFFSET + PFP_NV12, 24);
PUSH_DATA (push, 0x80000008);
PUSH_DATA (push, 0x90000408);
PUSH_DATA (push, 0x82010400);
PUSH_DATA (push, 0x82020404);
PUSH_DATA (push, 0xf0400001);
PUSH_DATA (push, 0x00008784);
PUSH_DATA (push, 0xc0800014);
PUSH_DATA (push, 0xb0810a0c);
PUSH_DATA (push, 0xb0820a10);
PUSH_DATA (push, 0xb0830a14);
PUSH_DATA (push, 0x82010400);
PUSH_DATA (push, 0x82020404);
PUSH_DATA (push, 0xf0400201);
PUSH_DATA (push, 0x0000c784);
PUSH_DATA (push, 0xe084000c);
PUSH_DATA (push, 0xe0850010);
PUSH_DATA (push, 0xe0860015);
PUSH_DATA (push, 0x00014780);
PUSH_DATA (push, 0xe0870201);
PUSH_DATA (push, 0x0000c780);
PUSH_DATA (push, 0xe0890209);
PUSH_DATA (push, 0x00014780);
PUSH_DATA (push, 0xe0880205);
PUSH_DATA (push, 0x00010781);

/* HPOS.xy = ($o0, $o1), HPOS.zw = (0.0, 1.0), then map $o2 - $o5 */
BEGIN_NV04(push, NV50_3D(VP_RESULT_MAP(0)), 2);
PUSH_DATA (push, 0x41400100);
PUSH_DATA (push, 0x05040302);
BEGIN_NV04(push, NV50_3D(POINT_SPRITE_ENABLE), 1);
PUSH_DATA (push, 0x00000000);
BEGIN_NV04(push, NV50_3D(FP_INTERPOLANT_CTRL), 2);
PUSH_DATA (push, 0x08040404);
PUSH_DATA (push, 0x00000008); /* NV50_3D_FP_REG_ALLOC_TEMP */
BEGIN_NV04(push, NV50_3D(FP_ADDRESS_HIGH), 2);
PUSH_DATA (push, (pNv->scratch->offset + PFP_OFFSET) >> 32);
PUSH_DATA (push, (pNv->scratch->offset + PFP_OFFSET));
BEGIN_NV04(push, NV50_3D(CB_DEF_ADDRESS_HIGH), 3);
PUSH_DATA (push, (pNv->scratch->offset + PFP_DATA) >> 32);
PUSH_DATA (push, (pNv->scratch->offset + PFP_DATA));
PUSH_DATA (push, (CB_PFP << NV50_3D_CB_DEF_SET_BUFFER__SHIFT) | 256);
BEGIN_NV04(push, NV50_3D(SET_PROGRAM_CB), 1);
PUSH_DATA (push, 0x00000031 | (CB_PFP << 12));

BEGIN_NV04(push, NV50_3D(SCISSOR_ENABLE(0)), 1);
PUSH_DATA (push, 1);

BEGIN_NV04(push, NV50_3D(VIEWPORT_HORIZ(0)), 2);
PUSH_DATA (push, 8192 << NV50_3D_VIEWPORT_HORIZ_W__SHIFT);
PUSH_DATA (push, 8192 << NV50_3D_VIEWPORT_VERT_H__SHIFT);
/* NV50_3D_SCISSOR_VERT_T_SHIFT is wrong, because it was deducted with
* origin lying at the bottom left. This will be changed to _MIN_ and _MAX_
* later, because it is origin dependent.
*/
BEGIN_NV04(push, NV50_3D(SCISSOR_HORIZ(0)), 2);
PUSH_DATA (push, 8192 << NV50_3D_SCISSOR_HORIZ_MAX__SHIFT);
PUSH_DATA (push, 8192 << NV50_3D_SCISSOR_VERT_MAX__SHIFT);
BEGIN_NV04(push, NV50_3D(SCREEN_SCISSOR_HORIZ), 2);
PUSH_DATA (push, 8192 << NV50_3D_SCREEN_SCISSOR_HORIZ_W__SHIFT);
PUSH_DATA (push, 8192 << NV50_3D_SCREEN_SCISSOR_VERT_H__SHIFT);

return TRUE;
95
Lowlevel-Coding / Re: Windowstreiber-Schnittstelle
« am: 16. January 2013, 18:44 »
Was man vllt machen könnte wäre die Treiber für Linux zu portieren um eine Vielzahl an GraKa und Netzwerkkarten zu unterstützen. Dadurch das die LinuxTreiber als Modul in Ring 0 laufen brauchen sie keine so große Schnittstelle zum Kernel weil sie ua. die IOPorts ansteuern können.
Falsch. Tatsächlich können Linuxtreiber auf jede nicht lokale Funktion im Linuxkernel zugreifen, wodurch die Schnittstelle extrem breit wird. Selbstverständlich machen sie auch ausgiebig Gebrauch davon, weil man gemeinsame Funktionalität nicht in jeden Treiber kopieren will, sondern nur einmal pro Subsystem haben. Dadurch musst du ziemlich viele Linux-Kernelfunktionen nachbauen, bis du einen Treiber erfolgreich gebaut bekommst.

Das andere Problem ist, dass die Schnittstellen innerhalb von Kernel nicht stabil sind, das heißt, selbst wenn du das einmal erfolgreich zum Laufen bringen solltest, kannst du nicht einfach irgendwann den Treiber auf die nächste Linuxversion updaten, sondern du musst dann alle in Linux geänderten Schnittstellen auch wieder nachziehen.
Ersteres überrascht mich. Um wie viele Submodule globale funktionen geht es ungefähr?
96
Lowlevel-Coding / Re: Windowstreiber-Schnittstelle
« am: 16. January 2013, 17:25 »
Was man vllt machen könnte wäre die Treiber für Linux zu portieren um eine Vielzahl an GraKa und Netzwerkkarten zu unterstützen. Dadurch das die LinuxTreiber als Modul in Ring 0 laufen brauchen sie keine so große Schnittstelle zum Kernel weil sie ua. die IOPorts ansteuern können. Vor allem aber sind die Linux Treiber z.T. OpenSource so kann man gezielt Stellen modifizieren auskommentieren et cetera was bei BLOBs natürlich nicht geht.

Ich will allerdings den Mund nicht zu voll nehmen. Ich werde dieses MegaProjekt erst in Angriff nehmen wenn ich nicht mehr weiß was ich sonst noch in meinen Kernel aufnehmen kann.
Da ich davon aber noch Lichtjahre entfernt bin(Mein Kernel kann noch nicht mal Paging :oops:) mache ich mir um die Details noch keine Sorgen :-D

Ich will an dieser Stelle ausdrücklich sagen das die GraKa Treiber von Linux teilweise sehr mit dem X Window Server verwoben sind. Die Neueren Graka Treiber werden aber volle Funktionalität besitzen weil Wayland http://de.wikipedia.org/wiki/Wayland_(Anzeige-Server)

Hier habe ich noch eine kleine Linksammlung:
http://nouveau.freedesktop.org/wiki/  (2D Nvidia Graka Open source Treiber)
http://www.mesa3d.org/ (3D Graka Open source Treiber und OpenGl Implementierung)
http://www.x.org/docs/AMD/ (Spezifikationen zum Selberschreiben eines AMD Treibers)
http://www.thinkwiki.org/wiki/Fglrx (ATI Graka Opensource Treiber)
http://de.wikipedia.org/wiki/Reverse_Engineering (Mit Reverse Engineering kann man durch Debugging und Dekomplieren von WindowsTreibern den Quellcode herausfinden und anhand von diesem oder dem Linux Quellcode die Spezifikationen herausfinden um dann anhand von diesen selbst einen Treiber zu schreiben.)
97
Lowlevel-Coding / Re: kprintf - Problem
« am: 14. January 2013, 20:39 »
Hallo,

printf_res zählt die Zeichen. Wenn man wissen möchte wieviele Zeichen der User eingegeben hat, ist das nützlich.
Es ist sogar vorgeschrieben, dass printf die Anzahl der ausgegebenen Zeichen zurückgibt. :-)
Ja und zwar hier in der STD http://www.acm.uiuc.edu/webmonkeys/book/c_guide/index.html außerdem solltest du die Posix Lib http://pubs.opengroup.org/onlinepubs/9699919799/idx/head.html berücksichtigen. Wenn du diese Libraries GENAU so wie in der Spezifikation mit den selben Funktion Argumenten Headern Makros und Rückgabenwerten im Userland implementierst sollte die Portierung von GCC,git, Python und anderen Programmen ein Kinderspiel sein.(fehlt was außer den Treibern :wink: ?)

Die kernelinternen Funktionen wie "kprintf" kann man zwar so proggen wie man will, aber eine STD POSIX ahnliche Implementierung erhöht die Lesbarkeit für Dritte enorm.
98
Lowlevel-Coding / Re: Dynamische Prozessortaktung
« am: 12. January 2013, 21:27 »
aber wie weiß das SMBios ob gerade ein aufgebrezeltes 3D-Spiel oder nur HintergrundProzesse laufen?
Ich vermute, dass das SMBIOS gar nichts mit der Entscheidung, ob runtergetaktet werden soll, zu tun hat. Nicht umsonst ist Treibersupport vom Betriebssystem erforderlich. Vermutlich wird die Entscheidung vom dem Treiber gefällt, wenn der Scheduler feststellt, dass es gerade nicht viel zu tun gibt. Der Mechanismus zum Runtertakten ist glaub ich sowie so stark vom CPU-Modell abhängig. Du kannst ja vielleicht mal die Intel und AMD Manuals nach SpeedStep bzw. PowerNow! durchforsten.

Mittlerweile gibt es so viele allgemeine Fragen über X86 oder Prozessoren allgemein(zB wie man sie baut^^),dass es sinnvoll wäre ein eigenes Board zu öffnen, damit nicht alles in Offtopic verschwindet.
Ich glaube nicht, dass es sich derzeit lohnt dafür ein weiteres Board anzulegen. Letztendlich ist dieses Forum eher ein Programmierforum als ein Hardware-/Elektrotechnikforum, und das Offtopic ist für solche Sachen hinreichend. Bei uns nimmt (derzeit) keiner die Beschreibung "Hier könnt ihr über Gott und die Welt quatschen." wörtlich, sondern es geht ja schon hauptsächlich um technische Themen und es besteht keine Gefahr, dass etwas untergeht.

Dieses Thema ist besser in Lowlevel-Coding aufgehoben, weil es immerhin um die Programmierung der Hardware geht. Ich bin mal so frei und verschieb es.
Das man das über ACPI in der Software implementieren muss war mir nicht klar aber gut^^
99
Lowlevel-Coding / Dynamische Prozessortaktung
« am: 12. January 2013, 18:59 »
Seit dem Pentium M/K6 takten die meisten Desktop Server CPUs ja dynamisch und soviel Ich weiß geht das übers SMBios.
... aber wie weiß das SMBios ob gerade ein aufgebrezeltes 3D-Spiel oder nur HintergrundProzesse laufen?
Hat das was mit der NOP Instruktion zu tun?

Danke für eure Antworten.

PS: Mittlerweile gibt es so viele allgemeine Fragen über X86 oder Prozessoren allgemein(zB wie man sie baut^^),dass es sinnvoll wäre ein eigenes Board zu öffnen, damit nicht alles in Offtopic verschwindet.
100
Offtopic / Re: Logisim CPU
« am: 06. January 2013, 15:24 »
FLOATing-Point soll bei mir INTegraler (...) Bestandteil der CPU sein
Klingt ja interessant. :-D
http://forum.lowlevel.eu/index.php?topic=3137.0 nicht das die neuen Posts da jetzt in den Hintergrund gedrängt werden
Seiten: 1 ... 3 4 [5] 6 7 ... 9

Einloggen