码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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

    1. # 解压后安装
    2. python setup.py install
    3. # 如果pc_ble_driver_py版本不对,手动安装pc_ble_driver_py
    4. 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

    1. mkdir key
    2. cd key
    3. nrfutil keys generate private.key
    4. 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

    1. nrfutil pkg generate --hw-version 52 --application-version 1 --application app.hex --sd-req 0x101 --key-file private.key test_dfu.zip
    2. # --hw-version:硬件版本nrf52822为51,nrf52832为52
    3. # --application-version:应用的版本号,用户自已设置
    4. # --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了。

  • 相关阅读:
    客户端简单实现断路器
    目标检测标注工具AutoDistill
    在vue中使用echarts实现飞机航线 水滴图 词云图
    【YOLO】语义分割和实例分割(四)
    渗透测试-干货 | 80篇+网络安全面试经验帖(面试篇)
    学习多线程,创建多线程的三种方式
    win10安装virtualbox及部署kafka踩坑记录
    [附源码]计算机毕业设计基于springboot在线影院系统
    环境配置|GitHub——如何在github上搭建自己写的网站
    P1072 [NOIP2009 提高组] Hankson 的趣味题
  • 原文地址:https://blog.csdn.net/sy84436446/article/details/131142643
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号