前言

近期,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固件相关推荐

  1. 家庭路由器哪家强:固件漏洞多年不修复,更新无济于事

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 德国弗劳恩霍夫通信技术研究所 (FKIE) 研究了7个品牌的127款家庭路由器,旨在分析它们的最新固件版本中是否存在已知的安全漏洞,结 ...

  2. airpods版本号_苹果更新 AirPods Pro 固件

    原标题:苹果更新 AirPods Pro 固件 今日凌晨,苹果为 AirPods Pro 进行了固件升级,版本号由之前的 2C54/2B588 更新至 2D15.对于此次固件更新的内容仍未知,但有部分 ...

  3. 修复因更新iCloud设置而卡住的iPhone / iPad的六种方法

    在更新iOS期间,您可能会收到各种iOS更新通知,例如,iPhone停留在验证update上.您是否想知道iPhone或iPad坚持更新iCloud设置的原因以及解决方法?然后,请阅读本文.第1部分: ...

  4. 使用Nordic的nRF52840 Dongle配合Wireshark对蓝牙设备抓包(BLE)

    硬件准备: 1)nRF52840 Dongle 2)待抓包的蓝牙设备 软件准备: 1)Python 2)Wireshark 3)nRF Sniffer for Bluetooth LE Python安 ...

  5. activex部件修复_通过让ActiveX流量通过来修复Windows更新错误

    activex部件修复 When Windows Updates fail, the error codes returned are designed to make it easier to fi ...

  6. 捷波朗更新固件_如何更新AirPods的固件

    捷波朗更新固件 Apple's AirPods are one of the company's most popular accessories, and they're pretty great. ...

  7. Excel催化剂插件功能修复与更新汇总篇之十

    在半年时间里,自己使用过程中,发现的一些小bug,更新了一下,也追加了一些自定义函数,不成系统,就单独放在修复与更新系列中. 一.第24波-批量发送邮件并指点不同附件不同变量 Excel催化剂功能第2 ...

  8. 如何让nRF52840 dongle化身为BLE sniffier (过程详细记录)

    参考链接: How to install BLE Sniffer on nRF52840 Dongle and run it – Jimmy's thing 软件环境: Windows 10 Pyth ...

  9. Linux上通过SUU更新Dell服务器固件

    **转载来源 : ** : Linux上通过SUU更新Dell服务器固件 :https://www.jianshu.com/p/7c6603fbb9fd 一般Linux服务器都没有图形界面,如何升级服 ...

最新文章

  1. 曾经安全难为智 除却山石不是云——山石网科举办2016年度金融用户峰会
  2. mysql数据库集群技术_使用MySQL-Cluster搭建MySQL数据库集群
  3. 产品要不要做先回答的10个问题
  4. ssdp协议_Cotopaxi:使用指定IoT网络协议对IoT设备进行安全测试
  5. [转载]VirtualBox网络配置详解
  6. 利用pyinstaller打包python3程序
  7. 1-2:网络初识之了解OSI和TCP/IP及网络分层(物理层,数据链路层,网路层,传输层,应用层)
  8. 年轻人的第一套租房?小米成立新公司或涉房屋租赁业务
  9. Reveal查看任意app的高级技巧
  10. 有计算机科学与技术专业的大学,开设计算机科学与技术专业的大学有哪些,开设计算机科学与技术专业的大学有哪些...
  11. Vue-Socket.io
  12. 【java毕业设计】基于javaEE+原生Servlet+MySql的业务绩效考核系统设计与实现(毕业论文+程序源码)——业务绩效考核系统
  13. 机器人(人工智能python) arduino编程 scratch2.0 乐高ev3编程 教育政策及考试
  14. 理论物理考研攻略!!!
  15. 简约黑白双色求职简历PPT模板
  16. 华为 eNSP启动设备AR1失败 错误代码40
  17. 今个没事,想仿做个qq农场助手,虽然很菜,不过有点收获
  18. 【转】canvas save restore详解(包你懂,绝对不是百度里千篇一律的教程)
  19. Lesson 55 The Sawyer family 索耶一家人
  20. excel转html出错,excel转html

热门文章

  1. Git创建远程分支步骤
  2. 说明DBCO-PEG-SH二苯并环辛炔-聚乙二醇-巯基科研试剂材料,DBCO-PEG-SH结构式
  3. 车道线检测laneatt算法实战CULane Datasets、Tusimple数据集——安装运行训练步骤
  4. Javascript js 23种设计模式
  5. 光刻原理--光的衍射
  6. 太极熊猫服务器怎么都在维护,太极熊猫3月8日战区调整及维护公告
  7. 【脱离文档流的三种方法】
  8. 瑞克斯外汇平台9月第三周时事(二)
  9. 【太平轮(上)】下载
  10. 基于51单片机的智能教室系统