URL : https://community.nxp.com/docs/DOC-343990
版本:3 最后更新:09-14-2020 更新:EdgarLomeli
介绍
本文档介绍了如何通过无线编程引导加载程序将新的软件镜像加载到KW41 设备中。此外,
还将详细说明如何设置客户端软件以更改镜像文件的存储方式。
软件要求
1. IAR 嵌入式集成开发环境或MCUXpresso IDE
2. 下载两个软件包,SDK FRDM-KW41Z 和SDK USB-KW41Z。
硬件要求
1. FRDM-KW41Z 板
更新过程中的OTAP 内存管理
KW41 具有512KB 程序闪存,其闪存地址范围为0x0000_0000 至0x0007_FFFF。
1. OTAP 应用程序将闪存分为两个独立的部分,即OTAP 引导加载程序(Bootloader)和
OTAP 客户端。OTAP Bootloader 会验证OTAP 客户端上是否有可用的新镜像文件要对
设备进行重新编程。OTAP 客户端软件提供了将OTAP 客户端设备与包含新镜像文件
的OTAP 服务器进行通信所需的Bluetooth LE 自定义服务(OTAP 服务器设备可以是连
接到安装有测试工具的PC 或安装有IoT 工具箱应用的智能手机的另一个FRDM-KW41Z
板)。因此,需要对OTAP 客户端设备进行两次编程,首先编程OTAP Bootloader,然后
编程支持OTAP 客户端的Bluetooth LE 应用程序。为使两个不同的软件共存于同一设备
而使用的方法是将每个软件存储在不同的存储区域中。此功能由链接器文件实现。在
KW41 设备中,引导加载程序已从0x0000_0000 到0x0003_FFF 保留了16 KB 的内存区
域,因此OTAP Client 演示程序保留了其余的内存空间。
2. 要为客户端设备创建新的镜像文件,开发人员需要在链接文件中指定将以16 KB 的偏移
量放置代码,因为必须把最前面的地址空间预留给OTAP Bootloader。
3. 在连接状态下,OTAP 服务器通过蓝牙LE 将镜像数据包(称为块)发送到OTAP 客户
端设备。OTAP 客户端设备可以首先将这些块存储在外部SPI 闪存或片上闪存中。在
OTAP 客户端软件中可以选择代码存储的目的地。
4. 当连接完成,并将所有块都从OTAP 服务器发送到OTAP 客户端设备后,OTAP 客户端
软件会将信息,比如镜像更新的来源(外部闪存或内部闪存)写入称为Bootloader 标
志的内存部分中并复位MCU 以执行OTAP Bootloader 代码。OTAP 引导加载程序
(Bootloader)会读取引导加载程序(Bootloader)标志以获取对设备进行编程所需的信
息,并触发编程以使用新应用程序对MCU 进行重新编程。由于新应用程序的偏移地
址为16 KB,因此OTAP Bootloader 从0x0000_4000 地址开始对设备进行编程,并且
OTAP 客户端应用程序将被新镜像文件所覆盖,因此,通过该方法对设备重新编程后,
将无法二次以同样的方法对设备再次编程。最后,OTAP 引导加载程序(Bootloader)
会触发命令以自动开始执行新代码。
使用IAR 嵌入式开发工具准备软件以测试KW41Z 设备的OTAP 客户端
中包含的项目中编程OTAP Bootloader 软件,也可以从以下路径中拖放已编译好的二进
制文件。
<SDK_2.2.0_FRDM-KW41Z_download_path>\boards\frdmkw41z\wireless_examples\framework\bootloader_otap\bm\iar\bootloader_otap_bm.eww
OTAP Bootloader 已编译好的二进制文件:
<SDK_2.2.0_FRDM-KW41Z_download_path>\tools\wireless\binaries\bootloader_otap_frdmkw41z.bin
<SDK_2.2.0_FRDM-KW41Z_download_path>\boards\frdmkw41z\wireless_examples\bluetooth\otap_client_att\freertos\iar\otap_client_att_freertos.eww
app_preinclude.h 头文件。
1. 要选择外部闪存存储方式,请将“gEepromType_d”定义为
“gEepromDevice_AT45DB041E_c”
2. 要选择内部闪存存储方式,请将“gEepromType_d”定义为
“gEepromDevice_InternalFlash_c”
“Configuration file symbol definitions”窗格。
1. 要选择外部闪存存储方式,请删除“gUseInternalStorageLink_d = 1”链接标志
2. 要选择内部闪存存储方式,请添加“gUseInternalStorageLink_d = 1”链接标志
D). 项目默认的链接器配置会把OTAP 客户端应用程序存储到相应的内存偏移位置上。
使用MCUXpresso IDE准备软件以测试KW41Z 设备的OTAP 客户端
中包含的项目中编程OTAP Bootloader 软件,也可以从以下路径中拖放已编译好的二进
制文件。
OTAP Bootloader项目:
wireless_examples->framework->bootloader_otap->bm
OTAP Bootloader 已编译好的二进制文件
<SDK_2.2.0_FRDM-KW41Z_download_path>\tools\wireless\binaries\bootloader_otap_frdmkw41z.bin
• 单击"Quickstart Panel"视窗中的"Import SDK examples(s)"选项
• 双击frdmkw41z 图标
• 打开位于下列路径中包含在SDK FRDM-KW41Z 中的OTAP 客户端项目
wireless_examples->bluetooth->otap_client_att->freertos
• 自定义OTAP 客户端软件以选择存储方式。在工作区的源文件夹中找到
app_preinclude.h 头文件。
1. 要选择外部闪存存储方式,请将“gEepromType_d”定义为
“gEepromDevice_AT45DB041E_c”
2. 要选择内部闪存存储方式,请将“gEepromType_d”定义为
“gEepromDevice_InternalFlash_c”
• 配置链接文件
1. 若选择外部闪存存储方式,从此时起无需对项目中做任何修改,可跳过此步骤。
2. 若选择内部闪存存储方式,搜索位于下列路径中SDK USB-KW41Z 中的链接文件,
替换OTAP 客户端项目中源文件夹中的默认链接文件。你可以从SDK USB-KW41Z
复制(Ctrl+C ) 链接文件,并直接粘贴(Ctrl + V)在工作区中。这将显示一条警告消息,选择”Overwrite "。
SDK USB-KW41Z 上的链接文件:
<SDK_2.2.0_USB-KW41Z_download_path>\boards\usbkw41z_kw41z\wireless_examples\bluetooth\otap_client_att\freertos\MKW41Z512xxx4_connectivity.ld
• 保存项目中的更改。在“Quickstart Panel”中选择“Debug”。一旦项目已经加载到
设备上,请停止调试会话。
在IAR 嵌入式工作台中为FRDM-KW41Z OTAP 客户端创建S 记录镜像文件
• 从SDK FRDM-KW41Z 中打开要使用OTAP Bootloader 进行编程的一个无线连接的
项目。本示例是一个使用葡萄糖传感器的项目,该项目位于以下路径。
<SDK_2.2.0_FRDM-KW41Z_download_path>\boards\frdmkw41z\wireless_examples\bluetooth\glucose_sensor\freertos\iar\glucose_sensor_freertos.eww
• 打开项目选项窗口(Alt + F7)。在“Linker->Config”窗口中,在“Configuration
file symbol definitions”文本框中添加以下链接标志。
gUseBootloaderLink_d=1
• 转到“Output Converter”窗口。取消选择“Override default”复选框,展开“Output
format”组合框,然后选择Motorola S-records 格式,然后单击“确定”按钮。
• 重编译项目。
• 在以下路径中搜索S-Record 文件(.srec)<SDK_2.2.0_FRDM-KW41Z_download_path>\boards\frdmkw41z\wireless_examples\bluetooth\glucose_sensor\freertos\iar\debug
在MCUXpresso IDE 中为FRDM-KW41Z OTAP 客户端创建S-Record 镜像文件
• 从MCUXpresso IDE 中打开要使用OTAP Bootloader 进行编程的一个无线连接的项
目。本示例是一个使用葡萄糖传感器的项目,该项目位于以下路径。
wireless_examples->bluetooth->glucose_sensor->freertos
• 搜索位于以下路径的SDK FRDM-KW41Z 中的链接文件,并替换Glucose Sensor 项
目中源文件夹中的默认链接文件。你可以从SDK FRDM-KW41Z 复制(Ctrl + C)
链接文件,然后直接粘贴(Ctrl + V)到工作区中。这将显示一条警告消息,请选择“Overwrite”。
SDK FRDM-KW41Z 上的链接文件:
<SDK_2.2.0_FRDM-
KW41Z_download_path>\boards\frdmkw41z\wireless_examples\bluetooth\otap_client_att\freertos\MKW41Z512xxx4_connectivity.ld
• 打开新的“MKW41Z512xxx4_connectivity.ld”链接文件。找到下图的段位置,并删除
“FILL”和“BYTE”语句。
• 编译项目。
在工作区中找到“Binaries”图标。在“.axf”文件上单击鼠标右键。选择“Binary
Utilities/Create S-Record”选项。S-Record 文件将保存在工作区中带有“.s19”扩展名的
“Debug”文件夹中。
使用IoT Toolbox App 测试OTAP 客户端演示
1. 将通过上一节中的步骤创建的S-Record 文件保存在智能手机中的已知位置。
2. 打开IoT Toolbox App,然后选择OTAP 演示。按“SCAN”开始扫描合适的广告客户。
3. 按下FRDM-KW41Z 板上的“SW4”按钮开始广告。
4. 与找到的设备建立连接。
5. 按“Open”并搜索S-Record 文件
6. 按“Upload”开始传输。
7. 传输完成后,请等待几秒钟,直到引导加载程序(bootloader)完成对新镜像文件
的编程。新的应用程序将自动启动。
标签:KW KW41Z | 31Z | 21Z frdm-kw41