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 - BeanMe

Seiten: [1]
1
Das Wiki / Re: Tutorial Teil 7: GPF Problem
« am: 10. June 2012, 08:39 »
Danke! Ich probiere es sofort aus...
Also, auf die Pointer hätte ich selber kommen können, aber das Multiboot-Feld...
Danke!

Es geht!
Jetzt, wo das gelöst ist, denkt man sich, das war einfach, ich hatte vermutlich "ein Brett vorm Kopf".
2
Lyrisches Eck / Re: Der Sinn des Programmierens
« am: 05. June 2012, 16:27 »
Zum Thema "Sinn des Programmierens" fällt mir folgendes ein:

1) für mein Ego
Wenn ich etwas geschafft habe, bin ich stolz drauf.

2) um etwas Nützliches zu besitzen
Wenn ich nach etwas suche und alles was ich finde ist Schrott, programmiere ich es mir halt selbst

3) als Zeitvertreib
Mir ist langweilig, was mache ich? Richtig: Programmieren!

4) als Beruf, für Geld
5) um Anerkennung zu gewinnen
Die Zwei hast du ja schon erwähnt.
3
Lowlevel-Coding / Re: Multitasking in Ring-3
« am: 05. June 2012, 16:05 »
Ich habe auch schon mal die Fehlermeldung "Trying to execute code outside RAM or ROM" bekommen.
Es lag daran, dass ich 6 Segmente in der GDT benutzt, aber den Array nur mit 5 deklariert habe!
Prüfe das mal!
4
Das Wiki / Re: Tutorial Teil 7: GPF Problem
« am: 05. June 2012, 16:00 »
Als TAR-Archiv zu finden:
http://temp-share.com/show/KdPf3U6Fh

Wenn ihr lieber andere Formate hättet, müsstt ihr es nur sagen.
Der Link gilt bis 5. Juni 2013
5
Das Wiki / Re: Tutorial Teil 7: GPF Problem
« am: 02. June 2012, 18:26 »
Bitte, helft mir! Ich komme sonst nicht weiter!
6
Das Wiki / Re: Tutorial Teil 7: GPF Problem
« am: 01. June 2012, 17:30 »
Was vielleicht erwähnenswert wäre, ist, dass ich nicht vier, sondern nur zwei Test-Tasks habe.
B wird nach A hinzugefügt, läuft also vorher.

Es ist mir nicht klar, was ESP auf NULL setzt. Mein Hauptverdächtiger ist das PMM, durch dieses wird Platz für einen User Stack reserviert. Was hat das PMM zu seiner Verteidigung zu sagen? "Als ich nicht implementiert werden konnte, hat man mich aus dem Beispiel-Repo kopiert..."
Klasse, jetzt komme ich nicht mehr weiter...
7
Das Wiki / Re: Tutorial Teil 7: GPF Problem
« am: 28. May 2012, 19:38 »
Was aber nicht erklärt, warum mir kein --ENTERING handle_interrupt angezeigt wird.
Und woher kommt das B? Dass es da ist, hat mich auch schon verwundert...

//EDIT: Es wäre logisch, wenn der Fehler bereits im PMM liegt, dass für Task A nämlich kein Speicher frei ist... Ach so, Blödsinn, Task B wurde ja später reserviert, er wird nur vorher ausgeführt...
//EDIT2: Wäre es nicht logisch, dass das Schreiben ins TSS das ganze auslöst? Aber dann müsste es ja von Anfang an nicht funktioniert haben...
8
Das Wiki / Re: Tutorial Teil 7: GPF Problem
« am: 28. May 2012, 18:26 »
Meine Funktion schedule (ohne Kommentare, etc)
struct cpu_state* schedule(struct cpu_state* cpu) {
    if (current_task != NULL) {
      current_task->cpu_state = cpu;
    }
     if (current_task == NULL) {
         current_task = first_task;
     } else {
         current_task = current_task->next;
         if (current_task == NULL) {
             current_task = first_task;
         }
     }
    cpu = current_task->cpu_state;

    return cpu;
}

Ich glaube nicht, dass ich den Prozessorzustand von NULL lade...

Und müsste mir das Ding nicht --ENTERING handle_interrupt anzeigen?
9
Das Wiki / Re: Os unter Windows
« am: 28. May 2012, 08:21 »
Da bin ich mir nicht sicher...
Unter Linux funktioniert alles viel reibungsloser...

Ich habe einen Dualboot-Rechner, Fürs OSDev boote ich immer Linux.
10
Das Wiki / Tutorial Teil 7: GPF Problem
« am: 28. May 2012, 08:19 »
Beim letzten Mal wars ein Tippfehler, der den GPF ausgelöst hat.
Ich weiß nicht, woran es diesmal liegt...

