軟盤控制器編程方法

軟盤控制器編程方法

ID:32997684

大小:72.04 KB

頁數(shù):26頁

時間:2019-02-18

軟盤控制器編程方法_第1頁
軟盤控制器編程方法_第2頁
軟盤控制器編程方法_第3頁
軟盤控制器編程方法_第4頁
軟盤控制器編程方法_第5頁
資源描述:

《軟盤控制器編程方法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、軟盤控制器編程方法軟盤控制器的編程方法趙炯oldlinux.org(gohigh@shl63.net)1.1軟盤驅(qū)動器的設(shè)備號在Linux中,軟驅(qū)的主設(shè)備號是2,次設(shè)備號二TYPE*4+DRIVE,其中DRIVE為0?3,分別對應(yīng)軟驅(qū)A、B、C或D;TYPE是軟驅(qū)的類型,2表示1.2M軟驅(qū),7表示1.44M軟驅(qū),也即floppy.c中85行定義的軟盤類型(floppy_type[])數(shù)組的索引值:表6.1軟盤驅(qū)動器類型類型1234567說明不用。360KBPC軟驅(qū)。1.2MBAT軟驅(qū)。360kB在720kB驅(qū)動器中使用。3.5"720kB軟盤。360kB在1.2MB驅(qū)動器中使用。7

2、20kB在1.2MB驅(qū)動器中使用。1.44MB軟驅(qū)。例如,因為7*4+0=28,所以/dev/PSO(2,28)指的是1.44MA驅(qū)動器,其設(shè)備號是0x021Co同理/dev/atO(2,8)指的是1.2MA驅(qū)動器,其設(shè)備號是0x0208。1.2軟盤控制器對軟盤控制器的編程比較煩瑣。在編程時需耍訪問4個端口,分別對應(yīng)一個或多個寄存器。對于1.2M的軟盤控制器有以下一些端口。表6.2軟盤控制器端口I/O端口Ox3f20x3f4Ox3f5Ox3f7讀寫性寄存器名稱只寫只讀讀/寫只讀只寫數(shù)字輸岀寄存器(DOR)(數(shù)字控制寄存器)FDC主狀態(tài)寄存器(STATUS)FDC數(shù)據(jù)寄存器(DATA

3、)數(shù)字輸入寄存器(DIR)磁盤控制寄存器(DCR)(傳輸率控制)數(shù)字輸出端口DOR(數(shù)字控制端口)是一個8位寄存器,它控制驅(qū)動器馬達開啟、驅(qū)動器選擇、啟動/復(fù)位FDC以及允許/禁止DMA及中斷請求。表6.3數(shù)字輸出寄存器定義位名稱說明共10頁76510M0T_EN3M0T_EN2MOT_EN1MOT_ENODMAJNTRESETDRV_SEL1DRV_SELO啟動軟驅(qū)D馬達::k啟動;0■關(guān)閉。啟動軟驅(qū)C馬達:1■啟動;0■關(guān)閉。啟動軟驅(qū)B馬達:3■■啟動;0■關(guān)閉。啟動軟驅(qū)A馬達:1■啟動;0?關(guān)閉。允許DMA和中斷請求;0■禁止DMA和中斷請求。允許軟盤控制器FDC工作。0■復(fù)

4、位FDC。00-11用于選擇軟盤驅(qū)動器A?D。FDC的主狀態(tài)寄存器也是一個8位寄存器,用于反映軟盤控制器FDC和軟盤驅(qū)動器FDD的基本狀態(tài)。通常,在CPU向FDC發(fā)送命令之前或從FDC獲取操作結(jié)果Z前,都耍讀取主狀態(tài)寄存器的狀態(tài)位,以判別當前FDC數(shù)據(jù)寄存器是否就緒,以及確定數(shù)據(jù)傳送的方向。表6.4FDC主狀態(tài)控制器MSR定義位名稱76543210RQMDIONDMCBDDBDCBDBBDAB說明數(shù)據(jù)口就緒:控制器FDC數(shù)據(jù)寄存器已準備就緒。傳輸方向:1-FDC7CPU;0-CPU7FDC非DMA方式:1■非DMA方式;0-DMA方式控制器忙:FDC正處于命令執(zhí)行忙碌狀態(tài)軟驅(qū)D忙軟

5、驅(qū)C忙軟驅(qū)B忙軟驅(qū)A忙FDC的數(shù)據(jù)端口對應(yīng)多個寄存器(只寫型命令寄存器和參數(shù)寄存器、只讀型結(jié)果寄存器),但任一時刻只能有一個寄存器岀現(xiàn)在數(shù)據(jù)端口0x3f5。在訪問只寫型寄存器時,主狀態(tài)控制的DIO方向位必須為0(CPU?FDC),訪問只讀型寄存器時則反Z。在讀取結(jié)果時只有在FDC不忙Z后才算讀完結(jié)果,通常結(jié)果數(shù)據(jù)最多有7個字節(jié)。數(shù)據(jù)輸入寄存器(DIR)只有位7(D7)對軟盤有效,用來表示盤片更換狀態(tài)。其余七位用于硬盤控制器接口。磁盤控制寄存器(DCR)用于選擇盤片在不同類型驅(qū)動器上使用的數(shù)據(jù)傳輸率。僅使用低2位(D1D0),00-500kbps,01-300kbps,10-250k

6、bps。Linux0.11內(nèi)核中,驅(qū)動程序與軟驅(qū)中磁盤之間的數(shù)據(jù)傳輸是通過DMA控制器實現(xiàn)的。在進行讀寫操作之前,需要首先初始化DMA控制器,并對軟驅(qū)控制器進行編程。對于386兼容PC,軟驅(qū)控制器使用硬件中斷IR6(對應(yīng)中斷描述符0x26),并采用DMA控制器的通道2。有關(guān)DMA控制處理的內(nèi)容見后面小節(jié)。1.3軟盤控制器命令軟盤控制器共可以接受15條命令。每個命令均經(jīng)歷三個階段:命令階段、執(zhí)行階段和結(jié)果階段。共10頁命令階段是CPU向FDC發(fā)送命令字節(jié)和參數(shù)字節(jié)。每條命令的第一個字節(jié)總是命令字節(jié)(命令碼)。其后跟著0-8字節(jié)的參數(shù)。執(zhí)行階段是FDC執(zhí)行命令規(guī)定的操作。在執(zhí)行階段CP

7、U是不加干預(yù)的,一般是通過FDC發(fā)出中斷請求獲知命令執(zhí)行的結(jié)束。如果CPU發(fā)出的FDC命令是傳送數(shù)據(jù),則FDC可以以中斷方式或DMA方式進行。中斷方式每次傳送1字節(jié)。DMA方式是在DMA控制器管理下,F(xiàn)DC與內(nèi)存進行數(shù)據(jù)的傳輸直至全部數(shù)據(jù)傳送完。此時DMA控制器會將傳輸字節(jié)計數(shù)終止信號通知FDC,最后由FDC發(fā)出中斷請求信號告知CPU執(zhí)行階段結(jié)束。結(jié)果階段是由CPU讀取FDC數(shù)據(jù)寄存器返回值,從而獲得FDC命令執(zhí)行的結(jié)果。返回結(jié)果數(shù)據(jù)的長度為0-7字節(jié)。對于沒有返回結(jié)

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。