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

XGATEZ中断向量表

XGATEZ中断向量表

看了关于XGATE 的一些程序,

其中有

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

VectorTable_XGATE是XGATE中断向量表名,

XGATE_VECTOR_OFFSET是9;

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

因为前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

....

...

减去9是因为前9个中断向量在向量表中没有定义,但却占据了空间。
XGVBR中存放的必须是向量模块的基地址,而codewarrior 中默认的xgate向量表中的通道是从9开始的,所以必须减去,以和向量模块的逻辑基地址一致。

看不到

返回列表