Ich habe Teil 7 durchgearbeitet und es geht nicht. Erst wusste ich nur, dass ein General Protection Fault ausgelöst wird.
Um mehr zu erfahren, habe ich den Schduler und den generellen Interrupthandler am Anfang, vor jeder Operation und am Ende eine Medung ausgeben lassen.

Und jetzt der kuriose Output:
11
Lowlevel-Coding / Re: Tutoral Teil 6: GPF-Problem
« am: 26. May 2012, 20:50 »
Ich habs: Ich habe statt user_stack + 4096 nur user_stack benutzt...
Peinlicher Fehler...

Danke trotzdem!
12
Zur GPL: Heißt das, ich muss es unter der GPL veröffentlichen,
oder heißt es, wenn ich es veröffentliche (oder auch nur weitergebe), dann unter der GPL?
13
Ich habe noch eine Frage:
Wenn ich schon init ersetzen will, worauf muss ich achten?
Gibt es da ein gutes Tutorial?
14
Ich möchte auf Linux aufbauen, aber wie fange ich das an?

Ich sollte LFS durcharbeiten, du hast recht.

Vielleicht habe ich dann auch schon, was ich brauche (oder auch nicht).

Nichts gegen dich, aber ich bin (leider) nicht so der Teamwork-Mensch  :-(
15
OS-Design / Eigenes Betriebssystem: auf Kernel aufbauen
« am: 09. May 2012, 14:20 »
Hallo,

ich habe mir überlegt, ob ich ein Betriebssystem mache, das (wie GNU) auf einen bestehenden Kernel aufbaut (aber einen Kernel, der schon fertig ist, und nicht aus einem Studentenprojekt geklaut wird :wink: ).

Kennt dafür jemand Tutorials? Hat jemand Vorschläge, welchen Kernel man nehmen könnte?

Dank im Voraus
BeanMe
16
Lowlevel-Coding / Re: Tutoral Teil 6: GPF-Problem
« am: 08. May 2012, 15:59 »
OK...
Ich poste jetzt qemu.log:

Zitat
CPU Reset (CPU 0)
EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000000
ESI=00000000 EDI=00000000 EBP=00000000 ESP=00000000
EIP=00000000 EFL=00000000 [-------] CPL=0 II=0 A20=0 SMM=0 HLT=0
ES =0000 00000000 00000000 00000000
CS =0000 00000000 00000000 00000000
SS =0000 00000000 00000000 00000000
DS =0000 00000000 00000000 00000000
FS =0000 00000000 00000000 00000000
GS =0000 00000000 00000000 00000000
LDT=0000 00000000 00000000 00000000
TR =0000 00000000 00000000 00000000
GDT=     00000000 00000000
IDT=     00000000 00000000
CR0=00000000 CR2=00000000 CR3=00000000 CR4=00000000
DR0=00000000 DR1=00000000 DR2=00000000 DR3=00000000
DR6=00000000 DR7=00000000
CCS=00000000 CCD=00000000 CCO=DYNAMIC
EFER=0000000000000000
FCW=0000 FSW=0000 [ST=0] FTW=ff MXCSR=00000000
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
CPU Reset (CPU 0)
EAX=00000000 EBX=00000000 ECX=00000000 EDX=00000633
ESI=00000000 EDI=00000000 EBP=00000000 ESP=00000000
EIP=0000fff0 EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0000 00000000 0000ffff 00009300
CS =f000 ffff0000 0000ffff 00009b00
SS =0000 00000000 0000ffff 00009300
DS =0000 00000000 0000ffff 00009300
FS =0000 00000000 0000ffff 00009300
GS =0000 00000000 0000ffff 00009300
LDT=0000 00000000 0000ffff 00008200
TR =0000 00000000 0000ffff 00008b00
GDT=     00000000 0000ffff
IDT=     00000000 0000ffff
CR0=60000010 CR2=00000000 CR3=00000000 CR4=00000000
DR0=00000000 DR1=00000000 DR2=00000000 DR3=00000000
DR6=ffff0ff0 DR7=00000400
CCS=00000000 CCD=00000000 CCO=DYNAMIC
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
SMM: enter
EAX=00000001 EBX=80000b58 ECX=00000000 EDX=00000cfc
ESI=000e5cbd EDI=0003802d EBP=00000cf8 ESP=00006f00
EIP=000e7a31 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=     000fce38 00000037
IDT=     000fdcf0 00000000
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=00000000 DR1=00000000 DR2=00000000 DR3=00000000
DR6=ffff0ff0 DR7=00000400
CCS=000e5c90 CCD=00000001 CCO=LOGICB 
EFER=0000000000000000
SMM: after RSM
EAX=00000001 EBX=80000b58 ECX=00000000 EDX=00000cfc
ESI=000e5cbd EDI=0003802d EBP=00000cf8 ESP=00006f00
EIP=000e7a31 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=     000fce38 00000037
IDT=     000fdcf0 00000000
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=00000000 DR1=00000000 DR2=00000000 DR3=00000000
DR6=ffff0ff0 DR7=00000400
CCS=00000000 CCD=ffffff9c CCO=EFLAGS 
EFER=0000000000000000
     0: v=20 e=0000 i=1 cpl=0 IP=0008:00101476 pc=00101476 SP=0010:0011288c EAX=00000031
EAX=00000031 EBX=0002c0e0 ECX=000b8000 EDX=0000000a
ESI=0002c279 EDI=0002c27f EBP=001128a4 ESP=0011288c
EIP=00101476 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 00102020 00000080 0000e900 DPL=3 TSS32-avl
GDT=     00108040 0000002f
IDT=     00108080 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=00000000 DR1=00000000 DR2=00000000 DR3=00000000
DR6=ffff0ff0 DR7=00000400
CCS=00000001 CCD=00000000 CCO=LOGICB 
EFER=0000000000000000
     1: v=20 e=0000 i=0 cpl=3 IP=001b:0010005c pc=0010005c SP=0023:0010e848 EAX=00000007
EAX=00000007 EBX=00000000 ECX=00000a55 EDX=000b89b5
ESI=00000000 EDI=00000000 EBP=0010e85c ESP=0010e848
EIP=0010005c EFL=00000202 [-------] CPL=3 II=0 A20=1 SMM=0 HLT=0
ES =0023 00000000 ffffffff 00cff300 DPL=3 DS   [-WA]
CS =001b 00000000 ffffffff 00cffa00 DPL=3 CS32 [-R-]
SS =0023 00000000 ffffffff 00cff300 DPL=3 DS   [-WA]
DS =0023 00000000 ffffffff 00cff300 DPL=3 DS   [-WA]
FS =0000 00000000 00000000 00000000
GS =0000 00000000 00000000 00000000
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00102020 00000080 0000e900 DPL=3 TSS32-avl
GDT=     00108040 0000002f
IDT=     00108080 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=00000000 DR1=00000000 DR2=00000000 DR3=00000000
DR6=ffff0ff0 DR7=00000400
CCS=00000095 CCD=fffffab7 CCO=EFLAGS 
EFER=0000000000000000
check_exception old: 0xffffffff new 0xd
     2: v=0d e=0000 i=0 cpl=0 IP=0008:0010140e pc=0010140e SP=0010:0010e88c EAX=00000000
EAX=00000000 EBX=00000000 ECX=0010e888 EDX=00000000
ESI=00000000 EDI=0010e89c EBP=001015e1 ESP=0010e88c
EIP=0010140e EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0023 00000000 ffffffff 00cff300 DPL=3 DS   [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS   [-WA]
DS =0023 00000000 ffffffff 00cff300 DPL=3 DS   [-WA]
FS =0000 00000000 00000000 00000000
GS =0000 00000000 00000000 00000000
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0028 00102020 00000080 0000e900 DPL=3 TSS32-avl
GDT=     00108040 0000002f
IDT=     00108080 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=00000000 DR1=00000000 DR2=00000000 DR3=00000000
DR6=ffff0ff0 DR7=00000400
CCS=00000008 CCD=0010e88c CCO=ADDL   
EFER=0000000000000000

//EDIT: Evtl. ist es wichtig zu wissen, dass ich GRUB als Bootloader nutze und von Diskette gebootet habe. Soll ich den Kernel direkt laden?
17
Lowlevel-Coding / Re: Tutoral Teil 6: GPF-Problem
« am: 08. May 2012, 15:17 »
Wenn ein Interrupt behandelt wird, sind Interrupts doch allgemein aus, oder? :?
Ich habe sie jedenfalls nicht ausgeschaltet.

Mehr Infos habe ich nicht. Braucht ihr Source Code?

Was ich erst dachte ist, dass der GPF dadurch entsteht, dass für die Bs in den Videospeicher geschrieben wird, aber dann könnten auch die As nicht kommen.
18
Lowlevel-Coding / Re: Tutoral Teil 6: GPF-Problem
« am: 07. May 2012, 19:05 »
"geht nicht" heißt: Es werden nur As ausgegeben, danach habe ich eine Exception 13 (GPF)

Anbei ein Foto von QEMU.
Die Prozessorstände werden ausgegeben.
19
Lowlevel-Coding / Tutoral Teil 6: GPF-Problem
« am: 05. May 2012, 09:43 »
Hallo,

ich habe ein Problem:
Ich habe versucht, nach dem Tutorial einen Kernel zu schreiben.

Seit die Prozesse in den Userspace verschoben wurden, geht nichts mehr.
Es werden nur As ausgegeben.
Außerdem wird ein General Protection Fault ausgelöst.

Könnt ihr mir bitte helfen?

Danke im Voraus,
BeanMe
Seiten: [1]

Einloggen