www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 電源 > 數(shù)字電源
[導(dǎo)讀]1.概述近年來作為數(shù)據(jù)存儲(chǔ)介質(zhì)的硬盤,其接口智能化程度越來越高,容量不斷增大,反而體積在變小,并可脫離系統(tǒng)主機(jī),控制起來比較方便,已經(jīng)受到人們的普遍重視?,F(xiàn)今,在許多以單片機(jī)為核心的持續(xù)數(shù)據(jù)采集存儲(chǔ)應(yīng)用

1.概述

近年來作為數(shù)據(jù)存儲(chǔ)介質(zhì)的硬盤,其接口智能化程度越來越高,容量不斷增大,反而體積在變小,并可脫離系統(tǒng)主機(jī),控制起來比較方便,已經(jīng)受到人們的普遍重視?,F(xiàn)今,在許多以單片機(jī)為核心的持續(xù)數(shù)據(jù)采集存儲(chǔ)應(yīng)用系統(tǒng)中,數(shù)據(jù)存儲(chǔ)是一項(xiàng)關(guān)鍵技術(shù),因此,若能將脫機(jī)高速大容量硬盤應(yīng)用到此類系統(tǒng)中,則可提高讀寫速度、降低單位成本、具有很大優(yōu)勢(shì)。但是,硬盤讀寫是一個(gè)復(fù)雜的過程,它涉及到硬盤的接口方式、尋址方式、控制寄存器模型等。這樣以來,我們就急需找到一種方案,占用較少的單片機(jī)資源,卻能比較方便的控制硬盤.本文通過8255[1]對(duì)單片機(jī)進(jìn)行I/O擴(kuò)展,驅(qū)動(dòng)IDE硬盤,成功的解決了上述問題,從而使硬盤可以應(yīng)用到許多智能系統(tǒng)中。

2. 系統(tǒng)硬件結(jié)構(gòu)

如圖1所示,本系統(tǒng)由單片機(jī)(W78E52)、地址鎖存器(74HC373)、8255、施密特反向器(74HC04)、IDE硬盤驅(qū)動(dòng)器組成。單片機(jī)通過8位數(shù)據(jù)總線、A0、A1、CS、WR、RD與8255相連。單片機(jī)將8255作為I/O口擴(kuò)展,8255的端口A和端口B與IDE接口的16位數(shù)據(jù)線相連;端口C產(chǎn)生IDE總線的控制信號(hào)。IDE接口的DASP腳所接的LED作為指示燈,類似PC機(jī),當(dāng)硬盤忙時(shí),指示燈亮。

IDE[2][5]接口是將ST506控制器集成到驅(qū)動(dòng)器中,從處理器角度看,IDE接口可被描述成一系列I/O端口----一組8/16位的I/O端口,兩根片選線(CS1FX和CS3FX),讀寫控制線(RD和WR),三根地址線(DA0,DA1,DA2)和一個(gè)中斷請(qǐng)求(INTRQ)以及用來設(shè)置數(shù)據(jù)傳輸模式的控制線。IDE接口在硬盤的存取采用16位數(shù)據(jù)總線方式。在ATA[3]標(biāo)準(zhǔn)中,IDE接口對(duì)硬盤的輸入輸出操作均是通過對(duì)相應(yīng)寄存器的讀寫來實(shí)現(xiàn)的,這些端口寄存器統(tǒng)稱為命令塊寄存器,是由片選線和地址線進(jìn)行統(tǒng)一編址的,其功能如表1所示:

IDE接口的硬盤驅(qū)動(dòng)器提供兩種數(shù)據(jù)傳輸模式:PIO模式和DMA模式。由于采用PIO模式控制相對(duì)容易,并且提供了一種可編程控制輸入/輸出的快速傳輸方法,所以本系統(tǒng)使用PIO模式。該模式采用高速的數(shù)據(jù)塊I/O,以扇區(qū)為單位,用中斷請(qǐng)求方式與CPU進(jìn)行批量數(shù)據(jù)交換。通常情況下,在扇區(qū)讀寫操作時(shí),每次按16位長度通過內(nèi)部的高速PIO數(shù)據(jù)寄存器進(jìn)行傳輸,每傳輸一扇區(qū)數(shù)據(jù)就產(chǎn)生一次中斷。

系統(tǒng)不能直接用8255的輸出口控制IDE接口,是由于8255有一個(gè)不良特性:當(dāng)切換芯片I/O口的輸入/輸出模式時(shí),將重新復(fù)位所有的引腳狀態(tài),當(dāng)然也包括所有的輸出信號(hào)。這對(duì)于作為數(shù)據(jù)總線的信號(hào)影響不大,但對(duì)控制信號(hào)卻有不小的沖擊,尤其是它會(huì)將IDE接口的復(fù)位線使能(IDE的控制引腳都是低電平有效),這樣就不能正??刂朴脖P。因此,本系統(tǒng)通過74HC04將8255的控制端口接到IDE接口上。此時(shí),當(dāng)8255改變I/O口的工作模式時(shí),所有的輸出全部復(fù)位為“0”,經(jīng)74HC04后所有的控制信號(hào)被拉成高電平,IDE驅(qū)動(dòng)器就不會(huì)處于使能狀態(tài)。

3. 系統(tǒng)軟件設(shè)計(jì)

本系統(tǒng)的軟件設(shè)計(jì)采用程序結(jié)構(gòu)化和功能模塊化的設(shè)計(jì)方法,以便于此設(shè)計(jì)具有良好的可移植性。系統(tǒng)軟件包括主程序和任務(wù)子程序。任務(wù)子程序由讀扇區(qū)  (Read_sector),寫扇區(qū) (Write_sector),錯(cuò)誤處理 (Process_error),邏輯塊地址寫(wr_lba),IDE讀 (ide_rd),IDE寫 (ide_wr)等組成。主程序流程圖如圖2所示:

