MP 固件
MP 固件用于批量生产中对芯片进行 校准和测试 。
为了满足用户多样的需求,SDK 提供了两种类型的 MP 固件:Shrink MP 固件和 Expand MP 固件。它们的对比如下:
固件类型 |
大小 |
下载区域 |
生命周期 |
描述 |
---|---|---|---|---|
Shrink |
较小 |
Flash |
断电后保留 |
|
RAM |
断电后丢失 |
|
||
Expand |
较大 |
Flash |
断电后保留 |
|
固件类型 |
大小 |
下载区域 |
生命周期 |
描述 |
---|---|---|---|---|
Expand |
较大 |
Flash |
断电后保留 |
|
固件类型 |
大小 |
下载区域 |
生命周期 |
描述 |
---|---|---|---|---|
Expand |
较大 |
Flash |
断电后保留 |
|
固件类型 |
大小 |
下载区域 |
生命周期 |
描述 |
---|---|---|---|---|
Expand |
较大 |
Flash |
断电后保留 |
|
固件类型 |
大小 |
下载区域 |
生命周期 |
描述 |
---|---|---|---|---|
Shrink |
较小 |
Flash |
断电后保留 |
|
Expand |
较大 |
Flash |
断电后保留 |
|
生成固件
以下是生成 MP 固件的步骤:
参考 配置 SDK(menuconfig) 修改工程配置。
进入
CONFIG Mass Production
,依次勾选Enable MP > MP Mode > shrink
,设置 MP 类型为 shrink。后退到
MENUCONFIG FOR General
页面,选择CONFIG WIFI > Enable Wifi
,使能 Wi-Fi。后退到
MENUCONFIG FOR General
页面,选择CONFIG BT > Enable BT
,使能蓝牙。保存并退出。
参考 编译代码 编译工程。
备注
生成的 MP 固件 xxx_app_mp.bin
在 {SDK}\amebaxxx_gcc_project
。
参考 配置 SDK(menuconfig) 修改工程配置。
进入
CONFIG Mass Production
,依次勾选Enable MP > MP Mode > expand
,设置 MP 类型为 expand。后退到
MENUCONFIG FOR General
页面,选择CONFIG WIFI > Enable Wifi
,使能 Wi-Fi。后退到
MENUCONFIG FOR General
页面,选择CONFIG BT > Enable BT
,使能蓝牙。保存并退出。
参考 编译代码 编译工程。
备注
生成的 MP 固件 xxx_app_mp.bin
在 {SDK}\amebaxxx_gcc_project
。
合并和下载固件
通常情况下,MP 固件不包含应用代码,因此需要与应用固件合并,在完成 校准和测试 后切换到应用固件运行客户应用。
以下是合并固件的步骤:
准备
km4_boot_all.bin
,km0_km4_app_mp.bin
和km0_km4_app.bin
。使用 Image Tool 合并固件。
打开 Generate 标签页,输入上述 3 个文件的路径。
按照
{SDK}\component\soc\usrcfg\amebadplus\ameba_flashcfg.c
中的 Flash Layout 设置 Offset 。
const FlashLayoutInfo_TypeDef Flash_Layout[] = { /*Region_Type, [StartAddr, EndAddr] */ {IMG_BOOT, 0x08000000, 0x08013FFF}, //Boot Manifest(4K) + KM4 Bootloader(76K) //Users should modify below according to their own memory {IMG_APP_OTA1, 0x08014000, 0x081F3FFF}, //Certificate(4K) + Manifest(4K) + KM4 Application OTA1 + Manifest(4K) + RDP IMG OTA1 {IMG_BOOT_OTA2, 0x08200000, 0x08213FFF}, //Boot Manifest(4K) + KM4 Bootloader(76K) OTA {IMG_APP_OTA2, 0x08214000, 0x083DCFFF}, //Certificate(4K) + Manifest(4K) + KM4 Application OTA2 + Manifest(4K) + RDP IMG OTA2 {FTL, 0x083DD000, 0x083DFFFF}, //FTL for BT(>=12K), The start offset of flash pages which is allocated to FTL physical map. {VFS1, 0x083E0000, 0x083FFFFF}, //VFS region 1 (128K) {VFS2, 0xFFFFFFFF, 0xFFFFFFFF}, //VFS region 2 {USER, 0xFFFFFFFF, 0xFFFFFFFF}, //reserve for user /* End */ {0xFF, 0xFFFFFFFF, 0xFFFFFFFF}, };
点击底部 Generate 按钮,生成合并后的固件
Image_All.bin
。
使用 Image Tool 或 1-N MP Tool 下载
Image_All.bin
到芯片中。
备注
km0_km4_app.bin
是客户应用固件, km4_boot_all.bin
是 bootloader 固件,都位于 {SDK}\amebadplus_gcc_project
。通常情况下, MP 固件与应用固件共用同一个 bootlaoder 。
准备
km4_boot_all.bin
,kr4_km4_app_mp.bin
和kr4_km4_app.bin
。使用 Image Tool 合并固件。
打开 Generate 标签页,输入上述 3 个文件的路径。
按照
{SDK}\component\soc\usrcfg\amebadlite\ameba_flashcfg.c
中的 Flash Layout 设置 Offset 。
FlashLayoutInfo_TypeDef Flash_Layout[] = { /*Region_Type, [StartAddr, EndAddr] */ {IMG_BOOT, 0x08000000, 0x08013FFF}, //Boot Manifest(4K) + KM4 Bootloader(76K) //Users should modify below according to their own memory {IMG_APP_OTA1, 0x08014000, 0x081F3FFF}, //Certificate(4K) + Manifest(4K) + KR4 & KM4 Application OTA1 + Manifest(4K) + RDP IMG OTA1 {IMG_BOOT_OTA2, 0x08200000, 0x08213FFF}, //Boot Manifest(4K) + KM4 Bootloader(76K) OTA {IMG_APP_OTA2, 0x08214000, 0x083DCFFF}, //Certificate(4K) + Manifest(4K) + KR4 & KM4 Application OTA2 + Manifest(4K) + RDP IMG OTA2 {FTL, 0x083DD000, 0x083DFFFF}, //FTL for BT(>=12K), The start offset of flash pages which is allocated to FTL physical map. {VFS1, 0x083E0000, 0x083FFFFF}, //VFS region 1 (128K) {IMG_DSP, 0x08400000, 0x086FFFFF}, //Manifest(4K) + DSP IMG, only one DSP region in layout {VFS2, 0xFFFFFFFF, 0xFFFFFFFF}, //VFS region 2 {USER, 0xFFFFFFFF, 0xFFFFFFFF}, //reserve for user /* End */ {0xFF, 0xFFFFFFFF, 0xFFFFFFFF}, };
点击底部 Generate 按钮,生成合并后的固件
Image_All.bin
。
使用 Image Tool 或 1-N MP Tool 下载
Image_All.bin
到芯片中。
备注
kr4_km4_app.bin
是客户应用固件, km4_boot_all.bin
是 bootloader 固件,都位于 {SDK}\amebadlite_gcc_project
。通常情况下, MP 固件与应用固件共用同一个 bootlaoder 。
准备
km4_boot_all.bin
,kr4_km4_app_mp.bin
和kr4_km4_app.bin
。使用 Image Tool 合并固件。
打开 Generate 标签页,输入上述 3 个文件的路径。
按照
{SDK}\component\soc\usrcfg\amebadlite\ameba_flashcfg.c
中的 Flash Layout 设置 Offset 。
FlashLayoutInfo_TypeDef Flash_Layout[] = { /*Region_Type, [StartAddr, EndAddr] */ {IMG_BOOT, 0x08000000, 0x08013FFF}, //Boot Manifest(4K) + KM4 Bootloader(76K) //Users should modify below according to their own memory {IMG_APP_OTA1, 0x08014000, 0x081F3FFF}, //Certificate(4K) + Manifest(4K) + KR4 & KM4 Application OTA1 + Manifest(4K) + RDP IMG OTA1 {IMG_BOOT_OTA2, 0x08200000, 0x08213FFF}, //Boot Manifest(4K) + KM4 Bootloader(76K) OTA {IMG_APP_OTA2, 0x08214000, 0x083DCFFF}, //Certificate(4K) + Manifest(4K) + KR4 & KM4 Application OTA2 + Manifest(4K) + RDP IMG OTA2 {FTL, 0x083DD000, 0x083DFFFF}, //FTL for BT(>=12K), The start offset of flash pages which is allocated to FTL physical map. {VFS1, 0x083E0000, 0x083FFFFF}, //VFS region 1 (128K) {IMG_DSP, 0x08400000, 0x086FFFFF}, //Manifest(4K) + DSP IMG, only one DSP region in layout {VFS2, 0xFFFFFFFF, 0xFFFFFFFF}, //VFS region 2 {USER, 0xFFFFFFFF, 0xFFFFFFFF}, //reserve for user /* End */ {0xFF, 0xFFFFFFFF, 0xFFFFFFFF}, };
点击底部 Generate 按钮,生成合并后的固件
Image_All.bin
。
使用 Image Tool 或 1-N MP Tool 下载
Image_All.bin
到芯片中。
备注
kr4_km4_app.bin
是客户应用固件, km4_boot_all.bin
是 bootloader 固件,都位于 {SDK}\amebadlite_gcc_project
。通常情况下, MP 固件与应用固件共用同一个 bootlaoder 。
准备
km4_boot_all.bin
,kr4_km4_app_mp.bin
和kr4_km4_app.bin
。使用 Image Tool 合并固件。
打开 Generate 标签页,输入上述 3 个文件的路径。
按照
{SDK}\component\soc\usrcfg\amebadlite\ameba_flashcfg.c
中的 Flash Layout 设置 Offset 。
FlashLayoutInfo_TypeDef Flash_Layout[] = { /*Region_Type, [StartAddr, EndAddr] */ {IMG_BOOT, 0x08000000, 0x08013FFF}, //Boot Manifest(4K) + KM4 Bootloader(76K) //Users should modify below according to their own memory {IMG_APP_OTA1, 0x08014000, 0x081F3FFF}, //Certificate(4K) + Manifest(4K) + KR4 & KM4 Application OTA1 + Manifest(4K) + RDP IMG OTA1 {IMG_BOOT_OTA2, 0x08200000, 0x08213FFF}, //Boot Manifest(4K) + KM4 Bootloader(76K) OTA {IMG_APP_OTA2, 0x08214000, 0x083DCFFF}, //Certificate(4K) + Manifest(4K) + KR4 & KM4 Application OTA2 + Manifest(4K) + RDP IMG OTA2 {FTL, 0x083DD000, 0x083DFFFF}, //FTL for BT(>=12K), The start offset of flash pages which is allocated to FTL physical map. {VFS1, 0x083E0000, 0x083FFFFF}, //VFS region 1 (128K) {IMG_DSP, 0x08400000, 0x086FFFFF}, //Manifest(4K) + DSP IMG, only one DSP region in layout {VFS2, 0xFFFFFFFF, 0xFFFFFFFF}, //VFS region 2 {USER, 0xFFFFFFFF, 0xFFFFFFFF}, //reserve for user /* End */ {0xFF, 0xFFFFFFFF, 0xFFFFFFFF}, };
点击底部 Generate 按钮,生成合并后的固件
Image_All.bin
。
使用 Image Tool 或 1-N MP Tool 下载
Image_All.bin
到芯片中。
备注
kr4_km4_app.bin
是客户应用固件, km4_boot_all.bin
是 bootloader 固件,都位于 {SDK}\amebadlite_gcc_project
。通常情况下, MP 固件与应用固件共用同一个 bootlaoder 。
准备
km4_boot_all.bin
,km0_km4_ca32_app_mp.bin
和km0_km4_ca32_app.bin
。使用 Image Tool 合并固件。
打开 Generate 标签页,输入上述 3 个文件的路径。
按照
{SDK}\component\soc\usrcfg\amebasmart\ameba_flashcfg.c
中的 Flash Layout 设置 Offset 。
/* * @brif Nor Flash layout is set according to Nor Flash Layout in User Manual * In each entry, the first item is flash regoin type, the second item is start address, the second item is end address */ FlashLayoutInfo_TypeDef Flash_Layout_Nor[] = { /*Region_Type, [StartAddr, EndAddr] */ {IMG_BOOT, 0x08000000, 0x0801FFFF}, //Boot Manifest(4K) + KM4 Bootloader(124K) //Users should modify below according to their own memory {IMG_APP_OTA1, 0x08020000, 0x082FFFFF}, //Certificate(4K) + Manifest(4K) + KR4 & KM4 Application OTA1 + Manifest(4K) + RDP IMG OTA1 // + AP IMG OTA1 {IMG_BOOT_OTA2, 0x08300000, 0x0833FFFF}, //Boot Manifest(4K) + KM4 Bootloader(252K) OTA {IMG_APP_OTA2, 0x08340000, 0x0861FFFF}, //Certificate(4K) + Manifest(4K) + KR4 & KM4 Application OTA2 + Manifest(4K) + RDP IMG OTA2 // + AP IMG OTA2 {FTL, 0x08620000, 0x08622FFF}, //FTL for BT(>=12K), The start offset of flash pages which is allocated to FTL physical map. {VFS1, 0x08623000, 0x08642FFF}, //VFS region 1 (128K) {VFS2, 0xFFFFFFFF, 0xFFFFFFFF}, //VFS region 2 {USER, 0xFFFFFFFF, 0xFFFFFFFF}, //reserve for user /* End */ {0xFF, 0xFFFFFFFF, 0xFFFFFFFF}, };
点击底部 Generate 按钮,生成合并后的固件
Image_All.bin
。
使用 Image Tool 或 1-N MP Tool 下载
Image_All.bin
到芯片中。
备注
km0_km4_ca32_app.bin
是客户应用固件, km4_boot_all.bin
是 bootloader 固件,都位于 {SDK}\amebasmart_gcc_project
。通常情况下, MP 固件与应用固件共用同一个 bootlaoder 。
启动和切换固件
下载
Image_All.bin
到芯片后,重启芯片,默认会运行 OTA1,即 MP 固件。[BOOT-I] IMG2 BOOT from OTA 1, Version: 1.1 ... [WLAN-A] Init WIFI [WLAN-A] MP driver
执行 校准和测试,完成后输入 AT+OTACLEAR 清除当前运行固件的签名让 MP 固件失效。
重启芯片,会运行 OTA2,即客户应用固件。
[BOOT-I] IMG2 BOOT from OTA 2, Version: 1.1
进阶用法
支持的进阶应用包含 Shrink MP 固件下载到 RAM 和 Expand MP 固件包含客户应用 。
适用场景:在不覆盖 Flash 上已有固件的前提下,对芯片做 校准和测试。
以下是下载步骤:
准备
km0_km4_app_mp.bin
。使用 Image Tool 或 1-N MP Tool 下载固件到芯片中。下载完成后自动运行 Shrink MP 固件,不要重启芯片。
选择 Option -> Post Process… -> Jump to RAM 。
点击 Browse 选择要下载的固件,
km0_km4_app_mp.bin
的下载地址不可修改。点击 Dowanload 开始下载。
执行 校准和测试,断电或重启芯片后,Shrink MP 固件会丢失。
Expand MP 固件可扩展性强,可选择直接加入客户的应用程序,只用 Expand MP 固件完成 校准和测试 和运行客户应用。
此功能需要客户开发实现, 在进行 校准和测试 时,客户应用不能运行,以免影响校准结果。
参考示例为 https://github.com/Ameba-AIoT/ameba-rtos/tree/master/component/example/mp_app_integration,示例将自定义的客户应用加入到 Expand MP 固件中,并使用 backup 寄存器来标识是否运行客户应用。示例运行流程如下图所示:
支持进阶应用 Expand MP 固件包含客户应用
Expand MP 固件可扩展性强,可选择直接加入客户的应用程序,只用 Expand MP 固件完成 校准和测试 和运行客户应用。
此功能需要客户开发实现, 在进行 校准和测试 时,客户应用不能运行,以免影响校准结果。
参考示例为 https://github.com/Ameba-AIoT/ameba-rtos/tree/master/component/example/mp_app_integration,示例将自定义的客户应用加入到 Expand MP 固件中,并使用 backup 寄存器来标识是否运行客户应用。示例运行流程如下图所示:
支持进阶应用 Expand MP 固件包含客户应用
Expand MP 固件可扩展性强,可选择直接加入客户的应用程序,只用 Expand MP 固件完成 校准和测试 和运行客户应用。
此功能需要客户开发实现, 在进行 校准和测试 时,客户应用不能运行,以免影响校准结果。
参考示例为 https://github.com/Ameba-AIoT/ameba-rtos/tree/master/component/example/mp_app_integration,示例将自定义的客户应用加入到 Expand MP 固件中,并使用 backup 寄存器来标识是否运行客户应用。示例运行流程如下图所示:
支持进阶应用 Expand MP 固件包含客户应用
Expand MP 固件可扩展性强,可选择直接加入客户的应用程序,只用 Expand MP 固件完成 校准和测试 和运行客户应用。
此功能需要客户开发实现, 在进行 校准和测试 时,客户应用不能运行,以免影响校准结果。
参考示例为 https://github.com/Ameba-AIoT/ameba-rtos/tree/master/component/example/mp_app_integration,示例将自定义的客户应用加入到 Expand MP 固件中,并使用 backup 寄存器来标识是否运行客户应用。示例运行流程如下图所示:
支持进阶应用 Expand MP 固件包含客户应用
Expand MP 固件可扩展性强,可选择直接加入客户的应用程序,只用 Expand MP 固件完成 校准和测试 和运行客户应用。
此功能需要客户开发实现, 在进行 校准和测试 时,客户应用不能运行,以免影响校准结果。
参考示例为 https://github.com/Ameba-AIoT/ameba-rtos/tree/master/component/example/mp_app_integration,示例将自定义的客户应用加入到 Expand MP 固件中,并使用 backup 寄存器来标识是否运行客户应用。示例运行流程如下图所示:
校准和测试
Wi-Fi 和蓝牙校准
校准芯片 Wi-Fi 和蓝牙有两种方法:标准校准和快速校准。这两种方法适用于不同的测试条件,且均包含在 Shrink MP 固件和 Expand MP 固件中。
标准校准和快速校准对比如下:
校准方法 |
成本 |
测试时长 |
准确度 |
描述 |
---|---|---|---|---|
标准校准 |
高 |
长 |
高 |
使用专业测试仪器进行有线测试。 |
快速校准 |
低 |
短 |
低 |
使用瑞昱提供的信号板进行无线测试。 |
标准校准 详情参考 WS_RTL8721DA_RTL8721DC_RTL8721DG_MP_FLOW.pdf。
快速校准 详情参考 WS_RTL8721DA_RTL8721DC_RTL8721DG_Fast_MP_FLOW.pdf。
校准芯片 Wi-Fi 和蓝牙的方法为:标准校准。这种方法包含在 Shrink MP 固件和 Expand MP 固件中。
标准校准的特点如下:
校准方法 |
成本 |
测试时长 |
准确度 |
描述 |
---|---|---|---|---|
标准校准 |
高 |
长 |
高 |
使用专业测试仪器进行有线测试。 |
标准校准 详情参考 WS_RTL8720E_RTL8726E_MP_FLOW.pdf。
校准芯片 Wi-Fi 和蓝牙的方法为:标准校准。这种方法包含在 Shrink MP 固件和 Expand MP 固件中。
标准校准的特点如下:
校准方法 |
成本 |
测试时长 |
准确度 |
描述 |
---|---|---|---|---|
标准校准 |
高 |
长 |
高 |
使用专业测试仪器进行有线测试。 |
标准校准 详情参考 WS_RTL8720E_RTL8726E_MP_FLOW.pdf。
校准芯片 Wi-Fi 和蓝牙的方法为:标准校准。这种方法包含在 Shrink MP 固件和 Expand MP 固件中。
标准校准的特点如下:
校准方法 |
成本 |
测试时长 |
准确度 |
描述 |
---|---|---|---|---|
标准校准 |
高 |
长 |
高 |
使用专业测试仪器进行有线测试。 |
标准校准 详情参考 WS_RTL8720E_RTL8726E_MP_FLOW.pdf。
校准芯片 Wi-Fi 和蓝牙的方法为:标准校准。这种方法包含在 Shrink MP 固件和 Expand MP 固件中。
标准校准的特点如下:
校准方法 |
成本 |
测试时长 |
准确度 |
描述 |
---|---|---|---|---|
标准校准 |
高 |
长 |
高 |
使用专业测试仪器进行有线测试。 |
标准校准 详情参考 WS_RTL8730E_MP_FLOW.pdf。
自定义测试
除 Wi-Fi 和蓝牙校准外,MP 固件支持添加自定义测试。
例如测试某些引脚的 GPIO 功能时,可使用 {SDK}\component\soc\amebaxxx\hal\src\gpio_api.c
中定义的 API 实现。其他如 {SDK}\component\soc\amebaxxx\hal\src\serial_api.c
和 {SDK}\component\soc\amebaxxx\hal\src\spi_api.c
则适用于 UART 和 SPI 的功能测试。
备注
在 SDK 中添加自定义 AT 指令的请参考 AT 命令集 。
用户数据
除固件外,批量生产过程中可选择将用户数据下载至芯片。
根据数据类型,有以下不同的下载方法:
对于音频文件等通用数据,建议参考 合并和下载固件 将其与固件合并为 1 个文件,下载至芯片。
如果每个芯片数据都不同,例如产品证书等特殊数据,不适合与固件合并。
建议在 MP 固件中自定义实现通过 LOGUART 接收数据文件并写入 Flash 的 AT 指令,在 MP 固件运行后,由上位机将特殊数据传输给芯片。
备注
{SDK}\component\soc\amebaxxx\hal\src\flash_api.c
中定义的 API 支持实现这一功能。