資料介紹
摘要:
介紹以TMS320F240為核心,設(shè)計(jì)IDE接口仿零點(diǎn)器的硬件和軟件設(shè)計(jì)方法。突出特點(diǎn)是硬件設(shè)計(jì)簡練實(shí)用,監(jiān)控軟件精巧靈活。在設(shè)計(jì)嵌入式系統(tǒng)調(diào)試工具中具有典型性和實(shí)用性,對其它系統(tǒng)的調(diào)試也借鑒作用。 關(guān)鍵詞:仿真器 監(jiān)控程序 硬件調(diào)試 IDE接口 隨著航空電子系統(tǒng)數(shù)字化的發(fā)展,機(jī)載嵌入式計(jì)算機(jī)逐步擺脫了“純粹嵌入”時代,開始以主要控制角色而顯露頭腳。其存儲系統(tǒng)也和地面計(jì)算機(jī)系統(tǒng)一樣,提出了“海量存儲”的要求。借鑒和使用IDE接品時一條重要途徑。但在調(diào)試時一般缺乏IDE接口主方(Host)控制器。PC機(jī)雖然帶有兩個標(biāo)準(zhǔn)的集成在主板上的IDE接口,但在目前的Widows系統(tǒng)下卻是透明的,無法在硬件調(diào)試級進(jìn)行控制驅(qū)動?!肮び破涫?,必先利其器”。為解決調(diào)試工具,筆者在此前自己動手,設(shè)計(jì)了一個IDE接口仿真器。硬件極其簡練實(shí)用,軟件精巧靈活。介紹出來,與大家切磋。
1 仿真器硬件設(shè)計(jì)
眾所周知,IDE/ATA接口是16位總線,映像在主機(jī)的I/O空間,由主機(jī)對接口內(nèi)的2組寄存器操作來完成“海量存儲”。這些寄存器僅由2根片選(CS1FX、CS3FX)和3根地址線(A2、A1、A0)尋址。仿真器硬件只要能在監(jiān)控程序的控制下產(chǎn)生對應(yīng)控制信號,便能真實(shí)地仿真IDE調(diào)試所需的環(huán)境。需要仿真處理的主要信號如表1所列。信號方向以仿真器為參照,輸出(Output)方向由仿真器驅(qū)動,輸入(Input)信號由IDE設(shè)備驅(qū)動。 表1 主要仿真處理的信號 信號名方 向有效電平功 能 HDRST O(輸出) L(低)復(fù)位IDE設(shè)備 CS1FX O(輸出) L(低)第一組寄存器片選 CS3FX O(輸出) L(低)第二組寄存器片選 A2~A0 O(輸出)組合值接口內(nèi)寄存器偏移地址 IOR O(輸出) L(低)寄存器讀信號 IOW O(輸出) L(低)寄存器寫信號 D15D0 I/O(雙向)組合值數(shù)據(jù)總線,寫時由仿真器驅(qū)動,讀時由IDE設(shè)備驅(qū)動 DRQ I(輸入) H(高) DMA請求 IRQ I(輸入) H(高)中斷請求 IDE接口的讀寫時序和一般CPU外設(shè)時序波形相似,其讀取周期為70ns,具體波形不再給出。使用TI公司的TMS320F240(以下簡稱F240)可以方便地仿真出IDE的時序波形。只要使用外部READY信號,把I/O周期延長到70ns以上,就可以保證仿真數(shù)據(jù)讀寫可靠。以F240為核心,仿真器硬件設(shè)計(jì)真數(shù)據(jù)讀寫可靠。以F240為核心,仿真器硬件設(shè)計(jì)就非常簡練。其全部硬件電路如圖1、圖2和圖3所示。除去初期調(diào)試和驅(qū)動芯片外,整個核心就是F240和GAL16V8,已經(jīng)仿真全部的IDE時序波形,圖1是仿真器自身調(diào)試仿真監(jiān)控程序時電路。使用2片CY7C199,組成32K%26;#215;16位的片外RAM程序存儲器空間。當(dāng)程序調(diào)試完成后,斷開H1,將監(jiān)控程序通過JTAG口直接燒入F240,就可以拔去2片外部程序存儲器CY7C199。 圖1 調(diào)試時的程序存儲器配置 當(dāng)仿真監(jiān)控程序調(diào)試完成后,正式定型的仿真核心電路如圖2所示。電路設(shè)計(jì)總的原則是簡練實(shí)用,所以復(fù)位采用普通的RC電路,外加手工復(fù)位開關(guān)SW保證仿真器自身復(fù)位;利用RS232和主機(jī)之間通信,減少硬件額外開銷;IDE接口的中斷請求HIRQ直接接F240的外部中斷XINT1(因?yàn)镠IRQ高電平有效,所以將蓁不用的外部斷XINT2等接地,保證蓁中斷源不產(chǎn)生中斷請求,減少軟件中斷響應(yīng)多重判斷環(huán)節(jié));將F240的PB端口設(shè)置為輸出端口,DMA請求HDRQ接到PB端口的最低位PB0,可以直接由硬件檢測DRQ狀態(tài)即可,并不真正需要DMA控制器;將F240的PC端口設(shè)置為輸出端品,最高位PC7為復(fù)位IDE端口信號,當(dāng)該位設(shè)置為0(低電平)時,產(chǎn)生復(fù)位IDE設(shè)備信號HDRST,該位設(shè)置為1時結(jié)束復(fù)位。其復(fù)位時間可由軟件控制。IDE設(shè)備的寄存器映像在F240的I/O空間從0000H開始的16位地址。外部I/O只有IDE接口,不必采用全譯碼,直接由I/O片選IS和地址A3區(qū)分產(chǎn)生CFIFX和CS3FX即可。接口內(nèi)偏移地址直接由A2~A0提供。F240的寫信號WR可以直接作為接口寫信號。但是F240的讀信號是狀態(tài)信號,在連續(xù)讀操作中保持低電平,并無上升沿,所以需要專門產(chǎn)生讀信號。PC主機(jī)通過串口和仿真器通信,監(jiān)控仿真器,從而驅(qū)動調(diào)試的IDE設(shè)備。仿真器和IDE設(shè)備通過標(biāo)準(zhǔn)的硬盤電纜連接。為提高信號的抗干擾能力,這些信號經(jīng)過總線驅(qū)動器驅(qū)動。圖3是驅(qū)動和接口電路。 數(shù)據(jù)通路用16路驅(qū)動的IDT74LS16245實(shí)現(xiàn),開門信號直接由I/O片選信號IS控制,方向端由寫信號WR控制。而單向提供給IDE設(shè)備的其它信號,都經(jīng)過54F244驅(qū)動。所有控制信號由GAL16V8實(shí)現(xiàn)。以下是其控制邏輯代碼,信號名稱和功能可參見 。 圖2 核心仿真控制電路 …… EQUATIONS !HRST=!POR#!HRST;//RC上電復(fù)位和F240設(shè)置復(fù)位都產(chǎn)生IDE復(fù)位 !CS1FX=!IS%26;amp;!A3; //A3=0;產(chǎn)生第一組寄存器片選CS1FX=!IS %26;amp; A3; //A3=1:產(chǎn)生第二組寄存器片選CS3FX !IOR=!IS %26;amp; !RD; //*專門產(chǎn)生寄存器讀信號。 [Q1,Q0].CLK=CPUCLK; [Q1,Q0].OE=!OE; [Q1,Q0].AR=!POR; //復(fù)位 //============================================== //F240系統(tǒng)控制狀態(tài)機(jī) //時鐘20MHz,每一拍50ns //程序存儲器CY7C199讀寫周期≤35ns,無需等待 //IDE接口寄存器讀寫周期≥70ns,等待2拍 //=============================================== State_Diagram [Q1,Q0]; State S0: //空閑狀態(tài) READY=H; //支持CY7C199訪問 if(!IS)then //要訪問IDE接口寄存器 S1 with {READY240=L;} State S1: //開始等待 READY240=L; Goto S2; State S2: READY240=L; Goto S3; State3: //時間到 READY240=H; Goto S0; //F240對READY信號只采樣一次 END 仿真硬件的核心只有1片F(xiàn)240和1片GAL16V8。 驅(qū)動與接口電路 2 仿真器監(jiān)控軟件設(shè)計(jì) 軟件設(shè)計(jì)包括駐留F240的監(jiān)控程序和PC宿主機(jī)的監(jiān)控程序,兩者之間通過串口配合工作。這當(dāng)然降低了IDE接口的數(shù)據(jù)吞吐率,但在邏輯仿真調(diào)試時不是主要焦點(diǎn)。為簡約起見,避免復(fù)雜的詞法分析,主從之間采用單字符監(jiān)控命令。其串口監(jiān)控命令通信幀定義如下: 0 1 2…n-2 n-1 幀標(biāo)志(AAH)命令字符(Cmd)參數(shù)項(xiàng)校驗(yàn)和CheckSum 其校驗(yàn)和為前n-1個字節(jié)代數(shù)和的補(bǔ)碼,即 CheckSum=-∑Bi(i=0,1…n-1) 下面介紹幾個主要命令和程序?qū)崿F(xiàn)方法,其中寄存器名稱和地址可參考圖4界面。
?。?)1命令:讀IDE寄存器 當(dāng)監(jiān)控程序識別出1命令后,根據(jù)參數(shù)提供的寄存器索引,映射為對應(yīng)的I/O地址。F240的輸入/輸出命令與x86系列不同,它在指令中必須直接給出地址。 … LACC Reg BZ IsDatReg ;0號索引,即讀數(shù)據(jù)寄存器 SUB #1 BZ IsError ;/*號索引,即讀錯誤類型寄存器 … BZ IsAltReg ;8號索引,即讀后備狀態(tài)寄存器 SUB #1 BZ IsDrvAddrReg ;9號索引,即讀驅(qū)動器地址寄存器 … IsDatReg IN Value,DatReg ;讀數(shù)據(jù)寄存器 RET IsAltReg: IN Value,DevAddrReg;讀驅(qū)動器地址寄存器 RET 當(dāng)I命令執(zhí)行完畢后,應(yīng)該將寄存器讀入值回送PC主機(jī)。
(2)0命令:寫IDE寄存器 寄存器輸出命令參數(shù)需要提供寄存器索引和映射為對應(yīng)的I/O地址。
(3)H命令:硬件復(fù)位IDE設(shè)備 硬件復(fù)位時應(yīng)將F240的IOPC7引腳設(shè)置為低電平10ms以上。 LDP #00E1h ;DP=00E1H:708H~70FFH的頁址 LACL #8000H ;D15=1:IOPC7:作輸出 D7=0;設(shè)置IOPC7=0 SACL PCDATDIR ;寫PC端口,設(shè)置HRST信號為低電平 CALL Delay 10ms ;保持復(fù)位信號10ms的低電平 LACL #8080H ;D15=1:IOPC7:作輸出 ;D7=1:設(shè)置IOPC7=1 SACL PCDATDIR ;恢復(fù)HRST信號為高電平 類似地,監(jiān)測DMA請求HDRQ狀態(tài)時,可以設(shè)置端為輸入屬性,然后讀入IOPB0。監(jiān)測中斷請求HIRQ時,可以直接讀XINT1狀態(tài),即讀7070H處的XINT1CR寄存器。
?。?)S命令:軟件復(fù)位IDE設(shè)備 軟件復(fù)位時可以向IDE接口的DevCtrlReg(設(shè)備控制寄存器)寫入適當(dāng)值實(shí)現(xiàn)。 LDP #0 ;指向.bss變量區(qū) SPLK=#000EH,Value ;D2=SW Rst=1:軟件強(qiáng)制復(fù)位 ;D1=/IEn=1:禁止IDE發(fā)中斷 OUT Value,DevCtrlReg ;復(fù)位IDE設(shè)備 CALL Delay 10ms ;保持復(fù)位狀態(tài)10ms SPLK #000AH,Value ;D2=SW Rst=0:結(jié)束復(fù)位狀態(tài) OUT Value,DevCtrlReg CALL Delay 10ms SPLK #000EH,Value ;D6=LBA=1:采用邏輯塊尋址模式 OUT Value,DrvHeadReg ;設(shè)置驅(qū)動器寄存器
?。?)C命令:讀取IDE設(shè)備ID號和相關(guān)配置 IDE設(shè)備內(nèi)的相關(guān)配置對其它操作影響較大,主機(jī)應(yīng)該掌握這些參數(shù)。諸如柱面數(shù)、磁頭數(shù)、每個磁道的扇區(qū)數(shù)以及最大扇區(qū)號等。這段程序稍微復(fù)雜一些。 CALL WaitRDY ;讀狀態(tài)寄存器,等待D6=1,亦即IDE設(shè)備完成上次命令 SPLK#000EH,Value OUT Value,DrvHeadReg ;選擇主從驅(qū)動器 SPLK #00ECH,Value OUT Value,CmdReg ;發(fā)命令,讀取配置參數(shù) CALL WaitDRQ ;讀狀態(tài)寄存器,等待D6=1并且D3=1,亦即RDY并發(fā)出DRQ請求 MAR *,AR1 ;AR1:當(dāng)前輔助寄存器 LAR AR1,#BufSADDR ;AR1→扇區(qū)緩沖區(qū)開始地址 RPT #0FFh ;循環(huán)次數(shù)=FFH+1=256 IN *+,DatReg ;讀入配置數(shù)據(jù) 讀出配置參數(shù)后,再把它送給PC機(jī)的監(jiān)控程序,從中再細(xì)分出具體參數(shù)。 類似地,讀一個扇區(qū)或?qū)懸粋€扇區(qū)的命令與這個命令相似。只是在發(fā)命令前應(yīng)該設(shè)置柱面扇區(qū)等寄存器定位到具體的扇區(qū)。
(6)PC宿主機(jī)監(jiān)控程序功能 PC宿主機(jī)監(jiān)控程序主要通過串口監(jiān)控仿真器。在底層通信中,應(yīng)該為每一個監(jiān)控命令建立對應(yīng)函數(shù)。在應(yīng)用層,可以將幾個簡單命令有機(jī)組合,完成復(fù)雜功能,減小仿真器駐留監(jiān)控難度。例如,在讀取配置參數(shù)命令中,分解緩沖數(shù)據(jù)。在讀寫扇區(qū)命令中,將LBA邏輯扇區(qū)地址分解成驅(qū)動器號、扇區(qū)號、柱面號等。 重要的是為用戶提供一個Windows環(huán)境下特別容易操作的接口界面,貼近硬件調(diào)試,產(chǎn)生所需信號波形,用示波器捕獲分析。圖4是宿主機(jī)的一個界面,具體方法細(xì)節(jié)不再討論。 結(jié)語 隨著航空電子新系統(tǒng)研制的智能化和接口標(biāo)準(zhǔn)化,硬件調(diào)試對仿真設(shè)備和環(huán)境要求也越來越高。鑒于成本和上市時間的限制,采用嵌入式CPU研制一些簡單實(shí)用的仿真設(shè)備,是解決矛盾的一條重要途徑。本文所介紹的IDE接口仿真器硬件簡練、軟件精巧,在多個型號的Flash Disk研制中發(fā)揮了重要作用。
介紹以TMS320F240為核心,設(shè)計(jì)IDE接口仿零點(diǎn)器的硬件和軟件設(shè)計(jì)方法。突出特點(diǎn)是硬件設(shè)計(jì)簡練實(shí)用,監(jiān)控軟件精巧靈活。在設(shè)計(jì)嵌入式系統(tǒng)調(diào)試工具中具有典型性和實(shí)用性,對其它系統(tǒng)的調(diào)試也借鑒作用。 關(guān)鍵詞:仿真器 監(jiān)控程序 硬件調(diào)試 IDE接口 隨著航空電子系統(tǒng)數(shù)字化的發(fā)展,機(jī)載嵌入式計(jì)算機(jī)逐步擺脫了“純粹嵌入”時代,開始以主要控制角色而顯露頭腳。其存儲系統(tǒng)也和地面計(jì)算機(jī)系統(tǒng)一樣,提出了“海量存儲”的要求。借鑒和使用IDE接品時一條重要途徑。但在調(diào)試時一般缺乏IDE接口主方(Host)控制器。PC機(jī)雖然帶有兩個標(biāo)準(zhǔn)的集成在主板上的IDE接口,但在目前的Widows系統(tǒng)下卻是透明的,無法在硬件調(diào)試級進(jìn)行控制驅(qū)動?!肮び破涫?,必先利其器”。為解決調(diào)試工具,筆者在此前自己動手,設(shè)計(jì)了一個IDE接口仿真器。硬件極其簡練實(shí)用,軟件精巧靈活。介紹出來,與大家切磋。
1 仿真器硬件設(shè)計(jì)
眾所周知,IDE/ATA接口是16位總線,映像在主機(jī)的I/O空間,由主機(jī)對接口內(nèi)的2組寄存器操作來完成“海量存儲”。這些寄存器僅由2根片選(CS1FX、CS3FX)和3根地址線(A2、A1、A0)尋址。仿真器硬件只要能在監(jiān)控程序的控制下產(chǎn)生對應(yīng)控制信號,便能真實(shí)地仿真IDE調(diào)試所需的環(huán)境。需要仿真處理的主要信號如表1所列。信號方向以仿真器為參照,輸出(Output)方向由仿真器驅(qū)動,輸入(Input)信號由IDE設(shè)備驅(qū)動。 表1 主要仿真處理的信號 信號名方 向有效電平功 能 HDRST O(輸出) L(低)復(fù)位IDE設(shè)備 CS1FX O(輸出) L(低)第一組寄存器片選 CS3FX O(輸出) L(低)第二組寄存器片選 A2~A0 O(輸出)組合值接口內(nèi)寄存器偏移地址 IOR O(輸出) L(低)寄存器讀信號 IOW O(輸出) L(低)寄存器寫信號 D15D0 I/O(雙向)組合值數(shù)據(jù)總線,寫時由仿真器驅(qū)動,讀時由IDE設(shè)備驅(qū)動 DRQ I(輸入) H(高) DMA請求 IRQ I(輸入) H(高)中斷請求 IDE接口的讀寫時序和一般CPU外設(shè)時序波形相似,其讀取周期為70ns,具體波形不再給出。使用TI公司的TMS320F240(以下簡稱F240)可以方便地仿真出IDE的時序波形。只要使用外部READY信號,把I/O周期延長到70ns以上,就可以保證仿真數(shù)據(jù)讀寫可靠。以F240為核心,仿真器硬件設(shè)計(jì)真數(shù)據(jù)讀寫可靠。以F240為核心,仿真器硬件設(shè)計(jì)就非常簡練。其全部硬件電路如圖1、圖2和圖3所示。除去初期調(diào)試和驅(qū)動芯片外,整個核心就是F240和GAL16V8,已經(jīng)仿真全部的IDE時序波形,圖1是仿真器自身調(diào)試仿真監(jiān)控程序時電路。使用2片CY7C199,組成32K%26;#215;16位的片外RAM程序存儲器空間。當(dāng)程序調(diào)試完成后,斷開H1,將監(jiān)控程序通過JTAG口直接燒入F240,就可以拔去2片外部程序存儲器CY7C199。 圖1 調(diào)試時的程序存儲器配置 當(dāng)仿真監(jiān)控程序調(diào)試完成后,正式定型的仿真核心電路如圖2所示。電路設(shè)計(jì)總的原則是簡練實(shí)用,所以復(fù)位采用普通的RC電路,外加手工復(fù)位開關(guān)SW保證仿真器自身復(fù)位;利用RS232和主機(jī)之間通信,減少硬件額外開銷;IDE接口的中斷請求HIRQ直接接F240的外部中斷XINT1(因?yàn)镠IRQ高電平有效,所以將蓁不用的外部斷XINT2等接地,保證蓁中斷源不產(chǎn)生中斷請求,減少軟件中斷響應(yīng)多重判斷環(huán)節(jié));將F240的PB端口設(shè)置為輸出端口,DMA請求HDRQ接到PB端口的最低位PB0,可以直接由硬件檢測DRQ狀態(tài)即可,并不真正需要DMA控制器;將F240的PC端口設(shè)置為輸出端品,最高位PC7為復(fù)位IDE端口信號,當(dāng)該位設(shè)置為0(低電平)時,產(chǎn)生復(fù)位IDE設(shè)備信號HDRST,該位設(shè)置為1時結(jié)束復(fù)位。其復(fù)位時間可由軟件控制。IDE設(shè)備的寄存器映像在F240的I/O空間從0000H開始的16位地址。外部I/O只有IDE接口,不必采用全譯碼,直接由I/O片選IS和地址A3區(qū)分產(chǎn)生CFIFX和CS3FX即可。接口內(nèi)偏移地址直接由A2~A0提供。F240的寫信號WR可以直接作為接口寫信號。但是F240的讀信號是狀態(tài)信號,在連續(xù)讀操作中保持低電平,并無上升沿,所以需要專門產(chǎn)生讀信號。PC主機(jī)通過串口和仿真器通信,監(jiān)控仿真器,從而驅(qū)動調(diào)試的IDE設(shè)備。仿真器和IDE設(shè)備通過標(biāo)準(zhǔn)的硬盤電纜連接。為提高信號的抗干擾能力,這些信號經(jīng)過總線驅(qū)動器驅(qū)動。圖3是驅(qū)動和接口電路。 數(shù)據(jù)通路用16路驅(qū)動的IDT74LS16245實(shí)現(xiàn),開門信號直接由I/O片選信號IS控制,方向端由寫信號WR控制。而單向提供給IDE設(shè)備的其它信號,都經(jīng)過54F244驅(qū)動。所有控制信號由GAL16V8實(shí)現(xiàn)。以下是其控制邏輯代碼,信號名稱和功能可參見 。 圖2 核心仿真控制電路 …… EQUATIONS !HRST=!POR#!HRST;//RC上電復(fù)位和F240設(shè)置復(fù)位都產(chǎn)生IDE復(fù)位 !CS1FX=!IS%26;amp;!A3; //A3=0;產(chǎn)生第一組寄存器片選CS1FX=!IS %26;amp; A3; //A3=1:產(chǎn)生第二組寄存器片選CS3FX !IOR=!IS %26;amp; !RD; //*專門產(chǎn)生寄存器讀信號。 [Q1,Q0].CLK=CPUCLK; [Q1,Q0].OE=!OE; [Q1,Q0].AR=!POR; //復(fù)位 //============================================== //F240系統(tǒng)控制狀態(tài)機(jī) //時鐘20MHz,每一拍50ns //程序存儲器CY7C199讀寫周期≤35ns,無需等待 //IDE接口寄存器讀寫周期≥70ns,等待2拍 //=============================================== State_Diagram [Q1,Q0]; State S0: //空閑狀態(tài) READY=H; //支持CY7C199訪問 if(!IS)then //要訪問IDE接口寄存器 S1 with {READY240=L;} State S1: //開始等待 READY240=L; Goto S2; State S2: READY240=L; Goto S3; State3: //時間到 READY240=H; Goto S0; //F240對READY信號只采樣一次 END 仿真硬件的核心只有1片F(xiàn)240和1片GAL16V8。 驅(qū)動與接口電路 2 仿真器監(jiān)控軟件設(shè)計(jì) 軟件設(shè)計(jì)包括駐留F240的監(jiān)控程序和PC宿主機(jī)的監(jiān)控程序,兩者之間通過串口配合工作。這當(dāng)然降低了IDE接口的數(shù)據(jù)吞吐率,但在邏輯仿真調(diào)試時不是主要焦點(diǎn)。為簡約起見,避免復(fù)雜的詞法分析,主從之間采用單字符監(jiān)控命令。其串口監(jiān)控命令通信幀定義如下: 0 1 2…n-2 n-1 幀標(biāo)志(AAH)命令字符(Cmd)參數(shù)項(xiàng)校驗(yàn)和CheckSum 其校驗(yàn)和為前n-1個字節(jié)代數(shù)和的補(bǔ)碼,即 CheckSum=-∑Bi(i=0,1…n-1) 下面介紹幾個主要命令和程序?qū)崿F(xiàn)方法,其中寄存器名稱和地址可參考圖4界面。
?。?)1命令:讀IDE寄存器 當(dāng)監(jiān)控程序識別出1命令后,根據(jù)參數(shù)提供的寄存器索引,映射為對應(yīng)的I/O地址。F240的輸入/輸出命令與x86系列不同,它在指令中必須直接給出地址。 … LACC Reg BZ IsDatReg ;0號索引,即讀數(shù)據(jù)寄存器 SUB #1 BZ IsError ;/*號索引,即讀錯誤類型寄存器 … BZ IsAltReg ;8號索引,即讀后備狀態(tài)寄存器 SUB #1 BZ IsDrvAddrReg ;9號索引,即讀驅(qū)動器地址寄存器 … IsDatReg IN Value,DatReg ;讀數(shù)據(jù)寄存器 RET IsAltReg: IN Value,DevAddrReg;讀驅(qū)動器地址寄存器 RET 當(dāng)I命令執(zhí)行完畢后,應(yīng)該將寄存器讀入值回送PC主機(jī)。
(2)0命令:寫IDE寄存器 寄存器輸出命令參數(shù)需要提供寄存器索引和映射為對應(yīng)的I/O地址。
(3)H命令:硬件復(fù)位IDE設(shè)備 硬件復(fù)位時應(yīng)將F240的IOPC7引腳設(shè)置為低電平10ms以上。 LDP #00E1h ;DP=00E1H:708H~70FFH的頁址 LACL #8000H ;D15=1:IOPC7:作輸出 D7=0;設(shè)置IOPC7=0 SACL PCDATDIR ;寫PC端口,設(shè)置HRST信號為低電平 CALL Delay 10ms ;保持復(fù)位信號10ms的低電平 LACL #8080H ;D15=1:IOPC7:作輸出 ;D7=1:設(shè)置IOPC7=1 SACL PCDATDIR ;恢復(fù)HRST信號為高電平 類似地,監(jiān)測DMA請求HDRQ狀態(tài)時,可以設(shè)置端為輸入屬性,然后讀入IOPB0。監(jiān)測中斷請求HIRQ時,可以直接讀XINT1狀態(tài),即讀7070H處的XINT1CR寄存器。
?。?)S命令:軟件復(fù)位IDE設(shè)備 軟件復(fù)位時可以向IDE接口的DevCtrlReg(設(shè)備控制寄存器)寫入適當(dāng)值實(shí)現(xiàn)。 LDP #0 ;指向.bss變量區(qū) SPLK=#000EH,Value ;D2=SW Rst=1:軟件強(qiáng)制復(fù)位 ;D1=/IEn=1:禁止IDE發(fā)中斷 OUT Value,DevCtrlReg ;復(fù)位IDE設(shè)備 CALL Delay 10ms ;保持復(fù)位狀態(tài)10ms SPLK #000AH,Value ;D2=SW Rst=0:結(jié)束復(fù)位狀態(tài) OUT Value,DevCtrlReg CALL Delay 10ms SPLK #000EH,Value ;D6=LBA=1:采用邏輯塊尋址模式 OUT Value,DrvHeadReg ;設(shè)置驅(qū)動器寄存器
?。?)C命令:讀取IDE設(shè)備ID號和相關(guān)配置 IDE設(shè)備內(nèi)的相關(guān)配置對其它操作影響較大,主機(jī)應(yīng)該掌握這些參數(shù)。諸如柱面數(shù)、磁頭數(shù)、每個磁道的扇區(qū)數(shù)以及最大扇區(qū)號等。這段程序稍微復(fù)雜一些。 CALL WaitRDY ;讀狀態(tài)寄存器,等待D6=1,亦即IDE設(shè)備完成上次命令 SPLK#000EH,Value OUT Value,DrvHeadReg ;選擇主從驅(qū)動器 SPLK #00ECH,Value OUT Value,CmdReg ;發(fā)命令,讀取配置參數(shù) CALL WaitDRQ ;讀狀態(tài)寄存器,等待D6=1并且D3=1,亦即RDY并發(fā)出DRQ請求 MAR *,AR1 ;AR1:當(dāng)前輔助寄存器 LAR AR1,#BufSADDR ;AR1→扇區(qū)緩沖區(qū)開始地址 RPT #0FFh ;循環(huán)次數(shù)=FFH+1=256 IN *+,DatReg ;讀入配置數(shù)據(jù) 讀出配置參數(shù)后,再把它送給PC機(jī)的監(jiān)控程序,從中再細(xì)分出具體參數(shù)。 類似地,讀一個扇區(qū)或?qū)懸粋€扇區(qū)的命令與這個命令相似。只是在發(fā)命令前應(yīng)該設(shè)置柱面扇區(qū)等寄存器定位到具體的扇區(qū)。
(6)PC宿主機(jī)監(jiān)控程序功能 PC宿主機(jī)監(jiān)控程序主要通過串口監(jiān)控仿真器。在底層通信中,應(yīng)該為每一個監(jiān)控命令建立對應(yīng)函數(shù)。在應(yīng)用層,可以將幾個簡單命令有機(jī)組合,完成復(fù)雜功能,減小仿真器駐留監(jiān)控難度。例如,在讀取配置參數(shù)命令中,分解緩沖數(shù)據(jù)。在讀寫扇區(qū)命令中,將LBA邏輯扇區(qū)地址分解成驅(qū)動器號、扇區(qū)號、柱面號等。 重要的是為用戶提供一個Windows環(huán)境下特別容易操作的接口界面,貼近硬件調(diào)試,產(chǎn)生所需信號波形,用示波器捕獲分析。圖4是宿主機(jī)的一個界面,具體方法細(xì)節(jié)不再討論。 結(jié)語 隨著航空電子新系統(tǒng)研制的智能化和接口標(biāo)準(zhǔn)化,硬件調(diào)試對仿真設(shè)備和環(huán)境要求也越來越高。鑒于成本和上市時間的限制,采用嵌入式CPU研制一些簡單實(shí)用的仿真設(shè)備,是解決矛盾的一條重要途徑。本文所介紹的IDE接口仿真器硬件簡練、軟件精巧,在多個型號的Flash Disk研制中發(fā)揮了重要作用。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- DK10仿真器燒寫TMS320F240的注意事項(xiàng)
- TMS320F240官方數(shù)據(jù)下載 3次下載
- 基于TMS320F240 DSP的開關(guān)磁阻電機(jī)控制系統(tǒng) 12次下載
- TMS320F240 DSP求解旋轉(zhuǎn)變壓器角位置和速度的方法 18次下載
- 基于TMS320F240的三相永磁同步電機(jī)速度場定向控制的實(shí)現(xiàn) 12次下載
- TMS320F240單片機(jī) 3次下載
- TMS320F240與外圍器件的SPI接口設(shè)計(jì) 25次下載
- TMS320F240在掃描式攝影點(diǎn)陣控制系統(tǒng)中的應(yīng)用
- 基于TMS320F240的串行通訊設(shè)計(jì)
- TMS320F240開發(fā)板的研制
- 基于TMS320F240 的攝影點(diǎn)陣系統(tǒng)設(shè)計(jì)
- 基于TMS320F240控制步進(jìn)電機(jī)的調(diào)焦系統(tǒng)設(shè)計(jì)
- TMS320F240 的IDE接口仿真器設(shè)計(jì)
- TMS320F240在高頻PWM調(diào)速器中的應(yīng)用
- TMS320F240 pdf datasheet
- fpga仿真器接口定義 886次閱讀
- DPLink仿真器-好用的ARM仿真器推薦 1583次閱讀
- 將LCD仿真器與MAX-IDE和IAR嵌入式工作臺開發(fā)環(huán)境配合使用 1305次閱讀
- 電池仿真器的功能和應(yīng)用 3405次閱讀
- 基于TMS320DM642和EPM240芯片實(shí)現(xiàn)圖像采集與處理系統(tǒng)的設(shè)計(jì) 3266次閱讀
- 基于DSP芯片TMS320F240實(shí)現(xiàn)PWM整流器控制系統(tǒng)的應(yīng)用設(shè)計(jì) 2745次閱讀
- 米爾科技ULINKpro D 仿真器介紹 2536次閱讀
- DSP的串行通信接口SCI與PC機(jī)的通訊設(shè)計(jì) 5238次閱讀
- TMS320F28335最小應(yīng)用系統(tǒng)設(shè)計(jì)電路 1.6w次閱讀
- CMSIS DAP仿真器的特點(diǎn)介紹 3w次閱讀
- TMS320f28335控制AD7656的硬件電路設(shè)計(jì) 1.1w次閱讀
- 什么是單片機(jī)仿真器_單片機(jī)仿真器有什么用_單片機(jī)仿真器怎么用 1.6w次閱讀
- 三大電機(jī)控制方案之DSP篇(1):TMS320F28335 5.5w次閱讀
- 基于SVPWM算法的變頻調(diào)速系統(tǒng)設(shè)計(jì)方案 4800次閱讀
- 基于DSP的自適應(yīng)濾波器的設(shè)計(jì)方案 8236次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論
查看更多