Zephyr 板卡支持解析:CTHINGS.CO Connectivity Card(nRF52840 / nRF9161)开发与刷写实践
2026/9/16 15:48:31 网站建设 项目流程

Zephyr 板卡支持解析:CTHINGS.CO Connectivity Card(nRF52840 / nRF9161)开发与刷写实践

【免费下载链接】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

CTHINGS.CO Connectivity Card(下文简称 CTCC)是一系列以 M.2 / mPCIe 形态因子出现的无线连接卡,搭载 Nordic nRF52840 或 nRF9161 SoC,在 Zephyr RTOS 中作为完整板卡目标(ctcc/nrf52840ctcc/nrf9161)获得原生支持。本文以 boards/ct/index.rst 指引下的板卡文档(ctcc/doc/index.rst)为主体,结合仓库内的设备树、defconfig 与烧录脚本,系统讲解 CTCC 板卡的硬件特性、引脚连接、应用构建、外部调试探针烧录与 MCUboot + MCUmgr 无线刷写流程,帮助你快速将 Zephyr 应用部署到这类无板载调试器的连接卡上。

板卡概览:两种 SoC、两种形态因子

CTCC(Connectivity Card)以 M.2 或 mPCIe 形态因子提供,搭载不同的 SoC,从而支持多种无线接口:

板卡目标SoC无线能力与主机通信方式
ctcc/nrf52840nRF52840BLE + IEEE 802.15.4USB Device(板载 USB 控制器)
ctcc/nrf9161nRF9161LTE-M / NB-IoT + DECT NR+板载 USB-UART 转换器(CP210X)

从 board.yml 可以看到,板卡家族定义中包含nrf52840与带ns(non-secure,非安全域)变体的nrf9161两类 SoC。其中nrf9161是带 TrustZone-M 的 SoC,因此仓库额外提供了 ctcc_nrf9161_ns.dts 与 ctcc_nrf9161_ns_defconfig 以支持非安全域应用。

支持的硬件特性

根据板卡文档,CTCC 具备以下功能模块:

  • CLOCK:时钟
  • FLASH:闪存
  • GPIO(General Purpose Input Output)
  • MPU(Memory Protection Unit):内存保护单元
  • NVIC(Nested Vectored Interrupt Controller):嵌套向量中断控制器
  • RADIO:nRF52840 支持 Bluetooth Low Energy 与 802.15.4;nRF9161 支持 LTE-M / NB-IoT 与 DECT NR+
  • RTC(nRF RTC System Clock)
  • USB(仅 nRF52840)
  • UARTE(Universal asynchronous receiver-transmitter with EasyDMA,仅 nRF9161)
  • WDT(Watchdog Timer)

这些特性与板卡 yaml 声明一致:ctcc_nrf52840.yaml 声明bluetoothgpiousbdwatchdogcounter受支持;ctcc_nrf9161.yaml 声明gpiowatchdogcounter受支持,并标注 88 KB RAM 与 1024 KB Flash。

硬件细节与引脚连接

硬件构成差异

  • nRF52840 版本:板卡带有一个 32.768 kHz 外部低频晶振(见 ctcc_nrf52840.dts 中的时钟配置)。
  • nRF9161 版本:板卡带有一颗 64 Mbit 外部 SPI NOR Flash(MX25R6435)与一个板载 USB-UART 转换器(CP210X)。对应设备树 ctcc_nrf9161_common.dtsi 中声明了mx25r6435fm2il0@0,SPI 最高频率 10 MHz,jedec-id = [c2 25 38],并启用深度掉电(has-dpd)与唤醒时序。

LED 引脚定义

注意:板卡本身没有板载 LED,但在 mPCIe / M.2 引脚上暴露了 LED 信号,可直接通过 GPIO 驱动:

  • nRF52840:LED1 = P0.23,LED2 = P0.22
  • nRF9161:LED1 = P0.11,LED2 = P0.12

