劉雪蘭1, 田宏偉2
(1.江蘇農(nóng)牧科技職業(yè)學(xué)院 信息工程系,江蘇 泰州 225300;2.蘇州大學(xué) 應(yīng)用技術(shù)學(xué)院,江蘇 蘇州 215325)
摘要:目前MCU的下載器以在線下載器為主,在室外環(huán)境下攜帶不便,,便攜式的脫機(jī)下載器比較缺乏且價(jià)格昂貴,,因此根據(jù)多回路無線照明控制器實(shí)際需求設(shè)計(jì)了針對(duì)AW系列MCU的便攜式脫機(jī)下載器。通過對(duì)HCS08內(nèi)核CPU及背景調(diào)試控制器的深入理解,,設(shè)計(jì)了使用SD卡和EEPROM雙重存儲(chǔ)器的下載器硬件和軟件,,精心設(shè)計(jì)了能保證程序下載可靠性的軟件。該下載器已在實(shí)際項(xiàng)目中應(yīng)用,運(yùn)行穩(wěn)定,,效果較好,。
關(guān)鍵詞:MCU下載器; 背景調(diào)試技術(shù); 脫機(jī)下載; 控制器
中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674-7720.2016.24.028
引用格式:劉雪蘭, 田宏偉. 多回路無線照明控制器MCU脫機(jī)下載器的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2016,35(24):98-100.
0引言
嵌入式產(chǎn)品中MCU的程序下載是指將固件程序下載到目標(biāo)芯片中,,同時(shí)提供對(duì)目標(biāo)芯片F(xiàn)lash的擦除和校驗(yàn)等功能的過程,。目前針對(duì)飛思卡爾MCU的程序下載器一般以在線編程為主,常用的有P&E公司,、飛思卡爾公司等生產(chǎn)的調(diào)試器,,這些調(diào)試器功能復(fù)雜、價(jià)格昂貴,,就脫機(jī)下載器而言目前僅P&E公司提供一款Cyclone脫機(jī)下載器,,價(jià)格更高。
AW系列MCU是飛思卡爾半導(dǎo)體公司推出的針對(duì)電機(jī)控制,、自動(dòng)化控制以及汽車應(yīng)用等場(chǎng)合的工業(yè)級(jí)MCU,,外圍模塊豐富,存儲(chǔ)器容量大,,且抗干擾能力強(qiáng),,因此選擇其中的MC9S08AW60作為多回路無線照明控制器的核心MCU。實(shí)際運(yùn)行中,,由于用戶功能需求的變化,,需要到現(xiàn)場(chǎng)對(duì)MCU進(jìn)行程序升級(jí),,但現(xiàn)場(chǎng)下載程序必須攜帶筆記本電腦和在線下載器才能進(jìn)行,,攜帶不便。
本文在分析了HCS08系列CPU內(nèi)核基礎(chǔ)上,,設(shè)計(jì)了BDM調(diào)試器硬件電路,設(shè)計(jì)了多回路無線照明控制器MCU便攜式脫機(jī)下載器,,同時(shí)給出在下載器軟件方面保證整個(gè)下載過程可靠性所采取的措施,。
1設(shè)計(jì)思路
便攜式下載器使用SD卡作為待燒寫的十六進(jìn)制目標(biāo)文件的存儲(chǔ)載體,,帶有液晶顯示功能,,通過按鍵選擇MCU的型號(hào)及目標(biāo)文件,,選定后對(duì)目標(biāo)MCU執(zhí)行程序燒寫操作,,下載器使用9 V鎳氫充電電池作為供電電源,,外部的EEPROM用來存儲(chǔ)配置參數(shù),,同時(shí)為了可靠起見,,EEPROM還用來存儲(chǔ)待燒寫的目標(biāo)文件,,下載器的模塊構(gòu)成如圖1所示,?! ?/p>
便攜式下載器的設(shè)計(jì)需要深入理解HCS08內(nèi)核,、背景調(diào)試控制器模塊以及目標(biāo)文件格式的解析等。
1.1S19記錄文件
S19記錄文件[1]是飛思卡爾HC08,、HCS08、HCS12系列微控制器的機(jī)器碼文件,,是使用字符記錄的具有固定格式的目標(biāo)代碼文件,,S19文件中每條記錄占用1行,每行由5部分?jǐn)?shù)據(jù)段組成,,其數(shù)據(jù)段定義如表1所示,。
1.2背景調(diào)試模式BDM
背景調(diào)試模式[2]BDM(Background Debug Mode)是由飛思卡爾半導(dǎo)體公司推出的單線調(diào)試方式,,是S08,、S12及Coldfire系列MCU支持的調(diào)試方式。這些芯片內(nèi)部都具有背景調(diào)試控制器(Background Debug Controller,,BDC)[3],,負(fù)責(zé)接收和解析下載器發(fā)送的命令,,通過操作該控制器,開發(fā)人員可以實(shí)現(xiàn)底層調(diào)試,、Flash擦除和編程,、加密處理等功能。
BDM接口為單線接口,,使用的通信引腳為BKGD,,其他的為2個(gè)供電引腳以及復(fù)位引腳RESET,下載器為雙排6芯接口,,占用空間小,方便制作,。
2 載器硬件設(shè)計(jì)
便攜式下載器以AW60為主控MCU,,下載器硬件設(shè)計(jì)圍繞功能需求進(jìn)行,,包括BDM接口模塊,、液晶顯示模塊,、按鍵輸入模塊,、使用SPI接口通信的SD卡模塊和EEPROM模塊等,,此處主要介紹BDM接口電路,電路示意如圖2所示,。
主控芯片輸出信號(hào)與目標(biāo)MCU之間接入三態(tài)緩沖器74HC125,在保證信號(hào)的驅(qū)動(dòng)能力的同時(shí)可以適應(yīng)目標(biāo)芯片3.3 V或者5 V的信號(hào)電壓[4],。從圖2中可以看出,,需要向目標(biāo)MCU發(fā)送BKGD數(shù)據(jù)時(shí),下載器BKGD_DRV首先輸出低電平信號(hào),,75HC125-3由高阻態(tài)轉(zhuǎn)換為工作狀態(tài),,此時(shí)即可通過BKGD_OUT引腳輸出0或1的信號(hào),,目標(biāo)MCU的BKGD引腳即接收該信號(hào),其他引腳的工作方式類似,。
需要注意的是,,圖2中BKGD_IN引腳對(duì)應(yīng)的是MCU的兩個(gè)引腳PTC6和PTF0,而且在軟件中將PTF0配置為定時(shí)器1通道2的輸入捕捉引腳,,這么做并不是為了增加驅(qū)動(dòng)能力,,而是為了配合BDM指令集提供的一條用于解決下載器與目標(biāo)MCU速率不匹配的指令——SYNC指令。在實(shí)現(xiàn)SYNC指令功能時(shí),,PTF0處于輸入捕捉的工作模式,,用于捕捉目標(biāo)MCU發(fā)送的電平跳變信號(hào),通過測(cè)量目標(biāo)MCU發(fā)送的128個(gè)低電平周期從而計(jì)算出該芯片BDM控制器的運(yùn)行頻率,,實(shí)現(xiàn)自適應(yīng)的通信,。
3下載器軟件設(shè)計(jì)要點(diǎn)
BDM通信是單線通信,其最基本的底層操作是讀/寫一個(gè)數(shù)據(jù)位的操作,,而對(duì)應(yīng)的指令集的基本單位為1 B,因此軟件設(shè)計(jì)的要點(diǎn)就是深入了解BDM指令以及編寫穩(wěn)定可靠的讀/寫字節(jié)數(shù)據(jù)函數(shù),,同時(shí)為提高下載器下載的可靠性給出了三種措施,。
3.1BDM指令介紹
HCS08內(nèi)核的BDM指令分為兩類[5]:一類是在任何運(yùn)行模式下都可以執(zhí)行的指令,,用于對(duì)存儲(chǔ)器的讀寫訪問及設(shè)置斷點(diǎn)等功能,稱為硬指令,,硬指令不影響CPU運(yùn)行,。另一類指令稱為軟指令,需要在BDM模式下由CPU執(zhí)行(用戶程序無法運(yùn)行),,固件指令主要提供對(duì)CPU內(nèi)部寄存器的讀取和修改操作,。
3.2讀寫匯編子程序
下載器主控芯片第一步操作是測(cè)量目標(biāo)MCU的頻率,該操作是通過發(fā)送長(zhǎng)度足夠的低電平來同步請(qǐng)求SYNC指令,,主控芯片通過測(cè)量目標(biāo)MCU發(fā)送的128個(gè)低電平周期所使用的時(shí)間,,從而換算出目標(biāo)MCU的BDM控制器的工作頻率,此處用到的便是PTF0作為輸入捕捉用來計(jì)算兩次跳變間用時(shí)的功能[6],。
在此基礎(chǔ)上,,接下來就是比較關(guān)鍵的讀/寫字節(jié)子程序的實(shí)現(xiàn),為了保證通信的時(shí)序完全按照BDM的要求,,該子程序必須使用匯編語言編寫,,限于篇幅不再列出具體匯編程序,程序設(shè)計(jì)時(shí)需要仔細(xì)計(jì)算出每個(gè)語句及循環(huán)操作所占用的周期,,發(fā)送數(shù)據(jù)的過程及占用周期如下:
?。?)主控芯片寫位0到目標(biāo)芯片BKGD引腳的操作:拉低目標(biāo)芯片的BKGD引腳不少于12個(gè)時(shí)鐘周期,目標(biāo)芯片在檢測(cè)到低電平后的第10個(gè)周期對(duì)BKGD進(jìn)行采樣,,讀入該位,。
(2)主控芯片寫位1的操作:拉低目標(biāo)芯片BKGD引腳2~4個(gè)時(shí)鐘周期后釋放BKGD端,,使之為高電平,,目標(biāo)MCU在探測(cè)到低電平以后的第10個(gè)周期對(duì)BKGD進(jìn)行采樣,讀入該位,。
3.3程序下載的可靠性
對(duì)于下載器而言,,下載的完整性和可靠性是第一位的,脫機(jī)下載器在軟件方面做了以下幾個(gè)方面的工作:
?。?)程序下載回滾功能:為防止用戶下載程序后發(fā)現(xiàn)下載的代碼文件有誤,,但目標(biāo)MCU已被擦除無法恢復(fù)原有程序,在下載器的軟件中加入了一個(gè)操作,,即在燒寫目標(biāo)芯片前首先將目標(biāo)MCU中的程序讀出,,程序讀出后,存儲(chǔ)在下載器外置的EEPROM中,,若用戶選擇程序回滾,,則下載器軟件重新讀入之前讀出的目標(biāo)文件,并進(jìn)行回滾編程,。
EEPROM選用容量為128 KB的25LC1024,,內(nèi)部劃分為三個(gè)區(qū)域,,分別用來存儲(chǔ)配置參數(shù)、目標(biāo)MCU內(nèi)部原有固件程序以及待燒寫的目標(biāo)文件,。
?。?)防SD卡故障功能:為防止在下載過程中出現(xiàn)SD卡被拔出等誤操作引起的無法讀取目標(biāo)文件下載的錯(cuò)誤,下載器軟件首先把待燒寫的目標(biāo)文件S19存入EEPROM中,,在對(duì)拷貝到EEPROM的目標(biāo)文件進(jìn)行重新校驗(yàn)后才對(duì)目標(biāo)MCU進(jìn)行擦除和編程操作,。
(3)程序下載校驗(yàn)功能:目標(biāo)芯片燒寫成功后,,偶爾也會(huì)遇到運(yùn)行不正常的情況,,而且可能很難被發(fā)現(xiàn),因此程序下載完畢后必須進(jìn)行程序校驗(yàn)操作,。具體過程是讀出下載后芯片的程序,,并按字節(jié)與存儲(chǔ)在EEPROM中的S19文件進(jìn)行對(duì)比,若出現(xiàn)不一致則提示用戶校驗(yàn)錯(cuò)誤,,需要重新下載,。
4結(jié)論
本文針對(duì)飛思卡爾下載器以在線編程為主,市場(chǎng)中缺乏MCU脫機(jī)下載器的問題,,在深入理解HCS08型CPU內(nèi)核中BDC模塊的功能,、指令的基礎(chǔ)上,設(shè)計(jì)了針對(duì)多回路無線照明控制器MCU的脫機(jī)下載器,,并成功用于實(shí)際產(chǎn)品的程序下載中,。通過進(jìn)一步的改進(jìn),可以適應(yīng)更多型號(hào)的HCS08系列MCU的芯片編程,。
參考文獻(xiàn)
?。?] 王超藝,王宜懷.飛思卡爾S08系列機(jī)器碼文件下載軟件的開發(fā)[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(12):256258.
?。?] Freescale. HCS08 Family Reference Manual Rev.2[Z].2007.
?。?] Freescale. Introduction to HCS08 Background Debug Mode[Z]. 2006.
[4] 徐清,王宜懷.嵌入式微控制器MC68HC912B32背景調(diào)試模式設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2006,,32(6):6164.
?。?] 王宜懷,張書奎,王林.嵌入式技術(shù)基礎(chǔ)與實(shí)踐(第2版)[M].北京:清華大學(xué)出版社,2011.
?。?] 邵貝貝.單片機(jī)嵌入式應(yīng)用的在線開發(fā)方法[M].北京:清華大學(xué)出版社,,2004.