13996|21

3238

帖子

5

TA的资源

五彩晶圆(中级)

楼主
 

msp430 bootloader中断向量重映射问题 [复制链接]

           最近项目需要用msp430f149整IAP升级,涉及到了bootloader的设计。目前遇到一个比较棘手的问题就是中断向量地址重映射问题。我目前的方法是在boot程序中通过asm("br &0xxxxx");指令来跳转到app的中断向量地址,但是这种方法有个局限性,只能开辟一个app空间,对于开辟两个app空间,这种方法有问题。我之前也采用网上的方法用一个全局变量去判断跳转到A还是B的虚拟中断向量地址,但是我发现一个问题,就是全局变量可能会被app区域的全局变量改写导致app程序运行不正常,我看网上有网友说将中断向量地址映射到ram中,不知道这个具体怎么做?还有一个问题,目前我遇到的boot,基本都是不使用串口中断接收更新固件,除非app中不使用串口中断,不知道有没更好的解决办法?





#pragma vector=PORT1_VECTOR

__interrupt void PORT1_ISR(void)

{

    if(AddrFlag==0)

    {

        asm("br &0xF7E8");

    }

    else

    {

        asm("br &0x84E8");

    }

}



最新回复

你好,我最近也正好碰到这个问题。想请教一下,最好这个问题怎么解决的呢?我也是要开辟三个应用空间中断向量映射问题不用跳转语句,不知道怎么解决跳转到哪一个应用程序。   详情 回复 发表于 2020-3-26 11:16
 
点赞 关注
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目

回复
举报

466

帖子

0

TA的资源

版主

沙发
 
那你先试试标志位放在rom,const unsigned char AddrFlag;

点评

这个不行,我之前也这样修改过,但是你的变量就不能修改了  详情 回复 发表于 2015-7-21 14:01
 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

板凳
 
weizhongc 发表于 2015-7-21 13:49
那你先试试标志位放在rom,const unsigned char AddrFlag;

这个不行,我之前也这样修改过,但是你的变量就不能修改了

点评

可以像51单片机那样,将这个常量固定在某个地址上,然后要更改的时候就进行擦除再写,这个方法可不可行?  详情 回复 发表于 2015-7-21 16:50
 
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 

回复

466

帖子

0

TA的资源

版主

4
 
本帖最后由 weizhongc 于 2015-7-21 14:19 编辑

那你就申请内存吧, 把这个标志位的内存地址指向最后的地址试试吧。我不信覆盖了

点评

mspf149的ram才2k,现在我的app就快到2k了,应该更新下固件就更不用说了,这个方法不太可行。  详情 回复 发表于 2015-7-21 14:21
 
 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

5
 
本帖最后由 wateras1 于 2015-7-21 14:22 编辑
weizhongc 发表于 2015-7-21 14:10
那你就申请内存吧, 把这个标志位的内存地址指向最后的地址试试吧。我不信覆盖了

msp430f149的ram才2k,现在我的app ram就快到2k了很可能被覆盖掉,以后更新下固件就更不用说了,这个方法不太可行。
 
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

6
 
不是所有的系列都能够把vector放到RAM中的,f5是支持的,ti官方有例子,找个看看吧
  1.     /*
  2.      * 将中断向量表移动到RAM中
  3.      * 注意只有部分系列芯片才会有这个寄存器
  4.      */
  5.     SYSCTL |= SYSRIVECT;
复制代码


点评

兄弟,我已经说了是msp430f149,没有硬件寄存器将中断向量表搞到ram中  详情 回复 发表于 2015-7-21 15:09
 
个人签名电工
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

7
 


我曾经尝试的一些记录,may help you

官方的代码包好像是这个名字,我没有备份,自己的boot不能上传,抱歉

尝试找找这种名字的官方包吧,ti的工程师维护的代码,MSP430F5438A_RAM_INT_VECT_IAR

 
个人签名电工
 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

8
 
lyzhangxiang 发表于 2015-7-21 14:26
不是所有的系列都能够把vector放到RAM中的,f5是支持的,ti官方有例子,找个看看吧

兄弟,我已经说了是msp430f149,没有硬件寄存器将中断向量表搞到ram中

点评

