hongshanger
驱动小牛
驱动小牛
  • 注册日期2004-07-19
  • 最后登录2006-04-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
阅读:1075回复:5

又遇到烦人的地址溢出问题了,读写过程

楼主#
更多 发布于:2004-09-27 17:21
刚刚调通了枚举,进入u盘读写过程,就遇到这个问题:
ERROR 107:SPACE ADDRESS OVERFLOW <MAIN.M51>;
以前遇到过几次,其中有一次是把setup包设置为xdata型,就通过了,setup包枚举过程中是8个字节,可以存储到内部ram中,但是传递过程却溢出,现在在读写过程中又定义了一些变量,两个结构体,调试的时候就遇到这个问题,我把所有的函数中函数体部分都屏蔽掉,还是不行,又把函数也屏蔽掉,只剩下一个,才可以编译通过,请问dx怎么做啊
新手上路,各位大侠莫不理睬
hongshanger
驱动小牛
驱动小牛
  • 注册日期2004-07-19
  • 最后登录2006-04-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-27 17:30
我试了试不带行参,这样至少空函数可以调试通过,那么就说明是内部ram没有空间了吗?解决的办法必须是把局部变量全部改成全局变量吗?
新手上路,各位大侠莫不理睬
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-28 08:33
一般的做法是定义一个8字节长的不定量,然后将SETUP命令根据要求
放入里面分析.但对于你是HOST,你可以定义常数(对每个SETUP命令来
说),然后根据情况把他们发送出去.
新手上路,请多关照.
hongshanger
驱动小牛
驱动小牛
  • 注册日期2004-07-19
  • 最后登录2006-04-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-28 09:34
我已经把setup包设置成xdata型,也顺利通过了,这个不考虑了,我现在碰到的问题是ERROR 267 IN LINE 557 OF e:\sl811\MASSSTORAGE.c:'DelayMs':requires ANSI-style prototype
我在host_811.c里面定义了函数DelayMs,在main这个项目中包含了MassStorage.c和host_811.c这两个模块,但是调试时就出现这个问题。不是在一个项目中的模块可以调用其它模块中定义的函数吗?
新手上路,各位大侠莫不理睬
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-28 23:30
最好不要在c文件中#include XXX.c文件,只要#include XXX.h文件即可,这样便于管理。

另外,你确定你硬件中有外部RAM吗?如果没有,使用xdata是不正确的。你可以看一下你的MCU,如果是52以上,可以在编译器中选择响应类型,这样片内有256字节RAM,此时,你可以使用idata。

另外,看一下warning,如果有很多未被调用的函数,是比较消耗内存的。
A strong man can save himself. A great man can save another.
hongshanger
驱动小牛
驱动小牛
  • 注册日期2004-07-19
  • 最后登录2006-04-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-29 08:29
谢谢。我已经改过来了,我有外部ram。2k的,内部ram有256byte,但是在枚举过程中就已经不够用了
新手上路,各位大侠莫不理睬
游客

返回顶部