当前位置: 首页 > news >正文

NRF52832的DFU

开发环境:

Winsodw:10

nRF5_SDK:17.1.0

1 工具安装

1.1 gcc-arm-none-eabi

Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer

下载“gcc-arm-none-eabi-10.3-2021.10-win32.exe”,接提示安装。注意安装完后添加环境变量。

1.2 minGW

MinGW - Minimalist GNU for Windows download | SourceForge.net

下载mingw-get-setup.exe,安装过程中要下载很多包,估计要1~2小时安装完成。

1.3 python

最好根据pc-ble-driver-py的版本来安装python的版本,否则下面安装nrfutil失败时无法解决。

pc-ble-driver-py · PyPI

在上面的网站查看pc-ble-driver-py对应的python版本。

1.4 pc-nrfutil

Release v6.1.7 · NordicSemiconductor/pc-nrfutil · GitHub

# 解压后安装
python setup.py install# 如果pc_ble_driver_py版本不对,手动安装pc_ble_driver_py
pip install pc_ble_driver_py-0.17.0-cp310-cp310-win_amd64.whl

 在命令行输入“nrfutil”查看是否安装成功。

 1.5 micro-ecc源码

Release 1.1 · kmackay/micro-ecc · GitHub

解压后将文件夹micro-ecc-1.1改名为micro-ecc,后放在external\micro-ecc下

双击打开C:\MinGW\msys\1.0\msys.bat,进到 external/micro-ecc/nrf52hf_armgcc/armgcc目录。编译lib文件。

 2 生成key

mkdir key
cd key
nrfutil keys generate private.key
nrfutil keys display --key pk --format code private.key --out_file dfu_public_key.c

然后将生成的dfu_public_key.c替换examples\dfu\dfu_public_key.c

3 boot工程和应用工程的编译

3.1 boot工程编译

打开工程examples\dfu\secure_bootloader\pca10040_s132_ble\ses编译。

 如果报错,修改examples\dfu\secure_bootloader\pca10040_s132_ble\ses\flash_placement.xml文件。删除size="0x4"。

 将生成的secure_bootloader_ble_s132_pca10040.hex改名为boot.hex放到key文件夹中。

3.2 应用工程编译

打开工程examples\ble_peripheral\ble_app_buttonless_dfu\pca10040\s132\ses编译。

如果报错,删除nRF_Segger_RTT下的SEGGER_RTT_Syscalls_SES.c文件。如果找不到函数定义,记得把头文件路径加到工程中。

将生成的ble_app_buttonless_dfu_pca10040_s132.hex改名为app.hex放到key文件夹中。

3.3 生成zip

nrfutil pkg generate --hw-version 52 --application-version 1 --application app.hex --sd-req 0x101 --key-file
private.key test_dfu.zip
# --hw-version:硬件版本nrf52822为51,nrf52832为52
# --application-version:应用的版本号,用户自已设置
# --sd-req:协议栈版本

4 DFU

先烧写s132_nrf52_7.2.0_softdevice.hex,boot.hex,app.hex,烧写完成后,用nRF connect扫描,发现DfuTarg,此时程序不会自动运行app,需要dfu一次才能运行app。

 连接后点右上角的dfu,选zip包

 开始升级

 升级完成后,设备重启,此时扫描到Nordic_Buttonless

 连接后使用Swcure DFU Service即可以进入boot,再一次升级。

 5 seting文件的使用

之前烧写的程序,必需要dfu一次才能运行app,使用seting文件即可以解决这个问题。

nrfutil settings generate --family NRF52 --application app.hex --application-version 1 --bootloader-version 1 --bl-settings-version 1 setting.hex

重新烧写s132_nrf52_7.2.0_softdevice.hex,boot.hex,app.hex和setting.hex,然后使用nRF connect扫描,这次就直接运行app了。

http://www.lryc.cn/news/92795.html

相关文章:

  • 开源WebRTC库放大器模式在采集桌面图像时遇到的DPI缩放与内存泄漏问题排查
  • 敲黑板!java反射机制和原理
  • 【大数据工具】HBase 集群搭建与基本使用
  • 【Java】数组详解
  • NumPy库的学习
  • CentOS安装IRIS
  • 华为OD机试真题 JavaScript 实现【最多几个直角三角形】【2023Q1 100分】
  • vue3中的reactive、ref、toRef和toRefs
  • 数字图像处理与Python实现-图像增强经典算法汇总
  • tag提示词总结
  • 微信小程序原生开发功能合集二十:导航栏、tabbar自定义及分包功能介绍
  • 高通 Camera HAL3:项目开发技术点总结
  • chatgpt赋能python:Python怎么删除列表中的最大值和最小值
  • 简述Vue的生命周期以及每个阶段做的事情
  • LeetCode-C#-0004.寻找两个正序数组的中位数
  • Vue.js 中的 $emit 和 $on 方法有什么区别?
  • LAZADA平台的商品评论Python封装API接口接入文档和参数说明
  • 云原生Docker镜像管理
  • ChatGPT+小红书的8种高级玩法
  • shell脚本学习记录1(运算符)
  • vector 迭代器失效问题
  • docker使用与服务器上的可视化(ROS rviz等)
  • 最新版本Portraiture4.1中文版ps磨皮滤镜插件安装包
  • 仓储WMS对接淘宝奇门详细说明【亲测可用】
  • RFID软件:简介、功能和应用范围
  • Android 逆向之安全防护基本策略
  • 基站机房:保障通信网络稳定,如何解决安全隐患?
  • sqlmap -os-shell 使用方法
  • Go语言并发之Select多路选择操作符
  • 黄金回收小程序开发功能有哪些?