DFU 应用程序允许在 DK 上刷写新的固件。该过程包含三个步骤:
设置屏幕允许更改用于上传固件的 DFU 库参数。
对于 Cocoapods
target 'YourAppTargetName' do
use_frameworks!
pod 'NordicDFU'
end
pod install
打开新创建的 .xcworkspace
通过使用 import NordicDFU
将库导入到您的任何类中,然后开始处理您的项目
对于 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"])]
)
nRF5x 系列芯片是基于闪存的 SoC,因此它们代表了可用的最灵活的解决方案。nRF5x 系列及其相关的软件架构和 S-Series SoftDevice 的一个关键特性是可以通过无线设备固件升级 (OTA-DFU) 进行固件升级。见图 1。OTA-DFU 允许将固件升级发布并下载到现场的产品中,从而使 OEM 可以修复错误并将新功能引入已经上市的产品中。当使用 nRF5x 系列 SoC 时,这为产品开发带来了额外的安全性和灵活性。
此存储库包含一个经过测试的 iOS 8+ 平台库,可用于使用 iPhone 或 iPad 在 nRF5x 设备上执行设备固件更新。
DFU 库旨在使这些设备非常容易地包含在您的应用程序中。它与所有 Bootloader/DFU 版本兼容。
为了使 DFU 与 iOS 一起工作,目标设备必须在 Generic Attribute 服务中具有带有 Indicate 属性的 Service Changed 特征。如果没有此特征,iOS 将假定此设备的服务永远不会更改,并且在切换到 DFU 引导加载程序模式后不会使其失效。
有关更多信息,请参见文档。
该库与安装了 S-Series Soft Device 和 DFU Bootloader 的 nRF51 和 nRF52 设备兼容。
该库完全向后兼容,并支持新的和旧的 DFU。 自 1.1.0 版起,支持来自 SDK 12 的实验性无按钮 DFU 服务。由于来自 SDK 12 的这项实验性服务不安全,因此您必须将 enableUnsafeExperimentalButtonlessServiceInSecureDfu 设置为 true 才能启用它,默认情况下是关闭的。 阅读方法文档以获取详细信息。 建议使用来自 SDK 13 的无按钮服务(对于非绑定设备,或 SDK 14 的无按钮服务)。 DFU 库 1.3.0 起均支持这两种服务。
查看平台文件夹以获取有关每个库兼容性的更多详细信息。
一个基于此库的 iOS 和 Android 非官方库可用于 React Native:react-native-nordic-dfu
一个基于此库的 iOS 和 Android 库可用于 Flutter:nordic_dfu
iOS 的简单绑定库可在 nuget 上找到:Laerdal.Dfu