CN / EN
CN / EN

提问

获得支持

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

SDK怎么查看剩余的堆空间大小 GR5525

187***564

2024-04-18 18:53

SDK如果用系统默认的malloc,采用的是什么内存分配算法,如何查看剩余空间大小?

0收藏

0赞成

Ping

汇顶员工
2024-04-18 20:43

可以通过Map文件进行分析,参考 gr5513 sdk ram划分问题 的回复说明,以GR5x25_1.0.0_1a87fc3f\projects\ble\ble_peripheral\ble_app_template_freertos例程为例,RAM的Layout分布说明如下:

1. 协议栈占用16KB,地址范围0x20000000 ~ 0x20003FFF,不可裁剪

2. RAM CODE空间,对应0x20004000 起始位置RAM空间

Execution Region RAM_CODE (Base: 0x00104000, Size: 0x00001484, Max: 0x00001fb0, ABSOLUTE)

2. RW区域

Execution Region RAM_RW (Base: 0x20005484, Size: 0x00001704, Max: 0x00040000, ABSOLUTE, COMPRESSED[0x00000790])

3. ZI区域

Execution Region RAM_ZI (Base: 0x20006b88, Size: 0x0000d1c4, Max: 0x00040000, ABSOLUTE)

4. 中断向量表,64Byte

Execution Region FPB_TABLE (Base: 0x20013d80, Size: 0x00000040, Max: 0x00000050, ABSOLUTE)

5. Heap区域内存,用Malloc接口分配的内存空间,默认为0

Execution Region ARM_LIB_HEAP (Base: 0x2003e000, Size: 0x00000000, Max: 0x00000000, ABSOLUTE)

6. 栈空间,8KB,不可裁剪

Execution Region ARM_LIB_STACK (Base: 0x2003e000, Size: 0x00002000, Max: 0x00002000, ABSOLUTE)


备注1:Keil编译的结果是不包含协议栈16KB、栈8KB以及RAM CODE空间的。

备注2:整理后的Layout示例空间如下:

0条评论

0赞成

0收藏

您的评论

Ping

汇顶员工
2024-04-18 21:01

系统默认的malloc,分配的就是Heap空间,大小可以通过Custom config以下宏定义配置。

1条评论

0赞成

0收藏

您的评论

Ping

汇顶员工
2024-04-19 12:12

建议用我们SDK提供的内存分配接口app_malloc或者freertos的pvPortMalloc,主要原因如下:

1. 系统的malloc不支持重入;

2. 内存管理没有我们提供的API高效;

如果都是用我们SDK封装的内存接口,可以通过如下接口获取内存分配信息:

/**
 *****************************************************************************************
 * @brief Get current free size of app memory.
 *****************************************************************************************
 */
size_t app_mem_curr_free_size_get(void);

/**
 *****************************************************************************************
 * @brief Get ever min free size of app memory.
 *****************************************************************************************
 */
size_t app_mem_ever_free_min_size_get(void);
/** @} */


1条评论

0赞成

0收藏

您的评论

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

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

扫描关注公众号

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