飛思卡爾8位單片機MC9S081508系列MCU編程器開發_第1頁
飛思卡爾8位單片機MC9S081508系列MCU編程器開發_第2頁
飛思卡爾8位單片機MC9S081508系列MCU編程器開發_第3頁
飛思卡爾8位單片機MC9S081508系列MCU編程器開發_第4頁
飛思卡爾8位單片機MC9S081508系列MCU編程器開發_第5頁
已閱讀5頁,還剩26頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第十六章

08系列MCU編程器的開發主要內容

編程器技術基礎

HC08系列MCU編程器的實現方法

HC08系列MCU編程器實例HCS08系列MCU編程器原理《嵌入式應用技術基礎教程》課件116.1編程器技術基礎在線編程系統是有用戶程序駐留在MCU中,在這些用戶程序的支持下,向MCU中寫入程序,其實質是一種用戶模式下的寫Flash操作,這種方法對嵌入式系統的開發和調試帶來極大方便。

編程器是向MCU中寫入程序,寫入的結果是FLASH中僅有當前寫入的用戶程序,而不包含其他的用戶程序。《嵌入式應用技術基礎教程》課件216.1.1HC08系列MCU的監控模式

HC08系列MCU可以工作在兩種模式:用戶模式和監控模式。用戶模式是MCU上電復位后,轉向復位矢量所指向的地址,執行Flash中的用戶程序。監控模式是MCU在上電復位后,執行監控ROM中的程序。當復位矢量為“空”($FF)時,MCU會自動進入監控模式;當復位矢量不空時,MCU需要一定的條件才可以進入監控模式。下表列舉了MC68HC908GP32進入監控模式的不同方式及各種方式所需條件。《嵌入式應用技術基礎教程》課件方式IRQRESET復位矢量PTC0PTC1PTC3PTA0PTA7外部時鐘[2]1VTST[1]VDD或VTST任意100104.9152MHz2VTSTVDD或VTST任意101109.8304MHz3VDDVDD$FF任意任意任意109.8304MHz4GNDVDD$FF任意任意任意1032.768KHz316.1.2HC08系列MCU的監控ROM程序(1)基本的ROM程序模塊HC08系列MCU出廠時,Flash區包含了字節數不同的監控ROM程序。監控ROM程序包含了HC08系列所共有的基本子程序,這些子程序有如下功能:①通過一個I/O引腳接收一個字節數據②通過一個I/O引腳發送一個字節數據③讀內存或Flash區中的一個字節數據④寫內存中的一個字節數據⑤連續讀內存或Flash中兩個字節數據⑥連續寫內存中的兩個字節數據⑦讀堆棧指針⑧運行指定位置的程序《嵌入式應用技術基礎教程》課件4(2)特有的ROM程序模塊HC08系列MCU內存容量相差比較大,MC68HC08AZ60的內存有1024字節,而MC68HC908JL3只有128字節。為了方便內存較小的MCU的Flash程序寫入,廠商在這些MCU的ROM程序中加入特有的ROM程序模塊:Flash整體擦除、頁擦除和寫入子程序,并公布了調用時的入口參數(頁擦除的所在頁、寫入的數據及寫入的地址、延時參數等)及子程序的地址。所以不同MCU的ROM程序大小也是不同的。下表是幾種擦寫子程序的入口地址及參數存放地址。《嵌入式應用技術基礎教程》課件516.1.3HC08系列MCU在監控模式下的工作過程(1)與主機通信的數據格式當MCU上電復位時,如果滿足進入監控模式的條件,MCU就會工作于監控模式。監控模式下MCU主要是通過某個特定的I/O口(如:GP32是PTA0,JL3是PTB0),以標準不歸零(NRZ)的數據格式進行數據通信,具體為:第一位起始位(0),隨后為8個數據位(低位在前,高位在后),最后一位為停止位(1)。NRZ的數據格式如下圖所示。《嵌入式應用技術基礎教程》課件Bit0Bit1Bit2Bit3Bit4Bit5Bit6Bit7StartStop6(2)監控模式的工作過程MCU在進入監控模式時,需要接收8字節的保密字節,如果是空白芯片,則8字節的保密字節全是$FF,然后就處于等待接收一個命令字節狀態。以GP32為例,進入監控模式的時序如下圖所示。《嵌入式應用技術基礎教程》課件4096+32CGMXCLK

