F28335BOOTROM引導(dǎo)模式和程序_第1頁
F28335BOOTROM引導(dǎo)模式和程序_第2頁
F28335BOOTROM引導(dǎo)模式和程序_第3頁
F28335BOOTROM引導(dǎo)模式和程序_第4頁
F28335BOOTROM引導(dǎo)模式和程序_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、28335使用串口燒寫程序串口燒寫是一種相對較方便的燒寫方式,相對于仿真器或是CAN燒寫,相對于仿真器或是USB轉(zhuǎn)CAN的設(shè)備,串口是一種非常廉價的燒寫方式,而且也不需要安裝 專業(yè)的集成開發(fā)環(huán)境 CCS等,但是不能實現(xiàn)在線調(diào)試,因此也只適用于程序基本不用 再調(diào)整或大批量的場合。F28335的存儲器映射圖如下:PhOCfcStart Addma-S4B33 -CIE4WwmpDxw!一H才 OntKl (DCiQh04 00軸加如MMihcw mooonoo CEoe04 3QQOwM整対DWtaJF A4MI Oji3FWOm-SF rnwta3f EOW0i3F FFCDE bImaI Me

2、mory X1NTFDlOa 40M叭 Qi $OQQDi 1 DOOCHIDsl9 ODOIU3D ODCK)DbCi 9pflcFrag SfNKJtMO- R*Mi:32i 37|傳H VWAP = qjW 5ARAM ”民 Xtfl|iHt MRAM $iRartpharl Frnm4 羊 P*MWd fCM此 AccoHFPertpherHi Frmv 1曲aglwl FrsHMi 2CPYfirtMlfid.l!B-XZeSDF Accni-iiMiU SAAARt (4K n.14, SfiCiM Zne Dual Mapped 1LI &ARAM |4K rt 1ft. Swu

3、ra Zan Dual Mdppf3|L2 SALAMI I-4KK-1E, Sfiuifira 2Arw, tlusl Happed|L3 aARAKI MKkIB. 3w*Dual MappedlU MFUM MMk1 DMAAcc4lHt|U IWFtAM0MAAcwimL4 MFEAH HKMlfi, DMA 島筆awl聊巒|L7 SAIUMpnu Ac pnBlbl9|Rj?5FwdFLASHM h 16, S*Cuf#Zanm-bitPavwvRESET0x3F FFCOinntBootRTOSINTOxJF FFEO0*00 DG60INTI0x3F FFC20x00 0042R

4、喚阿0恤護FFE20x00 0062INT20x3F FFC4amo 004NM)0k IF FFE3F FFFAflrflC DCTA(NT14Qx3F FFDGOnOO noseUSFR11OaF FFFCOlfOC 007CDLOGINT0x3F FFDE0x00 OT5EUSER12OxJF FFFE0: to XINTF Jt320111JurniplQOTF601110Paratel GPIO 1/0 boo5010iPnm 同 XlhTTF Itirwi401口0tv 31RAW30aii&Fancri to ctwck &oo ni6200i0Bench tq謝p ADC100

5、oi乜 EMh to &ARAM, ekp ADC00a0Q&arcfi VJ 3Q. 6klf) ADC WDWUJH(1) Ml fout GPK) pins an mtarn pdlLp.Bootloader 特性:Bootloader是位于片上引導(dǎo) ROM中的在復(fù)位后執(zhí)行的程序,用于在上電復(fù)位 后,將程序代碼從外部源轉(zhuǎn)移到內(nèi)部存儲器。這允許代碼暫時存儲在掉電不丟失數(shù)據(jù) 的外部存儲器內(nèi),然后被轉(zhuǎn)移到高速存儲器中執(zhí)行。引導(dǎo)ROM中的復(fù)位向量將程序執(zhí)行重定向至 InitBoot函數(shù)。執(zhí)行器件初始化 之后,bootloader將檢查GPIO引腳的狀態(tài)以確定您需要執(zhí)行哪種引導(dǎo)模式。這些選項 包括

