nrf52832 OTA升级实验

概要

硬件:nrf52832_xxAA最小核心板
软件:
Bootloader:\nRF5_SDK_17.1.0_ddde560\examples\dfu\secure_bootloader\pca10040_s132_ble_debug

App:\nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_buttonless_dfu\pca10040\s132

softdevice:\nRF5_SDK_17.1.0_ddde560\components\softdevice\s132\hex\s132_nrf52_7.2.0_softdevice.hex

Log打印工具:j-Link RTT Viewer

参考文章:
Nordic nRF5 SDK开发环境搭建(nRF51/nRF52芯片平台):https://www.cnblogs.com/iini/p/9043565.html

详解蓝牙空中升级(BLE OTA)原理与步骤:https://www.cnblogs.com/iini/p/9314246.html

Nordic的安全DFU引导加载程序入门,分步指南:https://devzone.nordicsemi.com/guides/short-range-guides/b/software-development-kit/posts/getting-started-with-nordics-secure-dfu-bootloader#h23sjziacp7vrw0scs2t3tua1ax0426

生成密钥

安装PC版nrfutil,离线版nrfutil工具安装方法:https://www.cnblogs.com/jayant97/p/17819404.html

nrfutil下载地址:https://developer.nordicsemi.com/.pc-tools/nrfutil/
在这里插入图片描述
poweshell不需要安装,win10系统自带。
在这里插入图片描述
使用命令.\nrfutil.exe,可以看到nrfutil可以正常运行了
在这里插入图片描述
把nrfutil.exe所在目录放在Windows环境变量中
在这里插入图片描述

生成您自己的私钥。键入以下命令行:

nrfutil.exe keys generate private.key

根据您的私钥生成您的公钥

nrfutil keys display --key pk --format code private.key --out_file public_key.c

在这里插入图片描述
private.key:

-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIFtroj5HFncEr6pgq/tyizy8KEptySZLZK4c6luFfRLooAoGCCqGSM49
AwEHoUQDQgAEgdL6jmtvGHzEMZ6qQxwDFqfzjjWV6eR92l+dSMT+z0epXi5waRm3
kb1afkOUaGlIC5NmwBEAj5PvdM+BM/uRtg==
-----END EC PRIVATE KEY-----

public_key.c

/* This file was automatically generated by nrfutil on 2024-04-18 (YY-MM-DD) at 20:25:05 */

#include "stdint.h"
#include "compiler_abstraction.h"

/** @brief Public key used to verify DFU images */
__ALIGN(4) const uint8_t pk[64] =
{
    0x47, 0xcf, 0xfe, 0xc4, 0x48, 0x9d, 0x5f, 0xda, 0x7d, 0xe4, 0xe9, 0x95, 0x35, 0x8e, 0xf3, 0xa7, 0x16, 0x03, 0x1c, 0x43, 0xaa, 0x9e, 0x31, 0xc4, 0x7c, 0x18, 0x6f, 0x6b, 0x8e, 0xfa, 0xd2, 0x81,
    0xb6, 0x91, 0xfb, 0x33, 0x81, 0xcf, 0x74, 0xef, 0x93, 0x8f, 0x00, 0x11, 0xc0, 0x66, 0x93, 0x0b, 0x48, 0x69, 0x68, 0x94, 0x43, 0x7e, 0x5a, 0xbd, 0x91, 0xb7, 0x19, 0x69, 0x70, 0x2e, 0x5e, 0xa9
};

在nRF5_SDK_17.1.0_ddde560_PDOA\examples\dfu下,进行替换
public_key.c 替换dfu_public_key.c

在这里插入图片描述

生成引导加载程序

bootloader修改点:

引导加载程序需要 uECC 库来解密签名。uECC 是一个外部库,可以从 github 下载。不想构建和使用 uECC,可以使用已经预编译的 Oberon 库,使用此库,您无需自己下载和构建 uECC,也无需获得需要确认的额外许可证。要使用 Oberon,请在 sdk_config.h 中更改以下内容:

将 NRF_CRYPTO_BACKEND_MICRO_ECC_ENABLED 改为 0

在这里插入图片描述

将 NRF_CRYPTO_BACKEND_NRF_SW_ENABLED 改为 0

在这里插入图片描述

将 NRF_CRYPTO_BACKEND_OBERON_ENABLED  改为 1

在这里插入图片描述

并删除micro_ecc_lib_nrf52.lib 文件。
在这里插入图片描述
因为是最小系统核心板,所以这里注释掉,不然无法升级
在这里插入图片描述

然后编译生成Hex文件,将协议栈和bootloader.hex文件分别烧入最小系统板中
在这里插入图片描述
然后复位后通RTT查看Log
在这里插入图片描述
使用手机软件nRF connect查看
在这里插入图片描述

生成DFU数据包

将ble_app_buttonless_dfu.hex制作成DFU数据包

使用命令查看

nrfutil pkg generate --help

在这里插入图片描述

nrfutil pkg generate --hw-version 52 --application-version 1 --application ble_app_buttonless_dfu.hex --sd-req 0x101 --key-file private.key app_dfu_package.zip

在这里插入图片描述

在这里插入图片描述

然后直接升级就行了

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值