8305|15

29

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于MSP430中断向量表是否在RAM里有一个固定的区间 [复制链接]

求助:

关于MSP430中断向量表一般是在  0XFFE0~0XFFFF区间放置中段向量表。。。

使用bootloader升级时,将用户文件的中断向量表映射到RAM中去,是否在ram中有固定的区间,可以跳转。

谢谢大家帮忙!

 

最新回复

不知道楼主有没解决了问题  详情 回复 发表于 2015-7-15 17:26
 
点赞 关注

回复
举报

419

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
你是说BSL?没有听说要映射到RAM。BSL升级时程序在BSL段执行,不在主flash。
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发 woody_chen 的帖子

不是 BSL,是做一个无线下载程序的,bootloader里面使用了中断,在用户程序里面也有中断,将中断向量表放置在flash里面了,但是程序不能去跳转到用户文件的中断向量表位置去执行中断。不知道怎么跳转?听说RAM里面有一段放置中断向量表的,可以通过设置寄存器来选择跳转进入flash的中断向量表和RAM里面的中断向量表。
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 沙发 woody_chen 的帖子

//******************************************************************************
// 描述: 中断向量列表
#pragma vector=0
__interrupt void intec_0(void)
{
  asm(" br &0xF9E0;");
}

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

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

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


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

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

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

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

#pragma vector=16
__interrupt void intec_8(void)
{
  asm(" br &0xF9F0;");
}

#pragma vector=18
__interrupt void intec_9(void)              // 应用程序的串口中断0的中断向量地址
{
  asm(" br &0xF9F2;");
}

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

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

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

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

#pragma vector=28
__interrupt void intec_14(void)
{
  asm(" br &0xF9FC;");
}

请问以上是跳转吗?如果把把 中断APP的向量表放在0XF9E0~0XF9FF.
谢谢!
 
 
 

回复

419

帖子

0

TA的资源

一粒金砂(高级)

5
 
430没有把中断向量表放在RAM的,M3有这个功能。
我们一般是把bootloader的程序放在flash的最后2个段(1024B)或者更多。然后把向量表都指向跳转指令,更新程序的时候更新跳转后的向量表就好了。下面是一些事例代码,仅供参考。这里我把用户的向量表指向了0x1080开始的32个字节。
;===============================================================================
        ASEG              ;换行
        ORG 0xffa0    ;用户中断向量,
;-------------------------------------------------------------------------------
        Int_Priority_0: MOV.W         &0x1080, PC
        Int_Priority_1: MOV.W         &0x1082, PC
        Int_Priority_2: MOV.W         &0x1084, PC
        Int_Priority_3: MOV.W         &0x1086, PC
        Int_Priority_4: MOV.W         &0x1088, PC
        Int_Priority_5: MOV.W         &0x108A, PC
        Int_Priority_6: MOV.W         &0x108C, PC
        Int_Priority_7: MOV.W         &0x108E, PC
        Int_Priority_8: MOV.W         &0x1090, PC
        Int_Priority_9: MOV.W         &0x1092, PC
        Int_Priority_A: MOV.W         &0x1094, PC
        Int_Priority_B: MOV.W         &0x1096, PC
        Int_Priority_C: MOV.W         &0x1098, PC
        Int_Priority_D: MOV.W         &0x109A, PC
        Int_Priority_E: MOV.W         &0x109C, PC
        Int_Priority_F: MOV.W         &0x109E, PC
;===============================================================================
;   Interrupt vectorsz
        ASEGN         INTVEC: CODE, 0xFFE0
;===============================================================================
        DW  Int_Priority_0  ;FFE0
        DW  Int_Priority_1  ;FFE2
        DW  Int_Priority_2  ;FFE4
        DW  Int_Priority_3  ;FFE6
        DW  Int_Priority_4  ;FFE8
        DW  Int_Priority_5  ;FFEA
        DW  Int_Priority_6  ;FFEC
        DW  Int_Priority_7  ;FFEE
        DW  Int_Priority_8  ;FFF0
        DW  Int_Priority_9  ;FFF2
        DW  Int_Priority_A  ;FFF4
        DW  Int_Priority_B  ;FFF6
        DW  Int_Priority_C  ;FFF8
        DW  Int_Priority_D  ;FFFA
        DW  Int_Priority_E  ;FFFC
;        DW  Int_Priority_F  ;FFFE
        ;/
 
 
 

回复

5015

帖子

13

TA的资源

裸片初长成(初级)

6
 
目前还没看到有文献说中断向量表在RAM中的,有可能是我没看到
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 5楼 woody_chen 的帖子

好的,非常谢谢,我在查些资料看一下怎么跳转到制定的位置!
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

8
 

回复 6楼 wstt 的帖子

您好,请问我把中断APP的向量表放在 flash 的0XF9E0~0XF9FF位置.执行的时候怎么去跳转到这个中断向量表里面执行?
谢谢!
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

9
 
请问用户程序的中断怎么跳转?
 
 
 

回复

5015

帖子

13

TA的资源

裸片初长成(初级)

10
 

回复 8楼 jiayouhan2011 的帖子

我认为可以把默认的中断向量表的跳转地址指向你目前设置的中断向量表
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

11
 
其实很简单,修改xcl文件即可。

你的bl程序使用一个xcl然后你的app在使用一个xcl。
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

12
 

回复纯净的硅

谢谢!修来 xcl文件了,但是我在bl中使用了中断。我现在不知道该怎么跳转到用户中断
向量表
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

13
 
请问在bootloader里面使用了与APP相同中断,怎么处理?
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

14
 

回复 13楼 jiayouhan2011 的帖子

我看到的例子是 bl中不使用终端,但是我的程序里面是有 中断的。
 
 
 

回复

242

帖子

0

TA的资源

纯净的硅(中级)

15
 
我没有用过MSP430,但是C51的自定义位置的BL运用还算熟练。C51的中断表是在FLASH中固定位置的,所以BL中不能随意使用中断。如果一定要用,就必须同lyzhangxiang所说,修改编译文件,避免新程序覆盖BL的中断程序
 
个人签名以摆脱无知为起点,以力求专业为目标
 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

16
 
不知道楼主有没解决了问题
 
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

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