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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第十六章

08系列MCU編程器的開發(fā)主要內(nèi)容

編程器技術(shù)基礎(chǔ)

HC08系列MCU編程器的實現(xiàn)方法

HC08系列MCU編程器實例HCS08系列MCU編程器原理《嵌入式應(yīng)用技術(shù)基礎(chǔ)教程》課件116.1編程器技術(shù)基礎(chǔ)在線編程系統(tǒng)是有用戶程序駐留在MCU中,在這些用戶程序的支持下,向MCU中寫入程序,其實質(zhì)是一種用戶模式下的寫Flash操作,這種方法對嵌入式系統(tǒng)的開發(fā)和調(diào)試帶來極大方便。

編程器是向MCU中寫入程序,寫入的結(jié)果是FLASH中僅有當(dāng)前寫入的用戶程序,而不包含其他的用戶程序。《嵌入式應(yīng)用技術(shù)基礎(chǔ)教程》課件216.1.1HC08系列MCU的監(jiān)控模式

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

CYCLES24BUS

CYCLES256

BUS

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

VDDI/O口7891012346523OutInPC串行口MAX

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

《嵌入式應(yīng)用技術(shù)基礎(chǔ)教程》課件10方案二:“基板-適配器”《嵌入式應(yīng)用技術(shù)基礎(chǔ)教程》課件主控MCU目標(biāo)MCU基板晶體振蕩電路適配器晶體振蕩電路PC接口電路電平轉(zhuǎn)換及高壓產(chǎn)生電路外圍電路基

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

《嵌入式應(yīng)用技術(shù)基礎(chǔ)教程》課件適配器電源控制電路PNPT1NPNT21K5KVCC10K100PTD1VINVINPTD0RBX1C1C2地線VINVINVINJB8監(jiān)控模式外圍電路PTA0PTA1PTA2PTA3VDDVSSOSC2OSC1IRQV+10K10K10K10K10KVIN1516.3.2主控MCU發(fā)送和接收一個字節(jié)子程序發(fā)送一個字節(jié)子程序如下:Send1Byte:BSET0,OutPortS;輸出口0腳定義為輸出BSET0,OutPort;令輸出口0腳為高電平JSRDelayBitTime;246個周期JSRDelayBitTime;246個周期;①發(fā)送起始位BCLR0,PTD;起始位JSRDelayBitTime;246個周期NOP;1個周期NOP;1個周期NOP;1個周期NOP;1個周期LDX#$08;2個周期Send1Byte0:RORA;1個周期BCCSend1Byte1;3個周期;②發(fā)送數(shù)據(jù)位,高電平BSET0,PTD;4個周期BRASend1Byte2;3個周期Send1Byte1:;③發(fā)送數(shù)據(jù)位,低電平BCLR0,PTD;4個周期NOP;1個周期NOP;1個周期NOP;1個周期Send1Byte2:JSRDelayBitTime;246個周期DBNZXSend1Byte0;3個周期BSET0,PTD;停止位JSRDelayBitTime;246個周期RTS《嵌入式應(yīng)用技術(shù)基礎(chǔ)教程》課件16接受一個字節(jié)子程序如下: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位;②接收一個數(shù)據(jù)位,低電平CLC;1個周期BRAReceive2;3個周期Receive1:;③接收一個數(shù)據(jù)位,高電平SEC;1個周期NOP;1個周期NOP;1個周期NOP;1個周期Receive2:RORA;1個周期NOP;1個周期NOP;1個周期DBNZXReceive1Byte0;3個周期RTS

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

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

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

溫馨提示

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

評論

0/150

提交評論