![Freescale HC908微控制器監(jiān)控程序的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)](http://file4.renrendoc.com/view/ef5ec23c7eca22813948ee5bc588732e/ef5ec23c7eca22813948ee5bc588732e1.gif)
![Freescale HC908微控制器監(jiān)控程序的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)](http://file4.renrendoc.com/view/ef5ec23c7eca22813948ee5bc588732e/ef5ec23c7eca22813948ee5bc588732e2.gif)
![Freescale HC908微控制器監(jiān)控程序的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)](http://file4.renrendoc.com/view/ef5ec23c7eca22813948ee5bc588732e/ef5ec23c7eca22813948ee5bc588732e3.gif)
![Freescale HC908微控制器監(jiān)控程序的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)](http://file4.renrendoc.com/view/ef5ec23c7eca22813948ee5bc588732e/ef5ec23c7eca22813948ee5bc588732e4.gif)
![Freescale HC908微控制器監(jiān)控程序的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)](http://file4.renrendoc.com/view/ef5ec23c7eca22813948ee5bc588732e/ef5ec23c7eca22813948ee5bc588732e5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
東北大學(xué)碩士學(xué)位論文FreescaleHC908微控制器監(jiān)控程序的設(shè)計(jì)與實(shí)現(xiàn)姓名:陳俊申請(qǐng)學(xué)位級(jí)別:碩士專業(yè):計(jì)算機(jī)應(yīng)用技術(shù)指導(dǎo)教師:李晶皎20051201東北大學(xué)碩士學(xué)位論文摘要FreescaleHC908微控制器監(jiān)控程序的設(shè)計(jì)與實(shí)現(xiàn)摘要近年來(lái),隨著嵌入式技術(shù)在各個(gè)領(lǐng)域的普及,嵌入式產(chǎn)品吸引了越來(lái)越多的關(guān)湖,嵌入式產(chǎn)品的丌發(fā)離不開微控制器的調(diào)試。Freescale公司大部分微控制器都提供了背景調(diào)試模:r|;=,(BackgroundDebugMode)或肴類似功能的片匕調(diào)試模塊,而其8位微控制器MC68HC908系列提供了最簡(jiǎn)的ROM監(jiān)控方式以及詳細(xì)的開發(fā)文檔,使得A蔓丌發(fā)黼控程序成為可能。本文主要以Freescale8位微控制器為目標(biāo),深入分析了Freescale公司提供的相天資料,1l羊細(xì)敘述了監(jiān)控程序的設(shè)計(jì)與實(shí)現(xiàn)。最小硬件調(diào)試電路由外部晶振、電源和微控制器組成,借助微控制器內(nèi)部SCI模塊,可與PC機(jī)通信進(jìn)行髓控調(diào)試。深入分析MC68HC908文檔中關(guān)于Flash介質(zhì)的相關(guān)操作,將Flash操作做為接口模塊提供給}:層調(diào)用,同時(shí)仔細(xì)研究MC68HC908指令系統(tǒng)后,監(jiān)控程序中加入r匯編與反匯編的功能,借助斷點(diǎn)模塊,實(shí)現(xiàn)了多種功能的調(diào)試,使得應(yīng)用I監(jiān)控程序進(jìn)行j辛上程序調(diào)換更加方便。鼢控程序采用模塊化的思想,實(shí)現(xiàn)的主要功能模塊包括:擦除模塊、下載模塊、內(nèi)存和F1ash區(qū)域的修改模塊、匯編模塊、反匯編功能模塊、斷點(diǎn)模塊、調(diào)試模塊(單步、多步凋試1、運(yùn)行狀態(tài)顯示模塊,資源狀態(tài)顯示模塊,命令幫助模塊,以及寄存器操作模塊等。本文首先簡(jiǎn)要介紹了微控制器調(diào)試的發(fā)展和當(dāng)前常見的微控制器調(diào)試方式,以及Freescale8位微控制器對(duì)于調(diào)試的支持:然后進(jìn)行監(jiān)控程序的總體設(shè)討;然后以MC68HC908AP64為目標(biāo)微控制器詳細(xì)介紹了監(jiān)控程序的設(shè)計(jì)與實(shí)現(xiàn),以及監(jiān)控程序如何移植到其他的Mc68HC908微控制器上。最后本著測(cè)試和驗(yàn)汪的F1的,對(duì)Mc68HC908AP64的監(jiān)控程序作了全面的功能測(cè)試。關(guān)鍵詞:監(jiān)控程序:Freescale;微控制器;Flash北大學(xué)碩士學(xué)位論丈Abs廿actDesignandImplementationofFreescaleHC908MicrOcontrolIers’MonitorsAbstractRecently,asthedevelopmentofembeddedproductsaretechniquesinmanyfields,embeddedattractingmoreandmoreattention,andthedevelopmentofembeddedproductsisconnectingtightlywithMCUdebugging.MostmicrocontroIlersofFreescaleCorporationprovideonedebuggingmodecalledbackgrounddebugmode(BDM)orsameon?chipdebugfunctionmode,itsMC68HC908seriesof8-bitMCUsprovidethesimplestROM—monitormodeanddetaileddocuments,itispossibletodesignanddevelopownmonitors.Inthethesis,takingFreescale8-bitMCUsastarget,withdeepanalysisofdocumelltsprovidedbyFreescaleCorporation,designanddevelopmonitorsandgivetheimplementationdescriptioninagreatdetail,andhowtotransplanttootherMC68HC908MCUs.TheleastdebuggingcircuitiscomposedofcrystaloscillatorcircuitandpowersupplyClrcuit,monitorscommunicateswithPCfordebuggingwiththehelpofSCImodule.withdeepanalysisofFlashoperatingfromtheandthanksconvenienttotodocuments,andcarefulstudyingtheMC68HC908instructiontable,arebreakpointmodule,manyfunctionsofmonitorsuseaccomplished.itismonitorstodebugprogram.modulesofmonitorsincludes:erasingdebuggingmodule,loadingmodule,assemblingmoduleanddisassemblingmodule,andmodule,statedisplayingmodule,resourcesdisplayingmoduleandsomodule,RAMandFlashmodi聊ngon.FirstlythisthesisbrieflyintroducesthedevelopmentinformationofMCUdebugging,anddebuggingmethodofMC68HC908MCUs,thengivethemainSecondlytakingMC68Hc909AP64astargetisdesignedanddevelopedotherMC68HC908MCUsofmonitors,functiontestsarearearedesignofmonitorsMCU,detaileddescriptionsofhowthemonitorstogiven.Thirdlydescriptionsofhowtotransplantmonitorsgiven.Atlast.totheaimoftestingandveillyingtheflmctionsgiven,Keywords:Monitors;Freescale;MCU;Flash獨(dú)創(chuàng)性聲明本人聲明,所呈交的學(xué)位論文是在導(dǎo)師的指導(dǎo)下完成的。論文中取得的研究成果除加以標(biāo)注和致謝的地方外,不包含其他人已經(jīng)發(fā)表或撰寫過(guò)的研究成果,也不包括本人為獲得其他學(xué)位而使用過(guò)的材料。與我一同工作的同志對(duì)本研究所做的任何貢獻(xiàn)均己在論文中作了明確的說(shuō)明并表示謝恩。學(xué)位論文作者簽名:悖殳學(xué)位論文版權(quán)使用授權(quán)書本學(xué)位論文作者和指導(dǎo)教師完全了解東北大學(xué)有關(guān)保留、使用學(xué)位論文的規(guī)定:即學(xué)校有權(quán)保留并向國(guó)家有關(guān)部門或機(jī)構(gòu)送交論文的復(fù)印件和磁盤,允許論文被查閱和借閱。本人授權(quán)東北大學(xué)可以將學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢索、交流。(如作者和導(dǎo)師不同意網(wǎng)上交流,請(qǐng)?jiān)谙路胶灻环駝t視為同意。)學(xué)位論文作者簽名:下≮{互一導(dǎo)師簽名綴簽字日期:06.f、二簽字日期:護(hù)g.I、6東北大學(xué)碩士學(xué)位論更第一章緒論第一章緒論1.1研究背景目前嵌入式系統(tǒng)的應(yīng)用越來(lái)越普及,應(yīng)用領(lǐng)域也從工業(yè)控制到|___1常生活的備個(gè)方面,從航空工業(yè)、汽車電子到家用電器,到處都有嵌入式微控制器的身影。嵌入式系統(tǒng)最初是為工業(yè)計(jì)算機(jī)設(shè)計(jì),在信息產(chǎn)品普及與數(shù)字家電興起后,嵌入式系統(tǒng)已逐漸普搜到我們R常生活中,從信息家電、網(wǎng)絡(luò)產(chǎn)品,到可攜式裝置,都看得到它的蹤跡。嵌入式系統(tǒng)的特色之一一是不需要很多外接的零配件,能在小面積組件上完成特定功能,具有穩(wěn)定性好、尺寸小等特點(diǎn)。嵌入式系統(tǒng)是與微控制器分不開的…。弱前,在嵌入式應(yīng)用領(lǐng)域,8位微控制器在嵌入式系統(tǒng)中的應(yīng)用占了很大比重。8位微控制器廣泛地應(yīng)用于智能儀表、機(jī)電…一體化。實(shí)時(shí)控制、以及分布式多機(jī)系統(tǒng)中。隨著嵌入式系統(tǒng)應(yīng)用越來(lái)越廣泛,嵌入式系統(tǒng)丌發(fā)面臨的問(wèn)題越來(lái)越多。目前,嵌入式應(yīng)用系統(tǒng)的開發(fā)調(diào)試至少包括設(shè)計(jì)與調(diào)試兩個(gè)階段【2】,設(shè)計(jì)過(guò)程中不可避免的遇到一些問(wèn)題,這就需要通過(guò)軟硬件調(diào)試發(fā)現(xiàn)并加以解決。微控制器的調(diào)試主要分為以下三種:(1)采用仿真器在開發(fā)階段去除應(yīng)用系統(tǒng)的CPU,代之以一種特殊的CPU或者邏輯電路,然后使用這個(gè)邏輯電路把運(yùn)行過(guò)程和狀態(tài)完全反映出來(lái)。此方法缺點(diǎn)是結(jié)構(gòu)復(fù)雜,造價(jià)高,而且對(duì)CPU的封裝也有一+定要求。(2)片內(nèi)硬件支持利用CPU片內(nèi)提供的開發(fā)支持功能。現(xiàn)在Freescale許多微控制器都提供了這種片內(nèi)調(diào)試功能,利用BDM或者MultiLink調(diào)試器與片內(nèi)調(diào)試模塊進(jìn)行通信,直接對(duì)程序進(jìn)行控制,可以進(jìn)行單步、多步等調(diào)試。但是硬件調(diào)試器往往價(jià)格昂貴。(3)采用監(jiān)控程序在CPU的程序空間安排一段宿主程序。用戶設(shè)計(jì)的程序在它的管理下運(yùn)行,運(yùn)行狀態(tài)通過(guò)監(jiān)控程序滲透出來(lái),可以很好的監(jiān)控用戶程序運(yùn)行狀態(tài)。雖然占用存儲(chǔ)空間和系統(tǒng)資源,以及對(duì)CPU的控制能力有限,但是這種方式成本低,使用方便簡(jiǎn)單,還能夠直接進(jìn)行在線調(diào)試,呵以迅速的應(yīng)用開發(fā),尤其列于教學(xué)實(shí)踐,能夠大規(guī)模應(yīng)用【3l。目前,嵌入式開發(fā)調(diào)試中使用仿真器,或者直接從國(guó)外廠商購(gòu)買的開發(fā)板,使用f|勺硬件調(diào)試工具比如:JTAG、MULTILINK、BDM調(diào)試器等[4】,價(jià)格非常昂貴,而目存嵌入式學(xué)習(xí)初期階段不可能購(gòu)買價(jià)格昂貴的開發(fā)板及開發(fā)套件,所以迫切需要價(jià)格便。隨,東北走學(xué)碩士學(xué)位論文第一章緒論調(diào)試便捷,性能較好的監(jiān)控程序[5l。Freescale的MC68HC908系列微控制器片內(nèi)提供了最簡(jiǎn)的ROM監(jiān)控方式,加}:片幽集成了電荷泵,可以在不需要額外硬件支持的情況F方便對(duì)Flash進(jìn)行操作,其在線編程能力(In—CircuitProgramming)和Flash分頁(yè)機(jī)制都為開發(fā)自主監(jiān)控程序提供了便利。本文針對(duì)Freescale的MC68HC908系列微控制器,以Mc68HC908AP64為主介紹洋細(xì)了監(jiān)控程序的實(shí)現(xiàn)過(guò)程,以及介紹了監(jiān)控程序的移植和測(cè)試。1.2研究意義}b于在計(jì)算機(jī)及嵌入式領(lǐng)域我國(guó)起步較晚,研究水平也有限制,特別是在生產(chǎn)工藝方面達(dá)不到理論要求的精度,所以市場(chǎng)上流通的以及工業(yè)設(shè)計(jì)需要的芯片絕大部分從潮外廠商直接購(gòu)買,而從廠家購(gòu)買的芯片就是日常所說(shuō)的裸片。在開發(fā)調(diào)試中,把最終生成的目標(biāo)代碼下載到芯片中運(yùn)行還需要借助其他的硬件手段,代碼下載到片內(nèi)運(yùn)行后fl{_i果用戶還需要進(jìn)一步的監(jiān)控,那么還需要借助一些調(diào)試=工:具。Freescate8位微控制器由于單個(gè)芯片的價(jià)格比較低,而且功能與同類產(chǎn)品相比較強(qiáng),所以IF得到廣泛的應(yīng)用。Freescale公司的許多第三方供應(yīng)商都提供了在Freescale的MC68HC908或者HCS08上進(jìn)行嵌入式開發(fā)的解決方案。在眾多第三方供應(yīng)商中,比較出色的比如P&E公司,其MON08是比較好的-,oe解決方案,在HC(S)08的監(jiān)控(BDM)模式之F,完成了全面的調(diào)試功能,但是價(jià)格十分昂貴,參見表I,1。同時(shí)P&E公司的軟件包含了一些基本的底層驅(qū)動(dòng),可以供其它專門丌發(fā)嵌入式IDE的廠家使用,比如Metrowerks公司的CodeWarriorforHE(s)08也是針對(duì)HCS08的IDE環(huán)境,就是基于P&E公司的底層驅(qū)動(dòng)。但是CodeWarrior的價(jià)格也相當(dāng)昂貴161。表1.1P&E公司的MC68HC908開發(fā)工具價(jià)格表Table11ThepriceofMC68HC908developingtoolsfromP&Ecorporation產(chǎn)品韶稱功能描述價(jià)格備注面蕊_1蔥禳蓊菰于麗蕊百麗焉瑟焉孺囂F—CPROG08SZ基丁-命令行的代碼下戴軟件,崩于向68HC908系列微控制器的EEPROM、EPROM、Flash等等存儲(chǔ)器里面。F戴代碼硬件調(diào)試接口.也可作為獨(dú)立的編程器使用。適用于HC908、HCS08、HCl2以及HCSl2系列的徽控制器。適用于USB、串口以及以太網(wǎng)口等連接方式¥129答箍南現(xiàn),與各種調(diào)試接期配軟硬件結(jié)合實(shí)現(xiàn),軟{f{一主要負(fù)洲。霽纛黠氅躺囂婁黎時(shí)序的控制信號(hào)MON08簍_c齜淼讎黔柳:……蚴瘸磁簿敞,"£塑星璺坐里笪一——.一東北大學(xué)碩士學(xué)位論文第一章緒論雖然芯片需要從國(guó)外購(gòu)買,但是現(xiàn)在資料比較全面,關(guān)于芯片的凋試也可以自至研究,開發(fā)出自我特色的監(jiān)控程序.這樣就避免了從開發(fā)板、調(diào)試工具,開發(fā)環(huán)境條龍的“拿束”主義。同時(shí)因?yàn)椋疲颍澹澹螅悖幔欤宓模停茫叮福龋茫梗埃钙瑑?nèi)沒(méi)有集成硬件調(diào)試模塊,故祚:調(diào)試丌發(fā)的過(guò)程中經(jīng)常使用編程器等工具燒寫目標(biāo)代碼,既繁瑣又增加了工作量,所以產(chǎn)7E了為MC68HC908編寫…個(gè)通用監(jiān)控程序的想法。一方面可以節(jié)省經(jīng)費(fèi),同時(shí)可以在高校教學(xué)實(shí)踐中廣泛使用;另一方面,也可以加深對(duì)微控制器底層丌發(fā)的理解,為以后更好的進(jìn)行嵌入式開發(fā)做準(zhǔn)備。1.3論文結(jié)構(gòu)第一章首先介紹了MC68HC908微控制器的監(jiān)控程序的研究背景與意義,以及盯發(fā)監(jiān)控程序的必要性和可行性;第二章主要對(duì)微控制器調(diào)試發(fā)展以及當(dāng)前常見的調(diào)試方式作簡(jiǎn)要介紹:第三章引入了監(jiān)控程序的總體設(shè)計(jì);第四章介紹了MC68HC908AP64微控制器的監(jiān)控程序的詳細(xì)實(shí)現(xiàn)過(guò)程:第五章就如何將監(jiān)控程序移植到其他MC68HC908微控制器_|二作了介紹;第六章對(duì)實(shí)現(xiàn)的監(jiān)控程序作了詳細(xì)的功能測(cè)試:第七章結(jié)束語(yǔ)。東北大學(xué)碩士學(xué)位論文第二章微控制器調(diào)試第二章微控制器調(diào)試2.1微控制器調(diào)試技術(shù)的發(fā)展早期嵌入式開發(fā)之中針對(duì)微控制器使用的調(diào)試方法是“crashandburn”方式。在這種與式下編寫完代碼之后檢查一至兩遍,然后下載到EPllOM里面運(yùn)行。如糶工作不ir常,再次檢查代碼,改正之后再次運(yùn)行,直到執(zhí)行結(jié)果IF確為止。在某種程度上說(shuō),這種方式與使用調(diào)試工具進(jìn)行的工作致。雖然不是個(gè)環(huán)方法,但是不得不承認(rèn)與使用某些調(diào)試工具的速度相比,這種方法的調(diào)試速度特別慢。一段時(shí)f日之后,實(shí)現(xiàn)了具有硬件支持的單步調(diào)試。這種方式可以使控制器執(zhí)行一一條指令之后暫停執(zhí)行。這樣開發(fā)人員就可以確定正在執(zhí)行的是什么代碼。IntelS041微控制器是最早支持單步調(diào)試的微控制器之.該控制器是通過(guò)一個(gè)附加的外部硬件電路實(shí)現(xiàn)改功能的n這種調(diào)試方式仍然不能滿足開笈人員的需要,之后不久,針對(duì)微控制器調(diào)試的:療式又0l入了一種新的設(shè)備:ROM仿真器。這種設(shè)備是插入式的,用來(lái)代替目標(biāo)扳r的微控制器芯片。該設(shè)備通過(guò)串口、井口或者以太網(wǎng)接口與主機(jī)連接。在最簡(jiǎn)單的情況下,ROM仿真器可以快速的下載代碼,并且使用“crashandbum”力式進(jìn)行調(diào)試;在比較復(fù)雜的情況下,可以下載一個(gè)ROM監(jiān)控程序的代碼.然后通過(guò)仿真器的仿真頭與監(jiān)控程序通信。在線仿真器ICE的應(yīng)用為微控鏹l器的調(diào)試增加了新方式。在線仿真器ICE由仿真器的仿真頭來(lái)完全取代目標(biāo)板上的CPU進(jìn)行工作.產(chǎn)生外部電路所需的信號(hào),同時(shí)捕獲外部所有信號(hào)。對(duì)嵌入式軟件開發(fā)人員來(lái)說(shuō),ICE一直是傳統(tǒng)的首選調(diào)試工具,’豈能夠提供源代碼級(jí)調(diào)試及控制器運(yùn)行控制等關(guān)鍵的調(diào)試功能。嵌入式系統(tǒng)硬件玎發(fā)人?。。?;jI,J以使用它啟動(dòng)和停止目標(biāo)系統(tǒng),查閱和修改寄存器和存儲(chǔ)器,盤需要查看目標(biāo)系統(tǒng)內(nèi)部運(yùn)行情況的地方來(lái)設(shè)景斷點(diǎn)。嵌入式軟件開發(fā)人員可以使用ICE調(diào)試,采用ICE源級(jí)調(diào)試程序編寫的代碼,并在需要控制和查看內(nèi)部控制囂運(yùn)行的地方設(shè)置斷點(diǎn)。傳統(tǒng)的LCE技術(shù)在普通的嵌入式系統(tǒng)調(diào)試中很好地滿足了調(diào)試需求。雖然在線仿真器ICE這種調(diào)試方式功能強(qiáng)大.但是成本很高、可擴(kuò)展性差,沒(méi)有提供完善的觸發(fā)、高速定時(shí)或模擬分析功能。目前,隨著汁算機(jī)和通信技術(shù)的高速發(fā)展,針刑高速膚入式控制器的仿真器很難采用這種方式”’】。最近,調(diào)試方式又增加了一種方式:片上調(diào)試(OCD,On—ChipDebug)方式。l≯期的片L調(diào)試器摹本上用目標(biāo)控制器系統(tǒng)上的微代碼實(shí)現(xiàn)調(diào)試監(jiān)控程序。更高級(jí)…些的控制器又增加了一些調(diào)試功能,如程序計(jì)數(shù)器的實(shí)時(shí)讀?。ǎ粒睿幔欤铮纾模澹觯椋悖澹蟮模樱龋粒遥弥舻迤鳎?、對(duì)目標(biāo)系統(tǒng)存儲(chǔ)單元接近于實(shí)時(shí)的讀取(Freeseale的CodeFire系列)Iml基本的OCD器)、對(duì)目標(biāo)系統(tǒng)存儲(chǔ)單元接近于實(shí)時(shí)的讀取(Freeseale的CodeFire系列)Iml基本的OCD東北大學(xué)碩士學(xué)位論文第二章微控制器調(diào)試第二章微控制器調(diào)試2.1微控制器調(diào)試技術(shù)的發(fā)展早期嵌入式開發(fā)之中針對(duì)微控制器使用的調(diào)試方法是“crashandbum”方式。在這種方式下編寫完代碼之后檢查一至兩遍,然后下載到EPROM里面運(yùn)行。如果工作不lF常,再次檢查代碼,改正之后再次運(yùn)行,直到執(zhí)行結(jié)果『F確為止。在某種程度[=說(shuō),這種方式與使用調(diào)試工具進(jìn)行的工作一致。雖然不是。個(gè)壞方法,但是不得不承認(rèn);j使用某些凋試工具的速度相比,這種方法的調(diào)試速度特別慢。一’段時(shí)間之后,實(shí)現(xiàn)了具有硬件支持的單步調(diào)試。這種方式可以使控制器執(zhí)行一祭指令之后暫停執(zhí)行,這樣開發(fā)人員就可以確定正在執(zhí)行的是什么代碼。Intel8041微控制器是攮早支持單步調(diào)試的微控制器之~,該控制器是通過(guò)一個(gè)附加的外部硬件電路實(shí)現(xiàn)該功能的【71。這種調(diào)試方式仍然不能滿足開發(fā)人員的需要,之后不久,針對(duì)微控制器調(diào)試的方式又引入了一種新的設(shè)備:ROM仿真器。這種設(shè)備是插入式的,用來(lái)代替目標(biāo)板上的微控制器芯片。該設(shè)備通過(guò)串口、并口或者以太網(wǎng)接口與主機(jī)連接。在最簡(jiǎn)單的情況一卜-,ROM仿真器可以快速的下載代碼,并且使用“crashandbum”方式進(jìn)行調(diào)試;在比較復(fù)雜的情況下,可以下載一個(gè)ROM監(jiān)控程序的代碼,然后通過(guò)仿真器的仿真頭與崎控程序通信。在線仿真器ICE的應(yīng)用為微控制器的調(diào)試增加了新方式。在線仿真器ICE由仿真器的仿真頭來(lái)完全取代目標(biāo)板上的CPU進(jìn)行工作,產(chǎn)生外部電路所需的信號(hào)。同時(shí)捕獲外部所有信號(hào)。對(duì)嵌入式軟件開發(fā)人員來(lái)說(shuō),ICE一直是傳統(tǒng)的首選調(diào)試工具,它能夠提供源代碼級(jí)調(diào)試及控制器運(yùn)行控制等關(guān)鍵的調(diào)試功能。嵌入式系統(tǒng)硬件玎發(fā)人員可以使用它啟動(dòng)和停止目標(biāo)系統(tǒng),查閱和修改寄存器和存儲(chǔ)器,在需要查看目標(biāo)系統(tǒng)內(nèi)部運(yùn)行情況的地方來(lái)設(shè)置斷點(diǎn)。嵌入式軟件開發(fā)人員可以使用ICE調(diào)試,采用ICE源級(jí)嘲試程』事編寫的代碼,并在需要控制和查看內(nèi)部控制器運(yùn)行的地方設(shè)置斷點(diǎn)。傳統(tǒng)的ICE技術(shù)在普通的嵌入式系統(tǒng)調(diào)試中很好地滿足了調(diào)試需求。雖然在線仿真器ICE這種調(diào)試方式功能強(qiáng)大,但是成本很高、可擴(kuò)展性差,沒(méi)有提供完善的觸發(fā)、高速定時(shí)或模擬分析功能。目前,隨著計(jì)算機(jī)和通信技術(shù)的贏速發(fā)展,針列高速嵌入式控制器的仿真器很難采用這種方式捧’】。最近,調(diào)試方式又增加了一種方式:片上調(diào)試(OCD,On—ChipDebug)方式。‘弘期的片匕調(diào)試器基本上用目標(biāo)控制器系統(tǒng)上的微代碼實(shí)現(xiàn)調(diào)試監(jiān)控程序。更高級(jí)一些的擰制器又增加了一些調(diào)試功能,如程序計(jì)數(shù)器的實(shí)時(shí)讀?。ǎ粒睿幔欤铮纾模澹觯椋悖澹蟮模樱龋粒遥每刂破鳎?、對(duì)目標(biāo)系統(tǒng)存儲(chǔ)單元接近于實(shí)時(shí)的讀?。ǎ疲颍澹澹螅悖幔欤宓模茫铮洌澹疲椋颍逑盗校尽俊;镜模希茫臇|北犬學(xué)碩士學(xué)位論文第二章微控制囂鶘試調(diào)試方式支持以下調(diào)試功能:代碼下載、讀寫存儲(chǔ)器單元、單步執(zhí)行、控制器重置、讀取控制器當(dāng)前狀態(tài)(正在運(yùn)行還是處于停止?fàn)顟B(tài))等等[11,t21。2.2常見的微控制器調(diào)試方式這里介紹常見的調(diào)試方式有:駐留監(jiān)控程序方式、ROM仿真器方式、在線仿真器(ICE)方式、應(yīng)用邊界掃描技術(shù)(JTAG)調(diào)試方式、片上背景調(diào)試模式(BDM)等。2.2.1駐留監(jiān)控程序方式駐留監(jiān)控程序(ResidentMonitors)是一段運(yùn)行在目標(biāo)板上的程序,集成開發(fā)環(huán)境中的調(diào)試軟件通過(guò)以太網(wǎng)口、并行端口、串行端口等通訊端口與駐留監(jiān)控軟件進(jìn)行交甄,}}{調(diào)試軟件發(fā)布命令通知駐留監(jiān)控軟件控制程序的執(zhí)行、讀寫存儲(chǔ)器、瀆寫寄存器、沒(méi)置斷點(diǎn)等。駐籍監(jiān)控軟件是一種比較低廉有效的調(diào)試方式,不需要任何其他硬件淵試和仿真設(shè)備。ARM公司的Angel就是該類軟件,大部分嵌入式實(shí)時(shí)操作系統(tǒng)也是采用該類軟件進(jìn)行調(diào)試,不同的是在嵌入式實(shí)時(shí)操作系統(tǒng)中,駐留監(jiān)控軟件是作為操作系統(tǒng)的務(wù)存在的。駐尉監(jiān)控軟件的不便之處在于它對(duì)硬件設(shè)備的要求比較高,一般在硬件穩(wěn)定之后刊能進(jìn)行應(yīng)用軟件的開發(fā),同時(shí)它占用目標(biāo)板上的一部分資源,而且不能對(duì)程序的全速運(yùn)行進(jìn)行完全仿真,所以對(duì)一些要求嚴(yán)格的情況不是很適合。駐留監(jiān)控軟件雖然具有占有存儲(chǔ)空間和系統(tǒng)資源,以及對(duì)CPU的控制能力有限的缺點(diǎn),但是它成本低,使用方便簡(jiǎn)單,還能夠直接進(jìn)行在線調(diào)試,能夠迅速應(yīng)用開發(fā)ll…。個(gè)任2.2.2ROM仿真器方式大多數(shù)嵌入式系統(tǒng)把應(yīng)用程序代碼存放在非易失存儲(chǔ)器(閃存E2PROM)中,但是調(diào)試應(yīng)用程序需要修改代碼,設(shè)置斷點(diǎn)以及更新代碼映像,這就要求為『F常的應(yīng)用程序代碼尋求替換的存儲(chǔ)器,而ROM仿真器可以實(shí)現(xiàn)。ROM仿真器用來(lái)仿真ROM,包括以下元件:●用于匹配目標(biāo)系統(tǒng)ROM:卷片接口的電纜設(shè)備和接口插座;●用于代替目標(biāo)系統(tǒng)中ROM的快速RAM;●本地控制器;●連接到主機(jī)的通信端口:?附加特性:如跟蹤存儲(chǔ)器,閃存編程算法等。ROM仿真器能提供自己的RAM或替代存儲(chǔ)器去覆蓋目標(biāo)系統(tǒng)的ROM或RAM,可以在其中輕而易舉地設(shè)置斷點(diǎn)。調(diào)試中目標(biāo)平臺(tái)認(rèn)為它在訪問(wèn)RoM,而它實(shí)際訪問(wèn)的是東北大學(xué)碩士學(xué)住論文第二章微控制器調(diào)試ROM仿真器的RAM。調(diào)試過(guò)程中通過(guò)仿真器來(lái)控制目標(biāo)控制器,而不是由運(yùn)行調(diào)試程序的目標(biāo)控制器來(lái)進(jìn)行代碼替換,它可以在目標(biāo)控制器仍在運(yùn)行應(yīng)用程序代碼時(shí)把斷點(diǎn)插入到仿真器存儲(chǔ)器中㈣”]。RoM仿真器的功能方框圖如圖2.1所示。一唑塑望墮望壹!莖一快速RAM內(nèi)存陣列控制處理器通道與信號(hào)控制邏輯電纜驅(qū)動(dòng)器,緩沖電路時(shí)跟蹤存儲(chǔ)器電纜電纜接口電路緩存匱到ROM插座j薄片的接口到目標(biāo)系統(tǒng)信接口到宿主機(jī)圖2.1ROM仿真器的功能框幽Fig.2.1FunctionmoduleofROMsimulatorROM仿真器具有可以縮短調(diào)試周期,靈活設(shè)置斷點(diǎn),仿真多種接口等功能。者目標(biāo)系統(tǒng)中沒(méi)有通信端口,或者已經(jīng)被嵌入式應(yīng)用軟件占用,并且到主機(jī)的通信端口不能由調(diào)試器使用,ROM仿真器則可以通過(guò)建立到主機(jī)的虛擬UART端口來(lái)解決這個(gè)問(wèn)題[”}。2.2.3在線仿真器(ICE)調(diào)試方式在線仿賓器OCE):提供自己的控制器和存儲(chǔ)器,不依賴目標(biāo)系統(tǒng)的控制器和內(nèi)存,是最直接的仿真調(diào)試方法。不同的調(diào)試工具對(duì)功能的實(shí)現(xiàn)是不~樣的,ICE的主要優(yōu)點(diǎn)是實(shí)時(shí)跟蹤和完整的觸發(fā)功能,容易實(shí)現(xiàn)實(shí)時(shí)跟蹤信息獲取和運(yùn)行控制。ICE通過(guò)基于存儲(chǔ)器的斷點(diǎn)技術(shù)實(shí)現(xiàn)硬件斷點(diǎn),而且ICE實(shí)現(xiàn)的硬件斷點(diǎn)數(shù)量是沒(méi)有限制的,對(duì)于沒(méi)有片}:調(diào)試邏輯的嵌入式系統(tǒng),可以采用ICE進(jìn)行調(diào)試。電纜或特殊連接器使ICE的控制器能代替目標(biāo)系統(tǒng)的控制器。ICE與露標(biāo)系統(tǒng)的連接有兩種方法:一種是直接連接,適用于ICE的插座能很容易地插入琶標(biāo)系統(tǒng)時(shí);另…種是問(wèn)接連接,適用于ICE插座不易插入目標(biāo)系統(tǒng)時(shí)。ICE和目標(biāo)系統(tǒng)通過(guò)連接器組合在一起,在完成連接后,設(shè)置端口號(hào)和通信速率,就可以代替原來(lái)的目標(biāo)機(jī)進(jìn)行應(yīng)用程序調(diào)試了…41。東北大學(xué)碩士學(xué)位論文第二章徽控制器調(diào)試調(diào)試時(shí)使用ICE控制器和存儲(chǔ)器、髫標(biāo)板上的I/O接口。ICEL[a關(guān)鍵部分包括:?NMI控制邏輯;?存儲(chǔ)器控制邏輯;●映像ROM及映像RAM。ICE模擬內(nèi)存采用雙口內(nèi)存,能在執(zhí)行時(shí)同時(shí)看到數(shù)據(jù)的變化,同時(shí)附有功能強(qiáng)大的分析器,可以分析狀態(tài)、效率和時(shí)序等。它不但可以往前執(zhí)行,還可以倒退執(zhí)行。所有信息都可以記錄起來(lái),包括計(jì)時(shí)器狀態(tài)、工作切換狀念、內(nèi)存狀態(tài)、寄存器狀態(tài)、變麓等,且信息全部是實(shí)時(shí)的。系統(tǒng)組合的內(nèi)存包括仿真器內(nèi)存和用J-內(nèi)存兩部分。c1柏、控制器具有響應(yīng)外部NMI(不可屏蔽中斷)的能力,可以便存儲(chǔ)ICE內(nèi)代碼和用戶代碼的兩部分內(nèi)存實(shí)現(xiàn)切換。完成調(diào)試之后,再使用目標(biāo)板E的控制器和存儲(chǔ)器實(shí)剛運(yùn)行應(yīng)用代碼。ICE是在具體的目標(biāo)機(jī)平臺(tái)上調(diào)試應(yīng)用程序,系統(tǒng)在調(diào)試狀態(tài)下的執(zhí)行情況和運(yùn)行模式完全一樣,這種方式更有利于實(shí)時(shí)地對(duì)系統(tǒng)硬件和軟件故障進(jìn)行定位平¨修改【|7l、ICE價(jià)格一般較高,具有侵入性,即仿真器把較大的負(fù)載加至系統(tǒng)總線,兇器件具有4:同的電氣特性,可改變系統(tǒng)時(shí)序,當(dāng)仿真器連到其他元件保持不變的目標(biāo)系統(tǒng)時(shí),有時(shí)會(huì)發(fā)生目標(biāo)系統(tǒng)突然工作(或失效)的情況;重復(fù)使用能力不好,只能在有限的控制器范圍內(nèi)使用㈣19,201。2.2.4應(yīng)用JTAG接口的邊界掃描技術(shù)方式JTAG(聯(lián)合測(cè)試動(dòng)作組)是一個(gè)IEEE標(biāo)準(zhǔn)規(guī)范。它實(shí)際上是進(jìn)行芯片整體測(cè)試的一種手段,最初實(shí)現(xiàn)的目的是用于測(cè)試芯片的所有引腳連接狀態(tài)以及引腳與電路板上的其它芯片的內(nèi)部連接。簡(jiǎn)而言之,通過(guò)芯片的JTAG串行環(huán)可能通過(guò)所有的片。l二設(shè)備,并且至少經(jīng)過(guò)所有的I/OLq和緩沖區(qū)。對(duì)于JTAG來(lái)說(shuō),沒(méi)有包含可調(diào)試資源的個(gè)別規(guī)范:同樣也沒(méi)有禁止調(diào)試某個(gè)資源的說(shuō)明。JTAG遵循IEEEll49.1標(biāo)準(zhǔn),是一種國(guó)際標(biāo)準(zhǔn)測(cè)試協(xié)議,主要用于芯片內(nèi)部測(cè)試及對(duì)系統(tǒng)進(jìn)行仿真與調(diào)試。JTAG技術(shù)是一種嵌入式調(diào)試技術(shù),它在芯片內(nèi)部封裝了專門的測(cè)試電路TAP(NU試訪問(wèn)口),通過(guò)專門的JTAG測(cè)試工具對(duì)內(nèi)部節(jié)點(diǎn)進(jìn)行測(cè)試。標(biāo)準(zhǔn)的JTAG接口包括以下4線:?TMS(測(cè)試模式選擇);●TCK(N9試時(shí)鐘);?TDIf測(cè)試數(shù)據(jù)輸入);?TDO(N1]試數(shù)據(jù)輸出1?;冢剩裕粒墙涌诘倪吔鐠呙铚y(cè)試技術(shù),是在芯片引腳和芯片內(nèi)部邏輯之間(即芯片邊界位置)增加串行連接的邊界掃描測(cè)試單元,實(shí)現(xiàn)對(duì)芯片引腳狀態(tài)的設(shè)定和讀玻,使芯片引腳狀態(tài)具有可控性和可觀測(cè)性。20針JTAG管腳定義如表2.1所示。東北大學(xué)碩士學(xué)位論文表2.1JTAG管腳定義Table2.tPortdefinitionofJTAG第二章微控制囂調(diào)試JTAG所遵循的IEEEl149.1標(biāo)準(zhǔn)支持3種測(cè)試功能:?內(nèi)部測(cè)試——IC內(nèi)部的邏輯測(cè)試;?外部測(cè)試——IC間相互連接的測(cè)試;●取樣測(cè)試——IC正常運(yùn)行時(shí)的數(shù)據(jù)取樣測(cè)試。一個(gè)監(jiān)控程序大致由上層調(diào)試工具,調(diào)試宿主機(jī),協(xié)議轉(zhuǎn)換器,調(diào)試接IJ和調(diào)試逆輯以及待調(diào)試CPU組成。圖2.2是一個(gè)簡(jiǎn)化了的監(jiān)控程序結(jié)構(gòu)框圖。高層調(diào)試工具是監(jiān)控程序與用戶的接口,主要用于發(fā)出高層的調(diào)試命令;調(diào)試主機(jī)是運(yùn)行調(diào)試工具的計(jì)算機(jī),調(diào)試主機(jī)允許發(fā)出調(diào)試工具給出的高級(jí)調(diào)試命令,提供給底層的協(xié)議轉(zhuǎn)換器;協(xié)議轉(zhuǎn)換器是用于將調(diào)試主機(jī)發(fā)出的高層命令轉(zhuǎn)換為JTAG接口協(xié)議。圖2.2典硝的監(jiān)控科序框圖Fig.2.2Typicalconnectingfl'a/neofmonitors在目標(biāo)監(jiān)控程序中,為了讓調(diào)試主機(jī)能夠通過(guò)JTAG接口訪問(wèn)蟄jcPu的運(yùn)行結(jié)果并且能夠控¥IJcPu的運(yùn)行狀態(tài),通常是將掃描鏈安插在需要觀察的數(shù)據(jù)通道周圍,使得調(diào)試主機(jī)的命令可以通過(guò)JTAG接口串行地輸入到這些特殊數(shù)據(jù)通道,并且可以通過(guò)JTAG接口將數(shù)據(jù)通道的內(nèi)容串行地送入調(diào)試主機(jī)。JTAG命令獨(dú)立于控制器的指令系統(tǒng),可東北大學(xué)碩士學(xué)位論文第二章微控制囂調(diào)試以完全控制控制器的運(yùn)作,屬于完全非插入式(即不使用片上資源)調(diào)試,它無(wú)需曰標(biāo)存儲(chǔ)器,不占用目標(biāo)系統(tǒng)的任何端口,且其仿真更接近于目標(biāo)硬件,許多接口問(wèn)題,如高頻操作限制,電線長(zhǎng)度的限制等被最小化了l“l。使用集成開發(fā)環(huán)境配合JTAG仿真器進(jìn)行開發(fā)是目前采用最多的一種調(diào)試力式。隨著嵌入式系統(tǒng)的發(fā)展,人們提出了更多基于JTAG接121的調(diào)試技術(shù)的改進(jìn)方法,加強(qiáng)對(duì)內(nèi)核信號(hào)的監(jiān)測(cè)與控制,內(nèi)核與調(diào)試電路之間的數(shù)據(jù)交換,以系統(tǒng)時(shí)鐘運(yùn)行調(diào)試程序等。以更少的硬件開銷實(shí)現(xiàn)更全面的調(diào)試功能[2L”1。2.2.5片上調(diào)試的背景調(diào)試方式(BDM)一般地說(shuō),片上調(diào)試(on.chipdebug)是軟件和硬件的結(jié)合體。駐留在芯片內(nèi)的部分實(shí)現(xiàn)有著多種方式:在Freescale的CPU32是基于微代碼的監(jiān)控、mMPPC403足硬件實(shí)現(xiàn)的片上調(diào)試資源。這包括最終用戶代碼暈面可以使用韻資源,如斷點(diǎn)寄存器或者#門供OCD使用的硬件,如指令隊(duì)列緩沖區(qū)。片上調(diào)試確實(shí)需要硬件的支持,然而這種需求可能很少。在調(diào)試主機(jī)和芯片之問(wèn),應(yīng)該有一種通信的方法。在大多數(shù)情況下,是通過(guò)一個(gè)雙向的插頭和控制器上的幾個(gè)引腳實(shí)現(xiàn)的。在IBM的403家族里面使用JTAG接口插頭以及通過(guò)一個(gè)16針的雙向插頭與控制器的RESET、電源正和電源負(fù)引腳相連。片上調(diào)試方式中的BDM是BackgroundDebugMode的縮寫,是Freescale公司的一種系統(tǒng)調(diào)試方式,有時(shí)BDM也指支持這種方式的微控制器中與此有關(guān)的部分。Freescale的BDM方式通過(guò)10針的雙向插頭使用專用的引腳(有時(shí)和一些實(shí)時(shí)執(zhí)行功能分時(shí)復(fù)f};fj,如BGND引腳):電源正、地、RESET等。很多DSP芯片使用符合Texas公司標(biāo)準(zhǔn)的JTAG接口。Freescale已經(jīng)擴(kuò)展了這個(gè)接口的內(nèi)部定義,通過(guò)這種擴(kuò)展使這種接口滿足DSP下的BDM方式調(diào)試接口,也就是OnCE接口【z“。BDM具備基本的調(diào)試功能【24∞】,包括資源訪問(wèn)及運(yùn)行控制等:與指令掛牌及斷點(diǎn)邏輯配合可以實(shí)現(xiàn)許多重要的開發(fā)功能,例如系統(tǒng)開發(fā)、在線檢測(cè)、現(xiàn)場(chǎng)檢測(cè)和芯片內(nèi)程序的固化等。比如在Freescale的HC(S)12系列微控制器中,BDM是其內(nèi)部一‘個(gè)獨(dú)立于CPU的硬件和固件(Firmware)聯(lián)合體,BDM的硬件邏輯位于CPU以外。微控制器J.電后,BDM硬件邏輯一直處于工作狀態(tài),可以隨時(shí)接收并執(zhí)行外部命令,可以管理CPU,甚至可以在CPU運(yùn)行時(shí)直接訪問(wèn)CPU的存儲(chǔ)器資源而讓CPU毫無(wú)覺(jué)察。BDM例件是部分BDM命令的解釋程序,它平時(shí)處于禁止?fàn)顟B(tài),對(duì)用戶程序透明,需要時(shí)必須事先通過(guò)某種方式激活。如果需要讀寫CPU的寄存器,或者準(zhǔn)備以某種方式控制用戶程序運(yùn)行,都需要用到BDM固件。從另一個(gè)角度來(lái)看,BDM固件相當(dāng)于一個(gè)小監(jiān)控程序,所渭BDM激活實(shí)際上就是CPU掛起用戶程序,將控制權(quán)交給這個(gè)監(jiān)控程序。在Freescale公司的16位微控制器HC(S)12內(nèi)部還可以設(shè)置斷點(diǎn)邏輯(Breakpoint)、東北尢學(xué)碩士學(xué)位論文第二章微控制囂調(diào)試指令掛牌(TAG)和背景調(diào)試模式(BDM)-等,可以說(shuō)實(shí)現(xiàn)了功能比較完備的OCD調(diào)試方式,通過(guò)這些功能可以了解CPU所有內(nèi)部、外部資源的狀態(tài),還可以設(shè)置硬件斷點(diǎn)。其中最重要的是BDM模式,該模式包括硬件邏輯和固件(FirmWare),宿主計(jì)算機(jī)遇過(guò)單一引腳BKGD即可與BDM邏輯進(jìn)行通訊,實(shí)現(xiàn)軟硬件的開發(fā)調(diào)試。此外,HC(S)l2還采用了指令隊(duì)列,雖然加快了指令的執(zhí)行速度,不過(guò)難以實(shí)現(xiàn)對(duì)微控制器執(zhí)行過(guò)程的跟蹤:但是通過(guò)指令標(biāo)記和內(nèi)部隊(duì)列狀態(tài)可以解決這個(gè)問(wèn)題。BDM調(diào)試模式子模塊是通過(guò)片上硬件實(shí)現(xiàn)的單線后臺(tái)監(jiān)控程序,該系統(tǒng)在盡可能少地打擾微控制器的前提F完成調(diào)試功能;BDM控制邏輯與外部宿主開發(fā)系統(tǒng)之間通過(guò)BKGD引腳實(shí)現(xiàn)雙向串行通信,這種單線通信方案使得用于開發(fā)支持的引腳數(shù)減到最少【2…。2.3MC68HC908系列微控制器對(duì)調(diào)試的支持Freescale公司的MC68HC908系列微控制器在片內(nèi)集成了監(jiān)控ROM。監(jiān)控ROM是指微控制器出廠前固化在芯片內(nèi)部ROM中的一段程序,其中包含了有關(guān)系統(tǒng)檢測(cè)、Flash編程以及串行通信等功能的代碼。這就使得微控制器多了一種不同于正常用戶方式的特殊操作方式,稱為監(jiān)控方式。監(jiān)控ROM也提供了與PC機(jī)間的…線制(主要是通過(guò)一I/O管腳)測(cè)試模式。監(jiān)控模式的進(jìn)入不需要額外的硬件和高電壓支持,只要復(fù)位向量為窄就可以進(jìn)入監(jiān)控ROM模式,這樣就將對(duì)于在線編程的硬件支持減到最少。監(jiān)控ROM從PC機(jī)接收命令,主要是通過(guò)RS232接口和PC機(jī)通信,監(jiān)控ROM提供了最簡(jiǎn)功能,可以通過(guò)一管腳f通常PTAO)將代碼下載到RAM中進(jìn)行執(zhí)行。在此基礎(chǔ)上可以根據(jù)Freescale的MC68HC908文檔給出的硬件電路設(shè)計(jì)硬件編程器。但是設(shè)計(jì)出來(lái)的硬件編程器的功能也只有簡(jiǎn)單的擦除,寫入等最簡(jiǎn)單功能,不便于用戶開發(fā)過(guò)程中調(diào)試。監(jiān)控ROM使用的固件命令如下:●READ(讀內(nèi)存);?WRITE(寫內(nèi)存);?mEAD(帶索引讀):●IWRITE(帶索引寫);●READSP(讀堆棧指針);●RUNf運(yùn)行用戶程序1。另外,有的MC68HC908系羅Ⅱ微控帝n器在上述監(jiān)控ROM基礎(chǔ)上內(nèi)駐了更強(qiáng)功能的固件程序。這些固件程序最主要的功能是用來(lái)對(duì)Flash進(jìn)行操作管理的。比如MC68HC908AP64就提供了7個(gè)固件程序接口,其中5個(gè)固件接口就是為了簡(jiǎn)化Flash編程、擦除、下載等操作。其它的兩個(gè)囿件程序接口主要是用來(lái)管理E2PROMl2“。東北大學(xué)碩士學(xué)位論文第三章監(jiān)控程序的總體設(shè)計(jì)第三章監(jiān)控程序的總體設(shè)計(jì)監(jiān)控程序的首要功能就是把應(yīng)用程序最終生成的目標(biāo)代碼下載進(jìn)片內(nèi)Flash中,應(yīng)用程序運(yùn)行后,可以在監(jiān)控程序的幫助下進(jìn)行調(diào)試,比如顯示內(nèi)存、修改內(nèi)存、顯ij或苔修改寄存器、進(jìn)行匯編級(jí)的調(diào)試等操作。因?yàn)楸O(jiān)控程序也是編寫的一段代碼,需要駐留在Flash區(qū),當(dāng)然也占用‘定的系統(tǒng)資源。但借助監(jiān)控程序可以方便的進(jìn)行應(yīng)用程序調(diào)試、代碼下載、目標(biāo)Flash區(qū)擦除以及對(duì)下載代碼的調(diào)試,占用部分資源是值得的。由于MC68HC908系列微控制器的Flash以頁(yè)為最小單位進(jìn)行操作,這樣就不用擔(dān)心對(duì)部分存儲(chǔ)介質(zhì)的擦除而將所有Flash存儲(chǔ)更全部清空,這些都是進(jìn)行Flash相關(guān)操作時(shí)需要考慮的問(wèn)題,但是Freescale公司提供了針對(duì)Flash操作的塊保護(hù)寄存器以及控制寄存器,這樣在有保護(hù)的情況下,就不j{;}{擔(dān)心因?yàn)檎`操作帶來(lái)的后果。監(jiān)控程序的編寫首先從系統(tǒng)的初始化開始,設(shè)置時(shí)鐘頻率,初始化監(jiān)控程序需要使用的硬件模塊比如SCI模塊、時(shí)鐘模塊等,在初始化完成以后,進(jìn)行下一步監(jiān)控程序的開發(fā)工作。MC68HC908系列微控制器的監(jiān)控程序,需要實(shí)現(xiàn)以下功能:●人機(jī)對(duì)話,這是人跟微控制器通信的基本手段,使用串行口進(jìn)行交互;?顯示CPU內(nèi)部各寄存器的值,使CPU內(nèi)部的狀態(tài)能夠顯示:?修改CPU內(nèi)部各寄存器的值,使CPU能夠被操作;●顯示內(nèi)存和Flash區(qū)域的值,同時(shí)要能夠修改內(nèi)存和Flash的值128,2‘)】;●能夠進(jìn)行匯編級(jí)的調(diào)試,進(jìn)行單步調(diào)試,多步調(diào)試:?匯編以及反匯編功能【30,31t。3.1調(diào)試電路的設(shè)計(jì)硬件最小調(diào)試電路的設(shè)計(jì)如圖3.1所示,只要加上合適的外部晶振電路,借助SCI模塊就可以實(shí)現(xiàn)和PC機(jī)的通信。PC機(jī)端可以直接使用串口通信工具,比如超級(jí)終端,進(jìn)行命令的發(fā)送以及顯示監(jiān)控程序的回傳數(shù)據(jù)。東北大學(xué)碩士學(xué)位論文~匿一第三章監(jiān)控程序的總體設(shè)計(jì)藹一一廣I,止■L~子模塊虱到警圖3.1雖小調(diào)試電路Fig.3.1Smallestdebuggingcircuit3.2層次結(jié)構(gòu)的設(shè)計(jì)監(jiān)控程序采取模塊化的設(shè)計(jì),需要實(shí)現(xiàn)的功能獨(dú)立出來(lái)以模塊的形式提供調(diào)用,這樣軟件設(shè)計(jì)的層次結(jié)構(gòu)顯得很清晰。監(jiān)控程序的模塊層次圖如圖3’2所示,在所有模塊中Flash操作子模塊是崖接與微控制器的Flash介質(zhì)直接打交道,該模塊提供了對(duì)Flash介質(zhì)的讀與寫操作的接121。而最上層的串行通信接121模塊直接與PC機(jī)端進(jìn)行交互,接收P(:機(jī)端的命令并進(jìn)行相應(yīng)的處理,同時(shí)回傳命令或者數(shù)據(jù)給PC機(jī)。廠一;i瓦F…l一皇……一一毫Flash徘勇蓮網(wǎng)郄螵慝串行通信接口模塊‘…一—]r—一}模塊r8“I。|3“{”“j模塊|8“HC908徽控制器圖3.2監(jiān)控程序的模塊描述例Fig,3.2Moduledescriptionofmonitors3.3模塊化設(shè)計(jì)根據(jù)已經(jīng)給出的各功能模塊的層次圖,下面進(jìn)行各模塊的功能設(shè)計(jì)。功能模塊主要有:串行通信接口模塊、Flash操作子模塊、擦除模塊、反匯編模塊和匯編模塊等a3.3.1串行通信接口模塊的設(shè)計(jì)MC68HC908系列微控制器中提供了串行通訊接口(SerialCommunicationInterface,lsCn是異步通信接口,其他型號(hào)的MC68HC908微控制器還提供了增強(qiáng)的串行通訊接f(EnhancedSerialCommunicationInterface,ESCI),在硬件上只要將其電平轉(zhuǎn)換為標(biāo)準(zhǔn)東北大學(xué)碩士學(xué)位論文第三章監(jiān)控程序的總體設(shè)計(jì)RS。232電平即可進(jìn)行串行異步通信,這樣就可以與PC機(jī)端串[I通信工具建贏連接。串行通信接口模塊在模塊層次圖中處于最上層,浚模塊實(shí)現(xiàn)的功能主要是從PC機(jī)端接收命令,然后進(jìn)行處理或者調(diào)用其他模塊實(shí)現(xiàn)用戶需要功能。串行通信接F1模塊主要基于MC68HC908系列的串行通訊接口模塊,與PC機(jī)端通信工具(推薦使用的是windows系統(tǒng)自帶的超級(jí)終端)進(jìn)行通信,建立連接需要握手的參數(shù)有:使用的串行口、速率、位數(shù)咀及奇偶檢驗(yàn)等。PC機(jī)端發(fā)送過(guò)來(lái)的命令或者數(shù)據(jù)都是ASCII碼形式傳送的,比如命令字或者需要操作的地址等。串行通信接口模塊首先需要對(duì)發(fā)送過(guò)來(lái)的ASCII碼進(jìn)行處理,然后變換成合法的地址或者數(shù)據(jù)。對(duì)予命令字,需要判斷接收的命令的合法性以及進(jìn)行進(jìn)步的操作。串行通信接口模塊的流程圖如圖3.3所示。圈3.3串行通信接口模塊的流程圖Fig.3.3FlowchartofSCImodule3.3.2Flash底層操作模塊的設(shè)計(jì)MC68HC908系列微控制器的Flash模塊中與Flash編程有關(guān)的寄存器有2個(gè),它們是Flash控制寄存器(FLCR)和Flash塊保護(hù)寄存器.(FLBPR)。編程和擦除操作都是通過(guò)Flash控制寄存器來(lái)控制的,Flash控制寄存器位定義如表3.1所示,MC68HC908系列微控制器的Flash控制寄存器的定義都是一樣的。東北大學(xué)碩士學(xué)位論文第三章監(jiān)控程序的總體設(shè)計(jì)表3.1Flash控制寄存器(FLcR)的位定義Table3.1Bit—definitionofFlashcontrolregisterD7~D4位:未定義。D3--HVEN位:高壓允許位。HVEN=I,打開電荷泵(chargepump)并將商電平加到Flash陣列上:HVEN=0,撤除Flash陣列上的高電平并關(guān)閉電荷泵。當(dāng)PGM=I或ERASE=I時(shí),可以通過(guò)設(shè)置HVEN將來(lái)自片內(nèi)電荷泵的高壓加到Flash陣列上。D2--MASS位:整體擦除控制位。該位在ERASE=I時(shí)有效,用于選擇Flash擦除操作方式:整體擦除或頁(yè)擦除。MASS=I,選擇整體擦除方式;MASS=0,選擇頁(yè)擦除方式。.DI--ERASE位:擦除操作控制位。該位用于設(shè)置Flash編程操作為擦除操作。ERASE位弓PGM位之間存在互鎖關(guān)系,無(wú)法同時(shí)被設(shè)置為l。ERASE=1,選擇擦除操作:ERASE=O,不選擇擦除操作。DO—PGM位:編程(寫入)控制位。該位用于設(shè)煢Flash編程操作為編程(寫入)操作.且無(wú)法與ERASE位同時(shí)為l。PGM=I,選擇寫入操作;PGM=0,不選擇寫入操作。對(duì)Flash介質(zhì)的操作是直接關(guān)系到監(jiān)控程序能否成功的關(guān)鍵,因?yàn)榇a的下載、目標(biāo)Flash區(qū)的擦除與寫入都是以F1ash介質(zhì)為搡作對(duì)蒙的。而且Flash操作子模塊處二『.總體層次模塊的最下層,需要提供給上層其他模塊需要的接口操作。Flash介質(zhì)是最終承載目標(biāo)代碼的容器,所以對(duì)于Flash介質(zhì)最關(guān)心的是如何進(jìn)行IF確的操作。Freescale公司微控制器的Flash存儲(chǔ)器在片內(nèi)是以頁(yè)(Page)an行(Row)為葷位組織的。頁(yè)和行的大?。ㄗ止?jié)數(shù)1隨整個(gè)Flash存儲(chǔ)器的大小變化而變化。例如MC68HC908AP64內(nèi)含約62K字節(jié)的Flash存儲(chǔ)器(地址為¥0480~¥FFFF),每頁(yè)的大小為512字節(jié),每行的大小為64字節(jié);MC68HC908GP32每頁(yè)的大小為128字節(jié),每行為64字節(jié)。在MC68HC908系列微控制器中,對(duì)Flash進(jìn)行擦除或?qū)懭氩僮餍枰裱欢ǖ臅r(shí)序和步驟。對(duì)于MC68HC908系列的不同微控制器的步驟基本是一樣的,但時(shí)序要求可能略有不同,針對(duì)具體型號(hào)的Flash進(jìn)行編程時(shí)應(yīng)參考相應(yīng)的芯片手冊(cè)。同時(shí)需要注意的是,一些型號(hào)的微控制器的監(jiān)控ROM內(nèi)含有Flash操作子程序,用戶可直接調(diào)用p?!保?,例如MC68HC908JL3、以及MC68HC908AP64;有的型號(hào)倒如MC68HC908GP32則沒(méi)有,這種情況需自行編制子程序。雖然某些型號(hào)的微控制器的監(jiān)控ROM中含有Flash編程子程序,但是Flash編程仍然不可忽視。因?yàn)楸颈O(jiān)控程序支持多種型號(hào)的8位微控制器,所以對(duì)于不同型號(hào)的微控制器,就需要定制Flash操作模塊p4。t”J。東北大學(xué)碩士學(xué)位論文第三章監(jiān)控程序的總體設(shè)計(jì)Flash操作子模塊只需要提供給上層關(guān)于Flash頁(yè)的擦除以及行寫入的統(tǒng)一接l¨l就i,j以,這樣上層模塊在調(diào)用Flash操作模塊進(jìn)行操作時(shí)只要根據(jù)統(tǒng)一的api接口進(jìn)行操作.不用關(guān)心Flash存儲(chǔ)器的具體型號(hào)。MC68HC908微控制器的Flash介質(zhì)的撩除操作基本一致,如圖3.4所示。…:二王二二_…(開始,≥磊矗磊…——————j一——l向擦除地址寫入任意數(shù)據(jù)l設(shè)置ERAsE位~———』.,~一——延時(shí)Tnvs圖3,4Hash擦除流程圖Fig.3.4FlowchartofFlasherasingFlash介質(zhì)的寫入需要注意的是,一次寫入可以小于一行.但不能大于一行,列j已經(jīng)寫過(guò)的部分未經(jīng)擦除不能重新寫入,寫入的流程如圖3.5所示。東北走學(xué)碩士學(xué)位論文第三章監(jiān)控程序的總體設(shè)計(jì)設(shè)置PGM位n孬i讞南謠再翮0向擦除地址寫入任意數(shù)據(jù)t等待TnvsL。一'設(shè)置HVEN位0等待Tpgs?0向目標(biāo)F18Sh暖寫入數(shù)據(jù)。逵>Y‘‘清PGM位延H,JTnvh『—蠢氚i—j一一工~一一。清HvEN位上延時(shí)Trcv圖3.5Hash編程流程矧Fig.3.5FlowchartofFlashprogran:lIming3.3.3擦除模塊的設(shè)計(jì)擦除模塊主要用于對(duì)目標(biāo)Flash區(qū)的擦除工作,以頁(yè)為基本單位進(jìn)行擦除。對(duì)j二MC68HC908系列微控制器來(lái)說(shuō),Flash介質(zhì)不象RAM…樣可以隨機(jī)讀寫,對(duì)Flash存儲(chǔ)器的修改是以頁(yè)為基礎(chǔ)。也就是說(shuō),不能僅擦除某一字節(jié)或一次擦除小于’頁(yè)。所以這罩的擦除模塊也需要特殊處理,一頁(yè)中的不需擦除的數(shù)據(jù)在擦除操作后仍然應(yīng)該保留。MC68HC908微控制器的Flash介質(zhì)是以頁(yè)為基本單位,Flash的子操作模塊提供給}:層的擦除接口是以頁(yè)為基礎(chǔ)的,而且只是基本的頁(yè)擦除和寫入接口。在擦除操作的剛候,起始地址所在的第一頁(yè)以及結(jié)束地址所在的最后…頁(yè)的數(shù)據(jù)需要進(jìn)行特別處理,膨該將頁(yè)中其他數(shù)據(jù)緩存在RAM中,然后在RAM中將要修改的字節(jié)修改,修改完成以后再重新寫回。在這兩頁(yè)中間的其他頁(yè)可以直接調(diào)用Flash操作子模塊直接擦除,掩除模塊的流程圖如圖3.6所示。(]重重)圖3.6擦除模塊流程圈Fig.3.6FlowchartofErasingmodule3.3.4反匯編模塊的設(shè)計(jì)在反匯編的操作中,不可避免的要查詢MC68HC908微控制器的指令表,這樣就必須熟悉MC68HC908的指令尋址模式。MC68HC908的指令尋址方式包括內(nèi)在尋址方式、立即尋址方式、直接尋址方式、擴(kuò)展尋址方式等。n1關(guān)于指令常量表的設(shè)計(jì)首先監(jiān)控程序中需要建立~‘張指令常量表,用于存放各種類型尋址模式指令的機(jī)器碼與指令助記符對(duì)應(yīng)關(guān)系,指令常量表中記錄的定義如下:typedef—,instr—.tablefconstunsignedcharconstconstcodechar[4];instr_mode;opcode;unsignedcharunsignedchar}instr_table[MAXNUMS];結(jié)構(gòu)體中字符數(shù)組codechar用于存放助記符;參數(shù)instrmode描述尋址模式;參數(shù)opcode用于描述該記錄的指令碼。需要說(shuō)明的是,指令助記符占有4個(gè)字符的位置,因?yàn)椋停茫叮福桑桑茫梗埃傅闹噶畋沓藥讞l特殊指令,助記符都是4個(gè)字符以內(nèi),而JL條特殊指令的處理方式也不…樣,所以區(qū)分很容易。描述的助記符如果是3個(gè)字符,那么第4個(gè)字符需要補(bǔ)空格[37,38,39】。對(duì)指令建表的同時(shí)需要將全部指令進(jìn)行分類,特殊指令特殊處理,指令表中重點(diǎn)是尋址模式描述表的定義,尋址模式表如表3.2。表3.2尋址模式描述襲Table3.2Instructionaddressmodedescriptiontable需要注意的是,這旱的尋址模式描述表中的內(nèi)部定義值都是經(jīng)過(guò)深思熟慮的,而,翻.有一定的技巧性,這種內(nèi)部定義值雖然象宏定義一樣,但是不可隨便更改。下章詳綱介紹反匯編過(guò)程的實(shí)現(xiàn)時(shí),將會(huì)涉及到為何如此定義內(nèi)部值這個(gè)問(wèn)題。MC68HC908指令系統(tǒng)有270多條指令,在設(shè)計(jì)指令常量表的時(shí)候,如果每條指令都作為指令常量表的一?條記錄,這就將占有很大一部分資源,因?yàn)楸緛?lái)MC68HC908資源就很有限,監(jiān)控程序不應(yīng)該占有過(guò)多的資源,同時(shí)為了運(yùn)行時(shí)提高反匯編fl勺速度,以及節(jié)省有限的片上Flash資源,對(duì)MC68HC908的指令設(shè)計(jì)按照表3.2進(jìn)行規(guī)劃,精簡(jiǎn)的指令常量表要能查詢到每一條指令。對(duì)于數(shù)據(jù)傳送類指令,相同一條指令根據(jù)不同的指令尋址方式,會(huì)派生出幾條指令.東北大學(xué)碩士學(xué)位論文第三章監(jiān)控程序的總體設(shè)計(jì)比妍對(duì)于加法ADD的描述如表3.3所示。表3.3ADD指令描述Table3.3DescriptionsofinstructionADD如果指令表不加簡(jiǎn)化直接做表,那么加法指令就會(huì)有8條指令記錄。仔細(xì)研究指令碼字節(jié)將會(huì)發(fā)現(xiàn)【40A11,此指令碼字節(jié)的低四位都是一樣的,而高四位是遞增的形式,最大值為¥F,這樣就可以將這8條加法指令濃縮成一條標(biāo)準(zhǔn)加法指令[42,43,44】。標(biāo)準(zhǔn)加法指令記錄描述如表3.4所示。表3.4ADD指令記錄Table3.4RecordoflnstructionADD在仔細(xì)研究MC68HC908的指令表后,建立一張簡(jiǎn)易的MC68HC908指令常擐表instr_table[]lzN113.5。在所傲的指令常量表instrtable[],經(jīng)過(guò)精簡(jiǎn)設(shè)計(jì)常爵表只含仃5條指令記錄,每條指令記錄項(xiàng)都描述相同助記符的同類指令,能夠派生出所有的剮類指令(即不同尋址方式)。表3.5MC68HC908指令記錄表Table3,5InstructionrecordtableforMC68HC908東北尢學(xué)碩士學(xué)位論文第三章監(jiān)控程序的總體設(shè)計(jì)3’3,5匯編模塊的設(shè)計(jì)匯編模塊主要的功能是從上位機(jī)接收匯編指令語(yǔ)句,匯編模塊將其匯編成:正確的H標(biāo)代碼№46鐘j,然后調(diào)用Flash操作子模塊將代碼寫入指定的Flash區(qū)【48,49,50|。:B口通信模塊將上位機(jī)的指令語(yǔ)句保存在緩存區(qū)中,然后匯編模塊進(jìn)行語(yǔ)句合法性分析[5t,52,53】,將語(yǔ)句匯編成正確的目標(biāo)代碼,然后調(diào)用Flash操作子模塊列目標(biāo)Flash進(jìn)行更改操作[54,55,56】。匯編模塊的操作流程圖如圖3.7所示。⑦固圖3,7匯編模塊流程圖Fig.3.7FIowchartofassemblingmodule3.3.6調(diào)試模塊的設(shè)計(jì)為了進(jìn)一步對(duì)程序的運(yùn)行狀態(tài)有所了解,需要對(duì)運(yùn)行中的用戶程序進(jìn)行進(jìn)一步監(jiān)控和調(diào)試。調(diào)試模塊實(shí)現(xiàn)的調(diào)試功能有單步調(diào)試、多步調(diào)試、函數(shù)級(jí)的調(diào)試以及切換運(yùn)行用戶程序。單步、多步以及函數(shù)級(jí)的調(diào)試都是基于斷點(diǎn)模塊的,當(dāng)用戶沒(méi)鼴了斷點(diǎn)并使能以后,斷點(diǎn)模塊和CPU并行的執(zhí)行,一旦CPU產(chǎn)生的地址和斷點(diǎn)寄存器中的內(nèi)容相同,斷點(diǎn)模塊就會(huì)產(chǎn)生個(gè)中斷信號(hào)(BⅪ)T),使CPU在結(jié)束當(dāng)前指令后,將條SWI指令裝入東二IL犬學(xué)碩士學(xué)位論文第三章監(jiān)控程序的總體設(shè)計(jì)內(nèi)部指令寄存器作為下一條指令執(zhí)行,這樣就如同發(fā)生一個(gè)軟中斷一樣,這H,J‘就會(huì)調(diào)用中斷處理服務(wù)子程序。為了讓用戶了解當(dāng)前程序運(yùn)行的狀態(tài),可以借助監(jiān)控程序進(jìn)行一系列的操作,比如查看內(nèi)存的狀態(tài)及寄存器的狀態(tài),進(jìn)行指令級(jí)的單步調(diào)試等動(dòng)作。而且.用戶在經(jīng)過(guò)查看等動(dòng)作以后,希望繼續(xù)運(yùn)彳亍程序,那么就需要恢復(fù)用戶執(zhí)行代碼的原.|二下文繼續(xù)執(zhí)行。所有在斷點(diǎn)中斷后進(jìn)入中斷服務(wù)子程序的第一步就是保存用戶程序的各個(gè)寄存器的值(就是保存用戶的上下文環(huán)境)。3-3.7寄存器顯示與修改模塊的設(shè)計(jì)用戶程序的運(yùn)行由于斷點(diǎn)中斷的原因返回到監(jiān)控程序后,可以調(diào)用寄存器操作模塊對(duì)用戶程序各個(gè)寄存器的值進(jìn)行相關(guān)操作。在切換到監(jiān)控程序前,用戶程序的相關(guān)寄存器將會(huì)被壓棧。所以中斷后首先手動(dòng)的保存用戶寄存器的值,這樣進(jìn)入監(jiān)控程序以后,如果需要查看用戶的各個(gè)寄存器值,就可以直接從緩存區(qū)中取出來(lái)進(jìn)行娃示等操作。寄存器操作模塊的功能包括顯示與修改累加器A,狀態(tài)寄存器CCR以及地址指針和變址寄存器。該命令很少使用,通常是在單步調(diào)試.或者進(jìn)行函數(shù)級(jí)調(diào)試時(shí),需要對(duì)寄存器的值進(jìn)行定制。3.4軟件總體流程設(shè)計(jì)每次復(fù)位以后,監(jiān)控程序首先進(jìn)行CGM模塊的寄存器設(shè)置,只有幣確的設(shè)置rCGM模塊的各個(gè)寄存器,才能使監(jiān)控程序穩(wěn)定快速的運(yùn)行。然后監(jiān)控程序?qū)z測(cè)用,o復(fù)位向量字節(jié)(¥BFFE.¥BFFF),如果用戶復(fù)位向量不為空,顯示提示信息等待用戶的鍵盤操作,如果在一定的時(shí)間(這里監(jiān)控程序設(shè)置為5由內(nèi)有鍵盤動(dòng)作,則進(jìn)入監(jiān)控程序等待用戶的交互操作;否則取出用戶的復(fù)位向量字節(jié),跳轉(zhuǎn)到用戶的地址執(zhí)行。如槊用,o的復(fù)位向量為空,則直接進(jìn)入監(jiān)控程序運(yùn)行,輸出信息提示用戶進(jìn)行命令交互.操作的方式以命令加參數(shù)處理方式為主。串口通信模塊實(shí)現(xiàn)與PC機(jī)串口工具的交互,進(jìn)行命令的接收、解析,調(diào)用相應(yīng)的命令模塊執(zhí)行【5”,監(jiān)控程序設(shè)計(jì)的流程圖如圖3.8所示。東北大學(xué)碩士學(xué)位論文第三章監(jiān)控程序的總體設(shè)計(jì)圖3.8監(jiān)控程序的流程圖Fig.3.8Flowchartofmonitors.22.東北大學(xué)碩士學(xué)位論文第四章MC68HC908AP64監(jiān)控程序的實(shí)現(xiàn)第四章MC68HC908AP64監(jiān)控程序的實(shí)現(xiàn)本章將詳細(xì)介紹以MC68HC908AP64為目標(biāo)微控制器的監(jiān)控程序的實(shí)現(xiàn)。該監(jiān)控程序需要實(shí)現(xiàn)的主要功能包括:下載功能、擦除功能、匯編和反匯編功能、多種調(diào)試模式(單步、多步調(diào)試)、運(yùn)行狀態(tài)的顯示、資源狀態(tài)的顯示,內(nèi)存和Flash區(qū)域的修改等功能。MC68Hc908AP64(以下簡(jiǎn)稱AP64)是一款價(jià)格低廉,性能優(yōu)越的MC68HC908系列的“員,包括62KB片內(nèi)Flash程序存儲(chǔ)器,以及2KB片內(nèi)RAM,具有在線編}Iik.)J和保密性能,片內(nèi)資源映象如圖4.1所示。I,o哥存器醫(yī)96字節(jié)RAM———F面K一一62K字符MonitorROM2512字節(jié)系統(tǒng)寄存器MonitotRoMl447字=甘掩碼寄存器中斷同景區(qū)48字節(jié)2K‘}節(jié)豳4.1MC68HC908AP64的片內(nèi)資源映象Fig.41ResourcesmappingofMC68HC908AP64籌勰慧濺瓣一監(jiān)控程序也是駐留在Flash區(qū)的…段程序,監(jiān)控程序駐留在Flash區(qū)以后,系統(tǒng)的復(fù)位向量以及中斷向量都被監(jiān)控程序所占用。在駐留了監(jiān)控程序以后.微控制器加電復(fù)位仍然會(huì)從默認(rèn)的復(fù)位向量地址(¥H下E一¥FFFF)處取得執(zhí)行地址指針,然后跳到復(fù)位向量所指向的地址進(jìn)行執(zhí)行。因?yàn)轳v留了監(jiān)控程序,復(fù)位向量的起始地址就是監(jiān)控程序的起始地址,所以復(fù)位以后就是從監(jiān)控程序的起始地址開始執(zhí)行。完成后的監(jiān)控程序存放在地蛙¥COOO殲始韻一段FlasE區(qū)域。駐留了煉控程的AP64的系統(tǒng)地址空間的資源分布如圖4.2所示,其他型號(hào)的微控制器在駐留了監(jiān)控程序后內(nèi)部資源布局也基本類似。東北欠學(xué)碩士學(xué)位論文第四章MC68HC908AP64監(jiān)控程序的實(shí)現(xiàn)¥0000¥005FI,o寄存器醫(yī)¥00600頁(yè)RAM山¥009F¥00A01.監(jiān)控程序使用全局變燕區(qū)2.?dāng)?shù)據(jù)緩沖區(qū)RAMI廷¥02BF3Flash編程使用區(qū)域¥02C0其他I構(gòu)RAM區(qū)¥085F十¥0860用戶可以使用的FLASH(用戶代碼醫(yī))用戶中斷向景表48字節(jié)FLASH區(qū)¥BFFF¥C000監(jiān)控程序占用FLASH約12KSFBFF¥FCOO系統(tǒng)寄存器&復(fù)位向最表圖4.2駐留了監(jiān)控程序后的MC68HC908AP64資源圖Fig.4.2ResourcesmappingofMC68HC908AP64withresidentmonitors4.1CGM模塊的初始化Freescale的8位微控制器內(nèi)部的時(shí)鐘發(fā)生模塊CGM主要電路是鎖相環(huán)PLL(PhaseLockedLoop)頻率合成器。為了得到穩(wěn)定性好,精度高的頻率源,通常采用頻率合成技術(shù)。頻率合成技術(shù)主要有兩種:直接頻率合成技術(shù)和間接頻率合成技術(shù)。間接頻率合成技術(shù)是利用鎖相環(huán)技術(shù)來(lái)產(chǎn)生大量的具有高穩(wěn)定度和高精度的頻率源,由于間接頻率合成器的關(guān)鍵部件是鎖相環(huán),故通常稱為鎖相環(huán)頻率合成器。下面介紹的微控制器內(nèi)滯CGM模塊的主要電路就是鎖相環(huán)電路。MC68HC908系列微控制器的時(shí)鐘產(chǎn)生模塊CGM(ClockGeneratorModule)的原理基本一致,但是不同型號(hào)仍然有所不同,故不同型號(hào)的微控制器的初始化也稍有不同。CGM模塊主要負(fù)責(zé)產(chǎn)生與系統(tǒng)工作相關(guān)的幾個(gè)時(shí)鐘信號(hào),如內(nèi)部總線、串行口定日Ij器接口模塊等的工作時(shí)鐘。針對(duì)不同型號(hào)的微控制器,必須根據(jù)文檔給出的數(shù)據(jù)來(lái)初始化CGM各個(gè)寄存器。CGM模塊的初始化是加電以后第一步需要設(shè)置的,CGM模塊的初始化是否f確對(duì)于微控制器的『F常工作起著非常重要的作用。初始化的順序也必須嚴(yán)格的根據(jù)Freescale公司提供的文檔進(jìn)行,使用Freeseale公司提供的關(guān)于AP64CGM模塊初始化的數(shù)值表,如表4.1所示來(lái)初始化CGM寄存器,這里選擇列表第二行總線頻率為2.4576MHz為慕準(zhǔn)總線時(shí)鐘。東北大學(xué)碩士學(xué)位論文第四章MC68HC908AP64監(jiān)控程序的實(shí)現(xiàn)表4.1CGM寄存器初始化數(shù)值表Table4.1NumericexampleofCGMregistersinitialization4.2Flash操作子模塊的實(shí)現(xiàn)AP64有約62K字節(jié)的Flash陣≯:!J(array)可用于存儲(chǔ)數(shù)據(jù),同時(shí)還有48字節(jié)的用戶中斷向量表,以及…個(gè)字節(jié)的掩碼選項(xiàng)(maskoption)寄存器。對(duì)于Flash介質(zhì)來(lái)說(shuō),被擦除的部分讀出來(lái)是邏輯1,AP64的頁(yè)大小是512字節(jié),也是最小能夠被擦除的單位。4.2.1AP64的Flash塊保護(hù)寄存器Flash塊保護(hù)寄存器(FlashBlockProtectRegister)本身也是一個(gè)Flash字節(jié)。它的內(nèi)容設(shè)定Flash保護(hù)區(qū)域的起始地址的[15:9催E,保護(hù)區(qū)域的起始地址的低9位(位8--0)始終為0。Flash塊保護(hù)寄存器可以設(shè)定被保護(hù)的Flash區(qū)域,當(dāng)Flash處于保護(hù)狀態(tài)時(shí),擦除和寫入操作都是受限制的,Flash控制寄存器的HVEN位將無(wú)法被正常罱位。Flash塊保護(hù)寄存器設(shè)定的只是保護(hù)區(qū)域的起始地址,保護(hù)區(qū)域的結(jié)束地址始終為Flash存儲(chǔ)區(qū)的結(jié)束地址(¥FFFFl。Flash保護(hù)起始地址將是X000、X200、X400等,都是從頁(yè)的起始邊界開始。AP64的FLBPR的值為¥00.¥07的時(shí)候,整個(gè)Flash存儲(chǔ)區(qū)都是受到保護(hù)的,其它型號(hào)的8位微控制器如MC68HC908GP32(簡(jiǎn)稱GP32),當(dāng)其FLBPR的存儲(chǔ)內(nèi)容為¥00的時(shí)候,整個(gè)Flash存儲(chǔ)區(qū)都受到保護(hù)。AP64的FLBPR的值如表4_2所示,并非每個(gè)值都是表示一塊受保護(hù)的區(qū)域。FLBPR的值為¥0A或SOB時(shí),受保護(hù)的區(qū)域都是¥OA00,SFFFF:如果FLBPR的內(nèi)容為SFF,則整個(gè)Flash存儲(chǔ)區(qū)都可以被擦除或?qū)懭搿|北大學(xué)碩士學(xué)位論文第四章MC68HC908AP64監(jiān)控程序的實(shí)現(xiàn)表4.2MC68HC908AP64Flash塊保護(hù)寄存器設(shè)裁Table4.2SettingofMC68HC908AP64FlashblockprotectionFLBPR內(nèi)容¥00~¥07受保護(hù)的Flash區(qū)域整個(gè)區(qū)域受保護(hù)¥0800~¥FFFF(整個(gè)Flash區(qū)域)SOA00--¥FFFF¥OCOO~¥FFFF¥08或¥09¥OA或SOB¥0C或SOD¥FA或¥FB¥FF¥FA004SFFFF整個(gè)Flash區(qū)域都不被保護(hù)Flash存儲(chǔ)器在片內(nèi)是以頁(yè)(Page)和行(Row)為單位組織的。頁(yè)和行的大?。ㄗ止?jié)數(shù))隨整個(gè)Flash存儲(chǔ)器的大小變化而變化。AP64每頁(yè)的大小為512字節(jié),每行的大小為64字節(jié)。對(duì)于AP64來(lái)說(shuō),對(duì)Flash存儲(chǔ)器的擦除操作可以進(jìn)行整體擦除也可以僅擦除某一起始地址開始的一頁(yè)(512字節(jié))。也就是說(shuō)不能僅擦除某一字節(jié)或一次擦除小于512字節(jié)。注意這一特點(diǎn),在數(shù)據(jù)安排時(shí)尤為重要,不能因?yàn)樾枰脸稠?yè)中的部分?jǐn)?shù)掘,就直接擦除該頁(yè),那樣剩余的數(shù)據(jù)也將丟失。所以需要將該頁(yè)中不需要擦除的數(shù)據(jù)首先進(jìn)行保存,然后在擦除Flash頁(yè)后再重新將緩存頁(yè)寫回。寫入操作以行(64字節(jié))基礎(chǔ),‘次連續(xù)寫入數(shù)據(jù)個(gè)數(shù)只能在一行之內(nèi)。當(dāng)然,不經(jīng)過(guò)擦除的區(qū)域,不能進(jìn)行寫入,這一點(diǎn)需特別注意。而且,因?yàn)椋停茫叮福龋茫梗埃赶盗械奈⒖刂破髌瑑?nèi)集成電荷泵,可由單一工作電壓在,i內(nèi)產(chǎn)生出編程電壓。同時(shí)在Flash的擦除,燒寫等操作的時(shí)候,加在Flash介質(zhì)上的電壓要高于正常電壓,這個(gè)時(shí)候的Flash區(qū)代碼是不可執(zhí)行的,所以必須將擦除,寫入等子程序代碼轉(zhuǎn)移到RAM區(qū)執(zhí)行如圖413所示。因?yàn)椋疲欤幔螅杞橘|(zhì)操作對(duì)時(shí)序的要求很嚴(yán)格,故編寫Flash操作予程序代碼的時(shí)候,需要使用匯編語(yǔ)言嚴(yán)格的按照數(shù)據(jù)手冊(cè)里面的要求按步驟進(jìn)行。在對(duì)Flash介質(zhì)操作的時(shí)候,不僅要把攘除代碼以及寫入代碼移動(dòng)到到RAM中執(zhí)行,而且在編寫操作子程序代碼的時(shí)候,必須精確計(jì)算生成后目標(biāo)代碼的字節(jié)數(shù),RAM中要實(shí)現(xiàn)頸留一定的代碼緩沖區(qū)給Flash擦除和寫入執(zhí)行代碼。上層模塊調(diào)用Flash操作接口函數(shù)的時(shí)候,首先要將參數(shù)設(shè)置好,然后調(diào)用Flash接口函數(shù)。Flash接口函數(shù)的操作包括了將Flash擦除或者寫入代碼首先移動(dòng)到RAM區(qū)代碼緩沖區(qū)中,然后跳到RAM區(qū)的代碼緩沖區(qū)執(zhí)行Flash操作等步驟。因?yàn)樵趯?duì)Flash操作的過(guò)程中,內(nèi)置的電荷泵(chargepump)對(duì)Flash介質(zhì)加了高于正常值的電壓,所以在Flash操作成功返回以前,對(duì)Flash區(qū)域的任何其他的讀寫操作都是不穩(wěn)定的,向疆可能產(chǎn)生不可預(yù)知的錯(cuò)誤。東北太學(xué)碩士學(xué)位論文第四章MC68HC908AP64監(jiān)控程序的買現(xiàn)I/0寄存器部分,吖\E?。粒樱榷顺aFLASH寫入代碼0RA1]J圖4.3監(jiān)控代碼FLASH攘除代碼FLASH寫入代碼監(jiān)控代碼復(fù)位向最FL,JFlash操作代碼移動(dòng)示意蚓Fig.4.3CodesmovingdescriptionofFlashoperating4.2.2AP64的內(nèi)駐程序AP64微控制器內(nèi)駐了功能較強(qiáng)的內(nèi)駐程序。這些內(nèi)駐程序最主要的功能是用來(lái)對(duì)Flash進(jìn)行操作管理。AP64提供了7個(gè)內(nèi)駐程序接口,其中的5個(gè)內(nèi)駐接口就是為_:r簡(jiǎn)化Flash編程、擦除、下載等操作。其它的兩個(gè)內(nèi)駐程序接口主要是用來(lái)管理EEPROM。AP64提供的內(nèi)駐程序接口如表4_3所示。表4.3內(nèi)駐程序表Table4.3Simpleresidentmonitorstable,這些內(nèi)駐程序參數(shù)安排如圖4.4所示,可以用來(lái)當(dāng)作獨(dú)立的子程序調(diào)用,也可以和用戶程序或者監(jiān)控模式下使用,這樣就簡(jiǎn)化了對(duì)Flash的操作。在這些內(nèi)駐程序被執(zhí)行的時(shí)候,不額外占用RAM空間.運(yùn)行時(shí)是以自動(dòng)擴(kuò)展系統(tǒng)堆棧為手段,J_ifi影日向其他的東北大學(xué)碩士學(xué)位論文第四章MC68HC908AP64監(jiān)控程序的實(shí)現(xiàn)RAM區(qū)的數(shù)據(jù)。內(nèi)駐程序的參數(shù)是在RAM中連續(xù)放置的,包括總線頻率、數(shù)據(jù)的字節(jié)數(shù)、Flash地址以及數(shù)據(jù)。FILE圖4.4內(nèi)駐程序接口Fig.4.4Residentmonitorsinterface?總線速度:該字節(jié)描述微控制器操作的總線速度。該字節(jié)的值必須是4倍的總線速度。該控制字節(jié)主要用于Flash內(nèi)駐程序操作的時(shí)候與PLL鎖相環(huán)(PLLclock)與晶體時(shí)鐘切換(crystalclock)。●數(shù)據(jù)大?。涸撟止?jié)描述后面的數(shù)據(jù)陣剜中的可操作字節(jié)數(shù)。最大的字節(jié)數(shù)是255。EEWRITE和EEREAD被限制操作從8字節(jié)到127字節(jié)之間。因?yàn)椋牛遥粒遥危牵藕停停希危牛遥粒遥危牵挪恍枰獢?shù)據(jù)陣列,所以該字節(jié)無(wú)意義。●開始地址:這兩個(gè)字節(jié)(ADDRH和ADDRL)描述Flash操作區(qū)的起始操作地址,高地址后蘧跟著低字節(jié)。?數(shù)據(jù)陣列:該數(shù)據(jù)陣列包含操作的數(shù)據(jù)數(shù)組。這樣根據(jù)此參數(shù)順序以及內(nèi)駐調(diào)用的具體接口,就可以實(shí)現(xiàn)將數(shù)據(jù)F載進(jìn)Flash,擦除等操作。4.3反匯編模塊的實(shí)現(xiàn)實(shí)現(xiàn)了基本的顯示、下載、擦除功能后,如果加上一些調(diào)試操作比如匯編與反匯編的功能,將使得借助監(jiān)控程序進(jìn)行調(diào)試更加方便。雖然監(jiān)控程序只要實(shí)現(xiàn)基本功能就可以使用,但是如果實(shí)現(xiàn)了匯編與反匯編功能,可以進(jìn)行代碼的顯示查看、調(diào)試、指令的匯編使監(jiān)控程序達(dá)到更好的效果。在設(shè)計(jì)部分已經(jīng)對(duì)MC68HC908指令表的設(shè)計(jì)做了詳細(xì)介紹,這里就詳細(xì)如何實(shí)現(xiàn)反匯編功能,即把指定地址的目標(biāo)代碼反匯編成用戶可以閱讀的匯編語(yǔ)苦形式。對(duì)于反匯編模塊,定義如下一個(gè)結(jié)構(gòu)體:typedefstruct—Disstruct{BYTE4DisAssemberAddrBegin;BYTE+DisAssemberAddrNext;BYTEBYTEBYTECodeFlag;AddrMode;Code[4】;BYTE+CodeDictionaryAddr;BYTE+RelAddr;BYTEBOOLBOOLInstrBytes;DisAssembledComplete;IsSequencelnstru;}DISSTRUCT;參數(shù)DisAssemberAddrBegin描述反匯編的開始地址;參數(shù)DisAssemberAddrNext描述下一條指令的首地址;參數(shù)CodeFlag描述指令碼字節(jié)數(shù):參數(shù)AddrMode描述尋±l}模式;參數(shù)Code描述指令字節(jié)碼:參數(shù)CodeDictionaryAddr描述本指令在指令常量表中的偏移;參數(shù)RelAddr描述指令是否跳轉(zhuǎn)指令;參數(shù)InstrBytes描述本條指令的字節(jié)數(shù);參數(shù)DisAssembledComplete描述本條指令反匯編是否完成;參數(shù)IsSequencelnstru描述本條指令是否是順序執(zhí)行指令。根據(jù)介紹的指令常量表,每條指令(這里指相同助記符的同類指令)在指令常援表r1【都占有一條記錄的位置。MC68HC908的指令系統(tǒng)操作碼大部分都是一個(gè)字節(jié),使用了除0x32、0x3E、0x82、0x8D、0x96、0xAC外的所有情況。反匯編模塊的流程圖如圖4.5所示。考慮從¥8000開始的目標(biāo)代碼如下:ORG¥8000MAIN:MOV≠}¥33,¥50ADD¥50STA¥90STA.X這幾條指令在匯編后生成的目標(biāo)字節(jié)碼如下:6E3350BB508790F7。使用一個(gè)匯編指令與目標(biāo)代碼對(duì)照表將更直觀,如表4.4所示。’<垂匪哥i至蔓>Y…~1■一,再般一個(gè)字符的數(shù)據(jù)<邐i彗至至二二,警竺堡塑堅(jiān)}N《靜胗趣塑墮}_《蔓爹—叫誡謠麗麗]-<逅亙;塞蔓圣E>叫DBNz糞指令處理I0-?<二瑩字耍>J叫保存尋址模式,行地勻卜一<《鑾>叫耐碼筆?。狈醮耄龔S《畛最示q爰?jí)貥I(yè)一話蒿囂利卜<蔣≥叫措鎰淼和卜卜<]匿垂亙至£:>二qIx尋址模式處理-數(shù)據(jù)II保存尋址8嬖,行地址I<逐?。嚎瘤潭酒剩欤?,sP】尋址模式處理}’<受鐾壹?。椋辏欤海究桑?,sP2尋址模式處理l-<]囊至亟變囪;>刊ExT尋址模式處理f<二逝垂i互亙E:>刊tnDIR尋劃.模式處理c:j4垂魚耍孽i=—剖lMM尋址模武處理{。:?。辏?。.Y-?’——‘=~一一h……。?!?。,。1節(jié)指令處理處理<二Ⅱ而一葡兩∑,—?jiǎng)澫镯修D(zhuǎn)移類指傾理卜圈4.5反匯編模塊的流程圖Fig.4.5Flowchartofdisassemblingmodule.30.東北大學(xué)碩士學(xué)位論文第四章MC68HC908AP64監(jiān)控程序的實(shí)現(xiàn)表4.4指令和代碼的對(duì)照表Table4.4Comparisonsofinstructionsandmachine.codes這罩只考慮如何進(jìn)行反匯編,所以這幾條指令后面的部分暫時(shí)不予考慮。因?yàn)檫@段代碼是從物理地址¥8000開始存放的。所以在反匯編的開始,用戶選擇反匯編的起始地址是第一步操作,比如在調(diào)試模式下,用戶需要調(diào)用單步反匯編功能模塊,那么就必須選擇反匯編的起始地址,這里選擇起始地址¥8000。根據(jù)上面的流程圖,反匯編模塊首先從起始地址處,這罩是物理地電1:¥8000取得一一個(gè)字節(jié),反匯編的開始應(yīng)該確定這是一條合法指令的操作碼的起始。上面生成的目標(biāo)碼都是十六進(jìn)制的,每?jī)蓚€(gè)字符為一個(gè)十六進(jìn)制數(shù),比如前兩個(gè)字符6E就是一卜六進(jìn)制數(shù)¥6E,這是一條MOV指令的操作碼,根據(jù)MC68HC908的指令系統(tǒng)可以得知,該指令匯編后一共占有3個(gè)字節(jié)。在取得一個(gè)字節(jié)后,首先要做的就是判斷這是否是數(shù)據(jù)字節(jié),雖然絕大多數(shù)情況下,浚字節(jié)都是一條合法指令的操作碼,因?yàn)槿绻撟止?jié)是字節(jié)數(shù)據(jù)的話,那么從該地址”始執(zhí)行指令,將會(huì)導(dǎo)致非法指令碼錯(cuò)誤引起系統(tǒng)復(fù)位。比如如果用戶選擇從¥8001開始反匯編,這樣取得的字節(jié)就是¥33,如果繼續(xù)反匯編就可能生成其他錯(cuò)誤的指令。MC68HC908的指令系統(tǒng)編碼(一個(gè)字節(jié))使用了除0x32、0x3E、0x82、0x8D、0x96、0xAC外的所有情況。當(dāng)然,對(duì)于堆棧相關(guān)操作,使用了兩個(gè)字節(jié)的指令操作碼,但是這種兩個(gè)字節(jié)的指令操作碼都是以¥9E為開始的。所有MC68HC908的指令系統(tǒng),完仝?t『以認(rèn)為指令操作碼為一個(gè)字節(jié)。在進(jìn)行是否常量字節(jié)判斷后,可以確定這是合法的指令操作碼作碼,故繼續(xù)進(jìn)行確定是那種類型的指令操作。需要”皂明的是,在MC68Hc908指令系統(tǒng)中有幾條特殊的指令格式是不按照常理進(jìn)行設(shè)置的,一條是比較相等轉(zhuǎn)移指令CBE
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新型機(jī)械加工合同范本
- 消防水箱采購(gòu)合同范本
- 工程機(jī)械租賃合同
- 農(nóng)莊承包合同
- 裝修泥工合同模板
- 影視制作承包合同范本
- 租賃合同銑刨機(jī)1
- 車輛租賃服務(wù)合同
- 物業(yè)管理的咨詢與顧問(wèn)服務(wù)
- 衣服租賃合同范本
- 老年外科患者圍手術(shù)期營(yíng)養(yǎng)支持中國(guó)專家共識(shí)(2024版)
- 子宮畸形的超聲診斷
- 2024年1月高考適應(yīng)性測(cè)試“九省聯(lián)考”數(shù)學(xué) 試題(學(xué)生版+解析版)
- JT-T-1004.1-2015城市軌道交通行車調(diào)度員技能和素質(zhì)要求第1部分:地鐵輕軌和單軌
- (正式版)JBT 11270-2024 立體倉(cāng)庫(kù)組合式鋼結(jié)構(gòu)貨架技術(shù)規(guī)范
- DB11∕T 2035-2022 供暖民用建筑室溫?zé)o線采集系統(tǒng)技術(shù)要求
- 《復(fù)旦大學(xué)》課件
- 針灸與按摩綜合療法
- Photoshop 2022從入門到精通
- T-GDWJ 013-2022 廣東省健康醫(yī)療數(shù)據(jù)安全分類分級(jí)管理技術(shù)規(guī)范
- DB43-T 2775-2023 花櫚木播種育苗技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論