CYCLES24BUS

CYCLES256

BUS

CYCLES(最少)···BYTE1BYTE2BYTE8COMMAND來自主機的數據MCU發送的數據BYTE1ECHOBYTE2ECHOBYTE8ECHOBREAKCOMMANDECHO1411412注:1等待回復延時,2位的延時時間2數據返回延時,2位的延時時間4發送下一個字節前的1位延時時間VDDRSTPTA7PTA07(3)監控模式的矢量表在監控模式下,復位、軟中斷和Break中斷矢量表有所改變。下表反應了監控模式和用戶模式的矢量表的差別。《嵌入式應用技術基礎教程》課件模式復位矢量BreakSWI高字節低字節高字節低字節高字節低字節用戶$FFFE$FFFF$FFFC$FFFD$FFFC$FFFD監控$FEFE$FEFF$FEFC$FEFD$FEFC$FEFD816.1.4HC08系列MCU的監控命令MCU通過特定的I/O口接收主機發送的字節數據,判斷是否是監控命令,如果是,執行相應的動作。監控命令共有6條,每條監控命令由操作碼和操作數組成。下表1列出了各條監控命令的格式和功能。《嵌入式應用技術基礎教程》課件命令格式功能READ$4A$4A高字節高字節低字節低字節數據讀出指定單元內容(RAM或Flash)WRITE$49$49高字節高字節低字節低字節數據數據向指定單元寫數據(RAM)IREAD$1A$1A數據數據讀取上次訪問的地址+1、+2處的內容(RAM或Flash)IWRITE$19$19數據數據向上次訪問的地址+1處寫入一個數據(RAM)READSP$0C$0C數據數據讀堆棧指針高字節和低字節RUN$28$28執行RTI指令返回9InOutPC主機特定I/O目標MCUMAX23278910MC74HC12526153VDD(a)編程器內部器件連接圖

VDDI/O口7891012346523OutInPC串行口MAX

23274HC125目標MCU(b)編程器原理圖10KΩ16.2HC08系列MCU編程器的實現方法16.2.1HC08編程器硬件設計方案方案一:采用Freescale公司技術手冊中的監控模式編程電路圖。

《嵌入式應用技術基礎教程》課件10方案二:“基板-適配器”《嵌入式應用技術基礎教程》課件主控MCU目標MCU基板晶體振蕩電路適配器晶體振蕩電路PC接口電路電平轉換及高壓產生電路外圍電路基

板適配器電源控制電路1116.2.2HC08編程器軟件設計思想《嵌入式應用技術基礎教程》課件實現空白芯片寫入的軟件設計思想是:①被寫入的目標MCU工作于監控模式。②主機將擦寫FLASH程序的二進制代碼以及要寫入的數據寫入目標MCU的內存區。③主機向目標MCU發送RUN監控命令,運行第②步寫入目標MCU內存區的程序。在這3步的執行過程中,第2步寫入目標MCU內存的程序設計有一定難度。需要綜合考慮內存分配、子程序調用的參數傳遞方法、程序執行完成后如何返回監控狀態(等待接收字節狀態),完成其他頁面的寫入操作等問題。返回1216.3HC08系列MCU編程器實例本實例的主控MCU選用MC68HC908GP32(簡稱GP32),目標MCU選用MC68HC908JB8(簡稱JB8)。16.3.1硬件設計(1)基板基板選用SD-1在線編程系統中的實驗板,實驗板上提供的WFLASH接口,可以直接連接適配器,接口如下圖。WFLASH接口提供了VCC、GND、PTD0~PTD4、V+。其中V+是MAX232芯片第2腳輸出的9V高壓。《嵌入式應用技術基礎教程》課件VCCGNDPTD1PTD0PTD2PTD3PTD4V+VCCGNDWFLASH接口13(2)適配器板本實例中目標MCU是JB8,也就是通過GP32向JB8中寫入程序,因此在適配器板中要保證JB8進入監控模式。JB8進入監控的方式有三種:《嵌入式應用技術基礎教程》課件方式IRQ復位矢量PTA3PTA2PTA1PTA0外部時鐘說明1VTST任意00113MHz高壓方式進入監控模式,PTA0口以9600bps速率通信2VTST任意10116MHz3VDD$FF任意任意任意16MHz低壓方式進入監控模式,復位矢量區必須為$FF14JB8適配器板原理圖