设备树中对应节点为 ctcc_nrf52840.dts 与 ctcc_nrf9161_common.dtsi 中的leds节点,均配置为GPIO_ACTIVE_LOW,并通过aliasesled0led1分别映射到 LED1、LED2(同时提供mcuboot-led0别名供 MCUboot 使用)。

nRF9161 的 UART 与 SPI 引脚复用

nRF9161 的串口与 SPI 引脚在 ctcc_nrf9161-pinctrl.dtsi 中通过 pinctrl 机制定义:

  • UART0:TX = P0.28,RX = P0.29,RTS = P0.14,CTS = P0.15,默认波特率 115200
  • SPI3(SPIM):SCK = P0.03,MISO = P0.05,MOSI = P0.04,片选为 P0.16(低有效),驱动模式NRF_DRIVE_H0H1

每个外设都同时配置了defaultsleep两组引脚状态(low-power-enable),以支持低功耗运行。

默认配置解析:MPU、TrustZone 与 USB

板级 defconfig 定义了构建应用时的默认 Kconfig 配置:

nRF52840(ctcc_nrf52840_defconfig)

# Enable MPU CONFIG_ARM_MPU=y # Enable hardware stack protection CONFIG_HW_STACK_PROTECTION=y # Enable GPIO CONFIG_GPIO=y # Board Kconfig.defconfig enables USB CDC ACM and should disable USB remote # wakeup by default. It needs to be disabled here, because the USB nrfx # driver always overwrites option from Kconfig mentioned above with the # imply from CONFIG_USB_NRFX. CONFIG_USB_DEVICE_REMOTE_WAKEUP=n

nRF9161(ctcc_nrf9161_defconfig)

# Enable MPU CONFIG_ARM_MPU=y # Enable hardware stack protection CONFIG_HW_STACK_PROTECTION=y # Enable TrustZone-M CONFIG_ARM_TRUSTZONE_M=y # Enable GPIO CONFIG_GPIO=y # Enable UART driver CONFIG_SERIAL=y # Enable console CONFIG_CONSOLE=y CONFIG_UART_CONSOLE=y

可以看到 nRF52840 版本默认启用 USB 设备支持(设备树中zephyr_udc0: &usbd使能nordic,nrf-usbd,并引入 cdc_acm_serial.dtsi),而 nRF9161 版本则启用 UART 作为控制台与 MCUmgr 传输通道(chosen中指定zephyr,consolezephyr,shell-uartzephyr,uart-mcumgr均为 uart0)。

应用构建

CTCC 板卡的应用构建方式与 Zephyr 其他板卡一致(构建细节参见 构建应用指南)。例如,为ctcc/nrf52840构建并烧录 USB CDC ACM 控制台示例(该示例在模拟 USB 端口上输出日志):

west build -b ctcc/nrf52840 samples/subsys/usb/console west flash

若使用 nRF9161 目标,只需将 USB 设备相关配置替换为 UART 配置(板级 defconfig 已默认完成),例如控制台输出走 uart0。

编程与烧录:两种方式

CTCC 板卡支持两种编程方式:

  1. 使用外部调试探针(Debug Probe)
  2. 使用带 MCUmgr 支持的 MCUboot 引导程序

以下烧录说明以ctcc/nrf52840为例;使用nrf9161目标时,将 USB 设备相关配置替换为 UART 配置即可。

方式一:使用外部调试探针

CTCC 板卡没有板载 J-Link,需要通过板上的 SWD 测试焊盘连接外部调试探针(如 Segger J-Link)。对于 Segger J-Link,请按照 nRF 板卡 Segger J-Link 指南 安装并配置所需软件,进一步说明参见 Segger J-Link 烧录。

从烧录脚本 board.cmake 可以看到板卡支持的烧录后端:

  • nrfutil(nrfutil.board.cmake)
  • nrfjprog(带--softreset参数)
  • pyocd(nRF52840 使用--target=nrf52840,nRF9161 使用--target=nrf9161,均指定 4 MHz SWD 频率)

usb-cdc-acm-console应用为例(输出日志到模拟 USB 端口):

