6853|7

15

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于MSP430FR6972的bootloader地址跳转求助 [复制链接]

大家好!有懂得的高手指点一下,我在启动MSP430FR6972的bootloader以后,将APP程序下载到制定的区域5400—FF7F,下载的也都正确(实际的数据和下载进去的都对了一遍),为什么我跳转不到需要执行的app地址(0x5450)。跳转程序如下请指点
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;");也不行)
}
此帖出自单片机论坛

最新回复

博主,有制作好的工程吗?能不能发我一份,万分感谢  详情 回复 发表于 2018-1-16 09:08
点赞 关注
 

回复
举报

664

帖子

108

TA的资源

纯净的硅(中级)

沙发
 
不懂这个。
“-Z(CODE)CSTART,ISR_CODE=4400-5400”,是否应该到53FF呀?
你所说的0x5450地址从哪来的?在你的代码中看不出来呀。
此帖出自单片机论坛
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
最后还是自己解决了,主要的步骤有四步:
1配置bootloader的xcl文件。
boot的中断向量分配
-Z(CONST)SIGNATURE=FF80-FF8F
-Z(CODE)INTVEC=FF90-FFFF
-Z(CODE)RESET=FFFE-FFFF
2再配置app应用软件的xcl文件。
app的中断向量分配
-Z(CONST)SIGNATURE=F980-F98F
-Z(CODE)INTVEC=F990-F9FF
-Z(CODE)RESET=F9FE-F9FF
3虚拟app的中断向量
// 描述: 中断向量列表
#pragma vector=0
__interrupt void intec_0(void)
{
asm(" br &0xF990;");
}

#pragma vector=2
__interrupt void intec_1(void)
{
asm(" br &0xF992;");
}

#pragma vector=4
__interrupt void intec_2(void)
{
asm(" br &0xF994;");
}

#pragma vector=6
__interrupt void intec_3(void)
{
asm(" br &0xF996;");
}

#pragma vector=8
__interrupt void intec_4(void)
{
asm(" br &0xF998;");
}

#pragma vector=10
__interrupt void intec_5(void)
{
asm(" br &0xF99A;");
}

#pragma vector=AES256_VECTOR
__interrupt void intec_27(void)
{
asm(" br &0xF9C6;");
}

#pragma vector=RTC_VECTOR
__interrupt void intec_28(void)
{
asm(" br &0xF9C8;");
}

#pragma vector=LCD_C_VECTOR
__interrupt void intec_29(void)
{
asm(" br &0xF9CA;");
}

#pragma vector=PORT4_VECTOR
__interrupt void intec_30(void)
{
asm(" br &0xF9CC;");
}

#pragma vector=PORT3_VECTOR
__interrupt void intec_31(void)
{
asm(" br &0xF9CE;");
}

#pragma vector=TIMER3_A1_VECTOR
__interrupt void intec_32(void)
{
asm(" br &0xF9D0;");
}

#pragma vector=TIMER3_A0_VECTOR
__interrupt void intec_33(void)
{
asm(" br &0xF9D2;");
}

#pragma vector=PORT2_VECTOR
__interrupt void intec_34(void)
{
asm(" br &0xF9D4;");
}

#pragma vector=TIMER2_A1_VECTOR
__interrupt void intec_35(void)
{
asm(" br &0xF9D6;");
}

#pragma vector=TIMER2_A0_VECTOR
__interrupt void intec_36(void)
{
asm(" br &0xF9D8;");
}

#pragma vector=PORT1_VECTOR
__interrupt void intec_37(void)
{
asm(" br &0xF9DA;");
}

#pragma vector=TIMER1_A1_VECTOR
__interrupt void intec_38(void)
{
asm(" br &0xF9DC;");
}

#pragma vector=TIMER1_A0_VECTOR
__interrupt void intec_39(void)
{
asm(" br &0xF9DE;");
}

#pragma vector=DMA_VECTOR
__interrupt void intec_40(void)
{
asm(" br &0xF9E0;");
}

#pragma vector=USCI_B1_VECTOR
__interrupt void intec_41(void)
{
asm(" br &0xF9E2;");
}

#pragma vector=USCI_A1_VECTOR
__interrupt void intec_42(void)
{
asm(" br &0xF9E4;");
}

#pragma vector=TIMER0_A1_VECTOR
__interrupt void intec_43(void)
{
asm(" br &0xF9E6;");
}

#pragma vector=TIMER0_A0_VECTOR
__interrupt void intec_44(void)
{
asm(" br &0xF9E8;");
}

#pragma vector=ADC12_VECTOR
__interrupt void intec_45(void)
{
asm(" br &0xF9EA;");
}

#pragma vector=USCI_B0_VECTOR
__interrupt void intec_46(void)
{
asm(" br &0xF9EC;");
}

#pragma vector=USCI_A0_VECTOR
__interrupt void intec_47(void)
{
asm(" br &0xF9EE;");
}

#pragma vector=WDT_VECTOR
__interrupt void intec_49(void)
{
asm(" br &0xF9F2;");
}

#pragma vector=TIMER0_B1_VECTOR
__interrupt void intec_50(void)
{
asm(" br &0xF9F4;");
}

#pragma vector=TIMER0_B0_VECTOR
__interrupt void intec_51(void)
{
asm(" br &0xF9F6;");
}

#pragma vector=COMP_E_VECTOR
__interrupt void intec_52(void)
{
asm(" br &0xF9F8;");
}

#pragma vector=UNMI_VECTOR
__interrupt void intec_53(void)
{
asm(" br &0xF9FA;");
}

#pragma vector=SYSNMI_VECTOR
__interrupt void intec_54(void)
{
asm(" br &0xF9FC;");
}
4然后通过bootloader的串口烧写app的txt文件,烧写完成要跳转执行app程序里xcl设置的reset(烧写完成执行这个代码asm(" mov &0xF9FE, PC;");)。程序就会自动到app分配的程序首地址去运行app程序。
此帖出自单片机论坛
 
 
 

回复

2万

帖子

71

TA的资源

管理员

4
 
谢谢分享经验  嘿嘿
此帖出自单片机论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 
楼主您好,想请教下您,我 的iar调试的 时候整个fram里的数据都会被擦除掉,您有遇到类似问题不,怎么解决的,万分感谢!
此帖出自单片机论坛

点评

改xcl文件设置  详情 回复 发表于 2017-8-31 10:14
 
 
 

回复

1059

帖子

1

TA的资源

版主

6
 
kinarethy 发表于 2017-8-30 16:53
楼主您好,想请教下您,我 的iar调试的 时候整个fram里的数据都会被擦除掉,您有遇到类似问题不,怎么解决 ...

改xcl文件设置
此帖出自单片机论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

7
 
chenjx_ortega 发表于 2017-6-6 17:26
最后还是自己解决了,主要的步骤有四步:
1配置bootloader的xcl文件。
boot的中断向量分配
-Z(CONST)SIG ...

虚拟中断向量表示在bootloader中设置还是APP程序啊,这点没弄明白,我可以跳转到APP程序了,但中断映射没清楚,APP中不是更改了中断的位置么,程序还是回到原先的位置找程序然后在跳转,那么我们在xcl中的改写还有什么意义,不是应该直接到我们修改好的地址去找么,这样不就不需要中断映射了?图片中1和2,那个是正确的路径啊?

P71123-140941.jpg (448.24 KB, 下载次数: 0)

P71123-140941.jpg
此帖出自单片机论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

8
 
博主,有制作好的工程吗?能不能发我一份,万分感谢
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表