这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » N76E003内存空间不足怎么解决?

共2条 1/1 1 跳转至

N76E003内存空间不足怎么解决?

工程师
2024-10-05 16:31:26     打赏

怎么使用中内存单元只有不到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 ".OutputALLL_LCD"...
".OutputALLL_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





关键词: N76E003     内存     空间    

助工
2024-10-05 16:32:40     打赏
2楼

根据您提供的信息,N76E003芯片有256个字节的内存单元。根据您的程序定义,定义了一个大小为13的UINT8型数组Uart_Receive_Buffer。您在编译过程中指定了数组的大小为1,并且编译通过了。但是当您尝试增加数组的大小时,程序出现了溢出报错。

溢出报错是因为N76E003芯片的内存空间不足以容纳您定义的数组。根据程序编译的结果,您可以看到data区已经使用了129个字节,而xdata区没有使用任何字节。

解决方法可以有以下几种:
1. 减小数组的大小:您可以修改宏定义RECEIVE_BUFFER_SIZE的值为一个可以被芯片内存容纳的较小的值。
2. 优化代码:查看代码中是否存在无用的变量或数组,删除不需要的部分,从而释放更多的内存空间。
3. 使用外部存储器:如果芯片本身内存空间不足,可以考虑使用外部存储器,将一部分数据存储在外部存储器中。

其实我认为可以更简单点,在target里面 选用large模式 ,启用xdata即可


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]