【问题标题】:Programming NRF52840 dongle from PlatformIO从 PlatformIO 编程 NRF52840 加密狗
【发布时间】:2020-05-23 22:32:50
【问题描述】:

我正在关注https://docs.platformio.org/en/latest/boards/nordicnrf52/nrf52840_dk.html,但我实际上没有 DK,我有一个 NRF52840“加密狗”。有人知道它是否可以直接与 PlatformIO 一起工作?它有一个内置的引导加载程序,但我认为它不能模拟正确的程序员。我已经安装了 nrfutil,但需要一个包 (.zip) 并且 platformio 正在生成 .elf/.hex ...不知道如何连接这些工具。

【问题讨论】:

    标签: platformio nrf52


    【解决方案1】:

    platformio.ini配置:

    [env:nrf52840_dongle]
    platform = nordicnrf52
    board = nrf52840_dk
    framework = zephyr
    board_build.zephyr.variant = nrf52840dongle_nrf52840
    extra_scripts = dfu_upload.py
    upload_protocol = custom
    

    添加到项目根dfu_upload.py脚本:

    import sys
    import os
    from os.path import basename
    Import("env")
    
    platform = env.PioPlatform()
    
    def dfu_upload(source, target, env):
        firmware_path = str(source[0])
        firmware_name = basename(firmware_path)
    
    
        genpkg = "".join(["nrfutil pkg generate --hw-version 52 --sd-req=0x00 --application ", firmware_path, " --application-version 1 firmware.zip"])
        dfupkg = "nrfutil dfu serial -pkg firmware.zip -p COM14 -b 115200"
        print( genpkg )
        os.system( genpkg )
        os.system( dfupkg )
    
        print("Uploading done.")
    
    
    # Custom upload command and program name
    env.Replace(PROGNAME="firmware", UPLOADCMD=dfu_upload)
    
    • nrfutil 位置添加到您的系统配置“路径”变量中
    • 在上传固件之前将加密狗切换到 dfu 模式(按钮重置)
    • 在 dfu_upload.py 中设置加密狗 COM 号:dfupkg = "nrfutil dfu serial -pkg firmware.zip -p COM14 -b 115200"

    你可以在这里找到很多例子:Zephyr github

    【讨论】:

      【解决方案2】:

      您可以使用nrfutil pkg generate 将十六进制文件转换成一个包:

      https://infocenter.nordicsemi.com/topic/ug_nrfutil/UG/nrfutil/nrfutil_pkg.html

      仅供参考,您可能不会从使用 PlatformIO 中获得太多好处,因为您没有调试接口。根据您使用的框架,可能还有其他选项,例如 Zephyr 的此文档:

      https://docs.zephyrproject.org/latest/boards/arm/nrf52840dongle_nrf52840/doc/index.html

      【讨论】:

        猜你喜欢
        • 2019-04-12
        • 1970-01-01
        • 1970-01-01
        • 2013-11-10
        • 2012-06-20
        • 1970-01-01
        • 2021-06-20
        • 2019-02-25
        • 1970-01-01
        相关资源
        最近更新 更多