目前 K32W061 支持的 Matter examples 包括 contact-sensor-app、lighting-app、lock-app,其中 contact-sensor-app、lighting-app Demo 都默认支持 OTA 功能,因此,在烧录 APP 固件时,还需要烧录 SSBL (Secondary Stage Bootloader) 固件,今天这篇博文主要讲解怎么通过 SDK 编译得到 SSBL 固件。
既然是基于 SDK 编译得到 SSBL 固件,因此需要下载 K32W061 SDK 包,进入 NXP 官网下载即可。
1.下载 SDK 包
在 NXP MCU Xpresso SDK Builder 官网中下载 K32W061 的 SDK 包,搜索栏中输入 K32W061,选择 K32W061DK6。
由于是在 Ubuntu 中使用,这里 Build SDK for K32W061DK6 中选择 Linux 平台,DOWNLOAD SDK。
下载完成后就可以得到 SDK_2_6_13_K32W061DK6.zip 压缩包。
2.安装 MCUXpresso IDE
这里开发使用的 IDE是 MCUXpresso IDE,可以到官网(MCUXpresso IDE for NXP MCUs)下载 MCUXpresso-IDE,因为是在 ubuntu 中使用这里选择 Linux 版本。
下载好安装完成后,在 Installed SDKs 窗口中导入前面小节中下载的 SDK 包。
3.编译 SSBL 工程
接下来在 MCUXpresso IDE 中导入 SSBL 工程,SDK 包中提供了 SSBL 的例程,直接选择导入即可。
对工程添加编译选项,右键工程,编辑工程属性,添加如下预编译定义;
选项说明如下:
PDM_EXT_FLASH=1 - support PDM in external flash
gOTAUseCustomOtaEntry=1 - support custom OTA entry for multi-image
gOTACustomOtaEntryMemory=OTACustomStorage_ExtFlash - K32W0 uses
添加完成后编译即可;
如果使用原厂默认的 K32W061DK6 开发板,到这里已经完成了 SSBL 固件的编译,但实际上,SSBL 中也涉及到外部 Flash 适配,如果使用的是自己的 K32W061 模组则需要注意下这一部分,下面根据笔者手上的 K32W061 搭配 W25Q80DVUXIE 的 Matter 模组来做说明。
4.适配外部 Flash
目前 SDK SSBL 中主要是适配了 MX25R8035F、XT25F08B,这里添加上 W25Q80DVUXIE ID 的宏定义。
在工程 command_t 中添加 W25Q80DVUXIE 写状态寄存器的 command 枚举。
并且添加 W25Q80DVUXIE 写状态寄存器的 command。
SPIFI_Flash_Init() 函数中添加代码,当 ID 读回确认是 W25Q80DVUXIE,则根据 Flash 写状态寄存器配置 Flash 为 QSPI 模式。
以上就是需要适配修改的地方,目前大部分 Flash 的操作命令相同,具体可以参考对应 Flash 的数据手册进行对比适配,修改完成后编译即可得到 SSBL 固件。
评论