不好意思没仔细看,仅看到楼主位有这样的字样 我看网上有网友说将中断向量地址映射到ram中,不知道这个具体怎么做? 仅针对这个简单的说了两点,没有帮到你实在抱歉 现在提问的都这么霸气,以后还是少掺和这种  详情 回复 发表于 2015-7-22 09:04
 
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 

回复

1976

帖子

0

TA的资源

五彩晶圆(初级)

9
 
帮顶一下,看了两遍还是不太明白,为什么要重映射中断向量,是因为 APP里会用到中断吗?

点评

是的  详情 回复 发表于 2015-7-21 16:38
 
 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

10
 
bobde163 发表于 2015-7-21 16:19
帮顶一下,看了两遍还是不太明白,为什么要重映射中断向量,是因为 APP里会用到中断吗?

是的
 
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 

回复

1976

帖子

0

TA的资源

五彩晶圆(初级)

11
 
wateras1 发表于 2015-7-21 14:01
这个不行,我之前也这样修改过,但是你的变量就不能修改了

可以像51单片机那样,将这个常量固定在某个地址上,然后要更改的时候就进行擦除再写,这个方法可不可行?
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

12
 
wateras1 发表于 2015-7-21 15:09
兄弟,我已经说了是msp430f149,没有硬件寄存器将中断向量表搞到ram中

不好意思没仔细看,仅看到楼主位有这样的字样
我看网上有网友说将中断向量地址映射到ram中,不知道这个具体怎么做?
仅针对这个简单的说了两点,没有帮到你实在抱歉

现在提问的都这么霸气,以后还是少掺和这种事

 
个人签名电工
 
 

回复

674

帖子

0

TA的资源

五彩晶圆(中级)

13
 
楼主是在探讨新的方法解决 双APP区的切换问题,以及bootloader 中不使用中断的问题。                我在一篇文章里看到不使用中断,通过判断寄存器是否变化来解决中断问题。目前我是刚刚寻找这方面资料。帮不上你。

点评

boot中段地址重映射有两种方法:一种就是跳转指令,另外一种就是寄存器来设置  详情 回复 发表于 2015-9-28 12:16
 
 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

14
 
wanzsxit 发表于 2015-9-28 11:29
楼主是在探讨新的方法解决 双APP区的切换问题,以及bootloader 中不使用中断的问题。                我在 ...

boot中段地址重映射有两种方法:一种就是跳转指令,另外一种就是寄存器来设置
 
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 

回复

674

帖子

0

TA的资源

五彩晶圆(中级)

15
 
本帖最后由 wanzsxit 于 2015-9-28 13:37 编辑

"(boot 里不用中断,串口接收用判断寄存器的方法)"   出自的评论里http://www.deyisupport.com/quest ... 0/f/55/t/51847.aspx                                                  串口接收中断要在BOOT里用 ,判断寄存器的方法。
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

16
 
你好,想请问,你这个问题解决了么,我在做G2553的时候也碰到这个问题了,不知道怎样去映射中断到RAM中?

点评

这个需要寄存器配合的,像ARM类都带了相关寄存器,msp430f149没带  详情 回复 发表于 2016-4-27 17:33
建议单独发帖,会有更多的人来关注你的问题!  详情 回复 发表于 2016-4-27 15:55
 
 
 

回复

6066

帖子

92

TA的资源

裸片初长成(初级)

17
 
anring 发表于 2016-4-27 15:53
你好,想请问,你这个问题解决了么,我在做G2553的时候也碰到这个问题了,不知道怎样去映射中断到RAM中?

建议单独发帖,会有更多的人来关注你的问题!
 
 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

18
 
anring 发表于 2016-4-27 15:53
你好,想请问,你这个问题解决了么,我在做G2553的时候也碰到这个问题了,不知道怎样去映射中断到RAM中?

这个需要寄存器配合的,像ARM类都带了相关寄存器,msp430f149没带
 
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

19
 
对的,我发现msp430g2553也没有带类似的寄存器,那应该怎么处理这个中断的问题呢?想问问你是怎么解决的?

点评

我做的是不带串口中断,使用的是循环等待来接受串口数据  详情 回复 发表于 2016-4-28 11:12
 
 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

20
 
anring 发表于 2016-4-27 20:55
对的,我发现msp430g2553也没有带类似的寄存器,那应该怎么处理这个中断的问题呢?想问问你是怎么解决的?

我做的是不带串口中断,使用的是循环等待来接受串口数据
 
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表