#keywords ide,register,port,eide,scsi,sata,disk,bus,control,storage,hdd,sector,lbs,chs,block,io #title IDE Interface [wiki:Home 대문] / [wiki:CategoryProgramming 프로그래밍] / [wiki:IDEInterface IDE Interface] ---- == [wiki:IDEInterface IDE Interface] == * 작성자 조재혁 ([mailto:minzkn@minzkn.com]) * 고친과정 1999년 어느날 : 처음씀 [[TableOfContents]] === IDE register === * Data register (1F0H, read/write) * Error register (1F1H, read) || '''bit''' || '''7''' || '''6''' || '''5''' || '''4''' || '''3''' || '''2''' || '''1''' || '''0''' || || '''의미''' || BBK || UNC || MC || IDNF || MCR || ABRT || TK0NF || AMNF || BBK (Bad block detected) : ATA1에서는 요청한 섹터가 오류블럭인경우 설정되지만 ATA2에서는 예약으로 되어 있다.[[br]] UNC (Uncorrectable data error) : Data가 잘못된것이 발견되었을때 설정된다. ECC검사시 설정될수 있다. 이 비트가 설정되면 Data를 신뢰할수 없다.[[br]] MC (Media change) : 매체가 변경(교체)되었을 경우 설정된다.[[br]] IDNF (ID not found) : Sector를 찾을수 없을때 설정되며 아마도 심한 회손이 되는 경우에 설정되는것을 확인할수 있다.[[br]] MCR (Media change requested) : 외부로부터 매체를 교체하려는 신호를 수신했을때 설정된다. Eject버튼같은 경우가 이에 해당할수 있다.[[br]] ABRT (Aborted command) : Command수행중에 오류로 인하여 Interrupt 되어 작업이 중지되었다.[[br]] TK0NF (Track zero not found) : Track 0번을 찾을수 없을때 설정된다. 이 경우가 발생하면 매우 치명적인 손상을 입은 경우일것이다.[[br]] AMNF (Address mark not found) : 요청한 Sector의 주소를 찾을수 없다.[[br]] * Feature register (1F1H, write) * Sector count register (1F2H, read/write) 0은 256으로 인식한다. (0개의 count는 의미가 없으므로)[[br]] * Sector number register (1F3H, read/write) LBA mode인 경우 LBA주소의 0~7bit[[br]] * Cylinder number register (1F4H~1F5H, read/write) 1F4H : Cylinder번호중에서 하위 바이트[[br]] 1F5H : Cylinder번호중에서 상위 바이트[[br]] LBA mode인 경우 LBA주소중에서 1F4H에는 8~15bit, 1F5H에는 16~23bit[[br]] * Drive/Head number register (1F6H, read/write) || '''bit''' || '''7''' || '''6''' || '''5''' || '''4''' || '''3''' || '''2''' || '''1''' || '''0''' || || '''의미''' || 1 || LBA || 1 || DEV || H3 || H2 || H1 || H0 || LBA (LBA mode) : 0인 경우 Cylinder/Head/Sector 방식, 1인 경우 LBA주소방식[[br]] DEV (Device) : Device번호 (0은 Master, 1은 Slave)[[br]] H3~0 (Head number) : Head번호 (LBA mode인 경우 LBA주소중에서 24~27bit)[[br]] * Status register (1F7H, read) || '''bit''' || '''7''' || '''6''' || '''5''' || '''4''' || '''3''' || '''2''' || '''1''' || '''0''' || || '''의미''' || BSY || DRDY || DF || DSC || DRQ || CORR || IDX || ERR || BSY (Busy) : 이 bit가 설정되면 명령을 처리중에 있음을 의미한다.[[br]] DRDY (Drive ready) : 드라이브가 명령을 받을 준비가 되었을대 설정된다.[[br]] DF (Drive fault) : 드라이브에 에러가 발견되면 설정된다. (ATA1에서는 Drive가 쓰기에러상태일때를 나타낸다.)[[br]] DSC (Drive seek complete) : Head가 요청한 Cylinder위치에 놓였을때 설정된다.[[br]] DRQ (Date request) : 드라이브로부터 Data가 요청되는 경우 설정된다.[[br]] CORR (Corrected data) : 읽기오류가 발생했을때 설정되며 이 경우 interrupt 되지 않고 계속 수행하는 상태인 경우이다.[[br]] IDX (Index) : Index mark위로 head가 통과할때 설정된다.[[br]] ERR (Error) : 명령수행시 에러가 발생하면 설정되어 에러를 나타낸다. 어떤 에러상태인지는 추가적인 정보로 제공되는 bit들을 확인해야 한다.[[br]] * Command register (1F7H, write) * Alternate status register (3F6H, read) * Device control register (3F6H, write) || '''bit''' || '''7''' || '''6''' || '''5''' || '''4''' || '''3''' || '''2''' || '''1''' || '''0''' || || '''의미''' || N/A || N/A || N/A || N/A || 1 || SRST || !IEN || 0 || SRST (Software reset) : 적정시간동안 설정하고 있으면 재설정상태로 돌입하며 0으로 변경하면 기동을 하게 된다.[[br]] !IEN (Interrupt enable) : 0이면 interrupt를 허용하게 된다.[[br]] * Drive address register (3F7H, read) || '''bit''' || '''7''' || '''6''' || '''5''' || '''4''' || '''3''' || '''2''' || '''1''' || '''0''' || || '''의미''' || N/A || !WTG || !H3 || !H2 || !H1 || !H0 || !D1 || !D0 || !WTG (Write gate) : 선택된 드라이브가 쓰기동작중일때는 0으로 설정된다.[[br]] !H3~0 (Invert Head number) : 현재 선택된 드라이브의 Head번호가 반전되어 설정된다.[[br]] !D1 (Slave drive) : Slave drive가 선택되면 0이 설정된다.[[br]] !D0 (Master drive) : Master drive가 선택되면 0이 설정된다.[[br]] === 예제 === [[attachment:mzbootloader_fake_ide-source-20040324.tar.gz]] === 참고자료 === * Samsung HDD datasheet (Spinpoint P80VEM Product Manual Rev01.pdf) * Hitachi HDD datasheet (5K250_DS.pdf, Desktop 250GB 7200 rpm Data Sheet.pdf, Desktop 250GB Specification.pdf, P7K500_DS.pdf, Travelstar 4200rpm Data Sheet.pdf, Travelstar 4200rpm Specification.pdf, ...) * Seagate HDD datasheet (N2ProductManual(2.5인치, 4200RPM).pdf, Seagate HDD Disk.xls. RoHS DoC Tonka v4.pdf, ...) * Western Digital HDD datasheet (WD KR model name1_Apr06.pdf) * SCSI & IDE interface second edition (Friedhelm Schmidt, ADDISON WESLEY)