专栏首页JETSON NANO AInRF5x系列蓝牙模块DFU升级服务移植 -- 2 文件生成
原创

nRF5x系列蓝牙模块DFU升级服务移植 -- 2 文件生成

文章中所使用的工具,请参考《nRF5x系列蓝牙模块DFU升级服务移植 -- 1 工具安装》说明。

2.1  micro_ecc_lib_nrf52.lib文件的生成

首先选中C:\MinGW\msys文件夹中的批处理执行文件msys.bat,点击打开,如下图所示:

在SDK中找到算法,如下图所示:

在打开的msys.bat文件框中的命令行输入指令cd /F/nRF5_SDK_15.0/external/micro-ecc/nrf52hf_keil/armgcc,然后回车执行指令,如下图所示:

继续输入指令make,然后回车,如下图所示:

生成的lib文件,可在F:\nRF5_SDK_15.0\external\micro-ecc\nrf52hf_keil\armgcc文件夹中找到,如下图所示:

备注:在make时候,如果提示文件找不到,如下图所示:

该处错误是因为没有发现GNU的路径,这里我们打开F:\nRF5_SDK_15.0\components\toolchain\gcc文件夹,找到Makefile.windows文件,使用记事本打开,修改GNU安装路径,如下图所示:

2.2  密钥的生成

在F盘新建一个命名为key的文件夹,在此处打开dos命令框(Shift+鼠标右键打开),在命令行中输入指令nrfutil.exe keys generate F:\key\private.key,回车执行指令,执行结果如下图所示:

打开F:\key文件夹,可以找到新生成的private.key文件,如下图所示:

然后使用该文件生成一个C文件,这里的文件分别是私钥(private.key)和公钥(public_key.c)。

备注:务必要保存好私钥private.key,以后每个新的image要升级时,都会先通过这个私钥对它进行签名,一旦private.key丢失或者被暴露,DFU将无法进行或者变得不安全。

在dos命令行中输入指令nrfutil keys display --key pk --format code F:\key\private.key --out_file F:\key\public_key.c,回车执行,结果如下图所示:

打开F:\key文件夹,可以找到新生成的public_key.c文件,如下图所示:

到此密钥已经完成生成,而这个公钥是后面boot工程所需要的,所以需要将public_key.c文件重命名为dfu_public_key.c,并替换F:\nRF5_SDK_15.0\examples\dfu中的dfu_public_key.c文件,如下图所示:

2.3  boot工程的hex生成

打开F:\nRF5_SDK_15.0\examples\dfu\secure_bootloader\pca10040_ble\arm5_no_packs文件夹下的keil工程,如下图所示:

如果之前的操作均完成且正确的话,编译该工程会提示0错误,并且在F:\nRF5_SDK_15.0\examples\dfu\secure_bootloader\pca10040_ble\arm5_no_packs\_build文件夹中生成nrf52832_xxaa_s132.hex文件,如下图所示:

把nrf52832_xxaa_s132.hex的文件名更改为boot.hex,放到之前新建的F:\key文件夹中,如下图所示:

2.4  应用程序的hex生成

这里使用SDK库自带的ble_app_buttonless_dfu用例工程进行hex文件生成步骤的说明。

打开F:\nRF5_SDK_15.0\examples\ble_peripheral\ble_app_buttonless_dfu\pca10040\s132\arm5_no_packs文件夹下的keil工程,如下图所示:

如果之前的操作均完成且正确的话,编译该工程会提示0错误,并且在F:\nRF5_SDK_15.0\examples\ble_peripheral\ble_app_buttonless_dfu\pca10040\s132\arm5_no_packs\_build文件夹中生成nrf52832_xxaa.hex文件,如下图所示:

把nrf52832_xxaa.hex的文件名更改为app.hex,放到之前新建的F:\key文件夹中,如下图所示:

2.5  应用程序的zip生成

进入F:\key文件夹,在此处打开dos命令框(Shift+鼠标右键打开),在命令行中输入指令nrfutil pkg generate --hw-version 52 --application-version 1 --application app.hex --sd-req 0xa8 --key-file private.key test.zip,回车执行指令,执行结果如下图所示:

执行后可在F:\key文件夹中找到test.zip文件,如下图所示:

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • nRF5x系列蓝牙模块DFU升级服务移植 -- 1 工具安装

    登录https://developer.arm.com/tools-and-software/open-source-software/developer-to...

    DN
  • Jetson Nano 使用gSOAP生成ONVIF框架代码及动态库 -- 1 工具安装

    登录http://www.gnu.org/software/bison/网站,如下图所示选择进入下载界面:

    DN
  • Jetson Nano 使用gSOAP生成ONVIF框架代码及动态库 -- 2 ONVIF框架生成

    由于使用gSOAP版本为2.8.102,需要对typemap.dat文件进行修改,否则会在后面动态库生成中提示错误,错误如下所示:

    DN
  • PHP运算符

    老雷PHP全栈开发
  • 机器学习|AdaBoost

    对于分类问题而言,给定一个训练样本集,求比较粗糙的分类规则(弱分类器)要比求精确的分类规则(强分类器)容易的多,提升方法就是从弱学习算法出发,反复学习,得到一系...

    数据山谷
  • 如何利用腾讯云BGP网络提升客户外网出口的冗余

    最近几年,互联网公司发展迅速,有很多互联网公司本身的基础架构都构建在一些公有云厂商之上,除了节省初期投资之外,另外也是借助于一些大的云厂商本身的网络能力,实现业...

    张小波
  • TiKV 源码解析系列文章(十三)MVCC 数据读取

    在 《TiKV 源码解析系列文章(十二)分布式事务》 中,我们介绍了如何在满足事务特性的要求下进行数据写入。本文将介绍数据读取的流程。由于顺序扫(Forward...

    CNCF
  • PHPStrom 关于配置Apache解析环境80端口问题

    在PHPStrom编译器中,存在着端口号为23643等等端口号,不能自己设置80端口,这个是比较尴尬的,小编在此列举该方式,望大家不要踩坑,希望能够帮助到大家。

    Debug客栈
  • 【机器学习入门】决策树的原理

    决策树(Decision Tree) 是一种数据结构,可以用来分类和回归,决策树是数据结构,但构建决策树有一系列的算法,决策树的核心之一就是利用算法构建最佳的决...

    Frank909
  • 巧妙运用Excel分析CDN日志

    cdn访问日志下载下来解压后是以域名结尾的,在windows下.com是可执行文件,实际上cdn日志是文本文件,不论它后缀名变为.exe还是.png它都是文本文...

    Mr.Du

扫码关注云+社区

领取腾讯云代金券