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

Seiten: [1] 2 3 ... 6
1
Lowlevel-Coding / Re: Global Descriptor Table
« am: 17. February 2013, 17:34 »
Keine Ahnung, aber besteht der Schutz nicht trotzdem noch, auch bei flexiblen Sementgrößen?
2
Lowlevel-Coding / IDE und IDENTIFY DEVICE
« am: 17. February 2013, 14:17 »
Ich bin gerade dabei, einen Treiber zu schreiben und orientiere mich dabei an dem hier: http://www.lowlevel.eu/wiki/IDE

Nachdem ich also die Schreiben & Lesen - Tests gemacht habe (bei denen bei QEMU immer der 2. Kanal "gewinnt"), versuche ich dann das Kommando 0xec auszuführen, aber es klappt nicht wirklich, wenn ich danach das Data-Register auslese, ist das Ergebnis immer 0xff bzw. 255.

So mache ich das:

outb(ataPositions[i][ataRStatus], ataCIdentify);

int j = 0;
for(; j < 128; j++){
uint32_t x = inb(ataPositions[i][ataRData]);
echo("[%d] %d: %d", i, j, x);
}

mit:#define ataRData 0
#define ataRStatus 7

#define ataCIdentify 0xec

int ataPositions[ataSize][ataDeviceSize] = {
{0x1f0, 0x1f1, 0x1f2, 0x1f3, 0x1f4, 0x1f5, 0x1f6, 0x1f7, 0x3f6},
{0x170, 0x171, 0x172, 0x173, 0x174, 0x175, 0x176, 0x177, 0x376},
{0x1e8, 0x1e9, 0x1ea, 0x1eb, 0x1ec, 0x1ed, 0x1ee, 0x1ef, 0x3ee},
{0x168, 0x169, 0x16a, 0x16b, 0x16c, 0x16d, 0x16e, 0x16f, 0x36e}
};
Also - was mache ich falsch? :(

mfg :)
3
Lowlevel-Coding / Re: Was genau ist ein Sprung?
« am: 16. February 2013, 16:34 »
Macht ja nichts, ich hab dann ja nur einen Task (den in Ring 0), den zweiten (in Ring 3) brauch ich ja nur für VM86... (ich beende den dann einfach sofort wieder)
4
Lowlevel-Coding / Re: Was genau ist ein Sprung?
« am: 16. February 2013, 16:02 »
Der kann doch eigentlich problemlos in Ring 0 bleiben, wüsste nicht, wo da das Problem ist...?

Meine Recherche zu TSS ergibt: http://www.lowlevel.eu/wiki/Task_State_Segment.

Aha. OK. Muss ich dann wohl machen.  :|
5
Lowlevel-Coding / Re: Was genau ist ein Sprung?
« am: 16. February 2013, 13:30 »
Hmm, naja, wenn ich kein Multitasking habe, ist das doch quasi ein einziger Task in Ring 0, oder?
Dann brauche ich doch nur noch einen zweiten, der in Ring 3 läuft.

Währenddessen muss ja der in Ring 0 nicht weiterlaufen, ich brauch das ja nur ganz kurz am Anfang...

Oder?
6
Lowlevel-Coding / Re: Was genau ist ein Sprung?
« am: 15. February 2013, 16:05 »
@Svenska: Ich hab mir doch Bücher ausgeliehen, allerdings verstehe ich das Zeug trotzdem nur so halb!

Eine Frage noch: Wie springe ich in einen Hardwaretask, und vor allem, wie mache ich das, wenn ich gar kein Multitasking nutze?
7
Lowlevel-Coding / Re: Was genau ist ein Sprung?
« am: 15. February 2013, 15:04 »
OK. Hat das etwas mit jmpzu tun?
8
Lowlevel-Coding / Was genau ist ein Sprung?
« am: 15. February 2013, 14:14 »
Ich lese gerade, aber ich verstehe nicht wirklich, was ein Sprung ist... Und anscheinend gibt es auch noch Unterschiede zwischen verschiedenen Sprüngen, also wie weit man springt etc.

Also meine Frage: Was genau ist ein Sprung?

mfg :)
9
Lowlevel-Coding / Re: VESA Bios Extensions
« am: 10. February 2013, 11:43 »
OK also ich schaffs nicht, das in C hinzukriegen.

