資源描述:
《BDM 調(diào)試介紹》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、MC68HC912B32背景調(diào)試模式介紹(一)背景調(diào)試模式背景調(diào)試模式(BackgroundDebugMode)是當(dāng)前MCU普遍采用的調(diào)試方式之一,它可用來進(jìn)行系統(tǒng)開發(fā),在線調(diào)試和編程,應(yīng)用程序的下載和在線更新。因為BDM控制模塊不寄居在CPU中,所以BDM硬件命令可以在CPU正常運行時被并行執(zhí)行,其他的BDM命令是基于固件的,且必須在CPU處于背景調(diào)試模式下才能被執(zhí)行。BDM模塊利用CPU的空閑周期和CPU進(jìn)行通信,必要時可以從CPU的工作周期中偷取一個周期。以CPU12為內(nèi)核的MCU的運行模式有單片方
2、式(singlechip)和擴(kuò)展方式(ExpandedMode)兩種,運行模式主要由BKGD,MODB和MODA引腳的狀態(tài)決定。在單片模式下又有兩種運行模式:普通運行模式(Normalsinglechip)和特殊運行模式(Specialsinglechip),而只有在特殊模式下BDM才能被激活,因此特殊單片模式又稱BDM模式。PC通過BDM頭與目標(biāo)機(jī)相連,如圖1所示。RS-232BDMCableBDMTargetPCBDM插頭圖1PC通過BDM和目標(biāo)機(jī)相連(二)BDM串行接口BDM串行接口通過BKGD引腳
3、和外部主機(jī)進(jìn)行通信單線通信,該引腳需要一個外部控制器在BKGD引腳上產(chǎn)生一個下降沿來指示位通信的開始,每一位的傳遞需要至少16個E時鐘周期。BKGD是一個漏極開路驅(qū)動的引腳,平時靠內(nèi)部上拉電阻維持高電平??梢员煌獠靠刂破骰蛘進(jìn)CU驅(qū)動。如果在兩個下降沿之間的時間超過512個E時鐘周期則會產(chǎn)生超時,此時硬件將清除命令寄存器。目前常用的BDM調(diào)試頭如圖2所示。BKGD12GNDNC34RESETVFP56VDD圖2BDM調(diào)試插頭引腳定義(三)進(jìn)入BDM模式如果要使用固件指令則必須先將BDM激活,BDM在任何操
4、作模式下都可以被激活。以下介紹讓目標(biāo)機(jī)進(jìn)入BDM調(diào)試模式的方法:首先,將目標(biāo)機(jī)的BKGD引腳拉低,然后給目標(biāo)機(jī)的RESET引腳加低電平,即給目標(biāo)機(jī)復(fù)位,復(fù)位脈沖要足夠?qū)挘辽僖笥谀繕?biāo)機(jī)的512個E時鐘周期。當(dāng)然如果用MCU制作BDM調(diào)試頭,則至少需要兩個I/O口來控制目標(biāo)機(jī)的BKGD和RESET引腳,否則只能通過硬件跳線的方式將BKGD跳低電平,在讓目標(biāo)機(jī)復(fù)位后再將BKGD跳高,以進(jìn)入目標(biāo)機(jī)的BDM模式。在進(jìn)入BDM模式以后,帶有程序的片內(nèi)BDM專用ROM將替換$FF00~$FFFF的Flash,這部分
5、空間在普通單片方式下是存放中斷向量的。(四)BDM指令:BDM有兩類命令,一類是在一般運行模式下都可以直接執(zhí)行的,被稱為硬件命令(HardwareCommand);另一類則是通過BDM方式下強(qiáng)制換成$FF00~$FFFF空間的ROM中的程序執(zhí)行的,被稱為固件指令(FirmwareCommand)。硬件指令允許讀或者寫目標(biāo)系統(tǒng)包括片內(nèi)RAM、EEPROM、I/O和控制寄存器在內(nèi)的所有內(nèi)存。硬件指令可以不在BDM模式下而被執(zhí)行,表1列出了BDM模塊的硬件指令。表1BDM硬件指令命令操作碼(Hex)操作數(shù)描述B
6、ACKGROUND90無進(jìn)入背景調(diào)試模式。16位地址READ_BD_BYTEE4讀取BDM內(nèi)存區(qū)一個字節(jié)。16位數(shù)據(jù)輸出FF01,正在執(zhí)行用戶程序,BDM執(zhí)行不能執(zhí)行。00000000輸出FF01,STATUSE4BDM執(zhí)行可被執(zhí)行。10000000輸出FF01,BDM被激活,等待接受命令。11000000輸出16位地址READ_BD_WORDEC讀取BDM內(nèi)存區(qū)兩個字節(jié)。16位數(shù)據(jù)輸出16位地址READ_BYTEE0讀取BDM內(nèi)存區(qū)以外的內(nèi)存區(qū)一個字節(jié)。16位數(shù)據(jù)輸出16位地址READ_WORDE8讀取
7、BDM內(nèi)存區(qū)以外的內(nèi)存區(qū)二個字節(jié)。16位數(shù)據(jù)輸出16位地址WRITE_BD_BYTEC4往BDM內(nèi)存區(qū)寫一個字節(jié)。16位數(shù)據(jù)輸入ENABLEFF01,寫1*******到$FF01,置位ENBDM位,使允許C4FIRMWARE1*******(輸入)執(zhí)行固件指令。16位地址WRITE_BD_WORDCC往BDM內(nèi)存區(qū)寫兩個字節(jié)。16位數(shù)據(jù)輸入16位地址WRITE_BYTEC0往BDM內(nèi)存區(qū)以外的內(nèi)存區(qū)寫一個字節(jié)。16位數(shù)據(jù)輸入16位地址WRITE_WORDC8往BDM內(nèi)存區(qū)以外的內(nèi)存區(qū)寫二個字節(jié)。16位數(shù)
8、據(jù)輸入固件指令必須在HC12單片機(jī)的BDMROM中執(zhí)行,且CPU必須在背景調(diào)試模式下才能執(zhí)行,通常使用硬件指令BACKGROUND使CPU進(jìn)入背景調(diào)試模式。當(dāng)BDM被激活時,BDMROM就被分配到地址空間:$FF20~$FFFF,同時七個BDM寄存器被分配到地址空間:$FF00~$FF06,此時CPU就可以通過執(zhí)行ROM中的代碼來完成相應(yīng)的固件指令操作。表2介紹了常用的三個固件指令。表2BDM固件指令命令操作碼(Hex)操作數(shù)