劉雪蘭1, 田宏偉2
(1.江蘇農(nóng)牧科技職業(yè)學(xué)院 信息工程系,江蘇 泰州 225300;2.蘇州大學(xué) 應(yīng)用技術(shù)學(xué)院,江蘇 蘇州 215325)
摘要:目前MCU的下載器以在線下載器為主,在室外環(huán)境下攜帶不便,便攜式的脫機(jī)下載器比較缺乏且價(jià)格昂貴,因此根據(jù)多回路無(wú)線照明控制器實(shí)際需求設(shè)計(jì)了針對(duì)AW系列MCU的便攜式脫機(jī)下載器。通過(guò)對(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
引用格式:劉雪蘭, 田宏偉. 多回路無(wú)線照明控制器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)等功能的過(guò)程。目前針對(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)化控制以及汽車(chē)應(yīng)用等場(chǎng)合的工業(yè)級(jí)MCU,外圍模塊豐富,存儲(chǔ)器容量大,且抗干擾能力強(qiáng),因此選擇其中的MC9S08AW60作為多回路無(wú)線照明控制器的核心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ì)了多回路無(wú)線照明控制器MCU便攜式脫機(jī)下載器,同時(shí)給出在下載器軟件方面保證整個(gè)下載過(guò)程可靠性所采取的措施。
1設(shè)計(jì)思路
便攜式下載器使用SD卡作為待燒寫(xiě)的十六進(jìn)制目標(biāo)文件的存儲(chǔ)載體,帶有液晶顯示功能,通過(guò)按鍵選擇MCU的型號(hào)及目標(biāo)文件,選定后對(duì)目標(biāo)MCU執(zhí)行程序燒寫(xiě)操作,下載器使用9 V鎳氫充電電池作為供電電源,外部的EEPROM用來(lái)存儲(chǔ)配置參數(shù),同時(shí)為了可靠起見(jiàn),EEPROM還用來(lái)存儲(chǔ)待燒寫(xiě)的目標(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ā)送的命令,通過(guò)操作該控制器,開(kāi)發(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í)即可通過(guò)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),通過(guò)測(cè)量目標(biāo)MCU發(fā)送的128個(gè)低電平周期從而計(jì)算出該芯片BDM控制器的運(yùn)行頻率,實(shí)現(xiàn)自適應(yīng)的通信。
3下載器軟件設(shè)計(jì)要點(diǎn)
BDM通信是單線通信,其最基本的底層操作是讀/寫(xiě)一個(gè)數(shù)據(jù)位的操作,而對(duì)應(yīng)的指令集的基本單位為1 B,因此軟件設(shè)計(jì)的要點(diǎn)就是深入了解BDM指令以及編寫(xiě)穩(wěn)定可靠的讀/寫(xiě)字節(jié)數(shù)據(jù)函數(shù),同時(shí)為提高下載器下載的可靠性給出了三種措施。
3.1BDM指令介紹
HCS08內(nèi)核的BDM指令分為兩類[5]:一類是在任何運(yùn)行模式下都可以執(zhí)行的指令,用于對(duì)存儲(chǔ)器的讀寫(xiě)訪問(wèn)及設(shè)置斷點(diǎn)等功能,稱為硬指令,硬指令不影響CPU運(yùn)行。另一類指令稱為軟指令,需要在BDM模式下由CPU執(zhí)行(用戶程序無(wú)法運(yùn)行),固件指令主要提供對(duì)CPU內(nèi)部寄存器的讀取和修改操作。
3.2讀寫(xiě)匯編子程序
下載器主控芯片第一步操作是測(cè)量目標(biāo)MCU的頻率,該操作是通過(guò)發(fā)送長(zhǎng)度足夠的低電平來(lái)同步請(qǐng)求SYNC指令,主控芯片通過(guò)測(cè)量目標(biāo)MCU發(fā)送的128個(gè)低電平周期所使用的時(shí)間,從而換算出目標(biāo)MCU的BDM控制器的工作頻率,此處用到的便是PTF0作為輸入捕捉用來(lái)計(jì)算兩次跳變間用時(shí)的功能[6]。
在此基礎(chǔ)上,接下來(lái)就是比較關(guān)鍵的讀/寫(xiě)字節(jié)子程序的實(shí)現(xiàn),為了保證通信的時(shí)序完全按照BDM的要求,該子程序必須使用匯編語(yǔ)言編寫(xiě),限于篇幅不再列出具體匯編程序,程序設(shè)計(jì)時(shí)需要仔細(xì)計(jì)算出每個(gè)語(yǔ)句及循環(huán)操作所占用的周期,發(fā)送數(shù)據(jù)的過(guò)程及占用周期如下:
?。?)主控芯片寫(xiě)位0到目標(biāo)芯片BKGD引腳的操作:拉低目標(biāo)芯片的BKGD引腳不少于12個(gè)時(shí)鐘周期,目標(biāo)芯片在檢測(cè)到低電平后的第10個(gè)周期對(duì)BKGD進(jìn)行采樣,讀入該位。
?。?)主控芯片寫(xiě)位1的操作:拉低目標(biāo)芯片BKGD引腳2~4個(gè)時(shí)鐘周期后釋放BKGD端,使之為高電平,目標(biāo)MCU在探測(cè)到低電平以后的第10個(gè)周期對(duì)BKGD進(jìn)行采樣,讀入該位。
3.3程序下載的可靠性
對(duì)于下載器而言,下載的完整性和可靠性是第一位的,脫機(jī)下載器在軟件方面做了以下幾個(gè)方面的工作:
(1)程序下載回滾功能:為防止用戶下載程序后發(fā)現(xiàn)下載的代碼文件有誤,但目標(biāo)MCU已被擦除無(wú)法恢復(fù)原有程序,在下載器的軟件中加入了一個(gè)操作,即在燒寫(xiě)目標(biāo)芯片前首先將目標(biāo)MCU中的程序讀出,程序讀出后,存儲(chǔ)在下載器外置的EEPROM中,若用戶選擇程序回滾,則下載器軟件重新讀入之前讀出的目標(biāo)文件,并進(jìn)行回滾編程。
EEPROM選用容量為128 KB的25LC1024,內(nèi)部劃分為三個(gè)區(qū)域,分別用來(lái)存儲(chǔ)配置參數(shù)、目標(biāo)MCU內(nèi)部原有固件程序以及待燒寫(xiě)的目標(biāo)文件。
?。?)防SD卡故障功能:為防止在下載過(guò)程中出現(xiàn)SD卡被拔出等誤操作引起的無(wú)法讀取目標(biāo)文件下載的錯(cuò)誤,下載器軟件首先把待燒寫(xiě)的目標(biāo)文件S19存入EEPROM中,在對(duì)拷貝到EEPROM的目標(biāo)文件進(jìn)行重新校驗(yàn)后才對(duì)目標(biāo)MCU進(jìn)行擦除和編程操作。
(3)程序下載校驗(yàn)功能:目標(biāo)芯片燒寫(xiě)成功后,偶爾也會(huì)遇到運(yùn)行不正常的情況,而且可能很難被發(fā)現(xiàn),因此程序下載完畢后必須進(jìn)行程序校驗(yàn)操作。具體過(guò)程是讀出下載后芯片的程序,并按字節(jié)與存儲(chǔ)在EEPROM中的S19文件進(jìn)行對(duì)比,若出現(xiàn)不一致則提示用戶校驗(yàn)錯(cuò)誤,需要重新下載。
4結(jié)論
本文針對(duì)飛思卡爾下載器以在線編程為主,市場(chǎng)中缺乏MCU脫機(jī)下載器的問(wèn)題,在深入理解HCS08型CPU內(nèi)核中BDC模塊的功能、指令的基礎(chǔ)上,設(shè)計(jì)了針對(duì)多回路無(wú)線照明控制器MCU的脫機(jī)下載器,并成功用于實(shí)際產(chǎn)品的程序下載中。通過(guò)進(jìn)一步的改進(jìn),可以適應(yīng)更多型號(hào)的HCS08系列MCU的芯片編程。
參考文獻(xiàn)
?。?] 王超藝,王宜懷.飛思卡爾S08系列機(jī)器碼文件下載軟件的開(kāi)發(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.
?。?] 徐清,王宜懷.嵌入式微控制器MC68HC912B32背景調(diào)試模式設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2006,32(6):6164.
?。?] 王宜懷,張書(shū)奎,王林.嵌入式技術(shù)基礎(chǔ)與實(shí)踐(第2版)[M].北京:清華大學(xué)出版社,2011.
?。?] 邵貝貝.單片機(jī)嵌入式應(yīng)用的在線開(kāi)發(fā)方法[M].北京:清華大學(xué)出版社,2004.