Part Number:TMS320F28035
28035 串口升级BIN文件后无法跳转。
使用二次BootLoader升级程序,通过串口升级应用程序,发现无法跳转到APP。使用仿真器烧录APP程序,则可以正常跳转。通过仿真对比烧录器烧录APP 和 串口升级烧录完成后的Memory Browser APP地址数据,数据完全一致,可见SCI烧录正常的。重新上电依然无法调整
bootlaoder CMD 文件
-heap 0x400 MEMORY { PAGE 0:/* Program Memory *//* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */RAM_BOOTPROG: origin = 0x008000, length = 0x000020/* on-chip RAM block L0, bootloader 中对时间敏感函数 */RAM_PROG: origin = 0x008020, length = 0x000520/* on-chip RAM block L0, bootloader 数据接收缓存区,1313byte,每次接收1Kb */RAM_CLAPRG: origin = 0x009000, length = 0x001000/* For CLA*/OTP: origin = 0x3D7800, length = 0x000400/* on-chip OTP*/Flash_EEPROM: origin = 0x3E8000, length = 0x002000/* Flash EEPROM 扇区H */APP_VER: origin = 0x3EA000, length = 0x000010/* 应用程序版本号 ,16Byte*/FLASH_APPPROG : origin = 0x3EA010, length = 0x00A000/* 应用程序存储空间,40Kb */APP_START: origin = 0x3F5FFC, length = 0x000002/* 应用程序入口 2Byte */BOOT_VER: origin = 0x3F6000, length = 0x000002/* Bootloader 程序版本号 */FLASH_BOOTRAM : origin = 0x3F6002, length = 0x000020/* FLASH 操作函数存储空间 */FLASH_RTS: origin = 0x3F6022, length = 0x00032E/* RTS库空间 */BOOT_UPDATE: origin = 0x3F6350, length = 0x000002/* bootloader 升级入口地址*/BOOT_RESET: origin = 0x3F6352, length = 0x000002/* bootloader 复位入口地址*/FLASH_BOOT: origin = 0x3F6354, length = 0x001400/* bootloader 程序存储空间 5kB */CSM_RSVD: origin = 0x3F7F80, length = 0x000076/* Bootloader :9/14 */BEGIN: origin = 0x3F7FF6, length = 0x000002/* Bootloader :10/14 */CSM_PWL_P0: origin = 0x3F7FF8, length = 0x000008/* Bootloader :11/14 */IQTABLES: origin = 0x3FE000, length = 0x000B50/* IQ Math Tables in Boot ROM */IQTABLES2: origin = 0x3FEB50, length = 0x00008C/* IQ Math Tables in Boot ROM */IQTABLES3: origin = 0x3FEBDC, length = 0x0000AA/* IQ Math Tables in Boot ROM */ROM: origin = 0x3FF27C, length = 0x000D44/* Boot ROM */RESET: origin = 0x3FFFC0, length = 0x000002/* part of boot ROM */VECTORS: origin = 0x3FFFC2, length = 0x00003E/* part of boot ROM */ PAGE 1 :/* Data Memory *//* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation *//* Registers remain on PAGE1*/BOOT_RSVD: origin = 0x000000, length = 0x000050/* Part of M0, BOOT rom will use this for stack */RAMM0: origin = 0x000050, length = 0x0003B0/* on-chip RAM block M0 */RAMM1: origin = 0x000400, length = 0x000400/* on-chip RAM block M1 */RAM_DATA: origin = 0x008540, length = 0x000AC0/* For .ebss */CLA2CPU: origin = 0x001480, length = 0x000080/* CLA1_MSGRAMLOW */CPU2CLA: origin = 0x001500, length = 0x000080/* CLA1_MSGRAMHIGH */FLASH_BOOTDATA : origin = 0x3F7754, length = 0x00082C/* BootLoader数据空间 ,共计2.04Kb*/FLASH_APPDATA : origin = 0x3F4010, length = 0x001FEC/* 应用程序数据空间 ,共计7.98Kb*/APP_CHECK: origin = 0x3F5FFE, length = 0x000001/* 应用升级标志 */JTAG_FLAG: origin = 0x3F5FFF, length = 0x000001/* JTAG 仿真标志 */ } /* Allocate sections to memory blocks.Note:codestart user defined section in DSP28_CodeStartBranch.asm used to redirect codeexecution when booting to flashramfuncs user defined section to store functions that will be copied from Flash into RAM */ SECTIONS {/* Bootloader :14/14 */codestart: > BEGIN,PAGE = 0UpdateEntry: > BOOT_UPDATE,PAGE = 0BootReset: > BOOT_RESET,PAGE = 0FlashBoot: > FLASH_BOOT,PAGE = 0RamBoot: LOAD = FLASH_BOOTRAM,RUN = RAM_BOOTPROG,LOAD_START(_RamBootLoadStart),LOAD_END(_RamBootLoadEnd),RUN_START(_RamBootRunStart),PAGE = 0 /*Rts: LOAD = FLASH_RTS, PAGE = 0{-lrts2800_ml.lib <exit.obj _lock.obj> (.text)-lrts2800_ml.lib <exit.obj _lock.obj> (.cinit)} */BootVer: > BOOT_VER,PAGE = 0, ALIGN(4)AppStart: > APP_START,PAGE = 0, ALIGN(4)AppCheck: > APP_CHECK,PAGE = 1, ALIGN(4)JtagFlag: > JTAG_FLAG,PAGE = 1, ALIGN(4)/* Bootloader :14/14 End*//* Application Version*/AppVer: > APP_VER,PAGE = 0, ALIGN(4)/* Allocate program areas: *///.cinit: > FLASH_BOOTDATA PAGE = 1, ALIGN(4).cinit: > FLASH_BOOT,PAGE = 0, ALIGN(4).pinit: > FLASH_BOOT,PAGE = 0, ALIGN(4).text: > FLASH_BOOTPAGE = 0, ALIGN(4)ramfuncs: LOAD = FLASH_BOOT,RUN = RAM_PROG,LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),PAGE = 0csmpasswds: > CSM_PWL_P0 PAGE = 0csm_rsvd: > CSM_RSVDPAGE = 0/* Allocate uninitalized data sections: */.stack: > RAMM1,PAGE = 1, ALIGN(4).cio: >> RAMM0 | RAMM1, PAGE = 1, ALIGN(4).sysmem: > RAMM0,PAGE = 1, ALIGN(4).ebss: > RAM_DATA,PAGE = 1, ALIGN(4).esysmem: > RAM_DATA,PAGE = 1, ALIGN(4)/* Initalized sections go in Flash *//* For SDFlash to program these, they must be allocated to page 0 */.econst: > FLASH_BOOT,PAGE = 0, ALIGN(4).switch: > FLASH_BOOT,PAGE = 0, ALIGN(4).const: > FLASH_BOOTPAGE = 0, ALIGN(4)/* Allocate IQ math areas: */IQmath: > FLASH_BOOT,PAGE = 0/* Math Code */IQmathTables: > IQTABLES,PAGE = 0, TYPE = NOLOADCla1Prog: LOAD = FLASH_APPPROG,RUN = RAM_CLAPRG,LOAD_START(_Cla1funcsLoadStart),LOAD_END(_Cla1funcsLoadEnd),RUN_START(_Cla1funcsRunStart),PAGE = 0Cla1ToCpuMsgRAM: > CLA2CPU,PAGE = 1CpuToCla1MsgRAM: > CPU2CLA,PAGE = 1.reset: > RESET,PAGE = 0, TYPE = DSECTvectors: > VECTORSPAGE = 0, TYPE = DSECT } /* //=========================================================================== // End of file. //=========================================================================== */
APP CMD 文件
-heap 0x400 MEMORY { PAGE 0:/* Program Memory *//* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */RAM_BOOTPROG: origin = 0x008000, length = 0x000020/* on-chip RAM block L0, bootloader 中对时间敏感函数 */RAM_PROG: origin = 0x008020, length = 0x000520/* on-chip RAM block L0, bootloader 数据接收缓存区,1313byte,每次接收1Kb */RAM_CLAPRG: origin = 0x009000, length = 0x001000/* For CLA*/OTP: origin = 0x3D7800, length = 0x000400/* on-chip OTP*/Flash_EEPROM: origin = 0x3E8000, length = 0x002000/* Flash EEPROM 扇区H */APP_VER: origin = 0x3EA000, length = 0x000010/* 应用程序版本号 ,16Byte*/FLASH_APPPROG : origin = 0x3EA010, length = 0x00BFEC/* 应用程序存储空间,47.98 Kb BFEC*/APP_START: origin = 0x3F5FFC, length = 0x000002/* 应用程序入口 2Byte */BOOT_VER: origin = 0x3F6000, length = 0x000002/* Bootloader 程序版本号 */FLASH_BOOTRAM : origin = 0x3F6002, length = 0x000020/* FLASH 操作函数存储空间 */FLASH_RTS: origin = 0x3F6022, length = 0x00032E/* RTS库空间 */BOOT_UPDATE: origin = 0x3F6350, length = 0x000002/* Bootloader程序 升级入口地址*/BOOT_RESET: origin = 0x3F6352, length = 0x000002/* Bootloader程序 复位入口地址*/FLASH_BOOT: origin = 0x3F6354, length = 0x001C2C/* bootloader程序存储空间 7.04kB */CSM_RSVD: origin = 0x3F7F80, length = 0x000076/* !!!不能修改 */BEGIN: origin = 0x3F7FF6, length = 0x000002/* !!!不能修改 */CSM_PWL_P0: origin = 0x3F7FF8, length = 0x000008/* !!!不能修改 */IQTABLES: origin = 0x3FE000, length = 0x000B50/* IQ Math Tables in Boot ROM */IQTABLES2: origin = 0x3FEB50, length = 0x00008C/* IQ Math Tables in Boot ROM */IQTABLES3: origin = 0x3FEBDC, length = 0x0000AA/* IQ Math Tables in Boot ROM */ROM: origin = 0x3FF27C, length = 0x000D44/* Boot ROM */RESET: origin = 0x3FFFC0, length = 0x000002/* part of boot ROM */VECTORS: origin = 0x3FFFC2, length = 0x00003E/* part of boot ROM */ PAGE 1 :/* Data Memory *//* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation *//* Registers remain on PAGE1*/BOOT_RSVD: origin = 0x000000, length = 0x000050/* Part of M0, BOOT rom will use this for stack */RAMM0: origin = 0x000050, length = 0x0003B0/* on-chip RAM block M0 */RAMM1: origin = 0x000400, length = 0x000400/* on-chip RAM block M1 */RAM_DATA: origin = 0x008940, length = 0x0006C0/* For .ebss */CLA2CPU: origin = 0x001480, length = 0x000080/* CLA1_MSGRAMLOW */CPU2CLA: origin = 0x001500, length = 0x000080/* CLA1_MSGRAMHIGH */FLASH_BOOTDATA : origin = 0x3F7754, length = 0x00082C/* BootLoader数据空间 ,共计2.04Kb*/FLASH_APPDATA : origin = 0x3F4010, length = 0x001FEC/* 应用程序数据空间 ,共计7.98Kb*/APP_CHECK: origin = 0x3F5FFE, length = 0x000001/* 应用升级标志 */JTAG_FLAG: origin = 0x3F5FFF, length = 0x000001/* JTAG 仿真标志 */ } /* Allocate sections to memory blocks.Note:codestart user defined section in DSP28_CodeStartBranch.asm used to redirect codeexecution when booting to flashramfuncs user defined section to store functions that will be copied from Flash into RAM */ SECTIONS {/* Bootloader :14/14 */codestart: > APP_START,PAGE = 0UpdateEntry: > BOOT_UPDATE,PAGE = 0BootReset: > BOOT_RESET,PAGE = 0FlashBoot: > FLASH_BOOT,PAGE = 0RamBoot: LOAD = FLASH_BOOTRAM,RUN = RAM_BOOTPROG,LOAD_START(_RamBootLoadStart),LOAD_END(_RamBootLoadEnd),RUN_START(_RamBootRunStart),PAGE = 0 /*Rts: LOAD = FLASH_RTS, PAGE = 0{-lrts2800_ml.lib <exit.obj _lock.obj> (.text)-lrts2800_ml.lib <exit.obj _lock.obj> (.cinit)} */BootVer: > BOOT_VER,PAGE = 0AppStart: > APP_START,PAGE = 0AppCheck: > APP_CHECK,PAGE = 1JtagFlag: > JTAG_FLAG,PAGE = 1/* Bootloader :14/14 End*//* Application Version*/AppVer: > APP_VER,PAGE = 0/* Allocate program areas: */.cinit: > FLASH_APPPROGPAGE = 0.pinit: > FLASH_APPPROG,PAGE = 0.text: > FLASH_APPPROGPAGE = 0ramfuncs: LOAD = FLASH_APPPROG,RUN = RAM_PROG,LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),PAGE = 0csmpasswds: > CSM_PWL_P0 PAGE = 0csm_rsvd: > CSM_RSVDPAGE = 0/* Allocate uninitalized data sections: */.stack: > RAMM1,PAGE = 1.cio: >> RAMM0 | RAMM1, PAGE = 1.sysmem: > RAMM0,PAGE = 1.ebss: > RAM_DATA,PAGE = 1.esysmem: > RAM_DATA,PAGE = 1/* Initalized sections go in Flash *//* For SDFlash to program these, they must be allocated to page 0 */.econst: > FLASH_APPPROG,PAGE = 0.switch: > FLASH_APPPROG,PAGE = 0.const: > FLASH_APPPROGPAGE = 0/* Allocate IQ math areas: */IQmath: > FLASH_APPPROG,PAGE = 0/* Math Code */IQmathTables: > IQTABLES,PAGE = 0, TYPE = NOLOADCla1Prog: LOAD = FLASH_APPPROG,RUN = RAM_CLAPRG,LOAD_START(_Cla1funcsLoadStart),LOAD_END(_Cla1funcsLoadEnd),RUN_START(_Cla1funcsRunStart),PAGE = 0Cla1ToCpuMsgRAM: > CLA2CPU,PAGE = 1CpuToCla1MsgRAM: > CPU2CLA,PAGE = 1.reset: > RESET,PAGE = 0, TYPE = DSECTvectors: > VECTORSPAGE = 0, TYPE = DSECT } /* //=========================================================================== // End of file. //=========================================================================== */
Barbecue:
可以用CCS在线Debug Bootloader程序,跟踪到跳转指令处
通过汇编窗口观察当前指令所在地址
如果未发现问题,请贴出跳转指令截图
,
Ben Qin:
参考下楼上的回复