How to configure an ATA hard drive to trigger interrupt generation?

RESOLVED

After much confusion and disappointment, I finally got my hard drive to abort it .: D It basically came down to the fact that I continued to read the status register instead of the alternative status register. Several other things were mixed up for loading, but the fact is that my hard disk driver is finally starting to add up. Now for others, I will leave the original message.

PS For further clarification, I did not need to issue any reset command. All I have done is the following:

  • Select a device (do not want to kill Solaris OS on another drive)
  • clear the nIEN bit in the DEVICE CONTROL register
  • issue the command IDENTIFY DEVICE ***

In fact, I'm not sure if the IDENTIFY DEVICE command is needed because I left the lab before I could check the code without issuing the command. However, the main thing was that I needed to read the alternative status register and clear the nIEN bit without having to reset. The BIOS seems to take care of most things.


I'm currently trying to write a disc driver for a hobby that is being developed at my school. Currently, I have routines for reading / writing data in the PCI configuration space and assembly procedures for entering the IO port with various registers defined by ATA / ATAPI-7. Now, my question is, how can I get an IDE hard drive to start generating interrupts? I looked through all this documentation, and it did not become clear to me what I was doing wrong.

- , , IDE ? , , . ATA SOFT RESET?

!

UPDATE: , , CD-ROM ATAPI, , SRST DEVICE CONTROL reset. . , SRST , BSY . , .

+3
2

: ATA/ATAPI.

nIEN DCR (Register Control Register):

nIEN: . . nIEN 0 , INTRQ tri . nIEN 1 , INTRQ .

www.ata-atapi.com ATA/PATA/SATA/ATAPI, ... , ATA-6/7/etc $$ T13, ATA-8.

ATA . ( SCSI ATA/ATAPI Commodore/Amiga, - , , , ).

+3

, BIOS (int 13h)? , , , ( , /).

+1

Source: https://habr.com/ru/post/1708270/


All Articles