




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 下水井維修合同范本
- 供應合同范本長期
- 2025年吐魯番怎么考貨運從業(yè)資格證
- 住宅綠化養(yǎng)護合同范本
- 醫(yī)療健康服務合同范本
- 個體工商退股合同范本
- 助理編輯聘約合同范本
- 蘇州代建合同范本
- 公司改造施工合同范本
- 營地臨建合同范本
- 五年級書法上冊第一課課件
- 《贏利》精讀圖解
- 高一化學必修一試題
- 大學生職業(yè)素養(yǎng)訓練(第六版)教案 第二單元 學習職業(yè)禮儀
- 2022年中華護理學會輸液連接裝置安全管理專家共識解讀
- 內鏡下ESD護理配合
- DB34∕T 1644-2012 南方紅豆杉用材林栽培技術規(guī)程
- 《中華人民共和國道路運輸條例》知識專題培訓
- 直腸癌課件完整版本
- 2024年山東省青島市普通高中自主招生物理試卷(含解析)
- 胸部影像檢查護理常規(guī)
評論
0/150
提交評論