針對Motorola微處理器的BDM調(diào)試系統(tǒng)的設計
目前應用Motorola微處理器開發(fā)嵌入式系統(tǒng)時基本上都是使用Motorola公司提供的開發(fā)系統(tǒng)或者CodeWarrior公司的開發(fā)系統(tǒng)等付費昂貴的調(diào)試工具。最近由于Flash技術的發(fā)展,特別是一些CPU(如CPU12/16/32/32+,PowerPC5xx/8xx,ColdFire等)可以用JTAG口在背景模式下調(diào)試,故仿真器已可以省去。而且隨著BDM調(diào)試模式逐漸標準化,自制BDM調(diào)試工具變得越來越容易,特別是對于支持BDM調(diào)試模式的多種類型的CPU,自己設計的BDM調(diào)試系統(tǒng)只需少量的改動即可移植使用,而不必重復購買價格昂貴的調(diào)試開發(fā)系統(tǒng),這樣做可以節(jié)省大量的成本。
本文引用地址:http://www.ex-cimer.com/article/149202.htm1 BDM調(diào)試模式介紹
Motorola微處理器的調(diào)試模塊針對不同場合的應用分別提供了3種調(diào)試支持:實時跟蹤、BDM調(diào)試和實時調(diào)試。實時跟蹤是要求能夠跟蹤應用程序的動態(tài)執(zhí)行路徑,這是實時系統(tǒng)的基本要求;在BDM調(diào)試方式下,處理器被停機,大量的命令可以被發(fā)送到處理器中訪問內(nèi)存和寄存器,外部仿真系統(tǒng)使用一個三腳、串行的雙工通道與處理器通信;實時調(diào)試則可以不需要CPU停止運行,調(diào)試中斷允許實時系統(tǒng)執(zhí)行一個惟一的服務例程,快速保存主要的寄存器和變量等上下文內(nèi)容,并使系統(tǒng)立即返回到正常操作,外部的開發(fā)系統(tǒng)能訪問被保存的數(shù)據(jù)是因為硬件支持處理器和BDM初始化命令的一致性操作。
其中BDM調(diào)試模式為設計人員提供了一種低層次的調(diào)試手段,讓用戶能夠中斷CPU的運行,單步調(diào)試程序,讀取CPU的各個寄存器的內(nèi)容,這些僅僅是通過向CPU發(fā)送幾個簡單的命令就可以實現(xiàn),顯然,這樣使調(diào)試軟件的設計很簡單,通常自己就可以編寫。硬件調(diào)試卡的設計也非常簡單,關鍵是要滿足好通信時序關系和電平轉(zhuǎn)換要求。
這幾種調(diào)試方式都共用26腳的BDM調(diào)試引腳信號,這些信號的定義如表1所示,BDM調(diào)試主要使用了DSCLK,DSI,DSO三種信號。
2 BDM調(diào)試系統(tǒng)的運行條件及其系統(tǒng)組成
(1)系統(tǒng)運行的限制條件
盡管許多BDM命令可以與處理器并行操作,但是要想安全可靠地使用BDM操作,最好的方法就是讓處理器停止運行。但是停機操作對于那些要求實時響應的應用程序的調(diào)試顯然不理想。但是由于實時跟蹤和實時調(diào)試模塊與BDM調(diào)試模塊引腳共用,所以升級和擴展BDM調(diào)試系統(tǒng),可以很容易支持實時應用程序的調(diào)試。
(2)BDM調(diào)試系統(tǒng)組成
該系統(tǒng)主要由3個部分組成,如圖1所示。
BDM調(diào)試卡作用是完成從并口到BDM調(diào)試端口(信號定義如表1所示)的操作時序的轉(zhuǎn)換;BDM調(diào)試卡的驅(qū)動程序則是完成開發(fā)系統(tǒng)與待開發(fā)的嵌入式系統(tǒng)的通信過程處理,如合成一定格式的數(shù)據(jù)包、解釋接收到的應答數(shù)據(jù)或者微處理器的狀態(tài)數(shù)據(jù)等;BDM調(diào)試軟件則是功能軟件,完成讀寫指定位置的Flash或者SRAM數(shù)據(jù)、暫停、復位等功能。
值得注意的是,由于現(xiàn)在BDM調(diào)試模塊的標準化,調(diào)試卡和驅(qū)動程序在不同型號的CPU上將具有通用性,只是BDM調(diào)試軟件需要根據(jù)各種CPU對應的指令集來稍加修改即可復用。下面將以作者開發(fā)的一個針對Motorola公司的32位單片機MCF5272設計BDM調(diào)試系統(tǒng)的過程進行論述。
3 CodeFire系列處理器MCF5272的BDM調(diào)試系統(tǒng)的設計
3.1 BDM調(diào)試卡設計
BDM接口的串行操作時序分析如圖2所示。從圖2中可以看出,在調(diào)試模塊的串行狀態(tài)機中所有的事件是基于處理器時鐘(PSTCLK)的上升沿的。DSCLK的頻率是PSTCLK的1/5,并且DSCLK的上升沿相對于PSTCLK的上升沿有一定的延時。這里的 DSCLK的作用類似于周期性的使能信號。每一次串行數(shù)據(jù)的傳輸可分為4個階段:C1,C2,C3和C4。在DSCLK的高電平期間,數(shù)據(jù)從DSI輸入,經(jīng)過2個PSTCLK周期的同步(C1和C2)而被采樣,然后在DSCLK的低電平期間PSTCLK的第1個上升沿處(C3)來臨時BDM狀態(tài)機改變狀態(tài),隨后在第2個PSTCLK上升沿(C4),DSI準備傳送新的數(shù)據(jù),DSO上則輸出原來數(shù)據(jù)輸入相對應的應答數(shù)據(jù)。BDM狀態(tài)機在DSI上數(shù)據(jù)采樣檢測到的時候改變狀態(tài),當所有的數(shù)據(jù)傳輸完畢,BDM狀態(tài)機的狀態(tài)也就不會有什么改變。
根據(jù)BDM端口的信號定義,不難看出這些信號都是單向的。其中要注意的是:PSTCLK是調(diào)試模塊從處理器中獲取的,而DSCLK則是外部的開發(fā)系統(tǒng)產(chǎn)生的。要實現(xiàn)從并口到BDM口的時序操作轉(zhuǎn)換,最簡單的方式是使并口工作在SPP端口模式下的4位組模式,在該模式下每次通過狀態(tài)端口的4個狀態(tài)位反向傳送半個字節(jié),兩次傳輸完成向PC機傳送一個字節(jié)數(shù)據(jù)[1]。他的操作時序如圖3所示。
評論