本帖最后由 小恩GG 于 2024-12-26 18:52 编辑
基于SPSDK开发的烧写工具 摘要 本文档介绍了一款基于Secure Provisioning SDK(SPSDK)开发的烧写工具脚本。该脚本能够在MCU进入ISP模式后,直接将镜像文件烧写到Flash中。适用于希望避免安装和使用图形用户界面(GUI)操作的客户,具有简单实用的特点。此工具支持大部分NXP MCU新产品,包括MCX系列、LPC55xx、I.MX RT等。具体详情请参阅SPSDK官方网站。
SPSDK简介 SPSDK是基于Python开发的一个可靠且易于使用的软件开发工具包(SDK),专为NXP MCU产品设计。它为客户从设计到生产部署提供了坚实的基础,实现了设备连接、配置、数据下载上传以及安全相关操作等功能。本文仅使用了其中的设备连接和固件下载功能。
1. 安装SPSDK 在开始使用SPSDK进行开发之前,需要按照以下步骤完成安装: 1.1 安装Python - 版本要求:需要Python 3.9及以上版本。
- 安装方法:访问Python官网下载并安装最新版Python。
1.2 创建Python虚拟环境 python -m venv venv 激活虚拟环境:venv\Scripts\activate/activate 更新PyPI至最新版本:python -m pip install--upgrade pip 1.3 安装SPSDK pip install spsdk 确认安装成功:SPSDK --help 如果安装成功,则会出现如下帮助助手。
2. 使用SPSDK API实现烧写固件 当MCU进入ISP模式后,上位机通过SPSDK API与BOOT ROM进行交互。本文以USB接口为例,并选择MCXN947作为硬件平台。 2.1 导入必要的模块 - from spsdk.mboot.interfaces.usb import MbootUSBInterface
- from spsdk.mboot.mcuboot import McuBoot
复制代码- MbootUSBInterface:用于与通过 USB 接口连接的设备通信。
- McuBoot:提供对 MCU Bootloader 的高级操作,如擦除、烧写flash等。
2.2 定义发送镜像文件的函数 - def send_firmware_to_device(data: bytes):
复制代码 参数data:用于接收发送到MCU的镜像文件。在函数内部主要实现连接设备,擦除flash,和烧写镜像文件三部分内容。
发送连接设备命令: - interfaces = MbootUSBInterface.scan()
复制代码
发送擦除Flash命令:
发送烧写镜像文件命令: - response = mboot.write_memory(address, data)
复制代码
2.3 调用函数发送更新命令 - if __name__ == "__main__":
- with open("led_blinky.bin", "rb") as f:
- firmware = f.read()
- send_firmware_to_device(firmware)
复制代码
3. 测试 3.1 进入ISP-USB模式 - 硬件准备:本文使用FRDM-MCXN947开发板进行测试。按住ISP按键然后重启开发板以进入ISP-USB模式。
3.2 准备工作 - 将编写的脚本和镜像文件led_blinky.bin放置在同一路径下。
3.3 执行脚本 运行编写完成的Python脚本,若成功烧写固件,可以看到开发板上的LED灯闪烁,表明程序已开始运行。
4. 总结 本文简要介绍了如何快速上手使用SPSDK进行固件烧写。SPSDK包含丰富的API和功能,能够实现与NXP产品的连接、配置、烧写及安全设置等操作。用户可以根据自身需求在此基础上进一步扩展开发。如有任何疑问或遇到问题,欢迎联系NXP技术支持团队获取帮助。
5. 致谢 感谢恩智浦工程师Marek提供的宝贵帮助和支持。
附录
|