feifei1997 发表于 2010-11-15 10:50:10

求教NEC-78k0系列扩展RAM空间如何应用?

芯片是78K0893,目前问题是这样的:
应用78K0做了个自升级(BOOT)部分同时带有主程序部分(MAIN).

应用到的.DR文件内容如下:merge MeterDat:=IXRAM


在BOOT部分可以用RAM空间,看到BOOT.MAP文件里也用到了0XE000地址.
BOOT定位0XE000地址的语句:#pragma section @@DATA MeterDat AT 0xe000

可是如果在MAIN部分,就不能用:#pragma section @@DATA MeterDat AT 0xe000来定位变量的位置.
编译时候报如下错误:
..\SOURCE\XXX.c(43) : CC78K0 error E0842: Unrecognized pragma SECTION '@@DATA'
..\SOURCE\XXX.c(46) : CC78K0 error E0842: Unrecognized pragma SECTION '@@DATA'


实验过很多种方法,发现在单独不带BOOT部分的程序部分就是MAIN程序的空间可以包含BLOCK0-BLOCK7内容时候,用:#pragma section @@DATA MeterDat AT 0xe000可以做到正确分配;
但是如果MAIN程序空间里面不包括BLOCK0-BLOCK7内容时候不能够用上面方法将变量放到0XE000-0XF800地址处.
也实验过直接定位:__directmap UCHAR aa=0xe500;或者:__directmap UCHAR aa={0xe500};都不能够正确放置.

大侠们有什么高见呢?

feifei1997 发表于 2010-11-15 12:01:53

自己顶下
希望有经验的大侠帮忙指导下啊

37772166 发表于 2010-11-15 13:46:23

不知道LZ用的什么开发软件,我用的IAR使用扩展RAM的时候我是这样写的
#pragma dataseg = IXRAM//使用扩展的RAM
__no_init int x;
#pragma dataseg = default

feifei1997 发表于 2010-11-15 14:21:38

用的PM软件,关键是:
:#pragma section @@DATA MeterDat AT 0xe000
在正常程序里面可以用
但是加到自升级的MAIN部分就不能用啊,在BOOT中也是可以用的

feifei1997 发表于 2010-11-15 14:22:37

回复【2楼】37772166
-----------------------------------------------------------------------

这个IAR软件我没有用过

feifei1997 发表于 2010-11-16 09:48:36

在UP下

feifei1997 发表于 2010-11-18 16:55:50

已解决

pilibihu 发表于 2011-3-28 11:18:58

回复【6楼】feifei1997
-----------------------------------------------------------------------
我也遇到这样的问题,feifei1997如何解决的,请指教。 qq:275817283
页: [1]
查看完整版本: 求教NEC-78k0系列扩展RAM空间如何应用?