Freertos Memory Layout介绍

Version 0.1


1. 概述

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


2. MMAP


2.1. product config配置

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

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

    RTOS部分在mak此处配置。

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

    MMA部分在mak此处配置。


2.2. project defconfig配置

路径:project/configs/defconfigs/usbcam-rtos_*_defconfig

此处project defconfig的内存配置需要同product config所配置的数值对应上。如project defconfig的CONFIG_RTOS_LOAD_ADDR要等于product config中CONFIG_RTOS_MEM_START_VA+CONFIG_VECTOR_TABLE_OFFSET;project defconfig的CONFIG_MMA_SIZE要同product config的CONFIG_MMA_HEAP_SIZE的值一致。


2.3. RTK 实际内存查看

2.3.1. 查看mma内存

命令: cat_proc mi_sys

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

经常会碰到需要减小MMA内存大小的情况,将多出来的内存提供给RTOS使用,可以通过HighPeak,在压测时确定一个大致的峰值进行调整。

2.3.2. 查看rtk内存

命令: memstat

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

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

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