Zephyr 在 Kincony KC868-A8 上的开发实践:ESP32 八路继电器智能家居控制板
2026/9/18 13:41:02 网站建设 项目流程

Zephyr 在 Kincony KC868-A8 上的开发实践:ESP32 八路继电器智能家居控制板

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

Kincony KC868-A8 是一款基于 Espressif ESP32(ESP-WROOM-32 模组)的家居自动化继电器模块,在 Zephyr 中作为独立 board 得到完整支持(定义见 board.yml)。本文以 KC868-A8 板卡文档 为主线,结合仓库内的设备树、引脚复用与构建脚本,讲解该板卡在 Zephyr 下的硬件资源、固件烧录、双核 AMP 与以太网使能等完整开发流程,帮助你快速搭建基于 KC868-A8 的继电器控制与联网应用。

Kincony KC868-A8 板卡外观

板卡概览

KC868-A8 是 Kincony 推出的家用自动化继电器模块,核心为 Espressif ESP32 的 ESP-WROOM-32 模组,因此天然继承了 ESP32 的全部能力——Wi-Fi、经典蓝牙与 BLE 等,可直接接入 Zephyr 的网络协议栈与蓝牙子系统。

该板卡在仓库中以kincony_kc868_a8为 board 名注册(见 board.yml),soc 为esp32。与大多数 ESP32 板卡一致,它支持 PROCPU / APPCPU 双镜像(AMP)方案,并默认采用 4MB SPI Flash、禁用 PSRAM 的配置(见 kincony_kc868_a8_procpu.dts)。

硬件资源

板载特性如下:

  • 8 路数字光耦隔离输入("干接点" dry contact)
  • 2 路 0–5 V 模拟输入
  • 8 路 220 V / 10 A 继电器(COM、NO、NC 触点)
  • I2C 连接器
  • 模拟输入
  • 以太网 LAN8720A PHY
  • USB-C 接口(用于编程与固件烧录)
  • RESET 与 DOWNLOAD 按键
  • 12 V DC 供电

从设备树看硬件拓扑

硬件资源的具体接线可以在板卡设备树 kincony_kc868_a8_procpu.dts 中确认:

  • 输入与继电器均通过 I2C 扩展:板卡在 I2C1 总线上挂接了两颗 NXP PCF857x 型 I/O 扩展器(compatible = "nxp,pcf857x"):
    • 地址0x22pcf8574_inputs,8 个 GPIO,行名依次为IN1IN8,对应 8 路光耦隔离输入;
    • 地址0x24pcf8574_relays,8 个 GPIO,行名依次为RLY1RLY8,对应 8 路继电器。
  • I2C 引脚sda-gpios = <&gpio0 4 GPIO_OPEN_DRAIN>scl-gpios = <&gpio0 5 GPIO_OPEN_DRAIN>,标准速率(I2C_BITRATE_STANDARD)。
  • 以太网:MDIO 总线(SMI_MDC_GPIO23/SMI_MDIO_GPIO18)上挂载ethernet-phy@0(LAN8720A,reg = 0),eth节点通过phy-handle = <&phy>关联 PHY,并以ref-clk-output-gpios = <&gpio0 17 0>在 GPIO17 输出参考时钟。
  • 控制台串口:UART0,current-speed = <115200>,TX/RX 分别为 GPIO1 / GPIO3(带内部上拉),同时作为zephyr,consolezephyr,shell-uart
  • 预留引脚gpio0gpio-reserved-ranges = <6 6>, <20 1>, <24 1>, <28 4>gpio1<5 2>,这些引脚被板载功能占用,Zephyr 驱动不会将其暴露给应用。

引脚复用定义集中在 kincony_kc868_a8-pinctrl.dtsi,包含uart0_defaulti2c1_default(开漏、上拉)与mdio_default三组 pinctrl 状态。

ESP32 SoC 特性

