最近用CCS3.3编译一套伺服程序,比较大(估计数十万行),编译结束生成.OUT文件前,报错,总是提示RAM_L不能分配空间,我查了一下是RAM_L分配的长度不够,我将其增大,比如下面代码中粗体length = 0x002FF8 ,则通过。
令我不解的是,此套代码在老外那里是没有任何问题的,可是到我这里为什么为出现这样的错误,还有,我如果采用我的一台比较老的笔记本WIN xp系统,则不会提示这样的错误(现在采用的是WIN7,系统安装了VM虚拟机,然后VM装了XP系统)
MEMORY { RAM_M : origin = 0x000000, length = 0x000800
PIE_VECT : origin = 0x000D00, length = 0x000100
RAM_L : origin = 0x007000, length = 0x001FF8
RAM_H : origin = 0x3A8000, length = 0x001FF8
OTP : origin = 0x3D7800, length = 0x000800
….
}
rookiecalf:
可能和编译器的版本有关,你看一下实际使用空间是多大,是不是在0x1FF8左右
最近用CCS3.3编译一套伺服程序,比较大(估计数十万行),编译结束生成.OUT文件前,报错,总是提示RAM_L不能分配空间,我查了一下是RAM_L分配的长度不够,我将其增大,比如下面代码中粗体length = 0x002FF8 ,则通过。
令我不解的是,此套代码在老外那里是没有任何问题的,可是到我这里为什么为出现这样的错误,还有,我如果采用我的一台比较老的笔记本WIN xp系统,则不会提示这样的错误(现在采用的是WIN7,系统安装了VM虚拟机,然后VM装了XP系统)
MEMORY { RAM_M : origin = 0x000000, length = 0x000800
PIE_VECT : origin = 0x000D00, length = 0x000100
RAM_L : origin = 0x007000, length = 0x001FF8
RAM_H : origin = 0x3A8000, length = 0x001FF8
OTP : origin = 0x3D7800, length = 0x000800
….
}
frank li4:
回复 rookiecalf:
老外的编译器版本是ccs3.1我用3.1和3.3都试过都是同样的错误,改天我把具体的错误图发出来。
最近用CCS3.3编译一套伺服程序,比较大(估计数十万行),编译结束生成.OUT文件前,报错,总是提示RAM_L不能分配空间,我查了一下是RAM_L分配的长度不够,我将其增大,比如下面代码中粗体length = 0x002FF8 ,则通过。
令我不解的是,此套代码在老外那里是没有任何问题的,可是到我这里为什么为出现这样的错误,还有,我如果采用我的一台比较老的笔记本WIN xp系统,则不会提示这样的错误(现在采用的是WIN7,系统安装了VM虚拟机,然后VM装了XP系统)
MEMORY { RAM_M : origin = 0x000000, length = 0x000800
PIE_VECT : origin = 0x000D00, length = 0x000100
RAM_L : origin = 0x007000, length = 0x001FF8
RAM_H : origin = 0x3A8000, length = 0x001FF8
OTP : origin = 0x3D7800, length = 0x000800
….
}
user4187796:
回复 frank li4:
你自己修改程序了吗 或者定义变量了吗
最近用CCS3.3编译一套伺服程序,比较大(估计数十万行),编译结束生成.OUT文件前,报错,总是提示RAM_L不能分配空间,我查了一下是RAM_L分配的长度不够,我将其增大,比如下面代码中粗体length = 0x002FF8 ,则通过。
令我不解的是,此套代码在老外那里是没有任何问题的,可是到我这里为什么为出现这样的错误,还有,我如果采用我的一台比较老的笔记本WIN xp系统,则不会提示这样的错误(现在采用的是WIN7,系统安装了VM虚拟机,然后VM装了XP系统)
MEMORY { RAM_M : origin = 0x000000, length = 0x000800
PIE_VECT : origin = 0x000D00, length = 0x000100
RAM_L : origin = 0x007000, length = 0x001FF8
RAM_H : origin = 0x3A8000, length = 0x001FF8
OTP : origin = 0x3D7800, length = 0x000800
….
}
frank li4:
回复 user4187796:
[Linking…] "C:\CCStudio_v3.3\C2000\cgtools\bin\cl2000" -@"PCB4123456_Release.lkf" <Linking> >> error: can't allocate .intflash, size 00028a0d (page 0) in FLASH_INT (avail: 0001fff0) >> error: can't allocate .fastram_h, size 000001c0 (page 0) in RAM_H (avail: 000001e2) >> error: can't allocate .sysmem, size 00000100 (page 0) in RAM_L (avail: 000000f7) >> error: errors in input – ./_t_654_123456/654.out not built
>> Compilation failure
不好意思这么晚,前段时间太忙了,
我的出错信息如下,我一段程序也没有改,不知道什么原因?
最近用CCS3.3编译一套伺服程序,比较大(估计数十万行),编译结束生成.OUT文件前,报错,总是提示RAM_L不能分配空间,我查了一下是RAM_L分配的长度不够,我将其增大,比如下面代码中粗体length = 0x002FF8 ,则通过。
令我不解的是,此套代码在老外那里是没有任何问题的,可是到我这里为什么为出现这样的错误,还有,我如果采用我的一台比较老的笔记本WIN xp系统,则不会提示这样的错误(现在采用的是WIN7,系统安装了VM虚拟机,然后VM装了XP系统)
MEMORY { RAM_M : origin = 0x000000, length = 0x000800
PIE_VECT : origin = 0x000D00, length = 0x000100
RAM_L : origin = 0x007000, length = 0x001FF8
RAM_H : origin = 0x3A8000, length = 0x001FF8
OTP : origin = 0x3D7800, length = 0x000800
….
}
Eric Ma:
回复 frank li4:
要看一下老外有没有使用编译器的优化功能,因为使用优化,就会让代码变得更小。优化功能见build option。
Eric
最近用CCS3.3编译一套伺服程序,比较大(估计数十万行),编译结束生成.OUT文件前,报错,总是提示RAM_L不能分配空间,我查了一下是RAM_L分配的长度不够,我将其增大,比如下面代码中粗体length = 0x002FF8 ,则通过。
令我不解的是,此套代码在老外那里是没有任何问题的,可是到我这里为什么为出现这样的错误,还有,我如果采用我的一台比较老的笔记本WIN xp系统,则不会提示这样的错误(现在采用的是WIN7,系统安装了VM虚拟机,然后VM装了XP系统)
MEMORY { RAM_M : origin = 0x000000, length = 0x000800
PIE_VECT : origin = 0x000D00, length = 0x000100
RAM_L : origin = 0x007000, length = 0x001FF8
RAM_H : origin = 0x3A8000, length = 0x001FF8
OTP : origin = 0x3D7800, length = 0x000800
….
}
frank li4:
回复 mangui zhang:
多谢了,我看了下,opt level等级是o3,但是我把 program level Opt: 改为设定 Pragram Mode Compilation 后编译跟之前不一样了,但是现在出现了2个错误如下:
[Linking…] "C:\CCStudio_v3.3\C2000\cgtools\bin\cl2000" -@"PCB123456_Release.lkf" <Linking> >> 123.cmd: error: system error, can't open file 'dummy_fat.obj' for input: No such file or directory
>> Compilation failure
可是,我搜索了一下“ PCB123456_Release.lkf” 里面的路径是对的,而却存在'dummy_fat.obj' 这个文件
不知是怎么回事?
最近用CCS3.3编译一套伺服程序,比较大(估计数十万行),编译结束生成.OUT文件前,报错,总是提示RAM_L不能分配空间,我查了一下是RAM_L分配的长度不够,我将其增大,比如下面代码中粗体length = 0x002FF8 ,则通过。
令我不解的是,此套代码在老外那里是没有任何问题的,可是到我这里为什么为出现这样的错误,还有,我如果采用我的一台比较老的笔记本WIN xp系统,则不会提示这样的错误(现在采用的是WIN7,系统安装了VM虚拟机,然后VM装了XP系统)
MEMORY { RAM_M : origin = 0x000000, length = 0x000800
PIE_VECT : origin = 0x000D00, length = 0x000100
RAM_L : origin = 0x007000, length = 0x001FF8
RAM_H : origin = 0x3A8000, length = 0x001FF8
OTP : origin = 0x3D7800, length = 0x000800
….
}
rookiecalf:
回复 frank li4:
使用rebuild试试
最近用CCS3.3编译一套伺服程序,比较大(估计数十万行),编译结束生成.OUT文件前,报错,总是提示RAM_L不能分配空间,我查了一下是RAM_L分配的长度不够,我将其增大,比如下面代码中粗体length = 0x002FF8 ,则通过。
令我不解的是,此套代码在老外那里是没有任何问题的,可是到我这里为什么为出现这样的错误,还有,我如果采用我的一台比较老的笔记本WIN xp系统,则不会提示这样的错误(现在采用的是WIN7,系统安装了VM虚拟机,然后VM装了XP系统)
MEMORY { RAM_M : origin = 0x000000, length = 0x000800
PIE_VECT : origin = 0x000D00, length = 0x000100
RAM_L : origin = 0x007000, length = 0x001FF8
RAM_H : origin = 0x3A8000, length = 0x001FF8
OTP : origin = 0x3D7800, length = 0x000800
….
}
Eric Ma:
回复 frank li4:
program level Opt, 改成off,或空白, 然后把debug那个文件夹删掉,rebuild。
ERIC
最近用CCS3.3编译一套伺服程序,比较大(估计数十万行),编译结束生成.OUT文件前,报错,总是提示RAM_L不能分配空间,我查了一下是RAM_L分配的长度不够,我将其增大,比如下面代码中粗体length = 0x002FF8 ,则通过。
令我不解的是,此套代码在老外那里是没有任何问题的,可是到我这里为什么为出现这样的错误,还有,我如果采用我的一台比较老的笔记本WIN xp系统,则不会提示这样的错误(现在采用的是WIN7,系统安装了VM虚拟机,然后VM装了XP系统)
MEMORY { RAM_M : origin = 0x000000, length = 0x000800
PIE_VECT : origin = 0x000D00, length = 0x000100
RAM_L : origin = 0x007000, length = 0x001FF8
RAM_H : origin = 0x3A8000, length = 0x001FF8
OTP : origin = 0x3D7800, length = 0x000800
….
}
mangui zhang:
回复 frank li4:
楼主 问题解决了吗 想知道答案