ATA/DMA Read Test - Working in Qemu and not in Bocks
Posted: Wed Aug 06, 2014 11:02 am
Hello all.
I am willing to access the hard drive using Bus Mastering DMA.
I have written some test code, that perform a read. If I try it
in Qemu, it works fine, but if I use Bochs, no IRQ is fired.
My code sets up a sample PRDT, initializes and reset the ATA
controller, then load the address of PRDT into the proper BusMaster
register. It resets the BusMaster interrupt flag, gives the read
command to the ATA controller, sets "Read" and "Start" flags in
the DMA. Then waits for an interrupt (IRQ 14 or 15).
PIC masks are clear, hence no interrupt is masked. My test
code runs with flat segmentation and paging disabled.
I presume I did something wrong... Can anyone help me?
In the following link you can find the source code of my test:
http://pastebin.com/RXN70jag
Thank you in advance.
P.S.: Please forgive me for my poor English: I am not a native
speaker.
I am willing to access the hard drive using Bus Mastering DMA.
I have written some test code, that perform a read. If I try it
in Qemu, it works fine, but if I use Bochs, no IRQ is fired.
My code sets up a sample PRDT, initializes and reset the ATA
controller, then load the address of PRDT into the proper BusMaster
register. It resets the BusMaster interrupt flag, gives the read
command to the ATA controller, sets "Read" and "Start" flags in
the DMA. Then waits for an interrupt (IRQ 14 or 15).
PIC masks are clear, hence no interrupt is masked. My test
code runs with flat segmentation and paging disabled.
I presume I did something wrong... Can anyone help me?
In the following link you can find the source code of my test:
http://pastebin.com/RXN70jag
Thank you in advance.
P.S.: Please forgive me for my poor English: I am not a native
speaker.