ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Zephyr 下 NUCODE NU32(nRF52832)开发板移植指南:硬件资源、SWD 烧录与调试实战

Zephyr 下 NUCODE NU32(nRF52832)开发板移植指南:硬件资源、SWD 烧录与调试实战 Zephyr 下 NUCODE NU32nRF52832开发板移植指南硬件资源、SWD 烧录与调试实战【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyrNUCODE NU32 是一款基于 Nordic Semiconductor nRF52832ARM Cortex-M4F的紧凑型低功耗模块支持 BLE 5.x 与 NFC-A在 Zephyr 中以nucode_nu32/nrf52832作为目标target标识。本文以 boards/nucode/nucode_nu32/doc/index.rst 为骨架结合板级源码与配置系统讲解该板的硬件连接、引脚分布、SWD 烧录接线以及使用 west 构建、烧录与调试的完整流程帮助你快速在这块模块上跑通首个 Zephyr 应用。板级概览面向 BLE/NFC 的紧凑型模块NUCODE NU32 是 NUCODE 公司对应仓库目录 boards/nucode推出的紧凑型模块核心特性如下主控Nordic nRF52832ARM Cortex-M4F512 KB Flash、64 KB RAM封装 QFN48无线能力Bluetooth Low EnergyBLE5.x、NFC-A与 NU40 的关键差异与 NUCODE NU40基于 nRF52840不同nRF52832没有 USB 设备控制器因此固件必须通过SWD 调试接口编程烧录而不是 USB DFU/CDC。这些规格在板级元数据 nucode_nu32_nrf52832.yaml 中有对应声明type: mcu、arch: arm、ram: 64KB、flash: 512KB支持adc、bluetooth、counter、gpio、nfc、watchdog等设备board.yml 记录板名nucode_nu32、全称NUCODE NU32SoC 为nrf52832。模块默认使用 nRF52832内部低频 RC 振荡器对应 defconfig 中的CONFIG_CLOCK_CONTROL_NRF_K32SRC_RCy无需外接 32.768 kHz 晶振即可运行。板级源码结构nucode_nu32板级定义在 boards/nucode/nucode_nu32 目录下关键文件及其作用文件作用nucode_nu32_nrf52832.dts设备树源文件声明 SoC、控制台 UART、Flash 分区、外设使能nucode_nu32_nrf52832-pinctrl.dtsi引脚复用pinctrl配置定义 UART0 的默认/休眠引脚组nucode_nu32_nrf52832_defconfig板级默认 Kconfig 配置MPU、时钟源、串口控制台Kconfig.nucode_nu32板级 Kconfig 入口选择SOC_NRF52832_QFAAKconfig.defconfig板级默认符号硬件栈保护board.cmake声明烧录/调试 runnerjlink、pyocd、nrfjprog、openocdboard.yml/*.yaml板级标识与元数据供 twister 与构建系统识别pre_dt_board.cmake构建期处理抑制 nRF52832 外设地址重叠告警其中 Kconfig.nucode_nu32 通过select SOC_NRF52832_QFAA固定选用 QFAA 变体与设备树头部#include nordic/nrf52832_qfaa.dtsi保持一致参见 nucode_nu32_nrf52832.dts。支持的硬件特性与默认配置默认使能的外设从 nucode_nu32_nrf52832.dts 可以看到以下外设默认启用UART0nordic,nrf-uartecurrent-speed 115200绑定zephyr,console、zephyr,shell-uart、zephyr,uart-mcumgr、zephyr,bt-mon-uart、zephyr,bt-c2h-uart即控制台、Shell、MCUmgr 与 BLE 监控串口都复用到 UART0ADC、GPIOTE、GPIO0、NFCT均status okay其中 NFCT 对应 NFC-A 功能电源模式reg设置regulator-initial-mode NRF5X_REG_MODE_DCDC默认启用 DCDC 稳压模式以降低功耗复位引脚uicr中gpio-as-nreset将 P0.21 通过 UICR用户信息配置寄存器配置为硬件复位引脚看门狗aliases中watchdog0 wdt0。Flash 分区布局设备树 nucode_nu32_nrf52832.dts 定义了适合 MCUboot 的分区布局共 512 KB分区起始地址大小标签boot_partition0x000000000xC00048 KBmcubootslot0_partition0x0000C0000x37000220 KBimage-0slot1_partition0x000430000x37000220 KBimage-1storage_partition0x0007A0000x600024 KBstoragechosen中的zephyr,code-partition slot0_partition指定应用固件默认写入 image-0 槽位为后续启用 MCUboot 安全固件升级DFU预留了双槽位布局。板级默认 Kconfigdefconfig 中的默认选项CONFIG_ARM_MPUy启用 ARM MPU 内存保护CONFIG_CLOCK_CONTROL_NRF_K32SRC_RCy使用内部低频 RC 振荡器CONFIG_GPIOy、CONFIG_SERIALy、CONFIG_CONSOLEy、CONFIG_UART_CONSOLEy启用 GPIO、UART 驱动与串口控制台。另外 Kconfig.defconfig 将HW_STACK_PROTECTION默认设为ARCH_HAS_STACK_PROTECTION为支持该特性的工具链启用硬件栈保护。引脚连接与 IO 分布UARTUART0TX P0.06RX P0.08RTS P0.05CTS P0.07对应 pinctrl 配置默认组uart0_default将 TX/RX/RTS/CTS 全部接出休眠组uart0_sleep除 TX 外均启用low-power-enableTX 单独配置bias-pull-up以在低功耗模式下保持引脚状态稳定。串口参数为 115200 8N1。NFCNFC-A 天线引脚P0.09 和 P0.10对应设备树中nfct { status okay; }可用于实现 NFC tag 相关应用。ResetRESET P0.21通过 UICR 配置为硬件复位引脚见设备树uicr { gpio-as-nreset; }SWDSWDCLK、SWDIO调试焊盘用于烧录与调试。由于 nRF52832 无 USB 设备控制器SWD 是唯一的固件写入途径。通过 NUCODE_JTAG Adapter 连接 J-LinkNU32-B-Dev04 载板可通过 NUCODE_JTAG Adapter 连接外部 J-Link。最小 SWD 接线如下表NUCODE_JTAG AdapterNU32-B-Dev04说明VTARGETVCC 或 VTARGET目标电压参考GNDGND共地SWDCLKSWDCLKSWD 时钟SWDIOSWDIOSWD 数据nRESETnRSTRESETP0.21目标复位接线要点原文明确要求启动调试会话前目标板必须先供电且VTARGET 必须连接调试探针才能正确检测目标电压保持 SWD 引线尽量短避免高速 SWD 时钟下信号劣化nRESET 必须连到 P0.21这样调试探针才能可靠地复位和恢复目标例如在固件跑飞或进入低功耗状态后强制复位。构建、烧录与调试支持的烧录器Runnersboard.cmake 声明了多种 runner并给出默认参数jlink--devicenRF52832_xxAA --speed4000pyocd--targetnrf52832 --frequency4000000nrfjprog、nrfutil、openocd-nrf5通过include(.../common/*.board.cmake)引入。因此既可用 SEGGER J-Link也可用 pyOCD、nRF 官方工具或 OpenOCD 完成烧录。构建并烧录 hello_world在已初始化 Zephyr 环境的终端中执行$ west build -b nucode_nu32/nrf52832 samples/hello_world $ west flash -r jlink其中-r jlink显式选择 J-Link 作为 runner。烧录完成后用串口终端连接UART0 引脚TXP0.06RXP0.08波特率115200 8N1复位板子即可看到hello_world输出。如果主机上同时连接了多个 J-Link需要在west flash命令后追加--dev-id serial-number指定具体探针序列号$ west flash -r jlink --dev-id serial-number启动调试会话使用 J-Link 启动 GDB 调试会话$ west debug -r jlink调试器连接基于前文所述的 SWD 接线VTARGET、GND、SWDCLK、SWDIO、nRESET更多调试细节可参考 Zephyr 文档中的应用运行application run相关章节。仓库内的配套验证资源在 samples 目录可直接找到本文使用的 hello_world 示例samples/hello_world/内含src/main.c与prj.conf。板级定义的全部源码、配置与文档集中在 boards/nucode/nucode_nu32包括设备树、pinctrl、defconfig、board.cmake 与本文对应的 RST 源文档NUCODE 全系列板卡索引见 boards/nucode/index.rst。小结NUCODE NU32 在 Zephyr 中的支持围绕“紧凑 BLE/NFC 模块 SWD 调试”这一核心展开nRF52832512 KB Flash / 64 KB RAM提供 BLE 5.x 与 NFC-AUART0 以 115200 8N1 作为默认控制台P0.21 通过 UICR 配置为复位引脚。由于没有 USB 控制器编程必须经由 SWD——按 NUCODE_JTAG Adapter 接线表接好 VTARGET/GND/SWDCLK/SWDIO/nRESET 后west build、west flash -r jlink、west debug -r jlink即可完成从编译、烧录到调试的完整闭环多个探针场景用--dev-id指定目标。结合仓库中现成的设备树分区布局与默认 Kconfig该板也能平滑接入 MCUboot 双槽位升级方案。【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表