本帖最后由 小恩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提供的宝贵帮助和支持。  
 附录    
 
        
        
        
         |