Ich bin doch grad dabei, die Grundlagen zu lernen ^^!
10
Lowlevel-Coding / Re: Global Descriptor Table
« am: 10. February 2013, 11:42 »
So weit (ES) hab ich das ja verstanden, aber dann gibt es ja ES (2 Byte) und DI (2 Byte), aber was soll der Doppelpunkt?
11
Lowlevel-Coding / Re: VESA Bios Extensions
« am: 09. February 2013, 23:55 »
Ohne Grafik funktioniert ja schon alles Problemlos...

Ich hab das so verstanden, dass ich mir auch die Adresse des LFB besorgen kann, BEFOR ich in den Protected Mode wechsle... Insgesamt sieht das nämlich so aus:

_start:
    // Stack initialisieren
    mov $kernel_stack, %esp

call init_gdt
call init_intr

// VESA
mov $0x4f01, %ax
mov $1, %cx
int $0x10
call init_vesa

//protected mode
mov %cr0, %eax
or %eax, 1
mov %eax, %cr0

    // C-Code aufrufen
    call init
 
    // Falls wir jemals aus init zurueckkommen sollten, sperren wir die Interrupts und
    // halten einfach den Prozessor an. (man braucht ihn ja nicht unnötig heißlaufen lassen.)
_stop:
    cli
    hlt
 
    // Sollte es doch weitergehen, probieren wir erneut die CPU schlafen zu lassen
    jmp _stop
12
Lowlevel-Coding / Re: VESA Bios Extensions
« am: 09. February 2013, 23:22 »
Ich mach es jetzt in ASM.

Also nochmal zusammenfassend: Folgende Informationen habe ich:

Zitat
Informationen zu einem Grafikmodus: 4F01h
Man durchläuft also die obige Liste der unterstützten Modi und prüft dann mit folgender Funktion, welche Eigenschaften der entsprechende Grafikmodus besitzt:
AX = 4F01h
CX = Nummer des Grafikmodus

Außerdem soll der Interrupt 0x10 aufgerufen werden, um die Funktion aufzurufen.

Ich mach also das, bevor es in den Protected Mode geht:
mov 0x4f01, %ax
mov 1, %cx
int $0x10 //<- Warum "$"? Anders compilert es nicht...

Naja, es passiert eigentlich etwas ganz logisches: Es erscheint mein "Bluescreen", weil er denkt, Interrupt 0x10 wäre die Exception Nummer 16...
Also was mach ich falsch?
13
Lowlevel-Coding / Re: 0x7e und 0x7f
« am: 09. February 2013, 22:29 »
Hätte ich auch drauf kommen können... danke! :)
14
Lowlevel-Coding / Re: Global Descriptor Table
« am: 09. February 2013, 21:25 »
Aha, ich verstehe.

Und ES:DI ? Was ist das und wieso hat es einen Doppelpunkt? :D

(Ich meine folgendes: "ES:DI = Zeiger auf freien Speicher für den VBE Info Block (512 Bytes)")
15
Lowlevel-Coding / Re: 0x7e und 0x7f
« am: 09. February 2013, 21:24 »
OK. Gibt es eigentlich irgendwo eine Liste mit den "wichtigsten" Ports, also welche, die ganz oft genutzt werden?
16
Lowlevel-Coding / Re: 0x7e und 0x7f
« am: 09. February 2013, 20:47 »
Brauch ich nicht, ich wollte nur wissen, ob das nur bei QEMU so ist, oder ob man das generell nicht darf, ist nicht so wichtig...
17
Lowlevel-Coding / 0x7e und 0x7f
« am: 09. February 2013, 20:26 »
inb(0x7e) und inb(0x7f) crashen bei mir den Emulator... Das hab ich zufällig beim debuggen rausgefunden, als ich inb einfach irgendwelche Werte übergeben hab...

Warum? Sollte ich die in der inb-Funktion vielleicht sperren oder so? Oder ist das ein Fehler von QEMU?
18
Lowlevel-Coding / Re: Global Descriptor Table
« am: 09. February 2013, 20:23 »
Okay, grundsätzliche Verständnisfrage: Was ist der Unterschied zwischen %eax und %eabx usw. und %ax und %bx?

Und was gibt es alles?

Oder kann man sich das selber aussuchen, also auch %asasfsdfsdfjlngouineruigndhiasdasdasdbobzi ????
19
Lowlevel-Coding / Re: Global Descriptor Table
« am: 09. February 2013, 20:14 »
Das mach ich garnicht...
20
Lowlevel-Coding / Re: VESA Bios Extensions
« am: 09. February 2013, 18:33 »
Ja also sowas asm volatile("int $0xa");oder?
Seiten: [1] 2 3 ... 6

Einloggen