Freertos Memory Layout介绍


1. 概述

本文档介绍了SStar平台上freertos的memory layout方式。


2. MMAP


2.1. MMAP介绍

MMAP是memory map的简写,它是整个SOC系统内存Layout,MMAP内配置的内存分成两个部分。

  1. RTK HEAP,由freertos管理,使用CamOsMemAlloc申请,size有限,一般只用于小块buff使用。

  2. MMA HEAP,由MI管理,各模块及应用使用的大块内存使用。

    rtk\proj\sc\driver\sysdriver\mmupte\pioneer3\inc\cpu_mem_map_pioneer3_16.h
    

    MMA 的部分在这里配置即可, RTOS 的部分还需同步修改下一章说明的地方。


2.2. RTK size配置

  1. rtk\proj\sc\customer\product\cust\scatter\scatter_pioneer3_16_isw.lds

    ORIGIN 设定为上一章中设定的RTK_ADDR

    LENGTH设定为上一章中设定的RTK_SIZE

    MIRRORED_VECTOR_TABLE 设定为RTK_ADDR+MIRRORED_VECTOR_TABLE_OFFSET

  2. project/configs/defconfigs/usbcam-rtos_p3_nor.glibc-9.1.0-021a.64.qfn128_defconfig

    CONFIG_RTOS_LOAD_ADDR="0x20D08000"设定同步为MIRRORED_VECTOR_TABLE


2.3. RTK 实际内存查看

2.3.1. 查看mma内存

命令: cat_proc mi_sys

如上图,第一个框中的length表示 mma总的内存大小,第二个小框中的avail表示当前可用mma内存的大小 each chunk info则表示模块占用内存情况

2.3.2. 查看rtk内存

命令: memstat

打印比较多,主要关注如下内容:

Total heap size:就是rtos可用内存大小,单位 Byte

Total free heap size: 表示剩余可用内存