大家好!有懂得的高手指点一下,我在启动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;");也不行)
}
此帖出自
小平头技术问答
// ---------------------------------------------------------
// 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的中断向量地址不能重叠。
一周热门 更多>