《嵌入式應用技術基礎教程》課件適配器電源控制電路PNPT1NPNT21K5KVCC10K100PTD1VINVINPTD0RBX1C1C2地線VINVINVINJB8監控模式外圍電路PTA0PTA1PTA2PTA3VDDVSSOSC2OSC1IRQV+10K10K10K10K10KVIN1516.3.2主控MCU發送和接收一個字節子程序發送一個字節子程序如下:Send1Byte:BSET0,OutPortS;輸出口0腳定義為輸出BSET0,OutPort;令輸出口0腳為高電平JSRDelayBitTime;246個周期JSRDelayBitTime;246個周期;①發送起始位BCLR0,PTD;起始位JSRDelayBitTime;246個周期NOP;1個周期NOP;1個周期NOP;1個周期NOP;1個周期LDX#$08;2個周期Send1Byte0:RORA;1個周期BCCSend1Byte1;3個周期;②發送數據位,高電平BSET0,PTD;4個周期BRASend1Byte2;3個周期Send1Byte1:;③發送數據位,低電平BCLR0,PTD;4個周期NOP;1個周期NOP;1個周期NOP;1個周期Send1Byte2:JSRDelayBitTime;246個周期DBNZXSend1Byte0;3個周期BSET0,PTD;停止位JSRDelayBitTime;246個周期RTS《嵌入式應用技術基礎教程》課件16接受一個字節子程序如下:Receive1Byte:BCLR0,OutPortS;輸出口0腳定義為輸入BRSET0,PTD,*;等待起始位;①等待起始位接收時間NOP;1個周期NOP;1個周期NOP;1個周期NOP;1個周期NOP;1個周期NOP;1個周期NOP;1個周期LDX#!08;2個周期CLRA;1個周期Receive1Byte0:JSRDelayBitTime;246個周期

BRSET0,PTD,Receive1;開始接收1位;②接收一個數據位,低電平CLC;1個周期BRAReceive2;3個周期Receive1:;③接收一個數據位,高電平SEC;1個周期NOP;1個周期NOP;1個周期NOP;1個周期Receive2:RORA;1個周期NOP;1個周期NOP;1個周期DBNZXReceive1Byte0;3個周期RTS

《嵌入式應用技術基礎教程》課件1716.3.3主控MCU發送保密字節目標MCU進入監控狀態以后則開始等待接收8個保密字節。若接收到的8個字節與Flash中存放保密字節的單元($FFF6~$FFFD)內容相匹配,則將其RAM區的第一個字節的第6位置為1(此時該字節通常為$7F),否則置為0(此時該字節通常為$3F)。但是,不管密碼驗證是否成功,目標MCU總能接受基板GP32發送來的監控命令,只是在密碼不匹配的情況下,通過READ或IREAD命令讀取Flash的操作失敗,表現為數據異常。對于空白芯片,密碼為8個$FF。《嵌入式應用技術基礎教程》課件1816.3.4發送監控命令MCU有6個監控命令Read、Write、IRead、IWrite、Readsp、Run。主控MCU在不同情況下對目標MCU發送相應的監控命令,讓目標MCU執行相應操作。(1)發送READ命令【子程序名】:Read1Byte【入口參數】:AddrH--待讀地址高字節,AddrL--待讀地址低字節【出口參數】:A--讀出的數據《嵌入式應用技術基礎教程》課件LDAAddrLJSRSend1Byte;發送低字節JSRReceive1Byte;接收回應JSRReceive1Byte;接收命令的;執行結果LDA#$4AJSRSend1Byte;發送命令字JSRReceive1Byte;接收回應LDAAddrHJSRSend1Byte;發送高字節JSRReceive1Byte;接收回應19(2)發送WRITE命令【子程序名】:Write1Byte【入口參數】:AddrH--待讀地址高字節,AddrL--待讀地址低字節;A--待寫入的數據【出口參數】:無【關鍵代碼】:《嵌入式應用技術基礎教程》課件JSRSend1Byte ;發送低字節JSRReceive1Byte;接收回應PULAJSRSend1Byte ;發送數據JSRReceive1Byte;接收回應PSHALDA#$49JSRSend1Byte;發送命令字JSRReceive1Byte;接收回應LDAAddrHJSRSend1Byte;發送高字節JSRReceive1Byte;接收回應LDAAddrL20(3)發送IWRITE命令【子程序名】:IWrite1Byte【入口參數】:A--待寫入的數據【出口參數】:無【關鍵代碼】:

