基于單片機(jī)的IDE硬盤(pán)控制的研究與設(shè)計(jì)
讀周期(ide_rd):
ide_rd:
push acc
mov dptr, #cfg8255
mov a, #rd_ide_8255
movx @dptr, a ;配置8255的 工作方式為讀模式
mov dptr, #ide_8255_ctl
pop acc
movx @dptr, a ;選中所需寄存器
orl a, #ide_rd_line
movx @dptr, a ;使能讀引腳
mov dptr, #ide_8255_msb
clr a
movc a, @a+dptr ;讀寄存器高字節(jié)
mov r3,a
mov dptr, #ide_8255_lsb
clr a
movc a,@a+dptr ;讀寄存器低字節(jié)
mov r2, a
mov dptr, #ide_8255_ctl
clr a
movx @dptr, a ;將控制端口復(fù)位
ret ;子程序返回
寫(xiě)周期(ide_wr):
寫(xiě)周期與讀周期類似,首先將8255配置為寫(xiě)模式,選中所所要操作寄存器,將寄存器高8位和低8位數(shù)據(jù)分別送到端口A、B,激活IDE總線的寫(xiě)信號(hào);寫(xiě)完畢,通過(guò)復(fù)位端口的相應(yīng)位清除IDE總線的寫(xiě)信號(hào)。
3.5錯(cuò)誤處理操作
在對(duì)硬盤(pán)讀寫(xiě)操作時(shí),需要查詢狀態(tài)寄存器的ERR位,判斷是否有錯(cuò)。若有錯(cuò),查詢IDE的錯(cuò)誤寄存器,判斷錯(cuò)誤類型,進(jìn)行相應(yīng)的錯(cuò)誤處理:在寫(xiě)扇區(qū)操作中,當(dāng)檢測(cè)到壞扇區(qū)(BBK)錯(cuò)誤時(shí),跳過(guò)并標(biāo)記壞扇區(qū),重新分配扇區(qū);在讀寫(xiě)操作中,如果沒(méi)有發(fā)現(xiàn)0磁道,將調(diào)用驅(qū)動(dòng)器重校命令來(lái)使驅(qū)動(dòng)器從錯(cuò)誤中恢復(fù)出來(lái);在讀扇區(qū)過(guò)程中,若發(fā)生錯(cuò)誤,驅(qū)動(dòng)器將重讀出錯(cuò)扇區(qū),若仍有錯(cuò)誤,操作將被終止。
4. 結(jié)束語(yǔ)
本系統(tǒng)提出了一種單片機(jī)控制硬盤(pán)的方法,能夠比較簡(jiǎn)潔方便對(duì)硬盤(pán)進(jìn)行讀寫(xiě)等操作,并成功的應(yīng)用實(shí)際產(chǎn)品中,具有良好的可靠性和穩(wěn)定性,可以應(yīng)用到許多要求大容量數(shù)據(jù)存儲(chǔ)的系統(tǒng)中,并可取得了良好的社會(huì)效益。
參考文獻(xiàn)
[1]. 李華 MCS—51系列單片機(jī)實(shí)用接口技術(shù)[M] 北京 北京航空航天大學(xué)出版社 1993 P98-120
[2]. 陳利學(xué) 孫彪 趙玉連 微機(jī)總線與接口設(shè)計(jì)[M] 成都 電子科技大學(xué)出版社 1988 P45-90
[3].AT Attachment with Packet Interface Extension (ATA/ATAPI-5) ANSI NCITS 1998 P317
[4].Maury Wright. Disk Drivers at 40 Lean . Mean Storage Machines .1996 P41
[5]. 徐厚俊 IDE接口和IDE硬盤(pán)驅(qū)動(dòng)器 新浪潮 1996 P17
評(píng)論