新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 針對Motorola微處理器的BDM調(diào)試系統(tǒng)的設(shè)計

針對Motorola微處理器的BDM調(diào)試系統(tǒng)的設(shè)計

作者: 時間:2012-04-19 來源:網(wǎng)絡(luò) 收藏

由于所有的信號都是單向的,時序和邏輯比較簡單,因此,采用GAL器件實現(xiàn)并口操作時序與操作時序的轉(zhuǎn)換。GAL要實現(xiàn)的功能主要是數(shù)據(jù)的串并和并串轉(zhuǎn)換。

GAL器件與并口接口的信號有:

輸入信號:D0~D7,C1(主機忙狀態(tài)線),DSCLK(提供串行通信時鐘信號)。
  輸出信號:S3,S4,S5,S7(這4個信號做數(shù)據(jù)反向輸出),S6(給PC機提供一個中斷信號)。

他與端口接口的信號有:

輸入信號:PSTCLK,DSO。
輸出信號:DSI?!?br /> 
故需配置12個輸入端和6個輸出端,故選用74GAL16V8的器件即可滿足要求[2]。現(xiàn)在GAL器件要實現(xiàn)的即是將與并口接口的輸入信號(D0~D7,C1,DSCLK)轉(zhuǎn)換成與接口的輸出信號(DSI),同理,也要將與BDM端口接口的輸入信號(PSTCLK,DSO)轉(zhuǎn)換成與并口接口的輸出信號(S3,S4,S5,S6,S7),實現(xiàn)了這2個轉(zhuǎn)換,然后對GAL編程,PCB版圖,可以很快做出BDM卡。

3.2 BDM驅(qū)動程序的

BDM卡已經(jīng)實現(xiàn)了并口到BDM口的時序操作轉(zhuǎn)換,按照一定的數(shù)據(jù)格式傳送和接收數(shù)據(jù)則是BDM卡的驅(qū)動程序要完成的工作,驅(qū)動程序?qū)?shù)據(jù)的處理分為2層:底層完成基本的字節(jié)數(shù)據(jù)的收發(fā)(恢復(fù)和拆分);上層則完成數(shù)據(jù)包的收發(fā)。底層的數(shù)據(jù)收發(fā)原理在調(diào)試卡的過程中已經(jīng)做了詳細的介紹,以下主要介紹數(shù)據(jù)包的收發(fā)處理程序設(shè)計應(yīng)注意的事項。

從BDM操作時序圖中可以看出,串行通道數(shù)據(jù)傳輸速度從直流到PSTCLK頻率的1/5頻率之間,該通道使用雙工模式,數(shù)據(jù)可在主控設(shè)備和從控設(shè)備之間同時發(fā)送和接收,每次傳送的數(shù)據(jù)塊由一個17 b的數(shù)據(jù)包組成,該數(shù)據(jù)包由一個狀態(tài)/控制位和一個16 b數(shù)據(jù)字組成。數(shù)據(jù)格式如下所示:

本文引用地址:http://m.butianyuan.cn/article/149202.htm

發(fā)送數(shù)據(jù)時最高位為控制標志,該位保留,在開發(fā)向CPU發(fā)出命令和數(shù)據(jù)時,該位應(yīng)該被清除。

接收數(shù)據(jù)時最高位為狀態(tài)標志位,指示從CPU返回的消息類型。他與數(shù)據(jù)域及數(shù)據(jù)表示的消息含義之間的關(guān)系為:

顯然,由于每次只能傳送一個字節(jié),故發(fā)送一個數(shù)據(jù)包需要執(zhí)行3次傳送操作。應(yīng)注意由于并口工作在4位組模式,每次只能接收4 b數(shù)據(jù)[1],而并口操作是以字節(jié)為單位進行的,因此,實際上接收一個數(shù)據(jù)包最少應(yīng)該執(zhí)行6次接收操作,而不是5次。也即是說最后剩下一位數(shù)據(jù)也要當一個字節(jié)傳送,這在驅(qū)動程序的設(shè)計當中很容易弄錯。

