新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的IDE硬盤控制的研究與設(shè)計(jì)

基于單片機(jī)的IDE硬盤控制的研究與設(shè)計(jì)

作者: 時(shí)間:2012-03-29 來源:網(wǎng)絡(luò) 收藏

在PIO[4]工作模式下,向發(fā)出命令前,必須先檢測(cè)驅(qū)動(dòng)器是否忙(BSY)。如果在規(guī)定時(shí)間內(nèi)驅(qū)動(dòng)器一直忙碌,置超時(shí)錯(cuò),否則表示驅(qū)動(dòng)器空閑,可接受命令,對(duì)硬盤進(jìn)行相應(yīng)操作。接口通過兩個(gè)協(xié)議來執(zhí)行命令:PI協(xié)議(讀扇區(qū))和PO協(xié)議(寫扇區(qū))。

3.1 讀扇區(qū)操作

處理器在接收到讀扇區(qū)的命令后,首先調(diào)用ide_rd線程,將8255數(shù)據(jù)線端口配置成輸入模式,然后讀出的狀態(tài),查詢硬盤是否準(zhǔn)備好(DRDY=1?);若準(zhǔn)備好則調(diào)用wr_lba線程,把邏輯塊地址寫入到相應(yīng)寄存器;調(diào)用ide_wr線程,將8255數(shù)據(jù)線端口配置成輸出模式,把命令代碼寫入命令寄存器,讀扇區(qū)命令開始執(zhí)行。此時(shí)對(duì)驅(qū)動(dòng)器狀態(tài)寄存器的BSY位置1,同時(shí)將硬盤上指定扇區(qū)上的數(shù)據(jù)送入扇區(qū)緩沖區(qū)。當(dāng)扇區(qū)緩沖區(qū)準(zhǔn)備好時(shí),置位DRQ位,清除BSY位,發(fā)中斷請(qǐng)求INTRQ信號(hào)。

而后處理器讀取狀態(tài)寄存器,若DRQ=1,則將扇區(qū)緩沖區(qū)中的數(shù)據(jù)讀走,完畢后,驅(qū)動(dòng)器置BSY,準(zhǔn)備讀下一個(gè)扇區(qū),直到請(qǐng)求的扇區(qū)全部讀完。

在讀的過程中查詢狀態(tài)寄存器的ERR位,若有錯(cuò)誤產(chǎn)生,則跳入錯(cuò)誤處理子程序。

其程序流程圖如圖3:

54.jpg



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