DSP在线升级程序步骤.doc_第1页
DSP在线升级程序步骤.doc_第2页
DSP在线升级程序步骤.doc_第3页
DSP在线升级程序步骤.doc_第4页
DSP在线升级程序步骤.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目标板:C2000的28335/28069一、主要思路:1、准备升级程序(相当于一个bootloader),作为上电首先运行的程序。进入升级程序,首先判断需不需要升级,需要升级,进入升级状态,通信完成新的主程序的接收,存入,升级成功后,进入主程序运行。2、在主程序运行时,收到升级指令,标记升级标志,重启进入升级程序进去升级。3、板子上电后,会调到flash启动的起始地址0x33FFF6(DSP28335),这个地址存放着程序的codestart的其实地址。所以,修改了0x33FFF6的存放的值,那么就能决定执行那一段程序。还可以通过汇编跳转指令直接跳转到程序codestart执行。二、升级程序1、具备能力:具备通信能力和Flash读写能力2、准备:Flash API移植、上位机的升级配套程序;存储升级标志位的空间(外部EEPROM,不会随便擦除的内部Flash)3、流程:接收-校验-烧写-跳转三、升级步骤1、数据接收:通过CAN/串口等方式接收数据。由于28335内存较小,不适合缓存大量的数据,这里是接收一部分数据,校验完成后烧写进Flash,再去接收一部分数据2、数据解析:接收到的数据是hex格式的数据,所以需要解析才能放入对应的flash地址。但由于28335能力限制,这里采用先在上位机解析完成,采用先告知地址,然后发送数据的方式完成数据通信和传输。3、校验:这里采用crc校验。/*Name:crc16*Function:crc校验16位*Params:data(UInt8*):待操作的数组len:数据长度*Return:UInt16:返回CRC值CRC校验码为2个字节高位在前*/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、数据烧写flash:运用flash API提供的接收完成数据的烧写。这里要注意flash API必须运行在RAM中。5、完成数据烧写后,需要跳转到主程序。一般采用汇编指令。汇编指令asm(LB 0xXXXXXX)或者汇编函数。这里采用asm的方式,跳转地址为新应用程序的起始地址,这里必须规定每次跟新的新应用程序的起始地址必须固定。 asm( LB 0x3xxxxx);如果是使用变动的起始地址,则必须采用汇编函数,把地址作为参数传进函数。四、主程序1、接收升级指令后,能够标志升级状态。重启进入升级程序,进行判断,进而升级程序。2、主程序运行后,升级状态标记为不用升级状态。五、注意点1、升级程序与主程序要严格分开,合理分配flash空间,附升级程序和主程序cmd大致分配空间。主程序cmd文件/*File:f28335_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-chipFLASH*/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: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/*PartofBootROM*/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:origin=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_CodeStartBranch.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,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/*Usedbyfilepasswords.asm*/*SectionsecureRamFuncsusedbyfileSysCtrl.c.*/ramfuncs:LOAD=FLASH_PROGRAM,PAGE=0/*ShouldbeFlash*/RUN=ZONE7A,PAGE=0/*MustbeCSMsecuredRAM*/LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart)/*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:/*ProgramMemory*/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=0x200000,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: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=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: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_RunStart),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: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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论