nRF52832 开发记录(二) - DFU 功能

前言

NRF 官方提供了 DFU (Device Firmware Upgrade) 设备固件升级的例程,在项目中使用需要自己生成密钥用于加解密固件。本工程基于 nRF5_SDK_16.0.0

相关软件下载和安装

nRF Command Line Tools 10.5.0 (上篇博文已安装) 下载链接
Python 2.7.17 下载链接
coreutils 5.3.0 下载链接
gcc-arm-none-eabi-7-2018-q2-update-win32-sha2 下载链接
make 3.81 下载链接
micro-ecc 1.0 下载链接

分别安装以上的软件,添加这两项到系统环境变量

C:\Program Files (x86)\GnuWin32;
C:\Program Files (x86)\GnuWin32\bin;

安装 gcc-arm-none-eabi-7-2018-q2-update-win32-sha2 和 Python 2.7 勾选下图的添加到系统环境变量

Python 2.7 安装完成后安装 nrfutil,打开命令行输入

python -m pip install nrfutil

添加 micro-ecc

examples\dfu\secure_bootloader\pca10040_s132_ble 为 nRF52832 的 蓝牙 DFU 例程,这里我重新整理了工程,需要将 micro-ecc 放到 external\micro-ecc 中,具体可参考 此链接

双击 external\micro-ecc 中的 build_all 编译

重新打开工程可看到此文件不缺失

生成公钥和私钥

在 app 目录打开命令行,分别生成 dfu_private_key.pem 和 dfu_public_key.c

nrfutil keys generate dfu_private_key.pem
nrfutil keys display --key pk --format code dfu_private_key.pem --out_file dfu_public_key.c

打开工程编译

工程中的一些设置

打开 sdk_config.h,切换到 Configuration Wizard

NRF_BL_DFU_ENTER_METHOD_BUTTON_PIN 表示进入 Bootloader 时按住此键则不会跳转到用户程序

NRF_DFU_BLE_ADV_NAME 设置 DFU 模式时的广播名

NRF_DFU_APP_DATA_AREA_SIZE 表示用户程序设置的保存区域,比如 FDS 数据,进行 DFU 更新时会确保不覆盖此区域,因为 1 页为 4KB,所以 12288 代表预留 3 个页,在此处可以认为是 App + Free Space 的 0x0002 6000 - 0x0007 7FFF 地址中的结尾 12KB ,具体可参考上一篇博文中的分区

原文地址:https://www.cnblogs.com/HintLee/p/12268070.html

时间: 2024-08-04 08:52:47

nRF52832 开发记录(二) - DFU 功能的相关文章

nRF52832 开发记录(一) - 入门及相关小问题的处理

前言 近段时间因项目需要开始接触蓝牙芯片 nRF52832,官方的文档和 SDK 确实相当完善和易于上手,最开始是在 nRF5 SDK v15.3.0 做开发,不久前官方更新了 nRF5 SDK v16.0.0,后续文章也会以这个版本做记录. 开发环境安装和配置 Keil MDK-ARM 5.29 下载链接 nRF Command Line Tools 包含 nRF 开发常用的工具和 J-Link 驱动 下载链接 ARM.CMSIS.4.5.0 下载链接 NordicSemiconductor.

云笔记开发记录二:node-webkit 如何启动 express(更准确说是MEANJS) 项目?

node-webkit 如何启动 express(更准确说是MEANJS) 项目? 一般网上都是教你node-webkit从一个html文件启动起来的~当我们是用一个express项目让node-webkit启动的话,就很少有人写到过~ 所以,我将在这里记下我是如何让node-webkit启动一个express服务的! 参考官方资料: https://github.com/nwjs/nw.js/wiki/NW.js-use-express-and-similar-web-frameworks 从

项目开发记录二

关键字:时间,努力,效率,利益. 关键句:没有结果的努力只能说明一点,你做的都是假努力!从你做出的东西就能反应你花了多少时间! 有技术的拥有话语权,我们是靠的不是行政管理! 你想到的不仅是你能从别人那里得到什么,还有你能给别人带去什么. 选择共同做项目,就意味着承担这份责任,维持彼此之间的就是利益. 我把项目分配给你做,是对你的一种期待,期待你现在或者经过训练后能帮我解决部分问题,而若是我觉得把这些问题交给你做,还不如我自己利索,那我们也就没有共事的意义了. 让你去做的是你现在不会的,而那些你会

LNMP系列网站零基础开发记录(二)

[目录] 扯淡吹逼之开发前奏 Django 开发环境搭建及配置 Bootstrap 前端页面开发 Django app开发 Django 站点管理 Python 简易爬虫开发 Nginx&uWSGI 服务器配置 ...  二.Django 开发环境搭建及配置  1. 开发环境 开发环境依然是Windows,可以开发的django的IDE较多,我只使用过以下几种 Eclipse  免费IDE,需要下载pydev插件,代码提示功能不错 Visual Studio 需要下载PTVS,结合了VS强大的编

前端常用功能记录(二)—datatables表格(转)

前端常用功能记录(二)—datatables表格 并不是所有的后台开发都有美工和前端工程师来配合做页面,为了显示数据并有一定的美感,jQuery的DataTables插件对于像我这样的前端菜鸟来说真是雪中送炭,当然对于专业的前端开发者来说它更是锦上添花!DataTables提供了针对表格的排序.浏览器分页.服务器分页.筛选.格式化.统计等强大功能. 工作中对程序员的学习模式才深有体会,不是从入门到精通,而是从会用到了解.对于我来说,基本都是拿到一个知识先做个东西出来,再来细细品味个中的细节,然后

jquery easyui根据需求二次开发记录

1.tree需要显示多个图标 实际需求:设备树上节点需搁三个图片,分别标识运行状态.告警状态.设备类型 解决方法:给tree的iconCls传入一个数组,分别是各状态下的class(css),然后要改动easyui关于tree节点组装部分的代码 if(item.iconCls ){ cc.push("<span class=\"tree-icon tree-folder "+(item.iconCls?item.iconCls:"")+"\

Android开发记录20-获取缓存大小和清除缓存功能

Android开发记录20-获取缓存大小和清除缓存功能 转载请注明:IT_xiao小巫 博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要给大家分享的如何获取应用缓存的大小和清除缓存的功能,我们知道我们应用当中经常会产生一些数据,比如图片的缓存,数据库文件,配置文件等等.我们开发产品的时候,可能会有这样的一个需求清除应用内缓存的数据,可以让用户选择删除应用内产生的数据,这也是比较人性化的设计点.例如笔者参与开发的一款产品的设置界面就提供了清除缓存的功能,如下图所

phpcms程序二次开发记录

1. phpcms/base.php 中的 pc_base 类 静态类,主要加载各个文件使用.2. pc_base 中 load_sys_func 等带 sys的函数,基本都是加载 lib下文件. func加载functions下: class 加载 class下3. pc_base 中 函数一般第一个参数为文件名,第二个参数为路径,第3个参数有一般为:加载类是否实体化4. pc_base 中 load_app开头则为加载modules下的 functions和class等5. 网站开始入口控制

ArcGIS Engine 开发(二)线、圆、矩形、面、文本编辑功能

ArcGIS Engine 开发(二)线.圆.矩形.面.文本编辑功能,这些都是实现课上的源代码,自己调试好了,直接可以放到vs2010下跑,希望能对大家有所帮助 好了,先来看效果 二.下面是调试好的代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using Syste