KC868-A8 所在的 ESP32 SoC 具备以下能力(完整描述见 soc-esp32-features.rst):

  • 双核 Xtensa LX6 微处理器,主频 160 MHz 或 240 MHz
  • 520 KB SRAM
  • 802.11b/g/n/e/i Wi-Fi
  • 蓝牙 v4.2 BR/EDR 与 BLE
  • 丰富外设:12-bit ADC(最多 18 通道)、2×8-bit DAC、10 路触摸传感器、4×SPI、2×I2S、2×I2C、3×UART、SD/SDIO/MMC 主机、SDIO/SPI 从机、以太网 MAC、CAN 2.0、IR 收发、电机 PWM、最多 16 通道 LED PWM、霍尔传感器、温度传感器
  • 硬件密码学加速(RNG、ECC、RSA、SHA-2、AES)
  • 深睡电流约 5 µA

双核 AMP 支持

ESP32 与 ESP32-S3 板卡支持双核非对称多处理(AMP):两个核心可分别运行不同的应用程序,并通过 OpenAMP 框架交换数据,代码参考见 Zephyr 的ipc示例类别。KC868-A8 也为此提供了 APPCPU 镜像定义 kincony_kc868_a8_appcpu.dts,其中通过zephyr,ipc_shm = &shm0zephyr,ipc = &ipm0指定与 PROCPU 通信的共享内存和 IPC 通道。

注意(AMP 与串口输出):在当前的 Zephyr ESP32 实现中,APPCPU 上运行的应用尚不能使用 Zephyr 管理的串口驱动(如printk()、日志或控制台 UART),串口输出 API 仅在 PROCPU 可用。作为替代,APPCPU 应用可使用 ESP32 ROM 函数(如ets_printf())输出诊断或调试信息。

系统要求

Espressif HAL 需要 RF 二进制固件(binary blobs)才能正常工作。执行以下命令获取:

west blobs fetch hal_espressif

建议在每次west update之后运行上述命令,以保证 blob 与当前 HAL 版本匹配。

编程与调试

KC868-A8 支持 Zephyr 标准的构建与烧录流程,烧录依赖由 board.cmake 提供,其会定位 ESP32 工具链路径下的 OpenOCD 并引入esp32.board.cmakeopenocd.board.cmake

Simple Boot:默认的单镜像启动

默认构建不包含二级引导程序,直接加载单一二进制镜像,这是未附加额外配置时的默认选项。

注意:Simple Boot 不提供任何安全特性,也不支持 OTA 升级。

MCUboot Bootloader

如需使用 MCUboot 引导程序,引导程序本身至少需要构建并烧录一次。有两种构建方式:

  1. Sysbuild(推荐)
  2. 手动构建(Manual build)

可以通过在板卡默认配置文件中加入以下行来选择 MCUboot:

CONFIG_BOOTLOADER_MCUBOOT=y
Sysbuild

Sysbuild 可以一次性构建并烧录 ESP32 启动所需的全部镜像。使用 sysbuild 构建示例应用:

west build -b kincony_kc868_a8 samples/hello_world --sysbuild

默认情况下,ESP32 的 sysbuild 会创建引导程序(MCUboot)与应用两个镜像,也可配置生成其他类型的镜像。其构建目录结构与传统 Zephyr 构建不同,输出按 domain 子目录组织:

build/ ├── hello_world │ └── zephyr │ ├── zephyr.elf │ └── zephyr.bin ├── mcuboot │ └── zephyr │ ├── zephyr.elf │ └── zephyr.bin └── domains.yaml

注意:使用--sysbuild时,每次执行 pristine 构建都会重新构建并重新烧录引导程序。更多信息参见 Zephyr 的 sysbuild 文档。

手动构建

开发迭代期追求最快构建与烧录速度时,可以一次只构建一个镜像(传统构建方式)。以下指令同时适用于手动构建与 sysbuild,二者仅构建目录结构不同。

注意:引导程序(MCUboot)至少需要烧录一次。

按常规方式构建应用:

west build -b kincony_kc868_a8 samples/hello_world

常规的flash目标会与板卡配置配合工作,以hello_world为例:

west flash -b kincony_kc868_a8 samples/hello_world

注意:对于暴露内置 USB Serial/JTAG 控制器的目标,west flash后芯片可能停留在下载模式,不会自动启动新镜像,需要断电重启。若出现该情况,可带看门狗复位烧录,让芯片自行重启:

