




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