DSP在線升級程序步驟7頁_第1頁
DSP在線升級程序步驟7頁_第2頁
DSP在線升級程序步驟7頁_第3頁
DSP在線升級程序步驟7頁_第4頁
DSP在線升級程序步驟7頁_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目標板:C2000的28335/28069一、主要思路:1、準備升級程序(相當于一個bootloader),作為上電首先運行的程序。進入升級程序,首先判斷需不需要升級,需要升級,進入升級狀態(tài),通信完成新的主程序的接收,存入,升級成功后,進入主程序運行。2、在主程序運行時,收到升級指令,標記升級標志,重啟進入升級程序進去升級。3、板子上電后,會調到flash啟動的起始地址0x33FFF6(DSP28335),這個地址存放著程序的codestart的其實地址。所以,修改了0x33FFF6的存放的值,那么就能決定執(zhí)行那一段程序。還可以通過匯編跳轉指令直接跳轉到程序codestart執(zhí)行。二、升級程序

2、1、具備能力:具備通信能力和Flash讀寫能力2、準備:Flash API移植、上位機的升級配套程序;存儲升級標志位的空間(外部EEPROM,不會隨便擦除的內部Flash)3、流程:接收-校驗-燒寫-跳轉三、升級步驟1、數(shù)據(jù)接收:通過CAN/串口等方式接收數(shù)據(jù)。由于28335內存較小,不適合緩存大量的數(shù)據(jù),這里是接收一部分數(shù)據(jù),校驗完成后燒寫進Flash,再去接收一部分數(shù)據(jù)2、數(shù)據(jù)解析:接收到的數(shù)據(jù)是hex格式的數(shù)據(jù),所以需要解析才能放入對應的flash地址。但由于28335能力限制,這里采用先在上位機解析完成,采用先告知地址,然后發(fā)送數(shù)據(jù)的方式完成數(shù)據(jù)通信和傳輸。3、校驗:這里采用crc校驗

