关于MSP430FR6972 bootloader的地址跳转到APP的问题

2019-03-24 08:33发布

大家好!有懂得的高手指点一下,我在启动MSP430FR6972的bootloader以后,将APP程序下载到制定的区域5400—FF7F,下载的也都正确(实际的数据和下载进去的都对了一遍),为什么我跳转不到需要执行的app地址(0x5450)。编译环境为IAR。
bootloader XCL的配置
// Code
//
-Z(CODE)CSTART,ISR_CODE=4400-5400
-Z(CODE)USERSEGMENT=5400-FF7F
-Z(CODE)SCIINTSEGMENT=4A00-4D00

跳转程序如下:
#pragma location="USERSEGMENT"
void USERS_APP(void)
{

仿真断点设到这里,地址是指向0x5400了没错的,但是一运行就跑飞了,到0x4210了!
这里面需要做什么,搞不清楚。(加入asm(" mov &0x5450, PC;");或者asm(" mov &0x5400, PC;");也不行)
}
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
chenjx_ortega
1楼-- · 2019-03-24 14:27
 精彩回答 2  元偷偷看……
chenjx_ortega
2楼-- · 2019-03-24 15:14
< :TI_MSP430_内容页_SA7 --> APP的xcl配置表:
// ---------------------------------------------------------
// Configuation
//
// -----------------------------------------------
// Stack and heap sizes
//
// Uncomment for command line use
-D_STACK_SIZE=80
-D_DATA16_HEAP_SIZE=80
-D_DATA20_HEAP_SIZE=80
//-g?mpu2_init
//-g__iar_430_ipe_signature
// -----------------------------------------------
// Define cpu
//
-cmsp430
// -----------------------------------------------
// Support for placing functions in read/write memory
//
-QCODE_I=CODE_ID
// -----------------------------------------------
// Support for thread local storage
//
-QTLS16_I=TLS16_ID
// -----------------------------------------------
// Hardware multiplier location
//
-D__iar_HWMUL=4C0
// ---------------------------------------------------------
// Placement directives
//
// -----------------------------------------------
// Information memory
//
-Z(CONST)INFO=1800-19FF
-Z(CONST)INFOA=1980-19FF
-Z(CONST)INFOB=1900-197F
-Z(CONST)INFOC=1880-18FF
-Z(CONST)INFOD=1800-187F
// -----------------------------------------------
// RAM memory
//
-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,TLS16_I=1C00-23FF
-Z(DATA)CODE_I
-Z(DATA)DATA20_I,DATA20_Z,DATA20_N
-Z(DATA)CSTACK+_STACK_SIZE#
// -----------------------------------------------
// FRAM memory
//
// -------------------------------------
// Low memory 0-0FFFF
//
// ---------------------------
// Read/write data in FRAM
//
-Z(CONST)DATA16_P,DATA20_P=5400-FF7F
//-Z(DATA)DATA16_HEAP
//-Z(DATA)DATA20_HEAP
-Z(DATA)DATA16_HEAP+_DATA16_HEAP_SIZE
-Z(DATA)DATA20_HEAP+_DATA20_HEAP_SIZE
// ---------------------------
// Memory Protection Unit (MPU) border
//
-Z(CONST)MPU_B1
// ---------------------------
// Constant data
//
-Z(CONST)DATA16_C,DATA16_ID,TLS16_ID,DIFUNCT,CHECKSUM=5400-FF7F
// ---------------------------
// Memory Protection Unit (MPU) border
//
-Z(CONST)MPU_B2
// ---------------------------
// Intellectual Property Encapsulation (IPE)
//
-Z(CONST)IPE_B1=5400-FF7F
-Z(CODE)IPECODE16
-Z(CONST)IPEDATA16_C,IPE_B2
// ---------------------------
// Code
//
-Z(CODE)CSTART,ISR_CODE=5400-FF7F
//-Z(CODE)USERSEGMENT=5400-FF7F
//-Z(CODE)SCIINTSEGMENT=4A00-4D00

// -------------------------------------
// All memory 0-FFFFF
//
// ---------------------------
// Code
//
-P(CODE)CODE=5400-FF7F
-Z(CODE)CODE_PAD
// ---------------------------
// Constant data
//
-Z(CONST)DATA20_C,DATA20_ID,CODE_ID=5400-FF7F
// -------------------------------------
// Signature memory and interrupt vectors
//
-Z(CONST)SIGNATURE=FF80-FF8F
-Z(CODE)INTVEC=FF90-FFFF
-Z(CODE)RESET=FFFE-FFFF
-------------------------关于这里最后一项是不是有问题?bootloader的中断向量和app的中断向量地址不能重叠。
qwerghf
3楼-- · 2019-03-24 21:05
参考附件范例
chenjx_ortega
4楼-- · 2019-03-25 02:24
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章