摘 要: 全國大學(xué)生“飛思卡爾杯”智能汽車競賽推薦使用Freescale公司的MC9S12系列單片機為主控芯片,;有USB接口的TTBDM調(diào)試器是主要軟件調(diào)試工具。TTBDM調(diào)試器通過USB接口與PC通信,,BDM接口與目標CPU通信,實現(xiàn)嵌入式軟件的在線調(diào)試,。根據(jù)往屆車模競賽中參賽者遇到的一些問題和本中心在長期支持國內(nèi)S12系列單片機用戶中積累的經(jīng)驗,,總結(jié)出BDM調(diào)試器的用法和注意事項,提供一些使用技巧,,以求對參賽者和S12產(chǎn)品開發(fā)工程師有所幫助,。
關(guān)鍵詞: 9S12單片機;BDM,;TTBDM
?
第四屆全國大學(xué)生“飛思卡爾杯”智能氣車競賽推薦采用最新的MC9S12XS128(以下簡稱XS128)單片機作為主控芯片,,替代MC9S12DG128。XS128是Freescale公司推出的S12系列單片機中的一款增強型16位單片機,。片內(nèi)資源豐富,,接口模塊有SPI、SCI,、IIC,、A/D、PWM等常見模塊,,在汽車電子應(yīng)用領(lǐng)域具有廣泛用途,。XS128和以往大賽使用的S12DG128系列單片機一樣,調(diào)試接口都是使用Freescale公司傳統(tǒng)的BDM(Background Debug Module)接口,。
1 MC9S12XS128單片機介紹
(1)CPU:增強型16位HCS12 CPU,,片內(nèi)總線時鐘最高40 MHz,;
(2)片內(nèi)資源:8 KB RAM、128 KB程序閃存,、2 KB數(shù)據(jù)閃存,;
(3)串行接口模塊:SCI,、SPI,;
(4)脈寬調(diào)制模塊(PWM)可設(shè)置成4路8位或者2路16位,邏輯時鐘選擇頻率寬,;
(5)1個16路12位精度A/D轉(zhuǎn)換器,;
(6)控制器局域網(wǎng)模塊(CAN);
(7)增強型捕捉定時器,。
MC9S12XS128單片機有112,、80和64引腳3種封裝形式。80-pin封裝的單片機沒有引出用于擴展方式的端口,,僅引出了一個8路A/D接口,。競賽可使用112或80引腳封裝器件。
2 BDM接口和使用
BDM調(diào)試器內(nèi)部有一個8位的MC9HC08JB16單片機,,該單片機有USB接口,,可與PC機信息交互。HC08單片機和S12單片機間僅使用一根I/O線通信,,這根相連的信號線名為BKGD,。HC08單片機將BKGD置為輸出,以串行發(fā)送命令,,發(fā)送完成后轉(zhuǎn)為輸入,,以接收信息。S12單片機收到命令后轉(zhuǎn)為輸出,,根據(jù)調(diào)試器發(fā)來的命令回送信息,,然后立即轉(zhuǎn)入接收態(tài)。BDM工具以此方式實現(xiàn)S12單片機的在線調(diào)試,、內(nèi)部閃存的燒寫等功能,。關(guān)于BDM接口的實現(xiàn),讀者可以參考Freescale任何一款S12單片機的器件手冊,,其對BDM接口的命令字,、交互模式等都有詳細描述。這里主要介紹如何使用BDM接口,。
BDM接口雖然只有BKGD一根信號線,,但實際使用過程中,F(xiàn)reescale規(guī)定用一個雙排,、6引腳的接插件做BDM接口,,如圖1所示,,引腳間距為2.54 mm(100 mil)。
?
雖然使用的是6引腳接插件,,實際上有用引腳只有4個,。其中BKGD連接到S12處理器的BKGD引腳,RESET連接到S12處理器的RESET引腳,,GND是S12目標板的地信號,,而VDD信號是來自目標板的電源信號。VDD信號的連接將在下文中詳細闡述,。
BDM接口的使用,,需要配合PC上安裝的CodeWarrior軟件和BDM調(diào)試工具TTBDM。BDM接口是S12單片機專用的調(diào)試接口,,PC上運行的調(diào)試軟件需要通過USB接口連到HC08單片機,,經(jīng)過HC08單片機的一根I/O線連到S12單片機的BKGD引腳實現(xiàn)PC和S12單片機的通信,進而實現(xiàn)在線調(diào)試和燒寫閃存功能,。
3 利用“BDM for S12(TTBDM)”調(diào)試程序
BDM調(diào)試工具主要實現(xiàn)三方面的功能:
(1)應(yīng)用程序的下載與更新,;
(2)單片機內(nèi)部資源的配置與修復(fù);
(3)應(yīng)用程序的動態(tài)調(diào)試,。
本中心提供面向S12系列單片機的BDM工具,,TTBDM在硬件設(shè)計上做了改進,兼容S12和S08兩種BDM調(diào)試器,。軟件基于Daniel Malik的TBDML(forums.freescale.com)以及open source BDM軟件,。TTBDM可以下載S12或者S08的BDM調(diào)試固件,分別用于調(diào)試S12和S08單片機,。本文僅從用戶角度講述“TTBDM”的使用方法和常見問題的解決辦法,。詳情請登陸本中心網(wǎng)站www.tsinghua-mot.net,下載最新版本的“BDM for S12(TTBDM)”用戶手冊,。
4 TTBDM硬件設(shè)置
BDM for S12(TTBDM)設(shè)計了跳線開關(guān),,允許用戶對TTBDM進行一些特定配置,以此滿足不同用戶的需求,。打開TTBDM的硬件小盒,,能夠看到4個可以設(shè)置的跳線,分別是J4,、J5,、J6和J7,如圖2所示,。
?
圖3為J4跳線的引腳圖,。J4用來選擇6-pin雙排插針BDM接口中BKGD信號是在第1引腳引出還是從第3引腳引出。當J4跳線連接在左側(cè)靠近電路板邊沿的標記3引腳時,,BKGD信號連接到BDM的第3引腳,,如圖3(a),;當J4跳線連接在右側(cè)靠近R12的標記引腳時,BKGD信號連接到BDM接口的第1引腳,,如圖3(b),。
?
J4端接線在1位置處適用于按照Motorola規(guī)定的BDM信號定義。采用這種定義時,,BDM頭一定不能插反,,插反會導(dǎo)致VDD與BKGD短路,燒毀BDM中HC08單片機的I/O端或S12單片機的BKGD端,甚至兩者都被損壞,。J4短接線在3位置處,,適用于專門為大學(xué)生車模競賽設(shè)計的S12XS單片機小模塊,,其優(yōu)點是如果將BDM插反,,也不會損壞S12單片機和BDM調(diào)試器。
J5用來給TTBDM的HC08JB16單片機編程,。請注意一定不要在J5上插短接線,。
J6用于調(diào)試S08單片機,在S12的調(diào)試中也一定不要插上短接線,。
J7是為了保留BDM調(diào)試接口的一些特性而設(shè)計的,,J7允許用戶設(shè)定是否使用PC機的USB口上的電源給目標板供電,供
3.3 V還是供5 V,。建議不要用PC的USB口給目標板供電,。默認情況下,J7不焊接任何插件,,表示不向目標板供電,。由于PC機的USB接口可提供5 V/500 mA的供電能力,所以TTBDM調(diào)試頭不需要從目標板上取電,。但TTBDM并不知道目標板用的是5 V電源還是3.3 V電源,,也就是說BDM上的VDD是5 V還是3.3 V。為了目標板的VDD電壓適應(yīng)5 V或3.3 V的BKGD和Reset電平,,需要從目標板取電,,以調(diào)整BKGD和Reset電平。如果目標板是5 V供電,,則BDM接口的信號電平為5 V,;如果目標板是3.3 V供電,則BDM接口的信號電平為3.3 V,。其他電平也可以工作,,如接口是2.5 V等。這部分實現(xiàn)電路如圖4所示,。
其中VCC_USB是從USB接口來的5V電源,,用來給整個TTBDM調(diào)試器供電,;而VCC_SHIFT是從目標板來的電壓VDD,不同VDD使得RESET信號和BKGD信號工作在不同的電壓范圍,,能夠與目標板VDD匹配,。從目標板取出的VDD電流小于1mA。
5 TTBDM使用中常見問題及解決辦法
問題1:正確安裝了BDM for S12(TTBDM)的驅(qū)動程序和動態(tài)鏈接庫,,并用BDM連接了目標單片機后,,在Hiwave.exe的“TBDML HCS12”菜單中沒有出現(xiàn)“Flash...”項,無法對目標單片機進行調(diào)試,。
解決辦法:首先,,用戶應(yīng)該確保目標板供電正常,BDM for S12(TTBDM)默認的電源工作方式是目標板自供電,。如果還有問題,,用戶應(yīng)該打開BDM的包裝小盒,查看跳線J4是否已經(jīng)短接,。
問題2:驅(qū)動程序安裝正常,,跳線沒有問題,目標板供電,,但BDM還是不工作,。
解決辦法:可能是用戶的CodeWarrior版本不對,沒有利用CodeWarrio V4.7以上的版本,。安裝高版本的CodeWarrior即可解決問題,。
問題3:BDM調(diào)試目標板基本正常,能夠下載程序,、擦除閃存,、設(shè)斷點調(diào)試,但是,,在某次使用中閃存突然被“鎖死”,,之后目標板無法繼續(xù)使用。
解決辦法:Freescale公司的HCS12系列單片機具有片內(nèi)閃存的加密功能,,對于加密或保護后的閃存,,用戶無法通過BDM調(diào)試工具對其閃存進行程序擦除、讀取等操作,。同時,,如果用戶在利用BDM調(diào)試單片機時操作不當,同樣會使單片機出現(xiàn)閃存,、無法讀取,、擦除和下載等問題。監(jiān)控程序在$F000到$FFFF這一段加了保護,,但并沒有加密,。即使對加了密的S12,,也可以使用TTBDM工具方便地解鎖和擦除。在決定使用擦除保護程序時,,應(yīng)考慮在出現(xiàn)單片機被鎖定的情況下有沒有能力解鎖,。對于閃存沒有進入“保護模式”的單片機,如果利用BDM for S12(TTBDM)調(diào)試單片機,,當用戶點擊“TBDML HCS12”菜單下的“Flash…”命令時,,會出現(xiàn)如圖5所示的正常情況。從圖中可以看出,,當前目標板單片機的FLASH_C000存儲區(qū)域已有下載程序,,狀態(tài)為“Programmed”,其余模塊為空,,狀態(tài)為“Blank”,。因此,可以繼續(xù)對該單片機的閃存進行讀取,、擦除和下載等操作,。但是,在出現(xiàn)上述閃存加密問題后,,HCS12系列單片機就進入了“閃存保護模式”,即Secure Mode,。這時,,如果利用BDM for S12(TTBDM)調(diào)試單片機,當用戶點擊“TBDML HCS12”菜單下的“Flash…”命令時,,圖5中部分FLASH區(qū)域的狀態(tài)就會顯示為“Skipped”,。此時,用戶便無法再對閃存進行正常操作,。因此,,需要解除閃存的“保護模式”(Secure Mode),執(zhí)行Unsecure的操作,。BDM for S12(TTBDM)提供了Unsecure的功能,,具體操作過程較為復(fù)雜,請參閱用戶手冊,。
?
以上提到的是在應(yīng)用過程中發(fā)現(xiàn)的比較普遍的問題,,也是用戶經(jīng)常咨詢和討論的一些問題。在設(shè)計之前最好能完整地閱讀幫助文檔以及芯片數(shù)據(jù)手冊,,了解各個工作狀態(tài),。很多可能出現(xiàn)的問題在數(shù)據(jù)手冊里已有明確說明。這樣做在程序設(shè)計的前期可能會影響一些進度,,但到后期調(diào)試階段會帶來極大的方便,。至于工具使用上的問題,,F(xiàn)reescale單片機/DSP應(yīng)用開發(fā)研究中心會及時在大賽的官方網(wǎng)站上做出相應(yīng)說明,請大家留意,。
參考文獻
[1] 邵貝貝.單片機嵌入式應(yīng)用的在線開發(fā)方法.北京:清華大學(xué)出版社,,2004.
[2] MC9S12XS128 Device User Guide.Freescale semiconductor,2008,,5.