PSHALDA#$19JSRSend1Byte;發送命令字JSRReceive1Byte;接收回應PULAJSRSend1Byte ;發送數據JSRReceive1Byte;接收回應《嵌入式應用技術基礎教程》課件(4)發送RUN命令【子程序名】:RUN【入口參數】:無【出口參數】:無【關鍵代碼】:LDA#$28JSRSend1Byte;發送命令字JSRReceive1Byte;接收回應2116.3.5針對目標芯片JB8的編程(1)JB8的整體擦除對目標MCU的Flash進行整體擦除(包括矢量頁)。雖然目標芯片JB8的監控ROM中包含整體擦除的例行程序,但考慮到有的芯片沒有,可以不使用內部ROM中的整體擦除程序(后面的寫入程序也是如此)。根據JB8“整體擦除操作”步驟編寫了整體擦除子程序。(2)JB8的頁寫入根據JB8的“向Flash寫入一頁數據”的操作步驟編寫了頁寫入子程序。本程序入口時$00A0和$00A1中存放的是某頁中需要寫入數據的首地址(可以不是頁首地址)。每次需要寫入的數據必須在同一頁范圍中,頁大小為64字節。JB8的FLASH起始地址為$DC00。《嵌入式應用技術基礎教程》課件2216.3.6基板中主控MCU的編程(1)主流程《嵌入式應用技術基礎教程》課件主控MCU初始化從PC機接收8個保密字節及命令字節給適配器上電發送8個保密字節收到命令99收到命令100調整體擦除目標MCU子程序調頁寫入目標MCU子程序是是否否23(2)整體擦除目標MCU子程序(3)寫目標MCU子程序《嵌入式應用技術基礎教程》課件接收PC機發來的總頁數PageNumPageNum=0?返回是否寫目標MCU子程序流程圖將頁寫入子程序的二進制代碼送往JB8的$41開始的內存區接收PC機發來的頁數據內容,暫存于PageBuffer中將頁數據內容發送到JB8的$A0開始的內存區發送運行監控命令RUN,寫入當前頁PageNum減1頁寫入程序目標代碼(共89個字節)適配器RAM分配……高字節低字節數據個數N數據1$0041$00A0$0040標志字節$00A1$00A2$00A3數據N$00A3+N-1(≤$00E2)返回2416.4HCS08系列MCU編程器原理16.4.1兩種系列MCU的結構差異

以HC08系列的MC68HC908GP32和HCS系列的MC9S08GB60為例,下表描述了在實現編程器時有關的結構差異。《嵌入式應用技術基礎教程》課件比較項目MC68HC908GP32MC68HC908GB60工作模式監控模式激活的背景工作模式接口1個I/O口BKGD引腳通信控制ROM程序DBC和DBG數據通信格式NRZ自定義的串行通信協議命令字節6個監控命令30個BDC命令2516.4.2激活的背景工作模式在激活的背景工作模式(Activebackgroundmode)下,可以很方便地實現HCS08系列MCU的擦寫FLASH,也提供程序的調試功能。該模式由HCS08內核中的BDC(BackgroundDebugController)來管理,BDC和片上調試模塊(DBG)下共同完成調試功能。在這種工作模式下,CPU處于等待接收一個命令狀態,類似于GP32工作在監控狀態時等待接收一個字節的狀態。進入激活的背景工作模式有五種途徑:①在MCU復位信號的上升沿,BKGD/MS引腳低電平。在實現編程器時通常使用這種方法。②從BKGD引腳收到BACKGROUND命令。③執行BGND指令。④遇到BDC斷點。⑤遇到DBG斷點。《嵌入式應用技術基礎教程》課件2616.4.3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論