如何修复或者更新nRF52840 Dongle固件
前言
近期,nRF Connect的版本升级到了v2.5.0,导致一些发货出去的nRF52840 Dongle根据nRF Connect的指引升级Bootloader时,出现无法升级的情况。最初,我们在遇到这个问题时也很纳闷,为什么在v2.4.0版本升级没有问题,怎么到了v2.5.0反而出问题了呢。后来,我们在官方的Release Note中看到了如下信息:
- Updated connectivity firmware from SoftDevice v3.0 to v3.1 for better compatibility with SoftDevice 6.1
- Support for upgrading bootloader on nRF52840 dongle
- Support for Programmer app update
- Updated electron to 2.0
- Updated jest to 23.4.1
- Support to relaunch app when encountering libusb error
- Exposed start & stop watching device API
其中,在v2.5.0版本中增加了更新bootloader的功能,而Nordic在SDK12.0版本开始增加了micro-ecc,所以会出现这种情况。原因就是使用Public Key的Bootloader计算出来的哈希值与Initdata计算出来的哈希值不一致,那么出现这种问题应该怎么做呢?接下来,我将介绍如何修复以及更新nRF52840 Dongle的固件,请跟随小编的步伐一步一步来。
准备工具
pc-nrfutil
用于生成Public Key
SEGGER Embedded Studio for ARM
用于编译下载Bootloader工程
准备工作
生成Public Key
使用pc-nrfutil生成public key,具体步骤如下所示:
在cmd中切换至pc-nrfutil路径下,并输入以下命令
.\nrfutil.exe keys generate private.pem
将生成的
private.pem
转换成.c文件,并将生成的.c文件的内容覆盖掉dfu_public_key.c
的内容,如下所示:.\nrfutil.exe keys display --key pk --format code private.pem --out_file public_key.c
[外链图片转存失败(img-iao687fY-1565883336975)(https://raw.githubusercontent.com/xiaolongba/HX_DK_FOR_NORDIC_52840_BLE/master/%E8%BD%AF%E4%BB%B6/%E7%BA%A2%E6%97%AD%E6%97%A0%E7%BA%BF%E5%BC%80%E5%8F%91%E6%9D%BF%E5%AE%9E%E6%88%98%E6%95%99%E7%A8%8B/nRF52840%20Dongle/local_pics/732396df27b4cff49d3da269fe571958.png)]
覆盖后的情况,如下所示:
[外链图片转存失败(img-6hOFF09T-1565883336976)(https://raw.githubusercontent.com/xiaolongba/HX_DK_FOR_NORDIC_52840_BLE/master/%E8%BD%AF%E4%BB%B6/%E7%BA%A2%E6%97%AD%E6%97%A0%E7%BA%BF%E5%BC%80%E5%8F%91%E6%9D%BF%E5%AE%9E%E6%88%98%E6%95%99%E7%A8%8B/nRF52840%20Dongle/local_pics/36dbb318798de91c43199744a2604da3.png)]
屏蔽哈希值校验函数
屏蔽文件所在的绝对路径 (下面是小编的SDK路径下的绝对路径),如下所示:
C:\Users\Administrator\Desktop\New_folder\nRF5_SDK_15.0.0_a53641a\components\libraries\bootloader\dfu\nrf_dfu_validation.c
err_code = nrf_crypto_ecdsa_verify(&m_verify_context,&m_public_key,m_init_packet_hash,hash_len,m_signature,sizeof(m_signature));
// if (err_code != NRF_SUCCESS)
// {
// NRF_LOG_ERROR("Signature failed (err_code: 0x%x)", err_code);
// NRF_LOG_DEBUG("Signature:");
// NRF_LOG_HEXDUMP_DEBUG(m_signature, sizeof(m_signature));
// NRF_LOG_DEBUG("Hash:");
// NRF_LOG_HEXDUMP_DEBUG(m_init_packet_hash, hash_len);
// NRF_LOG_DEBUG("Public Key:");
// NRF_LOG_HEXDUMP_DEBUG(pk, sizeof(pk));
// NRF_LOG_FLUSH();
//
// return NRF_DFU_RES_CODE_INVALID_OBJECT;
// }
编译Bootloader工程
使用SEGGER Embedded Studio for ARM打开如下路径的工程,具体的路径如下所示:
C:\Users\Administrator\Desktop\New_folder\nRF5_SDK_15.2.0_9412b96\examples\dfu\open_bootloader\pca10059_usb_debug\ses
此时工程中的dfu_public_key.c
的内容,应该覆盖成生成Public Key中第二步骤中所说的内容。同时,也要将屏蔽哈希值校验函数中提到的函数屏蔽掉。最后,编译下载至nRF52840 Dongle Dongle上即可。(Tips:如果下载完成之后,Dongle的红色Led不闪烁,则按下复位键即可)
最后
打开nRF Connect,选择Bluetooth Low Energy,选择nRF52840 Dongle映射出来的串口,即可完成升级。效果图如下所示:
[外链图片转存失败(img-NWmfTuzI-1565883336977)(https://raw.githubusercontent.com/xiaolongba/picture/master/upgrate%20nRF52840%20%20Dongle.gif)]
更多
红旭无线Github
红旭无线技术交流论坛
如何修复或者更新nRF52840 Dongle固件相关推荐
- 家庭路由器哪家强:固件漏洞多年不修复,更新无济于事
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 德国弗劳恩霍夫通信技术研究所 (FKIE) 研究了7个品牌的127款家庭路由器,旨在分析它们的最新固件版本中是否存在已知的安全漏洞,结 ...
- airpods版本号_苹果更新 AirPods Pro 固件
原标题:苹果更新 AirPods Pro 固件 今日凌晨,苹果为 AirPods Pro 进行了固件升级,版本号由之前的 2C54/2B588 更新至 2D15.对于此次固件更新的内容仍未知,但有部分 ...
- 修复因更新iCloud设置而卡住的iPhone / iPad的六种方法
在更新iOS期间,您可能会收到各种iOS更新通知,例如,iPhone停留在验证update上.您是否想知道iPhone或iPad坚持更新iCloud设置的原因以及解决方法?然后,请阅读本文.第1部分: ...
- 使用Nordic的nRF52840 Dongle配合Wireshark对蓝牙设备抓包(BLE)
硬件准备: 1)nRF52840 Dongle 2)待抓包的蓝牙设备 软件准备: 1)Python 2)Wireshark 3)nRF Sniffer for Bluetooth LE Python安 ...
- activex部件修复_通过让ActiveX流量通过来修复Windows更新错误
activex部件修复 When Windows Updates fail, the error codes returned are designed to make it easier to fi ...
- 捷波朗更新固件_如何更新AirPods的固件
捷波朗更新固件 Apple's AirPods are one of the company's most popular accessories, and they're pretty great. ...
- Excel催化剂插件功能修复与更新汇总篇之十
在半年时间里,自己使用过程中,发现的一些小bug,更新了一下,也追加了一些自定义函数,不成系统,就单独放在修复与更新系列中. 一.第24波-批量发送邮件并指点不同附件不同变量 Excel催化剂功能第2 ...
- 如何让nRF52840 dongle化身为BLE sniffier (过程详细记录)
参考链接: How to install BLE Sniffer on nRF52840 Dongle and run it – Jimmy's thing 软件环境: Windows 10 Pyth ...
- Linux上通过SUU更新Dell服务器固件
**转载来源 : ** : Linux上通过SUU更新Dell服务器固件 :https://www.jianshu.com/p/7c6603fbb9fd 一般Linux服务器都没有图形界面,如何升级服 ...
最新文章
- 曾经安全难为智 除却山石不是云——山石网科举办2016年度金融用户峰会
- mysql数据库集群技术_使用MySQL-Cluster搭建MySQL数据库集群
- 产品要不要做先回答的10个问题
- ssdp协议_Cotopaxi:使用指定IoT网络协议对IoT设备进行安全测试
- [转载]VirtualBox网络配置详解
- 利用pyinstaller打包python3程序
- 1-2:网络初识之了解OSI和TCP/IP及网络分层(物理层,数据链路层,网路层,传输层,应用层)
- 年轻人的第一套租房?小米成立新公司或涉房屋租赁业务
- Reveal查看任意app的高级技巧
- 有计算机科学与技术专业的大学,开设计算机科学与技术专业的大学有哪些,开设计算机科学与技术专业的大学有哪些...
- Vue-Socket.io
- 【java毕业设计】基于javaEE+原生Servlet+MySql的业务绩效考核系统设计与实现(毕业论文+程序源码)——业务绩效考核系统
- 机器人(人工智能python) arduino编程 scratch2.0 乐高ev3编程 教育政策及考试
- 理论物理考研攻略!!!
- 简约黑白双色求职简历PPT模板
- 华为 eNSP启动设备AR1失败 错误代码40
- 今个没事,想仿做个qq农场助手,虽然很菜,不过有点收获
- 【转】canvas save restore详解(包你懂,绝对不是百度里千篇一律的教程)
- Lesson 55 The Sawyer family 索耶一家人
- excel转html出错,excel转html