打印
[技术问答]

N76E003内存空间不足问题请教

[复制链接]
811|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cr315|  楼主 | 2020-12-11 11:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
怎么使用中内存单元只有不到130个字节?具体如下:

程序定义如下:#define        RECEIVE_BUFFER_SIZE 13
UINT8  Uart_Receive_Buffer[RECEIVE_BUFFER_SIZE];

编译OK的如下:
Program Size: data=129.0 xdata=0 code=1776
creating hex file from ".\Output\ALLL_LCD"...
".\Output\ALLL_LCD" - 0 Error(s), 0 Warning(s).



但数组仅增加一个字节就报溢出了,是什么问题?不是有256个内存单元吗?
#define        RECEIVE_BUFFER_SIZE 13
UINT8  Uart_Receive_Buffer[RECEIVE_BUFFER_SIZE];

编译错误的如下:
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   DATA   
    SEGMENT: ?DT?_TIMER3_DELAY10US?DELAY
    LENGTH:  0004H
Program Size: data=130.0 xdata=0 code=1776
Target not created

使用特权

评论回复
沙发
jackyhuang1988| | 2020-12-11 17:26 | 只看该作者
你的xdata都还没用到,768字节,先把默认内存放到xdata,如下图配置


然后,如果你想用前面的256字节片内,定义的时候加idata,像这样    UINT8 idata UART0RcvValidData[128];

使用特权

评论回复
板凳
ayb_ice| | 2020-12-14 16:34 | 只看该作者
data=128,idata=256

char idata xxxx...

使用特权

评论回复
地板
tianxj01| | 2020-12-15 14:38 | 只看该作者
本帖最后由 tianxj01 于 2020-12-15 14:41 编辑

RAM多呢,还有768吧记得扩展内存空间呢。通过idata  给变量定义到内部扩展寄存器,指令有部分限制,速度基本上差不多。
通过给变量定义xdata  可以直接把内存设置到芯片内部的外接内存,因为是通过间接地址访问,所以效率上面稍稍有点影响,但那些不常用的变量,设置到这里,是完全不影响机器运行效率的。
xdata关键词,不支持bit类型变量,避开这个就可以了。  

使用特权

评论回复
5
paotangsan| | 2021-1-8 20:45 | 只看该作者
不应该只有这么一点字节

使用特权

评论回复
6
renzheshengui| | 2021-1-8 21:11 | 只看该作者
是不是代码里边有大的数组啥的了

使用特权

评论回复
7
wakayi| | 2021-1-8 21:26 | 只看该作者
按照沙发说的设置一下

使用特权

评论回复
8
wowu| | 2021-1-8 21:31 | 只看该作者
非常不错的解决办法

使用特权

评论回复
9
xiaoqizi| | 2021-1-8 21:33 | 只看该作者
默认的配置也不会这么小的

使用特权

评论回复
10
海滨消消| | 2021-1-22 11:00 | 只看该作者

在target里面 选用large模式 ,启用xdata即可

使用特权

评论回复
11
七毛钱| | 2021-1-22 11:01 | 只看该作者

編譯器選定的編譯,出現的記憶體錯誤,請選定large即可

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1320

主题

3786

帖子

0

粉丝