设备固件更新应用程序

DFU 应用程序允许在 DK 上刷写新的固件。该过程包含三个步骤:

  1. 选择包含适当固件的 zip 文件。
  2. 选择具有打开的引导加载程序的 BLE 设备。
  3. 开始固件上传。

设置屏幕允许更改用于上传固件的 DFU 库参数。

iOS DFU 库

Version Carthage compatible

安装

对于 Cocoapods

target 'YourAppTargetName' do
    use_frameworks!
    pod 'NordicDFU'
end
pod install

对于 Carthage

github "NordicSemiconductor/IOS-DFU-Library" ~> x.y // Replace x.y with your required version
carthage update --use-xcframeworks --platform iOS // other supported platforms: macOS, tvOS, watchOS

对于 Swift Package Manager

// swift-tools-version:5.6
import PackageDescription

let package = Package(
  name: "<Your Product Name>",
  dependencies: [
    .package(
      url: "https://github.com/NordicSemiconductor/IOS-DFU-Library", 
      .upToNextMajor(from: "<Desired Version>")
    )
  ],
  targets: [.target(name: "<Your Target Name>", dependencies: ["NordicDFU"])]
)

设备固件更新 (DFU)

nRF5x 系列芯片是基于闪存的 SoC,因此它们代表了可用的最灵活的解决方案。nRF5x 系列及其相关的软件架构和 S-Series SoftDevice 的一个关键特性是可以通过无线设备固件升级 (OTA-DFU) 进行固件升级。见图 1。OTA-DFU 允许将固件升级发布并下载到现场的产品中,从而使 OEM 可以修复错误并将新功能引入已经上市的产品中。当使用 nRF5x 系列 SoC 时,这为产品开发带来了额外的安全性和灵活性。

此存储库包含一个经过测试的 iOS 8+ 平台库,可用于使用 iPhone 或 iPad 在 nRF5x 设备上执行设备固件更新。

DFU 库旨在使这些设备非常容易地包含在您的应用程序中。它与所有 Bootloader/DFU 版本兼容。

Alt text for your video

Service Changed 特征

为了使 DFU 与 iOS 一起工作,目标设备必须在 Generic Attribute 服务中具有带有 Indicate 属性的 Service Changed 特征。如果没有此特征,iOS 将假定此设备的服务永远不会更改,并且在切换到 DFU 引导加载程序模式后不会使其失效。

Service Changed 特征行为
来自 SDK 12 的 Secure DFU
来自 SDK 14 的 Secure DFU

文档

有关更多信息,请参见文档


要求

该库与安装了 S-Series Soft Device 和 DFU Bootloader 的 nRF51 和 nRF52 设备兼容。


DFU 历史记录

Legacy DFU

Secure DFU

该库完全向后兼容,并支持新的和旧的 DFU。 自 1.1.0 版起,支持来自 SDK 12 的实验性无按钮 DFU 服务。由于来自 SDK 12 的这项实验性服务不安全,因此您必须将 enableUnsafeExperimentalButtonlessServiceInSecureDfu 设置为 true 才能启用它,默认情况下是关闭的。 阅读方法文档以获取详细信息。 建议使用来自 SDK 13 的无按钮服务(对于非绑定设备,或 SDK 14 的无按钮服务)。 DFU 库 1.3.0 起均支持这两种服务。

查看平台文件夹以获取有关每个库兼容性的更多详细信息。

其他框架

React Native

一个基于此库的 iOS 和 Android 非官方库可用于 React Native:react-native-nordic-dfu

Flutter

一个基于此库的 iOS 和 Android 库可用于 Flutter:nordic_dfu

Xamarin

iOS 的简单绑定库可在 nuget 上找到:Laerdal.Dfu


资源