<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于GAL的BDM調試系統設計

基于GAL的BDM調試系統設計

作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò ) 收藏

目前應用Motorola微處理器開(kāi)發(fā)嵌入式系統時(shí)基本上都是使用Motorola公司提供的開(kāi)發(fā)系統或者CodeWarrior公司的開(kāi)發(fā)系統等付費昂貴的調試工具。最近由于Flash技術(shù)的發(fā)展,特別是一些CPU(如CPU12/16/32/32+,PowerPC5xx/8xx,ColdFire等)可以用JTAG口在背景模式下調試,故仿真器已可以省去。而且隨著(zhù)BDM調試模式逐漸標準化,自制BDM調試工具變得越來(lái)越容易,特別是對于支持BDM調試模式的多種類(lèi)型的CPU,自己設計的只需少量的改動(dòng)即可移植使用,而不必重復購買(mǎi)價(jià)格昂貴的調試開(kāi)發(fā)系統,這樣做可以節省大量的成本。

1 BDM調試模式介紹

本文引用地址:http://dyxdggzs.com/article/201706/349032.htm

Motorola微處理器的調試模塊針對不同場(chǎng)合的應用分別提供了3種調試支持:實(shí)時(shí)跟蹤、BDM調試和實(shí)時(shí)調試。實(shí)時(shí)跟蹤是要求能夠跟蹤應用程序的動(dòng)態(tài)執行路徑,這是實(shí)時(shí)系統的基本要求;在BDM調試方式下,處理器被停機,大量的命令可以被發(fā)送到處理器中訪(fǎng)問(wèn)內存和寄存器,外部仿真系統使用一個(gè)三腳、串行的雙工通道與處理器通信;實(shí)時(shí)調試則可以不需要CPU停止運行,調試中斷允許實(shí)時(shí)系統執行一個(gè)惟一的服務(wù)例程,快速保存主要的寄存器和變量等上下文內容,并使系統立即返回到正常操作,外部的開(kāi)發(fā)系統能訪(fǎng)問(wèn)被保存的數據是因為硬件支持處理器和BDM初始化命令的一致性操作。

其中BDM調試模式為設計人員提供了一種低層次的調試手段,讓用戶(hù)能夠中斷CPU的運行,單步調試程序,讀取CPU的各個(gè)寄存器的內容,這些僅僅是通過(guò)向CPU發(fā)送幾個(gè)簡(jiǎn)單的命令就可以實(shí)現,顯然,這樣使調試軟件的設計很簡(jiǎn)單,通常自己就可以編寫(xiě)。硬件調試卡的設計也非常簡(jiǎn)單,關(guān)鍵是要滿(mǎn)足好通信時(shí)序關(guān)系和電平轉換要求。

這幾種調試方式都共用26腳的BDM調試引腳信號,這些信號的定義如表1所示,BDM調試主要使用了DSCLK,DSI,DSO三種信號。


2 的運行條件及其系統組成

(1)系統運行的限制條件

盡管許多BDM命令可以與處理器并行操作,但是要想安全可靠地使用BDM操作,最好的方法就是讓處理器停止運行。但是停機操作對于那些要求實(shí)時(shí)響應的應用程序的調試顯然不理想。但是由于實(shí)時(shí)跟蹤和實(shí)時(shí)調試模塊與BDM調試模塊引腳共用,所以升級和擴展,可以很容易支持實(shí)時(shí)應用程序的調試。

(2)BDM調試系統組成

該系統主要由3個(gè)部分組成,如圖1所示?!?br />
BDM調試卡作用是完成從并口到BDM調試端口(信號定義如表1所示)的操作時(shí)序的轉換;BDM調試卡的驅動(dòng)程序則是完成開(kāi)發(fā)系統與待開(kāi)發(fā)的嵌入式系統的通信過(guò)程處理,如合成一定格式的數據包、解釋接收到的應答數據或者微處理器的狀態(tài)數據等;BDM調試軟件則是功能軟件,完成讀寫(xiě)指定位置的Flash或者SRAM數據、暫停、復位等功能。

值得注意的是,由于現在BDM調試模塊的標準化,調試卡和驅動(dòng)程序在不同型號的CPU上將具有通用性,只是BDM調試軟件需要根據各種CPU對應的指令集來(lái)稍加修改即可復用。下面將以作者開(kāi)發(fā)的一個(gè)針對Motorola公司的32位單片機MCF5272設計BDM調試系統的過(guò)程進(jìn)行論述。

3 系列處理器MCF5272的BDM調試系統的設計

3.1 BDM調試卡設計

BDM接口的串行操作時(shí)序分析如圖2所示。從圖2中可以看出,在調試模塊的串行狀態(tài)機中所有的事件是基于處理器時(shí)鐘(PSTCLK)的上升沿的。DSCLK的頻率是PSTCLK的1/5,并且DSCLK的上升沿相對于PSTCLK的上升沿有一定的延時(shí)。這里的 DSCLK的作用類(lèi)似于周期性的使能信號。每一次串行數據的傳輸可分為4個(gè)階段:C1,C2,C3和C4。在DSCLK的高電平期間,數據從DSI輸入,經(jīng)過(guò)2個(gè)PSTCLK周期的同步(C1和C2)而被采樣,然后在DSCLK的低電平期間PSTCLK的第1個(gè)上升沿處(C3)來(lái)臨時(shí)BDM狀態(tài)機改變狀態(tài),隨后在第2個(gè)PSTCLK上升沿(C4),DSI準備傳送新的數據,DSO上則輸出原來(lái)數據輸入相對應的應答數據。BDM狀態(tài)機在DSI上數據采樣檢測到的時(shí)候改變狀態(tài),當所有的數據傳輸完畢,BDM狀態(tài)機的狀態(tài)也就不會(huì )有什么改變。

根據BDM端口的信號定義,不難看出這些信號都是單向的。其中要注意的是:PSTCLK是調試模塊從處理器中獲取的,而DSCLK則是外部的開(kāi)發(fā)系統產(chǎn)生的。要實(shí)現從并口到BDM口的時(shí)序操作轉換,最簡(jiǎn)單的方式是使并口工作在SPP端口模式下的4位組模式,在該模式下每次通過(guò)狀態(tài)端口的4個(gè)狀態(tài)位反向傳送半個(gè)字節,兩次傳輸完成向PC機傳送一個(gè)字節數據[1]。他的操作時(shí)序如圖3所示。


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

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

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

他與BDM端口接口的信號有:

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

3.2 BDM驅動(dòng)程序的設計

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

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

發(fā)送數據時(shí)最高位為控制標志,該位保留,在開(kāi)發(fā)系統向CPU發(fā)出命令和數據時(shí),該位應該被清除。

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

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

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

3.3 BDM調試軟件的設計

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

調試軟件主要是調用驅動(dòng)程序實(shí)現的12種BDM調試命令接口函數來(lái)實(shí)現各種功能的。其中需要傳遞參數給驅動(dòng)程序的有:

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

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

調試軟件的設計因開(kāi)發(fā)系統的操作系統不同,在實(shí)現上有比較大的區別,但處理過(guò)程基本相同,因此,軟件的設計也比較簡(jiǎn)單,沒(méi)有必要贅述。

3.4 系統運行及其測試

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

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

4 結語(yǔ)

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



關(guān)鍵詞: CodeFire GAL BDM調試系統

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>