IC:

MP 固件

MP 固件用于批量生产中对芯片进行 校准和测试

为了满足用户多样的需求,SDK 提供了两种类型的 MP 固件:Shrink MP 固件和 Expand MP 固件。它们的对比如下:

固件类型

大小

下载区域

生命周期

描述

Shrink

较小

Flash

断电后保留

  • 只包含校准相关代码和外设驱动。

  • 与应用固件合并下载。

RAM

断电后丢失

  • 只包含校准相关代码和外设驱动。

  • 无需 bootloader 。

  • 单独下载,不与应用固件合并。

Expand

较大

Flash

断电后保留

  • 包含完整 sdk 代码,支持做更多复杂测试。

  • 与应用固件合并下载。

  • 支持包含应用代码,单固件运行校准测试和客户应用。(可选)

生成固件

以下是生成 MP 固件的步骤:

  1. 参考 配置 SDK(menuconfig) 修改工程配置。

    1. 进入 CONFIG Mass Production,依次勾选 Enable MP > MP Mode > shrink,设置 MP 类型为 shrink。

    2. 后退到 MENUCONFIG FOR General 页面,选择 CONFIG WIFI > Enable Wifi,使能 Wi-Fi。

    3. 后退到 MENUCONFIG FOR General 页面,选择 CONFIG BT > Enable BT,使能蓝牙。

    4. 保存并退出。

  2. 参考 编译代码 编译工程。

备注

生成的 MP 固件 xxx_app_mp.bin{SDK}\amebaxxx_gcc_project

合并和下载固件

通常情况下,MP 固件不包含应用代码,因此需要与应用固件合并,在完成 校准和测试 后切换到应用固件运行客户应用。

以下是合并固件的步骤:

  1. 准备 km4_boot_all.binkm0_km4_app_mp.binkm0_km4_app.bin

  2. 使用 Image Tool 合并固件。

    1. 打开 Generate 标签页,输入上述 3 个文件的路径。

    2. 按照 {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},
    };
    
    1. 点击底部 Generate 按钮,生成合并后的固件 Image_All.bin

      ../../rst_rtos/6_mass_production/figures/mp_image_combine_dplus.png
  3. 使用 Image Tool1-N MP Tool 下载 Image_All.bin 到芯片中。

备注

km0_km4_app.bin 是客户应用固件, km4_boot_all.bin 是 bootloader 固件,都位于 {SDK}\amebadplus_gcc_project 。通常情况下, MP 固件与应用固件共用同一个 bootlaoder 。

启动和切换固件

  1. 下载 Image_All.bin 到芯片后,重启芯片,默认会运行 OTA1,即 MP 固件。

    [BOOT-I] IMG2 BOOT from OTA 1, Version: 1.1
    ...
    [WLAN-A] Init WIFI
    [WLAN-A] MP driver
    
  2. 执行 校准和测试,完成后输入 AT+OTACLEAR 清除当前运行固件的签名让 MP 固件失效。

  3. 重启芯片,会运行 OTA2,即客户应用固件。

    [BOOT-I] IMG2 BOOT from OTA 2, Version: 1.1
    

进阶用法

支持的进阶应用包含 Shrink MP 固件下载到 RAMExpand MP 固件包含客户应用

适用场景:在不覆盖 Flash 上已有固件的前提下,对芯片做 校准和测试

以下是下载步骤:

  1. 准备 km0_km4_app_mp.bin

  2. 使用 Image Tool1-N MP Tool 下载固件到芯片中。下载完成后自动运行 Shrink MP 固件,不要重启芯片。

  1. 选择 Option -> Post Process… -> Jump to RAM

  2. 点击 Browse 选择要下载的固件, km0_km4_app_mp.bin 的下载地址不可修改。

  3. 点击 Dowanload 开始下载。

  1. 执行 校准和测试,断电或重启芯片后,Shrink MP 固件会丢失。

校准和测试

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 和蓝牙校准外,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 个文件,下载至芯片。