Autor Thema: IDE und IDENTIFY DEVICE  (Gelesen 1959 mal)

KtmnjjpfjsFvzG

  • Beiträge: 111
    • Profil anzeigen
Gespeichert
« 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 :)

 

Einloggen