Board logo

标题: 如何设置才能使程序大于16KB后,仿真器仍能正常工作? [打印本页]

作者: zenwang    时间: 2008-2-18 11:28     标题: 如何设置才能使程序大于16KB后,仿真器仍能正常工作?

版主你好,我用的是 M9S12D64 芯片,使用 P&E Multilink/Cyclone Pro 在线仿真器进行程序调试.当我的程序大于16KB 后,必须在文件 Simulator_linker.prm 文件中把以下语句: ROM_C000 = READ_ONLY 0xC000 TO 0xFEFF; 更改为以下语句:
ROM_C000 = READ_ONLY 0x8000 TO 0xFEFF;
这样修改后,程序能经过编译,下载到芯片中也能正常运行.
但使用P&E Multilink/Cyclone Pro 在线仿真器调试程序时发现:运行程序时,经过设置好的中断点处仿真器不能使程序停下来,也就是说设置的中断点失效了.
请问版主如何设置才能使程序大于16KB后,仿真器仍能正常工作? 不尽感激!
作者: strongchen    时间: 2008-2-18 15:43

你的主程序不必放入ROM_C000中,而应该放入DEFAULT ROM中,这样就不受16K的限制了。ROM_C000的地址是固定的,不能这么修改。但是,中断程序必须放入非分页地址中,用这种申明格式:

#pragma CODE_SEG NON_BANKED
interrupt void Int_ISR(void){}
作者: zenwang    时间: 2008-2-18 17:45

谢版主的热情回应!
我的Simulator_linker.prm 文件如下:
NAMES
END

SEGMENTS
RAM = READ_WRITE 0x0400 TO 0x0FFF; //0x0400 TO 0x0FFF; 0x3000 TO 0x3FFF
/* unbanked FLASH ROM */
ROM_C000 = READ_ONLY 0xC000 TO 0xFEFF;
/* banked FLASH ROM */
PAGE_3C = READ_ONLY 0x3C8000 TO 0x3CBFFF;
PAGE_3D = READ_ONLY 0x3D8000 TO 0x3DBFFF;
PAGE_3E = READ_ONLY 0x3E8000 TO 0x3EBFFF;
/* PAGE_3F = READ_ONLY 0x3F8000 TO 0x3FBFFF; not used: equivalent to ROM_C000 */
END

PLACEMENT
_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 */
DEFAULT_ROM, NON_BANKED , /* runtime routines which must not be banked */
COPY /* copy down information: how to initialize variables */
INTO ROM_C000;
OTHER_ROM INTO PAGE_3C,PAGE_3D,PAGE_3E;
DEFAULT_RAM INTO RAM;
END

STACKSIZE 0x400 //0x100

VECTOR 0 _Startup /* reset vector: this is the default entry point for a C/C++ application. */
//VECTOR 0 Entry /* reset vector: this is the default entry point for a Assembly application. */
//INIT Entry /* for assembly applications: that this is as well the initialisation entry point */

不知看样修改此文件,才能把我的主程序放入DEFAULT ROM中,从而就不受16K的限制.

另外我说设置的中断点失效了,是指仿真程序时设置的断点失效了,不是指中断程序失效.


作者: zenwang    时间: 2008-2-19 09:27

对不起,打错了一个字,下面这句:
不知看样修改此文件,才能把我的主程序放入DEFAULT ROM中,从而就不受16K的限制.
应改为:
不知怎样修改此文件,才能把我的主程序放入DEFAULT ROM中,从而就不受16K的限制.
作者: strongchen    时间: 2008-2-19 10:10

你的PRM文件不是用WIZARD引导生成的吧,为什么将DEFAULT_ROM放入ROM_C000了呢?那你用OTHER_ROM就好了。
作者: zenwang    时间: 2008-2-22 12:13

确实,重新用WIZARD引导生成项目后就正常了.
谢谢版主,并祝新年快乐!




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