[ATA DMA and qemu] "dma: command 0x9 not supported"
Posted: Wed Aug 31, 2011 10:16 am
Hello,
I am currently developping an ATA DMA driver for my OS, and I'd like you to help me, because I'm facing quite a great problem...
Indeed, when I try to issue any DMA command to the command port (according to the method described in this article : http://wiki.osdev.org/ATA/ATAPI_using_D ... mmand_Byte), I always get an error message in the console while running my OS on qemu. This says that dma command 0x8 or 0x9 is not supported.
According to what I have understood from the article : 0x8 means "write" (bit 3 = start set, and bit 0 unset) and 0x9 means "write" (both bit 3 and bit 0 set). In fact, as mentionned in the tutorial, I proceed in the following way :
According to you, what's wrong with my code or my reasoning ?
Thanks for reading me !
I am currently developping an ATA DMA driver for my OS, and I'd like you to help me, because I'm facing quite a great problem...
Indeed, when I try to issue any DMA command to the command port (according to the method described in this article : http://wiki.osdev.org/ATA/ATAPI_using_D ... mmand_Byte), I always get an error message in the console while running my OS on qemu. This says that dma command 0x8 or 0x9 is not supported.
According to what I have understood from the article : 0x8 means "write" (bit 3 = start set, and bit 0 unset) and 0x9 means "write" (both bit 3 and bit 0 set). In fact, as mentionned in the tutorial, I proceed in the following way :
Code: Select all
// Here, I'm trying to issue a read command :
outb(commandPort, 0); // Clearing all the bits, including the start/stop bit
outb(commandPort, 1); // Setting the read bit
outb(commandPort, 8 | 1 = 9); // Reenabling the start/stop bit, keeping the read bit enabled
Thanks for reading me !