首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]关于XGATE的几个问题,希望大家讨论一下

[求助]关于XGATE的几个问题,希望大家讨论一下

首先,我想知道如果想要Xgate处理多个中断时,是否应该这样写:

#define ROUTE_INTERRUPT(vec_adr, cfdata) \
INT_CFADDR= (vec_adr) & 0xF0; \
INT_CFDATA_ARR[((vec_adr) & 0x0F) >> 1]= (cfdata)

#define SOFTWARETRIGGER0_VEC 0x72 /* vector address= 2 * channel id */
#define IRQ_ISR 0xF2
#define PORTH_ISR 0xCC
#define ATD0_ISR 0xD2
#define ATD1_ISR 0xD0
#define MDC_ISR 0xCA

然后SetupXGATE中写:
ROUTE_INTERRUPT(SOFTWARETRIGGER0_VEC, 0x81); /* RQST=1 and PRIO=1 */
ROUTE_INTERRUPT(IRQ_ISR, 0x81);
ROUTE_INTERRUPT(PORTH_ISR, 0x81);
ROUTE_INTERRUPT(ATD0_ISR, 0x81);
ROUTE_INTERRUPT(ATD1_ISR, 0x81);
ROUTE_INTERRUPT(MDC_ISR, 0x81);

另外,_sif()是将中断交给S12X_CPU处理,那么是不是说比如进行SCI中断,那么XGATE 可以处理一部分,用_sif()可以把剩余部分交给CPU中SCI的处理程序继续处理。

能否在CPU处理一部分后,把剩余工作交给XGATE?用什么函数或宏定义来实现。

XGATE中断在处理完中断后,程序是自动转给CPU执行正常操作吗?

好多东西不用不知道,一旦用起来才发现那么多问题,不知道哪位大虾以前做过,希望不吝赐教!
10.3.1.9 XGATE Software Trigger Register (XGSWT)
该寄存器提供了8个CPU触发XGATE的中断调用
如:XGSWT=0x0101 就是调用XGATE的软件中断0
-------------------------------------------------------------

这个我看到过,可是它不是CPU进入XGATE的软件调用吗?

而且如果在TBDML或其他硬件连接方式下好像不大好用,我只在Full Chip Simulation下才能进入XGATE,难道有什么特殊设置吗?
谢谢,你给我的程序是完全由XGATE来执行的吧!
SoftwareTrigger1_Handler中的XGSWT=0x0200;是结束执行了吗?为什么要用这条语句?

另外,想请教一下,下面这两条语句当中,0x81和0x84是表示什么意思,我原来以为默认就是0x81,不需要修改呢!
ROUTE_INTERRUPT(0x72,0x81);

//switch software trigger 1 interrupt to XGATE
ROUTE_INTERRUPT(0x70,0x84);
XGSWT=0x0200清标志后,程序如何跳转呢?
哦,谢谢!
因为我刚好用的就是XDT256,XD系列只有中断1可以嵌套中断0啊?

那像我这样写
ROUTE_INTERRUPT(IRQ_ISR, 0x81);
ROUTE_INTERRUPT(PORTH_ISR, 0x81);
ROUTE_INTERRUPT(ATD0_ISR, 0x81);
ROUTE_INTERRUPT(ATD1_ISR, 0x81);
ROUTE_INTERRUPT(MDC_ISR, 0x81);
只能是表示大家都是同样优先级喽?没有其他办法了吧?
哈哈,原来是这样!

原以为现在的XGATE使用起来一样呢!

谢谢TristoneGao了!
返回列表