3、。/*Name:crc16*Function:crc校驗16位*Params:data(UInt8*):待操作的數(shù)組len:數(shù)據(jù)長度*Return:UInt16:返回CRC值CRC校驗碼為2個字節(jié)高位在前*/UInt16crc16(Uint8*data,UInt16len)UInt16CRC=0xFFFF;UInt8j,TMP=0;UInt8i;for(i=0;ilen;i+)CRC=datai;for(j=0;j1;if(TMP)CRC=CRC0xA001;returnCRC;4、數(shù)據(jù)燒寫flash:運用flash API提供的接收完成數(shù)據(jù)的燒寫。這里要注意flash API必須運行在RAM

4、中。5、完成數(shù)據(jù)燒寫后,需要跳轉到主程序。一般采用匯編指令。匯編指令asm(LB 0xXXXXXX)或者匯編函數(shù)。這里采用asm的方式,跳轉地址為新應用程序的起始地址,這里必須規(guī)定每次跟新的新應用程序的起始地址必須固定。 asm( LB 0x3xxxxx);如果是使用變動的起始地址,則必須采用匯編函數(shù),把地址作為參數(shù)傳進函數(shù)。四、主程序1、接收升級指令后,能夠標志升級狀態(tài)。重啟進入升級程序,進行判斷,進而升級程序。2、主程序運行后,升級狀態(tài)標記為不用升級狀態(tài)。五、注意點1、升級程序與主程序要嚴格分開,合理分配flash空間,附升級程序和主程序cmd大致分配空間。主程序cmd文件/*File:f

5、28335_nonBIOS_flash.cmd-Linkercommandfilefornon-DSP/BIOS*codewithDSPinBoottoFlashbootmode.*History:09/18/07-original(D.Alter)*/MEMORYPAGE0:/*ProgramMemory*/BEGIN_M0:origin=0x000000,length=0x000002/*PartofM0SARAM.UsedforBoottoM0bootloadermode.*/FLASH_PROGRAMS:origin=0x310000,length=0x000010/*On-chipF

6、LASH*/FLASH_PROGRAM:origin=0x310010,length=0x01FFF0/*On-chipFLASH*/ZONE7A:origin=0x200000,length=0x010000CSM_RSVD:origin=0x33FF80,length=0x000076/*PartofFLASHSectorA.ReservedwhenCSMisinuse.*/BEGIN_FLASH:origin=0x33FFF6,length=0x000002/*PartofFLASHSectorA.UsedforJumptoflashbootloadermode.*/PASSWORDS:

7、origin=0x33FFF8,length=0x000008/*PartofFLASHSectorA.CSMpasswordlocations.*/ADC_CAL:origin=0x380080,length=0x000009/*ADC_calfunctioninReservedmemory*/OTP:origin=0x380400,length=0x000400/*1KwOTP*/IQTABLES:origin=0x3FE000,length=0x000B50/*PartofBootROM*/IQTABLES2:origin=0x3FEB50,length=0x00008C/*Partof

8、BootROM*/FPUTABLES:origin=0x3FEBDC,length=0x0006A0/*PartofBootROM*/BOOTROM:origin=0x3FF27C,length=0x000D44/*8KwBootROM*/RESET:origin=0x3FFFC0,length=0x000002/*partofBootROM*/FLASH_CONST:origin=0x300000,length=0x010000PAGE1:/*DataMemory*/M0SARAM:origin=0x000002,length=0x0003FE/*1KwM0SARAM*/M1SARAM:or

9、igin=0x000400,length=0x000400/*1KwM1SARAM*/DRAM:origin=0x008000,length=0x008000PIEVECT:origin=0x000D00,length=0x000100ZONE7B:origin=0x210000,length=0x010000/FLASH_DATA:origin=0x330000,length=0x008000/*On-chipFLASH*/SECTIONS/*CompilerRequiredSections*/*Programmemory(PAGE0)sections*/.text1:DSP2833x_Co

10、deStartBranch.obj(.text)FLASH_PROGRAMS,PAGE=0.text2:*(.text)FLASH_PROGRAM,PAGE=0.cinit:FLASH_PROGRAM,PAGE=0.const:FLASH_PROGRAM,PAGE=0.econst:FLASH_CONST,PAGE=0.pinit:FLASH_PROGRAM,PAGE=0.reset:RESET,PAGE=0,TYPE=DSECT/*Wearenotusingthe.resetsection*/.switch:FLASH_PROGRAM,PAGE=0.cio:FLASH_PROGRAM,PAG

11、E=0/*DataMemory(PAGE1)sections*/.bss:DRAM,PAGE=1.ebss:DRAM,PAGE=1.stack:DRAM,PAGE=1.sysmem:ZONE7B,PAGE=1.esysmem:ZONE7B,PAGE=1/*UserDefinedSections*/codestart:BEGIN_FLASH,PAGE=0/*UsedbyfileCodeStartBranch.asm*/csm_rsvd:CSM_RSVD,PAGE=0/*Usedbyfilepasswords.asm*/internalMemFuncs:FLASH_PROGRAM,PAGE=0/*

12、UsedbyfileXintf.c.Linktointernalmemory*/passwords:PASSWORDS,PAGE=0/*Usedbyfilepasswords.asm*/*SectionsecureRamFuncsusedbyfileSysCtrl.c.*/ramfuncs:LOAD=FLASH_PROGRAM,PAGE=0/*ShouldbeFlash*/RUN=ZONE7A,PAGE=0/*MustbeCSMsecuredRAM*/LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_Ram

13、funcsRunStart)/*AllocateADC_calfunction(pre-programmedbyfactoryintoTIreservedmemory)*/.adc_cal:load=ADC_CAL,PAGE=0,TYPE=NOLOAD/*endoffile*/升級程序cmd文件/*File:f28335_nonBIOS_flash.cmd-Linkercommandfilefornon-DSP/BIOS*codewithDSPinBoottoFlashbootmode.*History:09/18/07-original(D.Alter)*/MEMORYPAGE0:/*Pro

14、gramMemory*/BEGIN_M0:origin=0x000000,length=0x000002/*PartofM0SARAM.UsedforBoottoM0bootloadermode.*/FLASH_PROGRAM:origin=0x330000,length=0x005000/*On-chipFLASHG*/FLASH_PROGRAM1:origin=0x335000,length=0x001000/*On-chipFLASHG*/FLASH_CONST:origin=0x336000,length=0x001000/*On-chipFLASHG*/ZONE7A:origin=0

