中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > TMS320F240的IDE接口仿真器設(shè)計(jì)

        TMS320F240的IDE接口仿真器設(shè)計(jì)

        作者: 時(shí)間:2004-12-06 來(lái)源:網(wǎng)絡(luò) 收藏
        摘要:介紹以為核心,仿零點(diǎn)器的硬件和軟件方法。突出特點(diǎn)是硬件簡(jiǎn)練實(shí)用,監(jiān)控軟件精巧靈活。在設(shè)計(jì)嵌入式系統(tǒng)調(diào)試工具中具有典型性和實(shí)用性,對(duì)其它系統(tǒng)的調(diào)試也借鑒作用。

        關(guān)鍵詞: 監(jiān)控程序 硬件調(diào)試

        隨著航空電子系統(tǒng)數(shù)字化的發(fā)展,機(jī)載嵌入式計(jì)算機(jī)逐步擺脫了“純粹嵌入”時(shí)代,開(kāi)始以主要控制角色而顯露頭腳。其存儲(chǔ)系統(tǒng)也和地面計(jì)算機(jī)系統(tǒng)一樣,提出了“海量存儲(chǔ)”的要求。借鑒和使用接品時(shí)一條重要途徑。但在調(diào)試時(shí)一般缺乏IDE主方(Host)控制器。PC機(jī)雖然帶有兩個(gè)標(biāo)準(zhǔn)的集成在主板上的IDE接口,但在目前的Widows系統(tǒng)下卻是透明的,無(wú)法在硬件調(diào)試級(jí)進(jìn)行控制驅(qū)動(dòng)?!肮び破涫拢叵壤淦鳌?。為解決調(diào)試工具,筆者在此前自己動(dòng)手,設(shè)計(jì)了一個(gè)IDE接口。硬件極其簡(jiǎn)練實(shí)用,軟件精巧靈活。介紹出來(lái),與大家切磋。

        1 硬件設(shè)計(jì)

        眾所周知,IDE/ATA接口是16位總線,映像在主機(jī)的I/O空間,由主機(jī)對(duì)接口內(nèi)的2組寄存器操作來(lái)完成“海量存儲(chǔ)”。這些寄存器僅由2根片選(CS1FX、CS3FX)和3根地址線(A2、A1、A0)尋址。仿真器硬件只要能在監(jiān)控程序的控制下產(chǎn)生對(duì)應(yīng)控制信號(hào),便能真實(shí)地仿真IDE調(diào)試所需的環(huán)境。需要仿真處理的主要信號(hào)如表1所列。信號(hào)方向以仿真器為參照,輸出(Output)方向由仿真器驅(qū)動(dòng),輸入(Input)信號(hào)由IDE設(shè)備驅(qū)動(dòng)。

        表1 主要仿真處理的信號(hào)

        信號(hào)名方 向有效電平功 能
        HDRSTO(輸出)L(低)復(fù)位IDE設(shè)備
        CS1FXO(輸出)L(低)第一組寄存器片選
        CS3FXO(輸出)L(低)第二組寄存器片選
        A2~A0O(輸出)組合值接口內(nèi)寄存器偏移地址
        IORO(輸出)L(低)寄存器讀信號(hào)
        IOWO(輸出)L(低)寄存器寫(xiě)信號(hào)
        D15D0I/O(雙向)組合值數(shù)據(jù)總線,寫(xiě)時(shí)由仿真器驅(qū)動(dòng),讀時(shí)由IDE設(shè)備驅(qū)動(dòng)
        DRQI(輸入)H(高)DMA請(qǐng)求
        IRQI(輸入)H(高)中斷請(qǐng)求

        IDE接口的讀寫(xiě)時(shí)序和一般CPU外設(shè)時(shí)序波形相似,其讀取周期為70ns,具體波形不再給出。使用TI公司的(以下簡(jiǎn)稱(chēng)F240)可以方便地仿真出IDE的時(shí)序波形。只要使用外部READY信號(hào),把I/O周期延長(zhǎng)到70ns以上,就可以保證仿真數(shù)據(jù)讀寫(xiě)可靠。以F240為核心,仿真器硬件設(shè)計(jì)真數(shù)據(jù)讀寫(xiě)可靠。以F240為核心,仿真器硬件設(shè)計(jì)就非常簡(jiǎn)練。其全部硬件電路如圖1、圖2和圖3所示。除去初期調(diào)試和驅(qū)動(dòng)芯片外,整個(gè)核心就是F240和GAL16V8,已經(jīng)仿真全部的IDE時(shí)序波形,圖1是仿真器自身調(diào)試仿真監(jiān)控程序時(shí)電路。使用2片CY7C199,組成32K16位的片外RAM程序存儲(chǔ)器空間。當(dāng)程序調(diào)試完成后,斷開(kāi)H1,將監(jiān)控程序通過(guò)JTAG口直接燒入F240,就可以拔去2片外部程序存儲(chǔ)器CY7C199。

        圖1 調(diào)試時(shí)的程序存儲(chǔ)器配置

        當(dāng)仿真監(jiān)控程序調(diào)試完成后,正式定型的仿真核心電路如圖2所示。電路設(shè)計(jì)總的原則是簡(jiǎn)練實(shí)用,所以復(fù)位采用普通的RC電路,外加手工復(fù)位開(kāi)關(guān)SW保證仿真器自身復(fù)位;利用RS232和主機(jī)之間通信,減少硬件額外開(kāi)銷(xiāo);IDE接口的中斷請(qǐng)求HIRQ直接接F240的外部中斷XINT1(因?yàn)镠IRQ高電平有效,所以將蓁不用的外部斷XINT2等接地,保證蓁中斷源不產(chǎn)生中斷請(qǐng)求,減少軟件中斷響應(yīng)多重判斷環(huán)節(jié));將F240的PB端口設(shè)置為輸出端口,DMA請(qǐng)求HDRQ接到PB端口的最低位PB0,可以直接由硬件檢測(cè)DRQ狀態(tài)即可,并不真正需要DMA控制器;將F240的PC端口設(shè)置為輸出端品,最高位PC7為復(fù)位IDE端口信號(hào),當(dāng)該位設(shè)置為0(低電平)時(shí),產(chǎn)生復(fù)位IDE設(shè)備信號(hào)HDRST,該位設(shè)置為1時(shí)結(jié)束復(fù)位。其復(fù)位時(shí)間可由軟件控制。IDE設(shè)備的寄存器映像在F240的I/O空間從0000H開(kāi)始的16位地址。外部I/O只有IDE接口,不必采用全譯碼,直接由I/O片選IS和地址A3區(qū)分產(chǎn)生CFIFX和CS3FX即可。接口內(nèi)偏移地址直接由A2~A0提供。F240的寫(xiě)信號(hào)WR可以直接作為接口寫(xiě)信號(hào)。但是F240的讀信號(hào)是狀態(tài)信號(hào),在連續(xù)讀操作中保持低電平,并無(wú)上升沿,所以需要專(zhuān)門(mén)產(chǎn)生讀信號(hào)。PC主機(jī)通過(guò)串口和仿真器通信,監(jiān)控仿真器,從而驅(qū)動(dòng)調(diào)試的IDE設(shè)備。仿真器和IDE設(shè)備通過(guò)標(biāo)準(zhǔn)的硬盤(pán)電纜連接。為提高信號(hào)的抗干擾能力,這些信號(hào)經(jīng)過(guò)總線驅(qū)動(dòng)器驅(qū)動(dòng)。圖3是驅(qū)動(dòng)和接口電路。

        數(shù)據(jù)通路用16路驅(qū)動(dòng)的IDT74LS16245實(shí)現(xiàn),開(kāi)門(mén)信號(hào)直接由I/O片選信號(hào)IS控制,方向端由寫(xiě)信號(hào)WR控制。而單向提供給IDE設(shè)備的其它信號(hào),都經(jīng)過(guò)54F244驅(qū)動(dòng)。所有控制信號(hào)由GAL16V8實(shí)現(xiàn)。以下是其控制邏輯代碼,信號(hào)名稱(chēng)和功能可參見(jiàn)圖2。

        圖2 核心仿真控制電路

        ……

        EQUATIONS

        !HRST=!POR#!HRST;//RC上電復(fù)位和F240設(shè)置復(fù)位都產(chǎn)生IDE復(fù)位

        !CS1FX=!IS!A3; //A3=0;產(chǎn)生第一組寄存器片選CS1FX=!IS A3; //A3=1:產(chǎn)生第二組寄存器片選CS3FX

        !IOR=!IS !RD; //*專(zhuān)門(mén)產(chǎn)生寄存器讀信號(hào).

        [Q1,Q0].CLK=CPUCLK;

        [Q1,Q0].OE=!OE;

        [Q1,Q0].AR=!POR; //復(fù)位

        //==============================================

        //F240系統(tǒng)控制狀態(tài)機(jī)

        //時(shí)鐘20MHz,每一拍50ns

        //程序存儲(chǔ)器CY7C199讀寫(xiě)周期≤35ns,無(wú)需等待

        //IDE接口寄存器讀寫(xiě)周期≥70ns,等待2拍

        //===============================================

        State_Diagram [Q1,Q0];

        State S0: //空閑狀態(tài)

        READY=H; //支持CY7C199訪問(wèn)

        if(!IS)then //要訪問(wèn)IDE接口寄存器

        S1 with {READY240=L;}

        State S1: //開(kāi)始等待

        READY240=L;

        Goto S2;

        State S2:

        READY240=L;

        Goto S3;

        State3: //時(shí)間到

        READY240=H;

        Goto S0; //F240對(duì)READY信號(hào)只采樣一次

        END

        仿真硬件的核心只有1片F(xiàn)240和1片GAL16V8。

        圖3 驅(qū)動(dòng)與接口電路

        2 仿真器監(jiān)控軟件設(shè)計(jì)

        軟件設(shè)計(jì)包括駐留F240的監(jiān)控程序和PC宿主機(jī)的監(jiān)控程序,兩者之間通過(guò)串口配合工作。這當(dāng)然降低了IDE接口的數(shù)據(jù)吞吐率,但在邏輯仿真調(diào)試時(shí)不是主要焦點(diǎn)。為簡(jiǎn)約起見(jiàn),避免復(fù)雜的詞法分析,主從之間采用單字符監(jiān)控命令。其串口監(jiān)控命令通信幀定義如下:

        012…n-2n-1
        幀標(biāo)志(AAH)命令字符(Cmd)參數(shù)項(xiàng)校驗(yàn)和CheckSum

        其校驗(yàn)和為前n-1個(gè)字節(jié)代數(shù)和的補(bǔ)碼,即

        CheckSum=-∑Bi(i=0,1…n-1)

        下面介紹幾個(gè)主要命令和程序?qū)崿F(xiàn)方法,其中寄存器名稱(chēng)和地址可參考圖4界面。

        (1)1命令:讀IDE寄存器

        當(dāng)監(jiān)控程序識(shí)別出1命令后,根據(jù)參數(shù)提供的寄存器索引,映射為對(duì)應(yīng)的I/O地址。F240的輸入/輸出命令與x86系列不同,它在指令中必須直接給出地址。

        LACC Reg

        BZ IsDatReg ;0號(hào)索引,即讀數(shù)據(jù)寄存器

        SUB #1

        BZ IsError ;/*號(hào)索引,即讀錯(cuò)誤類(lèi)型寄存器

        BZ IsAltReg ;8號(hào)索引,即讀后備狀態(tài)寄存器

        SUB #1

        BZ IsDrvAddrReg ;9號(hào)索引,即讀驅(qū)動(dòng)器地址寄存器

        IsDatReg

        IN Value,DatReg ;讀數(shù)據(jù)寄存器

        RET

        IsAltReg:

        IN Value,DevAddrReg;讀驅(qū)動(dòng)器地址寄存器

        RET

        當(dāng)I命令執(zhí)行完畢后,應(yīng)該將寄存器讀入值回送PC主機(jī)。

        (2)0命令:寫(xiě)IDE寄存器

        寄存器輸出命令參數(shù)需要提供寄存器索引和映射為對(duì)應(yīng)的I/O地址。

        (3)H命令:硬件復(fù)位IDE設(shè)備

        硬件復(fù)位時(shí)應(yīng)將F240的IOPC7引腳設(shè)置為低電平10ms以上。

        LDP #00E1h ;DP=00E1H:708H~70FFH的頁(yè)址

        LACL #8000H ;D15=1:IOPC7:作輸出

        D7=0;設(shè)置IOPC7=0

        SACL PCDATDIR ;寫(xiě)PC端口,設(shè)置HRST信號(hào)為低電平

        CALL Delay 10ms ;保持復(fù)位信號(hào)10ms的低電平

        LACL #8080H ;D15=1:IOPC7:作輸出

        ;D7=1:設(shè)置IOPC7=1

        SACL PCDATDIR ;恢復(fù)HRST信號(hào)為高電平

        類(lèi)似地,監(jiān)測(cè)DMA請(qǐng)求HDRQ狀態(tài)時(shí),可以設(shè)置端為輸入屬性,然后讀入IOPB0。監(jiān)測(cè)中斷請(qǐng)求HIRQ時(shí),可以直接讀XINT1狀態(tài),即讀7070H處的XINT1CR寄存器。

        (4)S命令:軟件復(fù)位IDE設(shè)備

        軟件復(fù)位時(shí)可以向IDE接口的DevCtrlReg(設(shè)備控制寄存器)寫(xiě)入適當(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ū)動(dòng)器寄存器

        (5)C命令:讀取IDE設(shè)備ID號(hào)和相關(guān)配置

        IDE設(shè)備內(nèi)的相關(guān)配置對(duì)其它操作影響較大,主機(jī)應(yīng)該掌握這些參數(shù)。諸如柱面數(shù)、磁頭數(shù)、每個(gè)磁道的扇區(qū)數(shù)以及最大扇區(qū)號(hào)等。這段程序稍微復(fù)雜一些。

        CALL WaitRDY ;讀狀態(tài)寄存器,等待D6=1,亦即IDE設(shè)備完成上次命令

        SPLK#000EH,Value

        OUT Value,DrvHeadReg ;選擇主從驅(qū)動(dòng)器

        SPLK #00ECH,Value

        OUT Value,CmdReg ;發(fā)命令,讀取配置參數(shù)

        CALL WaitDRQ ;讀狀態(tài)寄存器,等待D6=1并且D3=1,亦即RDY并發(fā)出DRQ請(qǐng)求

        MAR *,AR1 ;AR1:當(dāng)前輔助寄存器

        LAR AR1,#BufSADDR ;AR1→扇區(qū)緩沖區(qū)開(kāi)始地址

        RPT #0FFh ;循環(huán)次數(shù)=FFH+1=256

        IN *+,DatReg ;讀入配置數(shù)據(jù)

        讀出配置參數(shù)后,再把它送給PC機(jī)的監(jiān)控程序,從中再細(xì)分出具體參數(shù)。

        類(lèi)似地,讀一個(gè)扇區(qū)或?qū)懸粋€(gè)扇區(qū)的命令與這個(gè)命令相似。只是在發(fā)命令前應(yīng)該設(shè)置柱面扇區(qū)等寄存器定位到具體的扇區(qū)。

        (6)PC宿主機(jī)監(jiān)控程序功能

        PC宿主機(jī)監(jiān)控程序主要通過(guò)串口監(jiān)控仿真器。在底層通信中,應(yīng)該為每一個(gè)監(jiān)控命令建立對(duì)應(yīng)函數(shù)。在應(yīng)用層,可以將幾個(gè)簡(jiǎn)單命令有機(jī)組合,完成復(fù)雜功能,減小仿真器駐留監(jiān)控難度。例如,在讀取配置參數(shù)命令中,分解緩沖數(shù)據(jù)。在讀寫(xiě)扇區(qū)命令中,將LBA邏輯扇區(qū)地址分解成驅(qū)動(dòng)器號(hào)、扇區(qū)號(hào)、柱面號(hào)等。

        重要的是為用戶提供一個(gè)Windows環(huán)境下特別容易操作的接口界面,貼近硬件調(diào)試,產(chǎn)生所需信號(hào)波形,用示波器捕獲分析。圖4是宿主機(jī)的一個(gè)界面,具體方法細(xì)節(jié)不再討論。

        結(jié)語(yǔ)

        隨著航空電子新系統(tǒng)研制的智能化和接口標(biāo)準(zhǔn)化,硬件調(diào)試對(duì)仿真設(shè)備和環(huán)境要求也越來(lái)越高。鑒于成本和上市時(shí)間的限制,采用嵌入式CPU研制一些簡(jiǎn)單實(shí)用的仿真設(shè)備,是解決矛盾的一條重要途徑。本文所介紹的IDE接口仿真器硬件簡(jiǎn)練、軟件精巧,在多個(gè)型號(hào)的Flash Disk研制中發(fā)揮了重要作用。



        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