存储分配
本章节主要介绍基于 WQ SDK 的存储分配方式
概述
芯片存储通常指内置 nor flash 存储器,其空间由固定部分及用户可分配部分构成
固定部分
存储的固定部分包括已下几个分区
分区名称 |
位置 |
说明 |
|---|---|---|
bootloader |
0x0 |
启动加载分区,由boot rom加载并执行的代码区 |
caldata |
-0x1000 [a] |
校准分区,芯片出厂时写入,芯片个体间不通用 |
sysdata |
-0x2000 [a] |
系统数据,mac addr,ppm等板级数据 |
bootmap |
-0x4000 [a] |
分区数据,系统读取其他分区的基准区域 |
可分配部分
固定区域之外的剩余部分均为可分配部分,用户可自由分区其空间
在应用工程下的 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分区定义,内容与主存储单个分区定义相同 |