社区导航

 

搜索
查看: 9065|回复: 21

[讨论] msp430 bootloader中断向量重映射问题

[复制链接]

3584

TA的帖子

5

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

发表于 2015-7-21 12:01 | 显示全部楼层 |阅读模式
           最近项目需要用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");

    }

}



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

回复

使用道具 举报

502

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2015-7-21 13:49 | 显示全部楼层
那你先试试标志位放在rom,const unsigned char AddrFlag;

点评

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

回复

使用道具 举报

3584

TA的帖子

5

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

 楼主| 发表于 2015-7-21 14:01 | 显示全部楼层
weizhongc 发表于 2015-7-21 13:49
那你先试试标志位放在rom,const unsigned char AddrFlag;

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

点评

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

回复

使用道具 举报

502

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2015-7-21 14:10 | 显示全部楼层
本帖最后由 weizhongc 于 2015-7-21 14:19 编辑

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

点评

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

回复

使用道具 举报

3584

TA的帖子

5

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

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

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

回复

使用道具 举报

2351

TA的帖子

3

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

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


点评

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

回复

使用道具 举报

2351

TA的帖子

3

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2015-7-21 14:29 | 显示全部楼层
1.jpg

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

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

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

电工

回复

使用道具 举报

3584

TA的帖子

5

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

 楼主| 发表于 2015-7-21 15:09 | 显示全部楼层
lyzhangxiang 发表于 2015-7-21 14:26
不是所有的系列都能够把vector放到RAM中的,f5是支持的,ti官方有例子,找个看看吧

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

点评

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

回复

使用道具 举报

1775

TA的帖子

0

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

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

点评

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

回复

使用道具 举报

3584

TA的帖子

5

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

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

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

回复

使用道具 举报

1775

TA的帖子

0

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2015-7-21 16:50 | 显示全部楼层
wateras1 发表于 2015-7-21 14:01
这个不行,我之前也这样修改过,但是你的变量就不能修改了

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

回复

使用道具 举报

2351

TA的帖子

3

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2015-7-22 09:04 | 显示全部楼层
wateras1 发表于 2015-7-21 15:09
兄弟,我已经说了是msp430f149,没有硬件寄存器将中断向量表搞到ram中

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

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

电工

回复

使用道具 举报

696

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2015-9-28 11:29 | 显示全部楼层
楼主是在探讨新的方法解决 双APP区的切换问题,以及bootloader 中不使用中断的问题。                我在一篇文章里看到不使用中断,通过判断寄存器是否变化来解决中断问题。目前我是刚刚寻找这方面资料。帮不上你。

点评

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

回复

使用道具 举报

3584

TA的帖子

5

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

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

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

回复

使用道具 举报

696

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2015-9-28 13:36 | 显示全部楼层
本帖最后由 wanzsxit 于 2015-9-28 13:37 编辑

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

回复

使用道具 举报

9

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

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

点评

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

回复

使用道具 举报

6902

TA的帖子

90

TA的资源

裸片初长成(初级)

Rank: 10Rank: 10Rank: 10

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

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

回复

使用道具 举报

3584

TA的帖子

5

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

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

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

回复

使用道具 举报

9

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

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

点评

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

回复

使用道具 举报

3584

TA的帖子

5

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

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

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

回复

使用道具 举报

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

关闭

站长推荐上一条 1/6 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-3-29 22:54 , Processed in 0.546185 second(s), 20 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表