Board logo

标题: [求助]DG128B调试遇到的中断向量问题 [打印本页]

作者: worldcs    时间: 2008-12-4 14:57     标题: [求助]DG128B调试遇到的中断向量问题

调试失败信息:

Link Error : L1108: Initializing of Vector Timer_Int failed because of over- or underflow of vector value

Link Error : Link failed

其中Timer_Int为时钟中断 函数原型:

#pragma TRAP_PROC

void Timer_Int(void) //定时中断CAN通信

{ }

中断入口: VECTOR ADDRESS 0x0000FFCA Timer_Int

请教高手是什么原因link失败,找了很久都没搞清楚。我查看了下link map 发现装入中断入口的地址很大:

*********************************************************************

VECTOR-ALLOCATION SECTION Address InitValue InitFunction

-----------------------------------------------------------------------------------------

0xFFCA 0x3881AA Timer_Int /*此为不正常的,16位的单片机应该是16bit的,此处什么原因造成?

0xFFFE 0xC000 _Startup /*正常情况下的,中断入口内容

*********************************************************************


作者: strongchen    时间: 2008-12-5 09:43

中断函数(入口地址)必须放入非分页地址中。

论坛中有很多相关的帖子,搜索一下吧。


作者: worldcs    时间: 2008-12-5 19:10

是要放到非分页地址中,我的疑问就是怎么保证它是在非分页地址中,是不是在.prm文件中?

另外:prm中

PLACEMENT
TimerInt,
_PRESTART, /* Used in HIWARE format: jump to _Startup at the code start */
STARTUP, /* startup data structures */
ROM_VAR, /* constant variables */
STRINGS, /* string literals */
VIRTUAL_TABLE_SEGMENT, /* C++ virtual table segment */
NON_BANKED, /* runtime routines which must not be banked */
COPY /* copy down information: how to initialize variables */
/* in case you want to use ROM_4000 here as well, make sure
that all files (incl. library files) are compiled with the
option: -OnB=b */
INTO ROM_C000 /*, ROM_4000*/;
DEFAULT_ROM INTO PAGE_38,PAGE_39,PAGE_3A,PAGE_3B,PAGE_3C,PAGE_3D;
DEFAULT_RAM INTO RAM;
END

是什么意思,有没有什么文档或者资料可也看下。


作者: strongchen    时间: 2008-12-8 09:31

用#pragma CODE_SEG NON_BANKED申明就可将代码放入非分页地址中。

这段PRM文件中的说明就是将不同的数据和代码放入相应的段中,段的地址也是在PRM文件中定义的。






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