Board logo

标题: XGATEZ中断向量表 [打印本页]

作者: chengzei    时间: 2008-9-9 14:58     标题: XGATEZ中断向量表

看了关于XGATE 的一些程序,

其中有

XGVBR = (Uint16)(void*__far)(VectorTable_XGATE - XGATE_VECTOR_OFFSET)

VectorTable_XGATE是XGATE中断向量表名,

XGATE_VECTOR_OFFSET是9;

请问各位大侠 为什么这个地方要减9???


作者: GaoTristone    时间: 2008-9-13 01:55

因为前9个向量对xgate而言是空的。请参见xgate.cxgate源文件中的向量表及注释:

const XGATE_TableEntry XGATE_VectorTable[] = {
// Channel # = Vector address / 2
/* channel 0..8 are not used, first used must match macro XGATE_VECTOR_OFFSET in xgate.h */
{ErrorHandler, 0x09}, // Channel 09 - Reserved
{ErrorHandler, 0x0A}, // Channel 0A - Reserved

....

...


作者: daixiaoke    时间: 2009-4-29 17:10

减去9是因为前9个中断向量在向量表中没有定义,但却占据了空间。
作者: xiaoxiaoheifu    时间: 2009-5-7 22:11

XGVBR中存放的必须是向量模块的基地址,而codewarrior 中默认的xgate向量表中的通道是从9开始的,所以必须减去,以和向量模块的逻辑基地址一致。
作者: maryshuang    时间: 2009-5-20 12:14

看不到






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0