TI中文支持网
TI专业的中文技术问题搜集分享网站

重定义中断向量表,中断不响应的问题。求解答~谢谢~~

各位TI的大神好,我用的是5438A。

1. 我在 5C00 – FFFF 的flash 空间内存在 两段程序(修改了.xcl 文件)。

2. 其中 程序一(应用程序) 占有 5C00 – DF7F ,占有虚拟中断为 DF80 – DFFF(重定义中断向量表)

3. 再次 程序二(引导程序) 占有 E000 – FF7F , 占有真实中断 FF80  – FFFF,在程序二中虚拟中断向量表(DF80 – DFFF)表给程序一。

4. 两端程序 均使用了 串口中断。程序执行顺序是 : 上电先执行程序二,一段时间后跳入程序一。

5. 程序二中 重定义的中断向量(下面为串口中断)

#pragma vector=114

__interrupt void intec_57(void) // USCI_A0_ISR

{   if(满足跳转条件){ asm ("br &0xDFF2;"); }

…….

…….// 程序二串口中断程序 

}

6 程序一 串口中断

#pragma vector=USCI_A0_VECTOR

__interrupt void USCI_A0_ISR(void)

{ …….

………// 程序一串口中断程序

 }

 

现在只知道程序二的串口中断没有问题,但是在进入程序一后,发现串口中断未响应。

1 为什么进入到程序一后,中断没有实现跳转,想知道到底 是哪里的  逻辑 出了问题。 

2. 对于串口升级  重定义 向量表 这一块儿  网上说的都很模糊,一笔带过,问题是应用程序根本没进去中断!

 

user3785308:

奇了怪了~~~  各位 TI 大神, 能给个回应不??

Shi JianHua:

回复 user3785308:

坛子里头ti的FAE、这个真的没弄过

user3785308:

回复 Shi JianHua:

看来 还是 去找英文的吧。。。。。。。哎~~~  努力奋斗~~缩小与国外差距~~

you kevin:

回复 user3785308:

这个问题真是棘手,请问仁兄你现在解决了吗?可以传授一下经验不?谢谢。

user3785308:

回复 you kevin:

串口升级算是解决了(boot 里不用中断,串口接收用判断寄存器的方法)~~不过  在 boot 程序里加入中断,如何处理 冲突这个问题 依然没解决~~感觉上依然没有理解到 深邃~~

你要是没解决就把 底下的文档好好看看吧~~

注意:   连续升级需要擦除以前的程序,定义好 .xcl  文件~~~  要是用这个附件发表文章的话别忘 了人家哈~~

TUN LE:

回复 user3785308:

你好!。看你分享的那个文章我做了 但现在有个问题

第一次用引导程序烧写应用程序没问题,能运行

但到了第二次烧写应用程序不能运行了(烧写前已经擦除)

我看映射的中断向量地址还是保留着第一次烧写的那个程序,而且也不能擦除

现在不知道怎么解决 你做的如何了  能不能与我分享一下 谢谢了!

user3785308:

回复 TUN LE:

你好~

1. 需要把 boot 和 应用程序在flash上完全分开~~

2. 上面文档里的 flash 擦除为段擦出,一次 512 字节~~ 记着要把 应用程序擦干净

  3.  再次更新,为了避免串口故障,最好重启一下(我是碰到了,我这边mcu的上位机 是一个芯片,它通过串口给我发完更新包后串口就挂掉了,导致不掉电再次更细程序就出错了)

其它的问题咱们再交流~~主要还是多试验吧~~

YU YU3:

回复 user3785308:

rayray在不?

你的问题我也遇到了。。。唉

bing ye:

回复 user3785308:

请问您还在这吗,我也遇到了这个问题,那篇文档我也看了,在中断向量表重置那里,将引导程序的中断跳到用户app的中断位置,你的升级放到主程序里面通过寄存器判断实现,可是串口发送数据的时候仍旧会进入串口中断啊,就是您中断向量重置的那个vector=18的那个,那不是变成了每次发送升级数据都会跳转的了吗

chao Fang1:

回复 user3785308:

哪有英文啊?有指导文件啊?

赞(0)
未经允许不得转载:TI中文支持网 » 重定义中断向量表,中断不响应的问题。求解答~谢谢~~
分享到: 更多 (0)