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 code execution when booting to flash ramfuncs user defined section to store functions that will be copied from Flash into RAM */ SECTIONS { /* Bootloader :14/14 */ codestart : > BEGIN, PAGE = 0 UpdateEntry : > BOOT_UPDATE, PAGE = 0 BootReset : > BOOT_RESET, PAGE = 0 FlashBoot : > FLASH_BOOT, PAGE = 0 RamBoot : 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_BOOT PAGE = 0, ALIGN(4) ramfuncs : LOAD = FLASH_BOOT, RUN = RAM_PROG, LOAD_START(_RamfuncsLoadStart), LOAD_END(_RamfuncsLoadEnd), RUN_START(_RamfuncsRunStart), PAGE = 0 csmpasswds : > CSM_PWL_P0 PAGE = 0 csm_rsvd : > CSM_RSVD PAGE = 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_BOOT PAGE = 0, ALIGN(4) /* Allocate IQ math areas: */ IQmath : > FLASH_BOOT, PAGE = 0 /* Math Code */ IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD Cla1Prog : LOAD = FLASH_APPPROG, RUN = RAM_CLAPRG, LOAD_START(_Cla1funcsLoadStart), LOAD_END(_Cla1funcsLoadEnd), RUN_START(_Cla1funcsRunStart), PAGE = 0 Cla1ToCpuMsgRAM : > CLA2CPU, PAGE = 1 CpuToCla1MsgRAM : > CPU2CLA, PAGE = 1 .reset : > RESET, PAGE = 0, TYPE = DSECT vectors : > VECTORS PAGE = 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 code execution when booting to flash ramfuncs user defined section to store functions that will be copied from Flash into RAM */ SECTIONS { /* Bootloader :14/14 */ codestart : > APP_START, PAGE = 0 UpdateEntry : > BOOT_UPDATE, PAGE = 0 BootReset : > BOOT_RESET, PAGE = 0 FlashBoot : > FLASH_BOOT, PAGE = 0 RamBoot : 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 AppStart : > APP_START, PAGE = 0 AppCheck : > APP_CHECK, PAGE = 1 JtagFlag : > JTAG_FLAG, PAGE = 1 /* Bootloader :14/14 End*/ /* Application Version*/ AppVer : > APP_VER, PAGE = 0 /* Allocate program areas: */ .cinit : > FLASH_APPPROG PAGE = 0 .pinit : > FLASH_APPPROG, PAGE = 0 .text : > FLASH_APPPROG PAGE = 0 ramfuncs : LOAD = FLASH_APPPROG, RUN = RAM_PROG, LOAD_START(_RamfuncsLoadStart), LOAD_END(_RamfuncsLoadEnd), RUN_START(_RamfuncsRunStart), PAGE = 0 csmpasswds : > CSM_PWL_P0 PAGE = 0 csm_rsvd : > CSM_RSVD PAGE = 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_APPPROG PAGE = 0 /* Allocate IQ math areas: */ IQmath : > FLASH_APPPROG, PAGE = 0 /* Math Code */ IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD Cla1Prog : LOAD = FLASH_APPPROG, RUN = RAM_CLAPRG, LOAD_START(_Cla1funcsLoadStart), LOAD_END(_Cla1funcsLoadEnd), RUN_START(_Cla1funcsRunStart), PAGE = 0 Cla1ToCpuMsgRAM : > CLA2CPU, PAGE = 1 CpuToCla1MsgRAM : > CPU2CLA, PAGE = 1 .reset : > RESET, PAGE = 0, TYPE = DSECT vectors : > VECTORS PAGE = 0, TYPE = DSECT } /* //=========================================================================== // End of file. //=========================================================================== */