west flash --reset-type watchdog-reset

加速烧录技巧

为加快开发循环,Zephyr 的 ESP32 烧录器提供了三个实用选项:

  • --esp-skip-flashed:当 flash 中的二进制与待烧录镜像一致时跳过写入(设备端通过 MD5 校验确认):

    west flash --esp-skip-flashed
  • --esp-diff:仅写入与上次镜像不同的区域。它对比的是本地缓存的副本而非读取设备,因此仅当 flash 自上次west flash以来未被其他工具、板卡或手动写入修改时使用:

    west flash --esp-diff
  • --esp-no-progress:抑制进度输出,便于 CI 场景下获得更干净的日志:

    west flash --esp-no-progress

打开串口监视器

使用以下命令打开串口监视器:

west espressif monitor

板卡自动复位并启动后,监视器中应看到如下输出:

***** Booting Zephyr OS vx.x.x-xxx-gxxxxxxxxxxxx ***** Hello World! <board>

通过 Snippets 选择板卡变体

ESP32 板卡可组合不同的 SPI Flash 容量、PSRAM 容量与 PSRAM 模式组装成多种模组。snippets/espressif下的 snippets 提供模块化方式在构建时应用这些变体,而无需复制板卡定义。支持的 snippet 变体如下:

Snippet 名称说明
Flash 容量
espressif-flash-4M4 MB Flash 板卡
espressif-flash-8M8 MB Flash 板卡
espressif-flash-16M16 MB Flash 板卡
espressif-flash-32M32 MB Flash 板卡
espressif-flash-64M64 MB Flash 板卡
espressif-flash-128M128 MB Flash 板卡
PSRAM 容量
espressif-psram-2M2 MB PSRAM 板卡
espressif-psram-4M4 MB PSRAM 板卡
espressif-psram-8M8 MB PSRAM 板卡
PSRAM 利用方式
espressif-psram-reloc将 Flash 重定位到 PSRAM
espressif-psram-wifiWi-Fi 缓冲区置于 PSRAM

应用板卡变体时使用west build-S标志:

west build -b kincony_kc868_a8 samples/hello_world -S espressif-flash-32M,espressif-psram-4M

注意:这些 snippets 仅适用于所选 Flash/PSRAM 配置有对应硬件支持的板卡。

  • 若未使用 Flash snippet,则采用板卡默认 Flash 容量(KC868-A8 默认 4MB);
  • 若未使用 PSRAM snippet,则采用板卡默认 PSRAM 容量(KC868-A8 默认禁用 PSRAM,见 kincony_kc868_a8_procpu.dts 中&psram0 { status = "disabled"; })。

使能以太网

KC868-A8 板载 LAN8720A 以太网 PHY,设备树中ethmdio节点均已在 kincony_kc868_a8_procpu.dts 中使能。应用侧还需在 Kconfig 中开启网络支持:

CONFIG_NETWORKING=y CONFIG_NET_L2_ETHERNET=y CONFIG_MDIO=y
  • CONFIG_NETWORKING开启 Zephyr 网络协议栈;
  • CONFIG_NET_L2_ETHERNET使能以太网 L2 层(对应设备树中的eth节点,关联 PHY 句柄&phy);
  • CONFIG_MDIO使能 MDIO 管理接口驱动,用于读写 PHY 寄存器并完成链路协商。

配置完成后即可在应用中通过标准 BSD Socket 或 Zephyr 网络 API 使用有线网络。

参考资料

  • 本文核心依据:Kincony KC868-A8 板卡文档
  • 板卡设备树:kincony_kc868_a8_procpu.dts、kincony_kc868_a8_appcpu.dts
  • 引脚复用:kincony_kc868_a8-pinctrl.dtsi
  • 烧录支持:board.cmake、support/openocd.cfg
  • ESP32 SoC 特性与 AMP 说明:soc-esp32-features.rst
  • 系统要求(RF blobs):system-requirements.rst
  • 构建与烧录通用说明:building-flashing.rst
  • 板卡变体 snippets 说明:board-variants.rst

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

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

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

立即咨询