CN / EN
CN / EN

提问

获得支持

您的项目私密技术问题如需获得一对一支持,请点击下方联系我们。

gr5513 sdk ram划分问题 GR551x

774****com

2021-11-08 10:00

gr5513 128k ram在sdk中是怎么划分的,从keil编译信息上看, 大概在90k左右编译就会报错,远没有128k。

0收藏

0赞成

Ping

汇顶员工
2021-11-08 14:33

可以参考如下GR551X的RAM Layout,Keil编译显示的RAM大小未包含协议栈16KB、主栈8KB以及RAM CODE等。

1. 协议栈16KB空间不可修改;

2. 主栈空间定义可参考custom_config.h文件如下定义,用于SDK中函数局部变量、函数入栈;


3. RAM CODE是指放在RAM中运行的代码,例如Sleep电源管理相关代码、Flash操作代码、协议栈Patch代码;

详情RAM Layout可以参考编译的MAP文件及toolchain\gr551x\source\arm\flash_scatter_common.sct。


0条评论

0赞成

0收藏

您的评论

176***577

2022-01-26 10:24

你好,这个RAM CODE大概有多大?我使用gr5515 256k内存,kile编译最大只能使用到207k,再大就会报错,207K + 16K(协议栈) + 16K(主栈)= 239,还有17k都是RAM CODE使用了吗?

0条评论

0赞成

0收藏

您的评论

Ping

汇顶员工
2022-01-26 11:27

是的,你可以参考编译后的Map文件关于RAM分布说明:


0条评论

0赞成

0收藏

您的评论

176***577

2022-01-26 14:31

1.官方的这个freertos例程,RAM_CODE都占了29K,有办法精简吗?这个lib文件 .o前面的勾好像没用,是自动链接需要的.o文件吗?


2.这样算下来用户APP可以用的内存: 256K - 16K(协议栈) - 16K(主栈)- RAM_CODE(29K)= 195K

1条评论

0赞成

0收藏

您的评论

176***577

2022-01-26 15:49


3.图示部分的内存是消耗的是用户APP部分的内存吧,这个为什么还会消耗内存,.lib不是在RAM_CODE部分已经消耗了30K内存了?

0条评论

0赞成

0收藏

您的评论

Ping

汇顶员工
2022-01-27 12:18

1. LIB库编译的时候会自动Link,没有函数调用的不会编译进去,编译后的LIB库不能再去选择,相互之间有调用关系;


2. 系统中RAM包含以下三部分,RAM Code只是其中一部分内存占用,详情可参考MAP的RAM分布说明,你截图的是关于Flash空间占用部分;

(1) Code:存储到flash【Rom】中的程序代码;

(2) RO-Data:程序中的指令和常量,保存在Rom中;

(3) ZI-Data:zero initial,程序中用到的变量并且被系统初始化为0的变量字节数,程序运行时保存在RAM中;

(4) RW-Data:可读可写变量,初始化时候已经赋值了的变量字节数;

(5) RAM-Code: 拷贝到RAM中运行的代码字节数;

ROM大小 = Code + RO-Data + RW-Data

RAM大小 = RW-Data + ZI-Data+RAM CODE,另外也包含堆栈等定义的其它RAM空间


0条评论

0赞成

0收藏

您的评论

登录后可回答问题,请 注册

我们时刻倾听您的声音
联系销售

扫描关注公众号

打开微信,使用“扫一扫”即可关注