單片機(jī)上電后對(duì)8255以及IDE驅(qū)動(dòng)器進(jìn)行初始化,并不停查詢鍵盤,以判斷是否有任務(wù)到達(dá),如有任務(wù),則根據(jù)命令進(jìn)入到相應(yīng)任務(wù)子程序。在進(jìn)入任務(wù)子程序之前,必須先檢測(cè)IDE驅(qū)動(dòng)器的狀態(tài),IDE驅(qū)動(dòng)器的狀態(tài)寄存器如表2所示:

[!--empirenews.page--]

在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)操作。IDE接口通過兩個(gè)協(xié)議來執(zhí)行命令:PI協(xié)議(讀扇區(qū))和PO協(xié)議(寫扇區(qū))。

3.1 讀扇區(qū)操作

處理器在接收到讀扇區(qū)的命令后,首先調(diào)用ide_rd線程,將8255數(shù)據(jù)線端口配置成輸入模式,然后讀出IDE的狀態(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:

[!--empirenews.page--]

3.2 寫扇區(qū)操作

如圖4所示,處理器在接收到寫扇區(qū)的命令后,讀IDE的狀態(tài),查詢硬盤是否準(zhǔn)備好(DRDY=1?);若準(zhǔn)備好則把邏輯塊地址寫入到相應(yīng)寄存器,告之所需要操作的扇區(qū);將寫扇區(qū)命令代碼寫入命令寄存器,同時(shí)驅(qū)動(dòng)器設(shè)置狀態(tài)寄存器的DRQ位,表示準(zhǔn)備好接收數(shù)據(jù),處理器通過數(shù)據(jù)寄存器將數(shù)據(jù)寫入扇區(qū)緩沖區(qū),當(dāng)扇區(qū)緩沖區(qū)添滿后,驅(qū)動(dòng)器清除DRQ位,并置位BSY。驅(qū)動(dòng)器將扇區(qū)緩沖區(qū)中的數(shù)據(jù)寫入硬盤,當(dāng)寫盤結(jié)束,清除BSY位,發(fā)中斷請(qǐng)求信號(hào) INTRQ,CPU接收到中斷信號(hào)后,讀驅(qū)動(dòng)器狀態(tài)寄存器,同時(shí)將中斷信號(hào)INTRQ清除。而后處理器讀取狀態(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.3邏輯塊尋址操作

IDE可以用兩種方法來尋址即物理尋址方式(CHS)和邏輯尋找方式(LBA)。由于LAB是將物理參數(shù)轉(zhuǎn)換成線性地址,對(duì)用戶來說驅(qū)動(dòng)器是有由連續(xù)數(shù)據(jù)塊(扇區(qū))組成的存儲(chǔ)介質(zhì),不需要知道驅(qū)動(dòng)器的磁頭、磁道等參數(shù)。因此,本系統(tǒng)采用LBA,其與CHS影射關(guān)系為:

LBA=(柱面號(hào)*磁頭數(shù)+磁頭號(hào))*扇區(qū)數(shù)+扇區(qū)編號(hào)1

在該操作中,處理器根據(jù)上述映射關(guān)系通過寫4個(gè)字節(jié)LBA地址分別向磁頭號(hào)寄存器、柱面號(hào)高字節(jié)寄存器、柱面號(hào)低字節(jié)寄存器以及起始扇區(qū)號(hào)寄存器寫入數(shù)據(jù),以得出需要操作的扇區(qū)。

3.4 ide_rd線程和ide_wr線程

處理器通過ide_rd線程和ide_wr線程,設(shè)置8255工作模式,對(duì)IDE硬盤的寄存器進(jìn)行讀寫操作,控制IDE讀寫周期。

[!--empirenews.page--]


讀周期(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                             ;子程序返回
寫周期(ide_wr):

寫周期與讀周期類似,首先將8255配置為寫模式,選中所所要操作寄存器,將寄存器高8位和低8位數(shù)據(jù)分別送到端口A、B,激活I(lǐng)DE總線的寫信號(hào);寫完畢,通過復(fù)位端口的相應(yīng)位清除IDE總線的寫信號(hào)。

3.5錯(cuò)誤處理操作

在對(duì)硬盤讀寫操作時(shí),需要查詢狀態(tài)寄存器的ERR位,判斷是否有錯(cuò)。若有錯(cuò),查詢IDE的錯(cuò)誤寄存器,判斷錯(cuò)誤類型,進(jìn)行相應(yīng)的錯(cuò)誤處理:在寫扇區(qū)操作中,當(dāng)檢測(cè)到壞扇區(qū)(BBK)錯(cuò)誤時(shí),跳過并標(biāo)記壞扇區(qū),重新分配扇區(qū);在讀寫操作中,如果沒有發(fā)現(xiàn)0磁道,將調(diào)用驅(qū)動(dòng)器重校命令來使驅(qū)動(dòng)器從錯(cuò)誤中恢復(fù)出來;在讀扇區(qū)過程中,若發(fā)生錯(cuò)誤,驅(qū)動(dòng)器將重讀出錯(cuò)扇區(qū),若仍有錯(cuò)誤,操作將被終止。

4. 結(jié)束語

本系統(tǒng)提出了一種單片機(jī)控制硬盤的方法,能夠比較簡潔方便對(duì)硬盤進(jìn)行讀寫等操作,并成功的應(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硬盤驅(qū)動(dòng)器 新浪潮 1996  P17
 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