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了。
相关文章:
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”,接提示安装。注意安装完…...
开源WebRTC库放大器模式在采集桌面图像时遇到的DPI缩放与内存泄漏问题排查
目录 1、在非100%的显示比例下放大器采集到的桌面图像不全问题 1.1、通过manifest文件禁止系统对软件进行缩放 1.2、调用SetThreadDpiAwarenessContext函数,禁止系统对目标线程中的窗口进行缩放 1.3、使用winver命令查看Windows的年月版本 2、使用放大器模式遇…...
敲黑板!java反射机制和原理
获取Class对象:首先,你需要获取表示要操作的类的Class对象。可以使用以下三种方式之一来获取Class对象: Class.forName()方法:使用类的全限定名获取Class对象,例如:Class<? Class<?> clazz MyC…...
【大数据工具】HBase 集群搭建与基本使用
HBase 集群搭建 HBase 安装包下载地址:https://archive.apache.org/dist/hbase/ 安装 HBase 的前提: ZooKeeper 集群 OKHadoop 集群 OK 1. HBase 集群安装 1. 将 HBase 软件包上传至 Hadoop0 解压并重命名 使用 FileZilla 将 hbase-1.3.1-bin.tar.g…...
【Java】数组详解
文章目录 一、数组的基本认识1.1 数组的概念1.2数组的创建与初始化1.3 数组的使用 二、数组的类型 — 引用类型2.1 JVM 内存分布2.2 什么是引用类型2.3 基本类型变量与引用类型变量的区别2.4 Java 中的 null 三、数组的应用3.1 保存数据3.2 函数参数3.3 函数返回值 一、数组的基…...
NumPy库的学习
本文主要记录的是笔者在B站自学Numpy库的学习笔记。 引入numpy库 import numpy as np矩阵的创建 创建一个二行三列的矩阵。 array np.array([[1,2,3],[2,3,4]])查看array的行数、形状、元素数量 print("number of dim:",array.ndim) print("shape:"…...
CentOS安装IRIS
最近电脑提搞了,可以无顾虑创建虚拟机了,试一下在Linux安装IRIS,适用CentOS7.6上安装Intersystem公司的IRIS数据库,资料基本是空白,分享一下。 首先安装解压软件unzip和libicu,最小化安装的缺,…...
华为OD机试真题 JavaScript 实现【最多几个直角三角形】【2023Q1 100分】
一、题目描述 有 N 条线段,长度分别为 a[1]-a[n]。 现要求你计算这 N 条线段最多可以组合成几个直角三角形,每条线段只能使用一次,每个三角形包含三条线段。 二、输入描述 第一行输入一个正整数 T (1< T< 100) ,表示有…...
vue3中的reactive、ref、toRef和toRefs
目录 reactivereactive的实现原理使用reactive的注意事项 refref的实现原理使用ref的注意事项 toRef和toRefsref和reactive的使用比较 reactive reactive用于创建响应式对象,它返回一个对象的响应式代理。即:它返回的对象以及其中嵌套的对象都会通过 Pr…...
数字图像处理与Python实现-图像增强经典算法汇总
图像增强经典算法汇总 文章目录 图像增强经典算法汇总1、像素变换2、图像逆变换3、幂律变换4、对数变换5、图像均衡化6、对比度受限自适应直方图均衡(CLAHE)7、对比度拉伸8、Sigmoid校正9、局部对比度归一化10、总结本文将对图像增强经典算法做一个简单的汇总。图像增强的经典…...
tag提示词总结
顺序的权重 越靠前的tag权重越大,越靠后的tag权重越小经验来讲,将图像质量相关的tag放在前面,例如masterpiece,best quality等;接着添加主体画风等;最后添加一些不太重要的细节 权重增减 (tag):…...
微信小程序原生开发功能合集二十:导航栏、tabbar自定义及分包功能介绍
本章实现导航栏及tabbar的自定义处理的相关方法介绍及效果展示。 另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下: 1. CSDN课程: https://edu.csdn.net/course/detail/37977 2. 5…...
高通 Camera HAL3:项目开发技术点总结
做高通 Camera HAL3开发的一些技术点的总结、整理。 做个记录,方便后续查阅。 1.目录、so、配置文件 productName是项目名 out Target路径:\out\target\product\productName\chi-cdk:\vendor\qcom\proprietary\chi-cdk\ldc node࿱…...
chatgpt赋能python:Python怎么删除列表中的最大值和最小值
Python怎么删除列表中的最大值和最小值 在Python中,一个列表(List)是一种非常常见的数据结构,它允许我们以有序的方式存储和访问数据。但是,有时候我们需要从列表中删除最大或最小的值,以满足我们的特定需…...
简述Vue的生命周期以及每个阶段做的事情
03_简述Vue的生命周期以及每个阶段做的事情 思路 给出概念 列举出生命周期各个阶段 阐述整体流程 结合实际 扩展:vue3变化 回答范例 每个vue组件实例被创建后都会经过一系列步骤。比如它需要数据观测、模板编译、挂载实例到dom、以及数据变化的时候更新dom、…...
LeetCode-C#-0004.寻找两个正序数组的中位数
0.声明 该题目来源于LeetCode 如有侵权,立马删除。 解法不唯一,如有新解法可一同讨论。 1.题目 0004寻找两个正序数组的中位数 给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。 请你找出并返回着两个正序数组的中位…...
Vue.js 中的 $emit 和 $on 方法有什么区别?
Vue.js 中的 $emit 和 $on 方法有什么区别? 在 Vue.js 中,$emit 和 $on 方法是两个常用的方法,用于实现组件间的通信。它们可以让我们在一个组件中触发一个自定义事件,并在另一个组件中监听这个事件,从而实现组件间的…...
LAZADA平台的商品评论Python封装API接口接入文档和参数说明
LAZADA是一个位于东南亚的电商平台,成立于2012年。该平台覆盖的国家包括新加坡、马来西亚、印尼、菲律宾、泰国和越南等地。它提供了一个多样化的产品选择,包括时尚、美容、数码、母婴等商品,并且拥有许多知名品牌的官方旗舰店。同时…...
云原生Docker镜像管理
docker是什么? docker是一个go语言开发的应用容器引擎。 docker的作用? ①运行容器里的应用; ②docker是用来管理容器和镜像的一种工具。 #容器 与 虚拟机 的区别? 容器虚拟机所有容器共享宿主机内核每个虚拟机都有独立的操…...
ChatGPT+小红书的8种高级玩法
掌握了这套万能命令,让你快速做出小红书爆款文案! 一、用ChatGPT做定位 我是一个大龄的普通人,没有什么特殊的技能,接下来,请你作为一位小红书的账号定位专家,通过与我对话的方式,为我找到我的小红书账号定…...
shell脚本学习记录1(运算符)
Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 以下实例我们向脚本传递三个…...
vector 迭代器失效问题
vector 迭代器失效 迭代器的主要作用就是让算法能够不用关心底层数据结构,其底层实际就是一个指针,或者是对指针进行了封装,比如:vector的迭代器就是原生态指针T* 。因此迭代器失效,实际就是迭代器底层对应指针所指向…...
docker使用与服务器上的可视化(ROS rviz等)
1.安装docker 安装docker:官网教程,按照官网命令一步步来即可。 添加当前用户到docker用户组: 【docker】添加用户到docker组,这样后面运行docker的时候前面不需要加sudo命令,否则运行docker的时候一直需要在前面加su…...
最新版本Portraiture4.1中文版ps磨皮滤镜插件安装包
在Portraiture有非常强大的手动功能,可以为用户进行手动调整照片中的皮肤区域以达到更加完美的效果,软件还支持同时导入上千张照片,用户可以通过自动识别照片中的人脸从而依照自己的风格进行批量处理十分的方便快捷。 最新版本Portraiture 4…...
仓储WMS对接淘宝奇门详细说明【亲测可用】
文章目录 简介名词解释奇门对接方案前期准备系统调用流程代码实现思路关键点(个人观点)奇门对接关键代码可能遇到的问题 简介 淘宝奇门项目支持 ERP、WMS 之间的系统标准化对接,通过构建 ERP、WMS 系统之间标准通信协议来实现不同系统之间的打通;对商家…...
RFID软件:简介、功能和应用范围
在当今快节奏的商业环境中,RFID(射频识别)技术已经成为物流、供应链和库存管理等领域中不可或缺的工具。本文将向您介绍RFID软件的基本知识,探讨其功能和广泛应用的范围。 第一部分:RFID软件简介 RFID软件是一种应用…...
Android 逆向之安全防护基本策略
对抗反编译 混淆 使用混淆主要可以减小包的大小。混淆对于安全保护来说,只是增加了阅读难度而已。混淆不会把关键代码混淆掉,比如MainActivity,Application等,可以通过分析smali和阅读jar包定位代码。 资源混淆也是换汤不换药&…...
基站机房:保障通信网络稳定,如何解决安全隐患?
基站机房作为无线通信网络的关键组成部分,承载着大量的网络设备和通信设施,对于运营商和通信服务提供商来说具有重要意义。 无论是大型运营商还是通信服务提供商,动环监控系统都将成为他们成功运营和管理通信网络的关键工具。 客户案例 案例…...
sqlmap -os-shell 使用方法
一、burp suite抓包。 如上图所示,红框处很明显是一个传参点,我们就在这个页面抓包。 抓到包之后将内容保存到桌面的1000.txt文件下。 二、sqlmap跑包。 打开sqlmap跑包。 python sqlmap.py -r C:\Users\16434\Desktop\1000.txt -dbmsmysql --os-shell…...
Go语言并发之Select多路选择操作符
1、Go语言并发之Select多路选择操作符 select 是类 UNIX 系统提供的一个多路复用系统 API,Go 语言借用多路复用的概念,提供了 select 关键字,用 于多路监听多个通道。当监听的通道没有状态是可读或可写的,select 是阻塞的&#…...
永年做网站多少钱/百度搜索引擎
题目 长度为n(n<1e5)的仅由abc三种字母组成的串, q(q<1e5)次操作,每次给出两个参数pos x(x属于a、b、c三种字母中的一种), 表示把pos位置的字母改成x, 每次改完之后,都需要输出把整个…...
提高网站注册率/南宁网站制作
单一个项目的数据导入可以在具体功能 中导入,大体位置如下。如果项目新上线的话,要批量导入数据的话,就要到如下的功能中实现了。进入方式: 在 设置 ---- 数据管理下载下载后,用EXCEL打开, 给业务人员批量输…...
wordpress个人模板下载/2021年最为成功的营销案例
我叫张志印,来自 Grab,这次主要跟大家分享一下我们在地理服务中的 Golang 实践。本次分享大纲:Whats Grab一个典型的派单流程一个核心地理服务系统演进历程Why go压测与调优QAGrab 是东南亚最大的出行平台,我们不只是…...
程序员做网站美工能过关吗/百度云搜索引擎官网
【Struts2国际化资源文件定义的3种范围方法】1)全局的国际化资源文件,对所有的Action和View都有效定义方式:在struts.xml中增加全局资源文件定路径定义: <constant name"struts.custom.i18n.resources" value…...
wordpress简约企业主题下载/小广告
由于系统升级为Ubuntu 12.04 LTS版,【Linux菜鸟成长记】系列教程将不再更新,接下来会更新Ubuntu 12.04的新功能和使用方法技巧等文章。故将此系列文章整理存档,供自己和大家使用。遗憾的是未能写下搭建Qt开发环境,接下来会有更新。…...
无锡企业网站制作公司/制作网页教程
目前自动化测试可谓是人人在提,而且自动化工具和一些开源框架也是层出不穷。截止现在,我也接触了一些自动化的知识,分享下。 一、WebUI自动化 1. 工具或框架 Unittest框架,SeleniumWebdriverPython集成开发 优势: ①…...