6、:跳轉(zhuǎn)至閃存、跳轉(zhuǎn)至 SARAM、跳轉(zhuǎn)至OTP或調(diào)用其中一個片上引導(dǎo)加載例程。完成選擇進程后,如果已完成所需的引導(dǎo)加載,處理器將在所選引導(dǎo)模式確定 的應(yīng)用起點繼續(xù)執(zhí)行。如果調(diào)用了bootloader,則由外設(shè)加載的輸入流確定此應(yīng)用起點地址。然而,如果選擇直接引導(dǎo)至閃存、OTP或SARAM,這些存儲器塊中每一個存儲器塊的應(yīng)用起點均已預(yù)定義。Figure 2-1, Bootloader Flow DiagramBegin execution at Entry Point asdetermined by selected boot mode上圖顯示了引導(dǎo)進程的概述以下引導(dǎo)模式不掉用bootloade

7、r,他們會跳轉(zhuǎn)至存儲器中的預(yù)定義位置:1.跳轉(zhuǎn)至閃存中的分支指令:在此模式下,引導(dǎo) ROM軟件將針對28x操作配置器件,然后直接分支至閃存的 0X33FFF6位置。此位置剛好是 128位代碼安全模塊(CSM)密碼位置之前。您需要預(yù) 先在0X33FFF6位置處編寫分支指令,以將代碼執(zhí)行重定向至定制的boot-loader或應(yīng)用代碼。在僅有RAM的器件上,“引導(dǎo)至閃存”將跳轉(zhuǎn)到保留存儲器,因此不應(yīng)當(dāng)使用此選項。ResetInilBoOTFigure 24 Jump-to-Flash Flow Diagram2.跳轉(zhuǎn)至MO SARAM在此模式下,BOOT ROM將針對28x操作配置器件,然后直接分支

8、至 0x000000,即 M0 SARAM存儲器塊中的第一個地址。RosotFigure 2-5. Flow Diagram ot Jump to MO SARAM3.跳轉(zhuǎn)至OTP存儲器在此模式下直接分支至0x380400,即OTP存儲器塊中的第一個地址Figuire 2-6. Flow Diagram o1 Jump-to-OT卩 MemoryJ-* InitBool -Table 3-1. Addresses cf Flash Sectors in F28335/F28235ADDRESS RANGEPROGRAM AND DATA SPACE0r30 0000-0x30 7FFFSect

