7.16. MEMORY
Overview
提供芯片内存使用示例和常见问题。
7.16.1. 应用示例
示例演示:
定义变量/函数到 flash/sdram/内部ram
example: 进入 apps/demo/demo_DevKitBoard/include/demo_config.h
,开启宏 USE_MEMORY_TEST_DEMO
。
7.16.2. 常见问题
如何查看芯片内存使用情况?
答:系统开机以后会打印 芯片内存使用情况如下所示:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ setup_arch Jul 12 2021 10:07:49 sys_clk = 320000000,sdram_clk = 240000000,hsb_clk = 160000000,lsb_clk = 53333333, sfc_clk = 80000000 CODE+CONST SIZE = 1622496 SDRAM_SIZE = 2097152, DATA_SIZE = 45444,BSS_SIZE = 454944,REMAIN_SIZE = 1596764 RAM_SIZE = 523728,DATA_SIZE = 12624,BSS_SIZE = 499120,REMAIN_SIZE = 11984 CACHE_RAM_SIZE = 0,DATA_SIZE = 0, BSS_SIZE = 0,REMAIN_SIZE = 0 HEAP_SIZE = 1596704 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CODE+CONST代表代码加const变量总大小
SDRAM_SIZE 代表SDRAM容量大小
RAM_SIZE 代表芯片内部RAM容量大小
CACHE_RAM_SIZE 代表芯片内部一块小的,并且跟内部RAM不连续地址的额外可用大小
DATA_SIZE 代表有初始化的变量大小
BSS_SIZE 代表无初始化的变量大小
REMAIN_SIZE 代表该区域剩余可用大小
HEAP_SIZE 代表内存堆大小,通常是位于 SDRAM的 REMAIN_SIZE,如果没有SDRAM则位于内部RAM的REMAIN_SIZE
任务栈在什么内存上?
答:创建的任务如果是静态任务,栈位于全局变量所在内存; 如果是动态任务,栈位于堆内存
如何查看地址映射MAP文件
答:MAP文件位于对应cpu的tools目录下, 如
sdk.map