15、x200000,length=0x010000CSM_RSVD:origin=0x33FF80,length=0x000076/*PartofFLASHSectorA.ReservedwhenCSMisinuse.*/BEGIN_FLASH:origin=0x33FFF6,length=0x000002/*PartofFLASHSectorA.UsedforJumptoflashbootloadermode.*/PASSWORDS:origin=0x33FFF8,length=0x000008/*PartofFLASHSectorA.CSMpasswordlocations.*/ADC_CAL

16、:origin=0x380080,length=0x000009/*ADC_calfunctioninReservedmemory*/OTP:origin=0x380400,length=0x000400/*1KwOTP*/IQTABLES:origin=0x3FE000,length=0x000B50/*PartofBootROM*/IQTABLES2:origin=0x3FEB50,length=0x00008C/*PartofBootROM*/FPUTABLES:origin=0x3FEBDC,length=0x0006A0/*PartofBootROM*/BOOTROM:origin=

17、0x3FF27C,length=0x000D44/*8KwBootROM*/RESET:origin=0x3FFFC0,length=0x000002/*partofBootROM*/PAGE1:/*DataMemory*/M0SARAM:origin=0x000002,length=0x0003FE/*1KwM0SARAM*/M1SARAM:origin=0x000400,length=0x000400/*1KwM1SARAM*/DRAM:origin=0x008000,length=0x008000PIEVECT:origin=0x000D00,length=0x000100ZONE7B:

18、origin=0x210000,length=0x010000/FLASH_DATA:origin=0x330000,length=0x008000/*On-chipFLASHB*/SECTIONSFlash28_API:-lFlash28335_API_V210.lib(.econst)-lFlash28335_API_V210.lib(.text)LOAD=FLASH_PROGRAM1,RUN=ZONE7A,LOAD_START(_Flash28_API_LoadStart),LOAD_END(_Flash28_API_LoadEnd),RUN_START(_Flash28_API_Run

19、Start),PAGE=0/*CompilerRequiredSections*/*Programmemory(PAGE0)sections*/.text:FLASH_PROGRAM,PAGE=0.cinit:FLASH_PROGRAM,PAGE=0.const:FLASH_PROGRAM,PAGE=0.econst:FLASH_CONST,PAGE=0.pinit:FLASH_PROGRAM,PAGE=0.reset:RESET,PAGE=0,TYPE=DSECT/*Wearenotusingthe.resetsection*/.switch:FLASH_PROGRAM,PAGE=0.cio

20、:FLASH_PROGRAM,PAGE=0/*DataMemory(PAGE1)sections*/.bss:DRAM,PAGE=1.ebss:DRAM,PAGE=1.stack:DRAM,PAGE=1.sysmem:ZONE7B,PAGE=1.esysmem:ZONE7B,PAGE=1/*UserDefinedSections*/codestart:BEGIN_FLASH,PAGE=0/*UsedbyfileCodeStartBranch.asm*/csm_rsvd:CSM_RSVD,PAGE=0/*Usedbyfilepasswords.asm*/internalMemFuncs:FLASH_PROGRAM,PAGE=0/*UsedbyfileXintf.c.Linktointernalmemory*/passwords:PASSWORDS,PAGE=0/*Usedbyf

溫馨提示

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

評論

0/150

提交評論