nrf5340 运行DFU
1. dfu介绍
Nordic 的 DFU(Device Firmware Update)是一种用于更新设备固件的技术和协议。Nordic Semiconductor 是一家专门设计和制造无线芯片的公司,他们的产品主要用于物联网(IoT)和无线连接应用。Nordic 的 DFU 技术允许用户通过无线方式更新连接到 Nordic 芯片的设备的固件。
DFU 技术的主要优势在于它提供了一种便捷的方式来更新设备的固件,而无需使用专门的编程器或物理连接。通过 DFU,设备的固件可以通过无线传输方式进行更新,这样就可以避免物理接线的限制,并提供了更灵活和方便的固件更新方式。
Nordic 的 DFU 解决方案通常包括两个主要组件:DFU Bootloader 和 DFU 协议。DFU Bootloader 是一个小型的引导加载程序,它允许设备接收和安装来自外部源(如手机、电脑)的固件更新。DFU 协议定义了设备与外部源之间进行通信和传输固件的方式。
用户可以使用 Nordic 提供的 DFU 工具或 SDK(软件开发工具包)来实现固件更新。这些工具和 SDK 提供了开发者所需的接口和文档,以便在设备上实现 DFU 功能。
总而言之,Nordic 的 DFU 是一种用于无线更新设备固件的技术和协议,大大简化了固件更新的过程,并提供了更灵活和便捷的方式来管理设备的固件。
2. 环境搭建
2.1 创建工程
2.2 打印配置
prj.config
CONFIG_USE_SEGGER_RTT=y # 启用RTT
CONFIG_LOG_BACKEND_RTT=y # 日志后端选用RTT
CONFIG_LOG_BACKEND_UART=n # 日志后端不选用串口
CONFIG_LOG_PRINTK=y # 不启用PRINTK日志
遇到了type-c接上后未识别到设备的现象,解决方法如下:
-
如果不能自动识别到,或者很不稳定。可能是最新的底层Python工具nrfutil在Windows上不太稳定。可以把它改回之前的nrfjprog:
打开VS Code Settings:
搜索“Device Provider”,并改为nrfjprog:
3. 配置固件升级
- 在
prj_conf
添加如下两段话:
#Enable MCUBOOT bootloader build in the application
CONFIG_BOOTLOADER_MCUBOOT=y
#Include MCUMGR and the dependencies in the build
CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y
-
重新build一下(会比较久),会发现路径下会生成
app_update.bin
文件
-
重新上电后,用nrf连接对应设备,点击dfu的小图标,选择传到手机的
app_update.bin
文件,注意要不同的app_update.bin
文件(可以在main.c开头加点打印)
-
进行升级流程
- 可以看到打印显示升级成功,貌似是升级完重新上电了
参考
https://www.nordicsemi.cn/news/nrf-connect-sdk-guide/
https://webinarplatform.nordicsemi.com/adding-device-firmware-update-5
https://devzone.nordicsemi.com/guides/nrf-connect-sdk-guides/b/software/posts/ncs-dfu#mcetoc_1h90kam4m1