west build -b ctcc/nrf52840 samples/subsys/usb/console west flash

连接外部探针后,即可照常构建并烧录应用(参考 构建应用 与 运行应用)。

方式二:使用带 MCUmgr 的 MCUboot

也可以使用带 MCUmgr 支持的 MCUboot 引导程序来烧录 Zephyr 应用。步骤如下:

  1. 从 MCUmgr 工具与库支持列表 安装一个兼容 MCUmgr 的工具,并确保mcubootimgtool可用于签名二进制(参见 west 签名)。

  2. 编译 MCUboot(作为带 MCUmgr 支持的 Zephyr 应用)。

    nRF52840:

    west build -b ctcc/nrf52840 mcuboot/boot/zephyr -d mcuboot

    nRF9161:

    west build -b ctcc/nrf9161 mcuboot/boot/zephyr -d mcuboot
  3. 烧录 MCUboot:按方式一(外部调试探针)将其烧录到板卡。

  4. 通过 USB 烧录其他 Zephyr 应用:使用 MCUmgr 兼容工具烧录签名后的镜像,并复位目标进入该镜像启动。

    nRF52840 构建带 MCUboot 支持的 blinky 示例:

    west build -b ctcc/nrf52840 samples/basic/blinky \ -DCONFIG_BOOTLOADER_MCUBOOT=y \ -DCONFIG_MCUBOOT_SIGNATURE_KEY_FILE="path/to/mcuboot/boot/root-rsa-2048.pem"

    nRF9161 构建带 MCUboot 支持的 blinky 示例:

    west build -b ctcc/nrf9161 samples/basic/blinky \ -DCONFIG_BOOTLOADER_MCUBOOT=y \ -DCONFIG_MCUBOOT_SIGNATURE_KEY_FILE="path/to/mcuboot/boot/root-rsa-2048.pem"

注意:以上示例均假定使用mcuboot/boot目录下的默认root-rsa-2048.pem证书文件。在构建参数中提供证书会自动生成签名二进制。切勿在生产固件中使用该证书!

MCUboot 的双槽位布局已在设备树中预定义:以 ctcc_nrf52840.dts 为例,Flash 被划分为mcuboot(0x00000–0x12000)、image-0(slot0,0x12000–0x88000)、image-1(slot1,0x88000–0xfc000)与storage(0xfc000 起 16 KB)四个分区,且chosenzephyr,code-partition指向slot0_partition。nRF9161 则引入 nrf91xx_partition.dtsi 的默认分区配置。

调试与运行验证

CTCC 板卡没有板载 J-Link 调试芯片,但 nRF 板卡 Segger 指南 中的说明同样适用,只需额外连接外部调试器即可。

测试烧录后的软件时,将 CTCC 卡插入 mPCIe / M.2 插槽,或使用 mPCIe / M.2 转 USB 适配器接入 USB 口:

  • nRF52840:在 Linux 系统上执行lsusb,应能看到NordicSemiconductor MCUBOOT(引导阶段)或NordicSemiconductor USB-DEV(已启动 blinky 应用)。
  • nRF9161:由于板载 USB-UART 转换器,lsusb中无法看到明显变化;应使用任意终端仿真程序连接 UART 控制台观察输出。

小结

CTCC 系列连接卡借助 Zephyr 原生板卡支持,将 BLE/802.15.4(nRF52840)与 LTE-M/NB-IoT/DECT NR+(nRF9161)能力封装为标准的 M.2 / mPCIe 形态因子。无论是通过 SWD 焊盘外接 J-Link 调试,还是借助 MCUboot + MCUmgr 实现 USB/UART 通道刷写,开发者都可以参考 ctcc/doc/index.rst 与上述设备树、defconfig 及 board.cmake 中的烧录后端配置,快速搭建可复用的连接节点原型。更多板卡信息可查阅板卡 yaml(ctcc_nrf52840.yaml、ctcc_nrf9161.yaml)及 Nordic 官方资料。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询