• 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:硬件版本nrf5282251,nrf5283252
    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了。

  • 相关阅读:
    退运险业务及系统架构演进史
    微服务框架 SpringCloud微服务架构 17 初识ES 17.3 ES 与MySQL 的概念对比
    1 函数编程题
    QT调用onnx 模型Demo(代码和讲解)
    html和css复习1
    Lombok详解
    Java函数式编程(2):流式计算
    java毕业设计某日杂商店进销存管理系统设计源码+lw文档+mybatis+系统+mysql数据库+调试
    Feign调用返回值统一处理
    项目管理(PMO的作用)
  • 原文地址:https://blog.csdn.net/sy84436446/article/details/131142643