存储分配

本章节主要介绍基于 WQ SDK 的存储分配方式

概述

芯片存储通常指内置 nor flash 存储器,其空间由固定部分及用户可分配部分构成

固定部分

存储的固定部分包括已下几个分区

分区名称

位置

说明

bootloader

0x0

启动加载分区,由boot rom加载并执行的代码区

caldata

-0x1000 [a]

校准分区,芯片出厂时写入,芯片个体间不通用

sysdata

-0x2000 [a]

系统数据,mac addr,ppm等板级数据

bootmap

-0x4000 [a]

分区数据,系统读取其他分区的基准区域

[a] (1,2,3)

负值代表由存储的结束位置开启偏移

可分配部分

固定区域之外的剩余部分均为可分配部分,用户可自由分区其空间

在应用工程下的 flash_layout.h 来定义可分配空间格式如下

{
    "positive": [
        {
            "name": "bcore image",
            "id": 48,
            "sectors": 190,
            "file": "BUILT_BCORE"
        },{
            "name": "dcore image",
            "id": 112,
            "sectors": 170,
            "file": "BUILT_DCORE"
        },{
            "name": "acore image",
            "id": 32,
            "sectors": 148,
            "file": "BUILT_ACORE"
        },{
            "name": "tone0",
            "id": 128,
            "sectors": 25,
            "file": "tone.bin"
        }
    ],
    "reverse":[
        {
            "name": "oem",
            "id": 129,
            "sectors": 1,
            "macro": "OEM"
        },{
            "name": "anc",
            "id": 130,
            "sectors": 27,
            "file": "anc_coeff.dat",
            "macro": "ANC"
        },{
            "name": "configtool",
            "id": 131,
            "sectors": 1,
            "file": "config.bin",
            "macro": "CONFIG"
        },{
            "name": "cus",
            "id": 132,
            "sectors": 1,
            "macro": "CUS"
        }
    ]
}

配置说明:

字段

类型/值

说明

positive

array

其内部定义的flash将从flash前部地址依次递增

reverse

array

反向列表,其内部定义的flash将从flash后部地址依次递减

name

string

名称,仅用于标记

id

0-254

用于程序代码从bootmap获取flash空间时传入的id,其中0-127为系统使用,
128-254可由用户使用

sectors

int

使用的flash扇区数量,通常1扇区为4KByte

file

string

通过烧录工具烧录进对应位置的数据文件名称,此文件必须是通过`PKGFILES`
属性添加进最终wpk内的文件,此处可使用`BUILT_<CORE>`的方式指定放置
编译后对应core的image文件,如`BUILT_ACORE`则对应acore的bin文件。

macro

string

编译时将依据此值添加对应的宏`FLASH_<macro>_OFFSET`和
FLASH_<macro>_LENGTH

额外存储:

在芯片有不止一个存储器或连接有外部存储器的时候,也可对这些区域进行分配,在 flash_layout.h 中添加如下内容

"extra": [
    {
        "name": "flash1",
        "partitions": [
            {
                "name": "user data",
                "id": 135,
                "sectors": 128,
                "file": "user_data.bin"
            }
        ]
    }
]

字段

类型/值

说明

extra

json object

额外存储定义

name

string

名称,需为选定芯片特定的外部存储的名称,请查阅对应芯片的说明

partitions

array

flash分区定义,内容与主存储单个分区定义相同