9、or H (3 2K x 1C)(Jn3D 6000 - 0a3C FFFFSector GC3-2K x0k31 OOOd 0Jt3l TFFFSector F(3i2K x 160x31 8000 0x31 FFFFSector E (32K % 16)0x32 DMJ -0j(32 7FFFSector D (32K xQK32 SQOO 0x32 FFFFSector C (3 2K x0x33 0000 0?33 7FFFStcIot B (32K x 1C)(h 衛(wèi) 6000(hi 弟 FF7FSediX A(32K it 16)0x33 FF8Q - Dx33FFF5Progrs

10、m to 0x0000 艸hen uming tKe Code Security (Module0X33FFF6 -0k33FFF7E ft by Poncl (program branch Instructjon here)0j(33 FFF6 0/33 FFFFSecurity Password f12&-6it( (Do Nqi Program co all seros)以下引導(dǎo)模式將調(diào)用一個用于將數(shù)據(jù)流從外設(shè)加載至存儲器的引導(dǎo)加載例程:SCI-A (注意此處的 SCI-A對應(yīng)的是 GPIO28和GPIO29)SPI-AI2C-AeCAN-AGPIO0-GPIO15并行引導(dǎo)如果使用 SC

11、I 或者其他引導(dǎo)的話,首先需要將啟動模式選擇相關(guān)的引腳配置成 對應(yīng)的模式,然后器件退出復(fù)位狀態(tài)之后,首先從復(fù)位向量處開始運行,即從 0x3FFFC0 處,該地址存放著 BOOT ROM 中的第一個匯編初始引導(dǎo)程序 InitBoot 程序 的入口地址,程序跳轉(zhuǎn)至 0x3FFC00 執(zhí)行 InitBoot 程序。該程序主要初始化 F28335 器 件工作的目標(biāo)模式。然后讀取安全保護模塊的密碼,如果CSM 密碼被擦除(全部等于OxFFFF)則自動解鎖,否則 CSM仍被鎖定。對CSM密碼讀取完成后,初始化例程調(diào)用模式選擇功能函數(shù)(SelectBoot),該函數(shù)根據(jù) GPIO 的狀態(tài)確定處理器引導(dǎo)的方式

12、。一旦完成 SelectMode 將會把入口地 址返回給初始化引導(dǎo)。然后初始化引導(dǎo)函數(shù)調(diào)用回復(fù) CPU 寄存器的退出例程( ExitBoot )并退出到由引導(dǎo)模式確定的程序入口地址。因此我們在使用 SCI 升級程序時可以分兩個步驟,第一個步驟是我們需要一個 Bootloader 程序,第二個就是我們要升級的程序, BootLoader 程序就是我們在選擇引 導(dǎo) SCI 模式之后, SelectBoot 之后通過串口加載的第一個程序,待 ExitBoot 之后會跳 轉(zhuǎn)到我們這個 bootloader 指定的地址開始執(zhí)行(即將控制權(quán)交給我們的這個 BootLoader 程序),因此我們的 Boot

13、Loader 程序就肩負(fù)著串口接收我們的應(yīng)用程序并 將應(yīng)用程序燒寫到FLASH的任務(wù)。第二個就是我們的應(yīng)用程序,這個跟平常的應(yīng)用程 序一樣,沒有任何區(qū)別。1. BootLoader 程序由上面的介紹明顯知道我們的Bootloader程序是運行在 RAM里面的,所以使用CCS在編寫該程序的時候使用的是RAM_Link的CMD,而且該程序除了串口的處理還有包括 FLASH 操作的 API 函數(shù),而這些函數(shù)必須要運行在 RAM 里面,而且在進行 FLASH操作的時候要將中斷全部都關(guān)掉,F(xiàn)LASH的API有相關(guān)的例程是燒進 FLASH的還要拷貝到RAM,我們這里正好還免去了拷貝的過程,因為我們整個程序

14、都是運行在 RAM 中的。Bootloader 數(shù)據(jù)流的結(jié)構(gòu):Word23456789101112131415nn*1Table 2-3. General Structure Of Source Program Data Stream In 16-Bit ModeContents10AA (KeyValue for memory width 二 16bits)Register ininEzation value or reserved for future umRegisterva ue or reserved for future useRegister inrtiabzatjon va u

15、e or reserved for futurs useRegister in itiabzaton va ue or reserved for future useRegister mtAhzation va ue or reserved for future useRegister intiaSration vr ue or reierved for hiture useRegister intiairat on v ue or roserved for hiture useRog stor initiMzobon vniuo or rosorvod for futum useEntry

16、point PC|22 16)Entry point PC( 15:01Block sjzo (number of words) of the first biocK cf data to bad. If the block size is 0 this indicates the end of th source program Otherwise another section blows.DstnAtion addn* of first block Addr31*16JDomination address of 十貳 block Addr(15:0First word of tho fi

17、rst Wook in tho source being kxidodLast word of tho frst block of the Murce being loadedBlock size of th 2nd block to loadDestnation address of second block Addrt31:16,Destnation address of second Mock Addr15 0First wool of tho second biock in the sourw behg loRdedLast word of tho socond block of th

18、e source bohg loododBlock sjzo of tne last block to oadDestination address of ast block Addr31:16Destination address of last block Addr15 01First word of tho last block in tho source being baded Last word of tbo last block of the source being bododBlock sjzo of OOOOh Indicator ond of tho source prog

19、ramTable 2-4. LSB/MSB Loading Sequonco in /Bit Data StreamBylttConljentLSB (Fni B/te 口fMSB Second Byte af 2)12L30AA (KftyVflkiR fair mnory width = fi brls)MSB DBh (KflVn up lor mfimnTy wirJth = ft hH)3斗LSBRogiiiof m:iD izat on 舸 uc w FMD(vodMSB:innt alizanon vIjo or rawrvo-d5flLSBReglir niiJEiiiZijL

20、onMSB.Inltdlizdlhn 曲llvw or78LSBRegister irvializalljdu i/b ub or res-ETVsdMSB: RegisilBr inrit lizalion 啟Ijb ar reserved17IBLSBRegisler mitiaiczaftion vstue or res曰iv巳dMSB Register initalizaton %alue or reserved20LSBLippr halfcf ntr poin: PC23:1q)MSB: Uppor half ceTlr punt PC3i:24) (AJay MOQ)2122LS

21、BLflww h測 of Entry pcln: PC|7 0MSB. Lowr luif ol Erilry poini PC15 B2324LSB Dlach in words ofImt block ta load If thebocks 04 th詁 indiciiit th* nd o1 lhepTjgrBm. Otrwnvso anoCicf jjKki; follows For oxampo, a MxK xe B (MJDQA wcMd indiGale 10 wonfe or 20 bytes in the blockMSG: dock i2526LJLMSV, d&stin

22、mtitin atidress. r血 Nocsk-LSE制S譏 deLnidtiDtl adiJibw.ur d L-ClK Add-123 丨白MSB. MSWadciess, second blockftadr31:24|-LSB.LSA dUnallon aiJdei., s&cmd b ock. A.:dr17:0;MSB. LSW dUnjbcn add陽汕.second bkek AdJf*5:SLMPFirst wamd of Hie weend biock be ng loadedMSB- Finsl word oF th? s-pcnndl bkek bpmg loaded

23、ILSB1 -iftf wnnrl cf the rond nadkMSRr LfiiM word of Ni尸 styinrt block1LSbBlockof tno tact blockM&B: Block sixo of tho lace block-LSBUSW cf dHsUnalkoii( last Qtodk Addr23.10MSB. M&W desUriaiion adtkflu,掃就 Mock Addrpi4)LSLLSW deshfiation acki-sEi, last biock Aj_dr|7 0|MSB: LSW desbnahen address lat b

24、lozk Addr15 BLSPFir 就 iTOr(j of Ire -i3t heck being os decMSB- First word of the test OlocA bemg tosdedList wom of tno blockVIS8: Jit word o*lhc last Weeknlt+1LSBOOhMSB. D0h indiGatsfi Uis vrud q( the kou-w上圖就是BootLoader數(shù)據(jù)流的結(jié)構(gòu),數(shù)據(jù)流的第一個16位字稱為鍵值,該鍵值用來指向Bootloader指示流入的數(shù)據(jù)流的寬度:8位或16位(在這里SCI就是8 位),對于8位數(shù)據(jù)流,

25、鍵值為0X08AA,如果bootloader收到一個無效的鍵值,加 載則中止。則直接跳轉(zhuǎn)到FLASH開始執(zhí)行。接下來的8個字(2-9 )用于初始化寄存器直,如果 bootloader不使用這些值, 則將這些值留作將來使用。第10個和第11個字組成了 22位應(yīng)用起點地址,此地址用于在完成引導(dǎo)加載 后初始化PC,也就是我們程序的起點。第12個字表示傳輸?shù)牡谝粋€數(shù)據(jù)塊的大小。對于8位和16位數(shù)據(jù)流格式,該數(shù)據(jù)塊的大小均定義為塊中的16位字個數(shù),例如,要從8位數(shù)據(jù)流中傳輸一個包含第13和14個字表示程序的目的地址,后面跟的就是程序的字,直到遇到數(shù)據(jù) 塊長度為0的則傳輸結(jié)束。B bi Mil rmd.

26、Uhe L3B Of lhe wod 稚 nad Aral Followed by ths IMSB.上圖為BOOTLoader傳輸流程,如果不相等會自動退出引導(dǎo)程序,系統(tǒng)會從內(nèi) 部FLASH存儲器執(zhí)行程序。這里需要講一下,我們的 Bootloader數(shù)據(jù)流如何得到,我們正常的使用CCS編譯鏈接得到了 xx.out 文件,然后使用 hex2000.exe-boot-sci8 -map=xx.map-o xx.hex -i xx.out(詳細(xì)解釋可參考 TMS320C28x-Assembly- Language-Tools-Users-Guide-v6.1.pdf),當(dāng)然你可以將這些命令參數(shù)寫成

27、腳本xx.cmd ,然后直接執(zhí)行hex2000.exe xx.cmd即可。這就會生成In tel格式的hex文件,我們需 要自己對這個hex文件解析,對于生成的 Hex文件都是以冒號開始,后面一個字節(jié)是 數(shù)據(jù)長度,2-3字節(jié)是地址,第4字節(jié)是數(shù)據(jù)類型(00表示數(shù)據(jù)記錄,01表示文件結(jié) 束記錄,02表示擴展段地址記錄,04表示擴展線性地址記錄)首先需要一個將兩個字符轉(zhuǎn)換為一個字節(jié)量函數(shù):Void CharToByte(char *pChar,BYTE *pByte)char h,l;h=pChar0;l=pChar1;if(l= 0& l= a& l= A& l= 0& h= a& h= A& h= F)h=h- A+0xa;*pByte=(BYTE)h*16 + 1;解析的關(guān)鍵代碼:If(fopen_s(&myFile,filename, ”r ”)!= 0)Printf( “打開文件 %s 失??! ”, filename);while(!f

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論