大家好!
在我的MC9S12XDP512系统中,我在保留的 $008000~$0F7FFF RAM区域扩展了128K的RAM(采用CS3片选信号)。现在有一个问题:即程序在正常扩展模式下(MODC,MODB,MODA管脚通过拨码开关设为101)无法烧写。出现提示信息“Elf Loader: Error while writing to FF7A..1017A"。但是,程序在正常单片模式下(MODC,MODB,MODA管脚通过拨码开关设为100)可以正常烧写;且烧写完后,再设置为正常扩展模式,就可以访问外部RAM了。
我想问的是:HCS12X系列单片机能在正常扩展模式下直接烧写程序吗?如果可以的话,上述现象的问题在哪里呢?怎样可以解决?(因为我的系统目标是汽车级ECU,希望在ECU中尽量不要设置拨码开关。)大家帮忙看看吧!下面是我的程序:
我的程序选用的是LARGE内存模式,采用的是P&E MultiLink(Rev.C)烧写器。
main.c文件如下: #include /* common defines and macros */ #include /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12xdp512"
#pragma DATA_SEG __GPAGE_SEG EXT_RAM
unsigned int pagedRamVariable = 0xAA; unsigned int secondRamVariable =0x08;
#pragma DATA_SEG DEFAULT
unsigned int * __rptr pointerToVariable;
void main(void) {
EBICTL0 = 0x31; // enables the higher half of the 16-bit data bus., ADDR[16:1] and UDS aviailable EBICTL1 = 0x00; // Stretch=1 cycle MMCCTL0 = 0x08; // Enable CS3 chip select MMCCTL1 = 0x07; // Enable Flash or ROM in the memory map. MODE = 0xA0; // Normal expanded mode
//write a value pagedRamVariable=0xBB; secondRamVariable =0x09;
//Initialize pointer to point at address of pagedRamVariable pointerToVariable=&pagedRamVariable;
//write another value via use of pointer *pointerToVariable=0x24;
pointerToVariable=&secondRamVariable;
for(;;) { }
}
Prm文件如下: ...
/* Here we use gloabl addressing*/ MY_RAM = READ_WRITE 0x0D8000'G TO 0x0F7FFF'G;
...
EXT_RAM INTO MY_RAM;
[此贴子已经被作者于2008-4-24 11:19:15编辑过] |