BDM調(diào)試模塊為外部開發(fā)提供了12個基本類型的命令(用助記符表示):RAREG/RDREG(讀A/D寄存器),WAREG/WDREG(寫A/D寄存器),READ(從存儲器讀數(shù)據(jù)),WRITE(向存儲器寫數(shù)據(jù)),DUMP(與READ命令結(jié)合使用轉(zhuǎn)儲數(shù)據(jù)塊),F(xiàn)ILL(與WRITE命令結(jié)合使用填充數(shù)據(jù)塊),GO(繼續(xù)執(zhí)行程序),NOP(不做任何操作,可以被用做一個空指令),RCREG(讀控制寄存器),WCREG(向系統(tǒng)控制寄存器寫入數(shù)據(jù)),RDMREG(讀調(diào)試模塊寄存器),WDMREG(寫向調(diào)試模塊寄存器寫入數(shù)據(jù));各種命令和他對應(yīng)的應(yīng)答數(shù)據(jù)的格式可以從MCF5272芯片資料上查到。上層驅(qū)動程序最終的任務(wù)就是實現(xiàn)這12種基本命令數(shù)據(jù)和應(yīng)答數(shù)據(jù)的收發(fā),并為調(diào)試軟件提供相應(yīng)的函數(shù)調(diào)用接口,具體的驅(qū)動程序設(shè)計比較簡單,關(guān)鍵是要注意對從調(diào)試模塊返回的狀態(tài)數(shù)據(jù)進行出錯處理。特別是應(yīng)該區(qū)別CPU還沒準備好和總線操作被中止2種消息。前者出現(xiàn)的比較多,一般是在CPU正在執(zhí)行一個任務(wù),不能及時響應(yīng)BDM命令時返回的消息,而后者則往往是CPU執(zhí)行了2條有沖突的指令(也即是非法訪問資源)。這個在驅(qū)動程序中看不出有很大的區(qū)別,但是在調(diào)試應(yīng)用程序時經(jīng)常報告“BUSError”信息。

3.3 BDM調(diào)試軟件的設(shè)計

該軟件應(yīng)該具有如下基本的功能:系統(tǒng)初始化,重啟系統(tǒng),檢查CPU外圍期間工作是否正常,讀寫Flash中的數(shù)據(jù),讀寫SRAM中的數(shù)據(jù),單步執(zhí)行程序。

調(diào)試軟件主要是調(diào)用驅(qū)動程序?qū)崿F(xiàn)的12種BDM調(diào)試命令接口函數(shù)來實現(xiàn)各種功能的。其中需要傳遞參數(shù)給驅(qū)動程序的有:

①檢查外部設(shè)備接口是否工作正常:如RS232串口、USB口、并口、網(wǎng)口等。這類操作需要接口地址和中斷號等參數(shù),并且需要返回操作結(jié)果。

②讀寫SRAM和Flash中的數(shù)據(jù):這些操作需要提供存儲器的地址范圍。

調(diào)試軟件的設(shè)計因開發(fā)系統(tǒng)的操作系統(tǒng)不同,在實現(xiàn)上有比較大的區(qū)別,但處理過程基本相同,因此,軟件的設(shè)計也比較簡單,沒有必要贅述。

3.4 系統(tǒng)運行及其測試

應(yīng)用MCF5272做嵌入式系統(tǒng)開發(fā)時,開發(fā)平臺的操作系統(tǒng)是RedHatLinux,因此,驅(qū)動程序和調(diào)試軟件都是Linux設(shè)計的。驅(qū)動程序?qū)DM調(diào)試卡作為一個字符設(shè)備看待,BDM卡的初始化是在/usr/src/linux/driverschar/mem.c中添加BDM卡初始化代碼[3],該設(shè)備的基本入口點在驅(qū)動程序的file_operation結(jié)構(gòu)中,對BDM卡的操作命令均在此實現(xiàn),具體代碼不再詳述。

調(diào)試系統(tǒng)做整體測試時,首先要在Linux下創(chuàng)建一個字符型的BDM設(shè)備,然后執(zhí)行insmod命令將驅(qū)動程序模塊打入操作系統(tǒng)內(nèi)核中[3],在成功地創(chuàng)建了BDM設(shè)備文件和安裝好BDM調(diào)試卡的驅(qū)動程序之后,就可以調(diào)試和執(zhí)行該調(diào)試軟件了。

4 結(jié)語

BDM調(diào)試系統(tǒng)具有成本低、操作方便、移植簡單等特點。在Linux環(huán)境下MCF5272成功開發(fā)了BDM調(diào)試系統(tǒng)后,又先后將該系統(tǒng)軟件稍加改動,就輕易地移植到與MCF5272同屬ColdFire系列的MCF5249和Power PC系列的MPC555等CPU上,并且在Window下重新編寫了驅(qū)動程序和調(diào)試軟件,使用圖形界面操作,基本上達到了CodeWarrior相應(yīng)軟件的功能,為產(chǎn)品的快速低成本開發(fā)做出了貢獻。

經(jīng)緯儀相關(guān)文章:經(jīng)緯儀原理


評論


相關(guān)推薦

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

關(guān)閉