存储分配 ============ 本章节主要介绍基于 WQ SDK 的存储分配方式 概述 ^^^^^^^^^^^^ 芯片存储通常指内置 nor flash 存储器,其空间由固定部分及用户可分配部分构成 固定部分 ^^^^^^^^^^^^ 存储的固定部分包括已下几个分区 +---------------+--------------+--------------------------------------------+ | 分区名称 | 位置 | 说明 | +===============+==============+============================================+ | bootloader | 0x0 | 启动加载分区,由boot rom加载并执行的代码区 | +---------------+--------------+--------------------------------------------+ | caldata | -0x1000 [a]_ | 校准分区,芯片出厂时写入,芯片个体间不通用 | +---------------+--------------+--------------------------------------------+ | sysdata | -0x2000 [a]_ | 系统数据,mac addr,ppm等板级数据 | +---------------+--------------+--------------------------------------------+ | bootmap | -0x4000 [a]_ | 分区数据,系统读取其他分区的基准区域 | +---------------+--------------+--------------------------------------------+ .. [a] 负值代表由存储的结束位置开启偏移 可分配部分 ^^^^^^^^^^^^ 固定区域之外的剩余部分均为可分配部分,用户可自由分区其空间 在应用工程下的 *flash_layout.h* 来定义可分配空间格式如下 .. code:: json { "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" } ] } 配置说明: .. list-table:: * - **字段** - **类型/值** - **说明** * - 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的image文件,如`BUILT_ACORE`则对应acore的bin文件。 * - macro - string - | 编译时将依据此值添加对应的宏`FLASH__OFFSET`和 | `FLASH__LENGTH` 额外存储: 在芯片有不止一个存储器或连接有外部存储器的时候,也可对这些区域进行分配,在 *flash_layout.h* 中添加如下内容 .. code:: json "extra": [ { "name": "flash1", "partitions": [ { "name": "user data", "id": 135, "sectors": 128, "file": "user_data.bin" } ] } ] .. list-table:: * - **字段** - **类型/值** - **说明** * - extra - json object - 额外存储定义 * - name - string - 名称,需为选定芯片特定的外部存储的名称,请查阅对应芯片的说明 * - partitions - array - flash分区定义,内容与主存储单个分区定义相同