NRF52832空中升级DFU

news2024/11/16 18:01:17

1.工具环境搭建

  • gcc-arm-none-eabi编译环境:GCC编译环境

           Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer

  • mingw 平台(win版的Linux命令行)

          Download MinGW - Minimalist GNU for Windows

  • micro-ecc-master源码

          GitHub - kmackay/micro-ecc: ECDH and ECDSA for 8-bit, 32-bit, and 64-bit processors.

(我用的原来工程中的micro_ecc_lib_nrf52.lib)

  • python 安装文件

          Download Python | Python.org

我用的是python-3.10.10-amd64版本。

  • pc-nrfutil

         GitHub - NordicSemiconductor/pc-nrfutil: nrfutil python library and command line client

我用的是pc-nrfutil-6.1.7版本

  • nrfgo-studio
  • nrf connect app

2、升级文件制作

2.1 密钥生成文件

(1)新建文件夹key,在CMD命令中输入:

nrfutil.exe keys generate D:\TEST\key\private.key

生成私钥文件。

(2)在命令中输入:

nrfutil keys display --key pk --format code D:\TEST\key\private.key --out_file D:\TEST\key\public_key.c

生成公钥文件public_key.c,将文件名修改为:dfu_public_key.c,复制dfu_public_key.c文件到dfu工程,dfu\dfu_req_handling\ 。

2.2 升级包制作

(1)boot工程的hex生成

打开dfu下的boot工程,重新编译,生成hex文件,将文件名改为:boot.hex,拷贝到key 文件夹下。

注意:起始地址为:0x78000,大小:0x8000

(2)应用工程的hex生成

打开ble_peripheral文件夹下的应用工程,重新编译,生成hex文件,将文件名改为:app.hex,拷贝到key文件夹下。

注意:起始地址为:0x1f000,大小:0x59000

2.3 升级文件zip的生成

在key文件夹下,输入命令:

nrfutil pkg generate --hw-version 52 --application-version 2 --application app.hex --sd-req 0x99 --key-file private.key test_Dfu15.zip

生成用于升级的文件:test_Dfu15.zip,放进手机中利用nrf connect app传送至设备。

注意:

蓝牙协议栈版本如下:

                                  |s112_nrf52_6.0.0|0xA7|
                                  |s112_nrf52_6.1.0|0xB0|
                                  |s112_nrf52_6.1.1|0xB8|
                                  |s130_nrf51_1.0.0|0x67|
                                  |s130_nrf51_2.0.0|0x80|
                                  |s132_nrf52_2.0.0|0x81|
                                  |s130_nrf51_2.0.1|0x87|
                                  |s132_nrf52_2.0.1|0x88|
                                  |s132_nrf52_3.0.0|0x8C|
                                  |s132_nrf52_3.1.0|0x91|
                                  |s132_nrf52_4.0.0|0x95|
                                  |s132_nrf52_4.0.2|0x98|
                                  |s132_nrf52_4.0.3|0x99|
                                  |s132_nrf52_4.0.4|0x9E|
                                  |s132_nrf52_4.0.5|0x9F|
                                  |s132_nrf52_5.0.0|0x9D|
                                  |s132_nrf52_5.1.0|0xA5|
                                  |s132_nrf52_6.0.0|0xA8|
                                  |s132_nrf52_6.1.0|0xAF|
                                  |s132_nrf52_6.1.1|0xB7|
                                  |s140_nrf52_6.0.0|0xA9|
                                  |s140_nrf52_6.1.0|0xAE|
                                  |s140_nrf52_6.1.1|0xB6|

3、生产烧录文件制作

3.1 setting 文件的生成

在key文件夹中,输入命令:

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

生成 app_setting.hex文件,用于下步合并文件的制作。

3.2 合并协议栈hex,boot的hex,应用的hex

在key文件夹中,输入命令:

mergehex --merge s132.hex boot.hex app.hex --output output3to1.hex

生成3个文件的合并文件output3to1.hex,用于下步合并文件的制作。

3.3 合并output3to1.hex 和app_setting.hex

在key文件夹中,输入命令:

mergehex --merge output3to1.hex app_setting.hex --output output4to1.hex

生成最终合并的output4to1.hex,可以直接用nrfgo软件直接烧录。

 

4、升级过程

连接设备蓝牙

1.使能Buttonless DFU的CCCD项;

2.点击按键2

点击SEND,设备进入boot模式,关闭当前连接,进入扫描项SCAN,连接DfuTrag

点击右上角的DFU小图标,选择ZIP文件(SDK12之后仅支持ZIP格式升级),点击OK,进入文件浏览器选择升级文件后自动开始升级,到100%时升级完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/612081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

永不磨灭的设计模式(23种设计模式全集)

永不磨灭的设计模式 概述七大基本原则23种设计模式1、单例模式2、工厂(方法)模式3、抽象工厂模式4、原型模式5、建造者模式6、适配器模式7、桥接模式8、组合模式9、装饰器模式10、外观模式11、享元模式12、代理模式13、责任链模式14、命令模式15、迭代器模式16、中介者模式17、…

tinkerCAD案例:3.基本按钮

基本按钮 在本课中,您将学习制作具有圆柱形状的基本按钮。 说明 将圆柱体拖动到工作平面。 将其缩小到 2 毫米的高度。 提示: 您可以使用圆柱形状顶部的白点缩小圆柱体。 将其缩小到直径 16 毫米。 这将是按钮的主要形状。 现在我们可以创建允许将纽…

CSS动画:多动画同步播放或非同步播放

