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

MC9S12XDP512扩展后的烧写问题

MC9S12XDP512扩展后的烧写问题

大家好!

在我的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编辑过]

如果需要BDM通讯并工作,那么MCU的引脚配置应设置成正常单片模式,启动后用程序将芯片改为正常扩展模式即可。外部引脚连接不用改变。
海纳百川  有容乃大
返回列表