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/nrf52840、ctcc/nrf9161)获得原生支持。本文以 boards/ct/index.rst 指引下的板卡文档(ctcc/doc/index.rst)为主体,结合仓库内的设备树、defconfig 与烧录脚本,系统讲解 CTCC 板卡的硬件特性、引脚连接、应用构建、外部调试探针烧录与 MCUboot + MCUmgr 无线刷写流程,帮助你快速将 Zephyr 应用部署到这类无板载调试器的连接卡上。
板卡概览:两种 SoC、两种形态因子
CTCC(Connectivity Card)以 M.2 或 mPCIe 形态因子提供,搭载不同的 SoC,从而支持多种无线接口:
| 板卡目标 | SoC | 无线能力 | 与主机通信方式 |
|---|---|---|---|
ctcc/nrf52840 | nRF52840 | BLE + IEEE 802.15.4 | USB Device(板载 USB 控制器) |
ctcc/nrf9161 | nRF9161 | LTE-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 声明bluetooth、gpio、usbd、watchdog、counter受支持;ctcc_nrf9161.yaml 声明gpio、watchdog、counter受支持,并标注 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,并通过aliases将led0、led1分别映射到 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
每个外设都同时配置了default与sleep两组引脚状态(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=nnRF9161(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,console、zephyr,shell-uart、zephyr,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 板卡支持两种编程方式:
- 使用外部调试探针(Debug Probe)
- 使用带 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 应用。步骤如下:
从 MCUmgr 工具与库支持列表 安装一个兼容 MCUmgr 的工具,并确保
mcuboot的imgtool可用于签名二进制(参见 west 签名)。编译 MCUboot(作为带 MCUmgr 支持的 Zephyr 应用)。
nRF52840:
west build -b ctcc/nrf52840 mcuboot/boot/zephyr -d mcubootnRF9161:
west build -b ctcc/nrf9161 mcuboot/boot/zephyr -d mcuboot烧录 MCUboot:按方式一(外部调试探针)将其烧录到板卡。
通过 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)四个分区,且chosen中zephyr,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),仅供参考