前言 本篇在讲什么 在CSS样式表现动画的基础上的拓展 本篇适合什么 适合初学H5的小白 适合初学CSS的小白 适合入门的前端程序 本篇需要什么 对Html和css语法有简单认知 Node.js(博主v18.13.0)的开发环境 Npm(博主v8.19.3)的开发环境 依赖VS code编辑器 本篇的特色…

impala内存超限

目录 一、背景 二、报错内容 三、解决办法 1.调参 2.简单粗暴 一、背景 impala shell执行SQL语句时报错 二、报错内容 Memory limit exceeded: Could not allocate memory while trying to increase reservation. 三、解决办法 1.调参 mem_limit参数:&…

ciscn 2023 初赛 pwn shell we go

ciscn 2023 初赛 pwn shell we go 这题go pwn,符号恢复就恢复很长时间了,网上的插件好多都没用 根着流程,可以看到这里有一个验证,以空格来分割,第一个参数会验证是否为nAcDsMicN 如果第一个参数验证通过&#xff0c…

Centos7 开启图形化界面 Linux安装VNC

环境: Centos7 windows连接:下载VNC Viewer 目录 VNC概述 VNC原理 一、检查是否安装过VNC 二、安装图形化界面 三、安装和配置VNC服务 四: 启动VNC及常用命令 五: VNC windos连接工具连接 VNC概述 VNC (Virtual Network Computing)是虚拟网络计算机的缩写…

如何零基础自学网络安全?

学前感言: 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发. 3.有时多 google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答. 4.遇到实在搞不懂的,可以先放放,以后再来解…

性能优化记录

您好,如果喜欢我的文章,可以关注我的公众号「量子前端」,将不定期关注推送前端好文~ 前言 最近零零散散的对刚接手的一个新项目做了一些优化,白屏、打包相关的内容都涉及到了,写一篇文章来记录一下。 白屏相关 DNS…

chatgpt赋能python:Python同一行语句之间的分隔

Python同一行语句之间的分隔 在Python中,同一行内的语句通常使用分号 ‘;’ 分隔开来。分号作为语句之间的分隔符,可以使我们在同一行内写多条语句,从而减少代码行数,提高代码可读性和可维护性。 分隔符和代码风格 在使用分号进…

[C++]基本知识与概念

C基础知识与概念 C与C基础C面向对象C STLC 内存管理C11新特性C linux编程I/O多路复用 前言 本文章适用于有一定C基础的新手同学快速掌握一些C的基本知识概念以及面试中可能会问的内容,如果你没有相应的基础学习又因为这篇文章缺少代码讲解所以可能会影响你的学习效率…

Mysql安装教程(windows)

本文主要讲解如何去安装使用Mysql 一、下载Mysql 1、官网在线下载 MySQL官网:https://www.mysql.com/downloads/ 下载版本:MySQL Installer for Window 2、云盘离线下载 https://pan.baidu.com/s/1dB7kFiwrKpF5W-5XPn2FeQ?pwdrvb9 提取码:…

【图像任务】Transformer系列.2

两篇改进Transformer结构的论文:MAN(arXiv2022),ScalableViT(ECCV2022). Multi-Scale Attention Network for Single Image Super-Resolution, arXiv2022 解读:【ARIXV2209】Multi-Scale Atten…

Java课程设计-学生管理系统《控制台版本》

博主介绍:✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

JavaEE(系列20) -- 网络编程之UDP和TCP套接字

目录 1. 网络编程 2. UDP网络编程 2.1 DatagramSocket API 2.2 DatagramPacket API 2.3 基于UDP实现的回显服务器 2.3.1 UDP服务器设计步骤 2.3.2 服务器代码 2.3.3 客户端代码 2.3.4 基于UDP写一个字典服务器 3. TCP网络编程 3.1 ServerSocketAPI 3.2 SocketAPI …

如何不出国一年内拿到加拿大女王大学金融硕士学位证书?

作为加拿大最好的公立大学之一,QueensUniversity位于安大略省的金斯顿市。最近,它在QS全球大学排名中跻身第209位,同时在加拿大的综合排名中名列第7位。这表明女王大学在学术研究和教育方面都有着出色的表现。Queens University坐落于安大略省…

分布式光伏发电远程监控系统

分布式光伏发电远程监控系统 项目背景 新能源、可再生能源接入电网是智能电网建设的重要组成,也是能源互联网发展的基础。近年来,太阳能光伏发电技术快速发展,光伏发电并网对配电网的影响也不断加深。电网调度人员需要人工参与光伏发电站的发…

RK3588+FPGA+Cameralink高速相机解决方案

1. 视频接入,其中可见使用LVDS,红外使用cameralink 2. H264低倍率压缩编码本地存储 3. H264压缩使用同步422接口或者网口UDP协议输出实时码流 4. 使用串口进行通讯,进行类似于可见、红外或者激光器或者地面控制软件等之间的通讯 5. 使用网…

SpringBoot3-基础配置和多环境开发

1. 配置文件格式 提供三种属性配置方式,当三个配置文件都有,加载顺序从前至后 示例第二种(主要也是用这个): 2. yaml格式 3. yaml读取数据格式的三种方式 第一种,使用Value读取单一属性数据 Value("${…

基于redis实现消息队列(更推荐使用专业的mq)

目录 利用redis实现消息队列(基于list,点对点模型)——lpush存放队列(lpush 队列名 队列内容(可一次存放多个内容,用空格隔开)) brpop取队列(brpop 队列名 等待时间单位秒…

机器视觉日常习题(更新中。。。)

目录 第二讲 图像处理概述 第二讲 图像处理概述 几何变换:又称为图像空间变换,它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置。图像分割:把图像分成各具特色的区域并提取感兴趣目标的技术和过程。图像边缘: 平滑&#…