news 2026/9/18 1:46:29

Zephyr 适配 Infineon KIT_PSE84_EVAL 开发指南:PSOC Edge E84 多核(CM33/CM55 + Ethos-U55 NPU)构建、烧录与安全启动

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Zephyr 适配 Infineon KIT_PSE84_EVAL 开发指南:PSOC Edge E84 多核(CM33/CM55 + Ethos-U55 NPU)构建、烧录与安全启动

Zephyr 适配 Infineon KIT_PSE84_EVAL 开发指南:PSOC Edge E84 多核(CM33/CM55 + Ethos-U55 NPU)构建、烧录与安全启动

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

本文以 Zephyr 仓库中 KIT_PSE84_EVAL 板级文档 为骨架,系统讲解如何在 Zephyr RTOS 下基于 Infineon PSOC™ Edge E84 评估套件进行开发:包括板卡硬件架构、三个构建目标(CM33 Secure / CM33 Non-Secure / CM55)的区分与选择、west build/west flash的完整操作流程、KitProg3 调试与串口控制台配置、MCUboot 镜像格式与安全启动的启用方法,以及 TF-M 多核(mailbox relay)配对构建方案。读完本文,你将能够独立完成该板卡的固件构建、烧录、调试与安全启动配置,并对底层 devicetree 内存映射与 CMake 元数据签名机制有源码级的理解。

板卡概览:面向 ML / 可穿戴 / IoT 的异构计算平台

KIT_PSE84_EVAL是英飞凌(Infineon)基于 PSOC™ Edge E84 家族推出的评估套件,核心 SoC 为PSE846GPS2DBZC4A,搭载一颗Arm® Cortex®-M55 主核(400 MHz)、一颗Arm® Cortex®-M33 从核(200 MHz)以及一颗Arm® Ethos™-U55 NPU,专门面向机器学习推理、可穿戴设备与物联网应用场景。

该评估套件采用SODIMM 可拆卸 SOM + 功能丰富的底板的形态:

  • SOM 模块上集成 MCU、128-Mb QSPI Flash、1-Gb Octal Flash、128-Mb Octal HYPERRAM™、PSOC™ 4000T CAPSENSE™ 协处理器,以及板载 AIROC™ CYW55513IUBG Wi-Fi + Bluetooth® 组合模块。
  • 底板提供丰富的扩展接口:USB Host Type-A、USB Device Type-C、RJ45 以太网、M.2 B-key 与 E-key 插槽、Arduino、mikroBUS、Shield2Go 排针、MIPI-DSI 显示接口、模拟与 PDM 麦克风、耳机与扬声器输出、microSD 卡槽、CAPSENSE 按键与滑条,以及完整的调试排针(ETM/JTAG/SWD)。
  • 调试能力:板载 KitProg3 编程器/调试器,通过 USB Type-C 连接。

从 Zephyr 板级目录看,板卡支持文件位于 boards/infineon/kit_pse84_eval,其中 devicetree 定义了三种构建视图:kit_pse84_eval_m33.dts(CM33 Secure)、kit_pse84_eval_m33_ns.dts(CM33 Non-Secure / TF-M)、kit_pse84_eval_m55.dts(CM55)。

构建目标(Board Targets):三个镜像,三种用途

KIT_PSE84_EVAL 提供以下三个 Zephyr 构建目标:

Build Target说明
kit_pse84_eval/pse846gps2dbzc4a/m33CM33 Secure —— 烧录与调试的主要目标
kit_pse84_eval/pse846gps2dbzc4a/m33/nsCM33 Non-Secure —— TF-M 变体
kit_pse84_eval/pse846gps2dbzc4a/m55CM55 ——必须使用--sysbuild标志

注意:CM55 构建必须使用--sysbuild标志。Sysbuild 会自动创建 CM33 的enable_cm55伴生应用,用于引导(boot)CM55 核心。该逻辑定义在 sysbuild.cmake:当启用SB_CONFIG_BOARD_KIT_PSE84_EVAL_PSE846GPS2DBZC4A_M55时,会通过ExternalZephyrProject_Addsamples/basic/minimal生成名为enable_cm55的伴生应用,并设置CONFIG_SOC_PSE84_M55_ENABLE=1,由 CM33 负责释放并启动 CM55 核心。

注意:CM33 Secure 镜像在构建过程中会自动使用imgtool签名,构建输出为适合烧录的.signed.hex文件;Non-Secure(TF-M)变体则输出tfm_merged.hex文件。这一逻辑体现在 board.cmake:CM33 Secure 构建将 runner 的hex_file属性设置为${KERNEL_NAME}.signed.hex,CM33 Non-Secure 构建则设置为tfm_merged.hex

硬件资源一览

核心规格

  • SoC:PSOC™ Edge E84(PSE846GPS2DBZC4A)
  • 主 CPU:Arm® Cortex®-M55 @ 400 MHz
  • 从 CPU:Arm® Cortex®-M33 @ 200 MHz
  • NPU:Arm® Ethos™-U55
  • SOM Flash:128-Mb QSPI Flash + 1-Gb Octal Flash
  • SOM RAM:128-Mb Octal HYPERRAM
  • 无线:CYW55513IUBG(板载 SOM)+ M.2 E-key 外接射频
  • 协处理器:PSOC™ 4000T CAPSENSE 协处理器
  • 显示:MIPI-DSI(兼容 Raspberry Pi 与定制屏)
  • 音频:模拟与 PDM 麦克风、耳机、扬声器
  • 传感器:6 轴 IMU、3 轴磁力计
  • USB:Host Type-A + Device Type-C
  • 以太网:RJ45
  • 扩展:M.2 B-key(存储)+ E-key(射频)、Shield2Go、mikroBUS、Arduino
  • 存储:microSD 卡槽
  • 用户 I/O:CAPSENSE 按键与滑条
  • 安全:Arm® TrustZone®-M,带加密加速器的安全 enclave
  • 调试:板载 KitProg3(SWD + UART 桥接),ETM/JTAG/SWD 排针
  • 电源:Active HP / Deep Sleep 空闲模式,VDDA/VDDD:1800 mV
  • 电压选项:MCU:2.7V / 3.3V / 4.2V;外设:1.8V / 3.3V

套件清单(Kit Contents)

  • PSOC™ Edge E84 底板
  • PSOC™ Edge E84 SOM 模块
  • 4.3 英寸电容触摸显示屏与 USB 摄像头模块
  • USB Type-C 转 Type-C 线缆
  • 两根接近传感器引线
  • 四个用于 Raspberry Pi 兼容显示屏的铜柱
  • 快速入门指南

连接与 IO 映射(Connections and IOs)

LED

名称GPIO 引脚
LED0/RedP16.7(active HIGH)
LED1/GreenP16.6(active HIGH)
LED2/BlueP16.5(active HIGH)

在 kit_pse84_eval_common.dtsi 中,三颗 LED 通过gpio-leds节点声明,分别映射到gpio_prt16的 7/6/5 号引脚,GPIO_ACTIVE_HIGHkit_pse84_eval_m33.dts中的aliasesled0/led1/led2指向这三颗灯,供 Zephyr 应用按别名直接使用。

按键

名称GPIO 引脚
SW0P8.3(active low,上拉)

对应 devicetree 中的gpio_keys节点(kit_pse84_eval_common.dtsi),按键配置为GPIO_PULL_UP | GPIO_ACTIVE_LOW,并绑定输入事件码INPUT_KEY_0sw0别名指向user_bt

默认 Zephyr 外设映射

引脚功能用途
P6.7SCB2 UART TX控制台 TX
P6.5SCB2 UART RX控制台 RX
P10.1SCB4 UART TXBT HCI TX
P10.0SCB4 UART RXBT HCI RX
P10.3SCB4 UART RTSBT HCI RTS
P10.2SCB4 UART CTSBT HCI CTS
P16.7GPIOLED0/Red
P16.6GPIOLED1/Green
P16.5GPIOLED2/Blue
P8.3GPIO按键 SW0

在 devicetree 中(kit_pse84_eval_common.dtsikit_pse84_eval_m33.dts):

  • uart2(SCB2)作为zephyr,consolezephyr,shell-uart,当前速率 115200,引脚为 P6.7/P6.5;
  • uart4(SCB4)作为zephyr,bt-hci,启用hw-flow-control(P10.0-P10.3 四线),并在其子节点中配置了 CYW55513 蓝牙控制器(infineon,bt-hci-uartbt-reg-on-gpios位于 P11.0,固件下载与 HCI 工作速率均为 115200);
  • 此外i2c0(SCB0,P8.0/P8.1)上挂载了 BMI270 六轴 IMU(地址 0x68),CM55 构建还在同一 I2C 总线上配置了 FT5406 电容触摸屏(地址 0x38,480×800)。

系统时钟(System Clock)

PSOC™ Edge E84 使用 14 路高频时钟,主要时钟配置为:

  • CLK_HF0:200 MHz(系统时钟)
  • CLK_HF1:400 MHz(CM55 核心)
  • CLK_HF2:300 MHz
  • CLK_HF4:400 MHz

Devicetree 层面,kit_pse84_eval_m33.dts 中配置了三路 DPLL:

  • dpll_lp0(时钟路径 0):clock-frequency = <400000000>feedback-div = <56>reference-div = <7>output-div = <1>
  • dpll_lp1(时钟路径 1):49.152 MHz,用于低功耗外设路径;
  • dpll_hp(时钟路径 2):300 MHz,div-p/div-n/div-k分别为 0/11/1。

文件注释特别说明:clock-frequency仅用于 devicetree 参考,实际频率由其余分频参数决定,若需其他频率必须重新计算并写入dpll_*节点。随后clk_hf0~clk_hf13通过source-path引用不同时钟路径并设置分频系数,例如clk_hf0取 CLKPATH0 二分频得到 200 MHz,clk_hf1直接取 CLKPATH0 得到 400 MHz。

串口(Serial Port)

PSOC™ Edge E84 的控制台输出分配在SCB2uart2),通过 KitProg3 的 USB-UART 桥接引出。默认通信参数为 115200 8N1

蓝牙 HCI UART 分配在SCB4uart4),带硬件流控(RTS/CTS)。

构建(Building)

hello_world示例在 CM33 核心上构建:

west build -p -b kit_pse84_eval/pse846gps2dbzc4a/m33 samples/hello_world

构建 CM33 Non-Secure(TF-M)变体:

west build -p -b kit_pse84_eval/pse846gps2dbzc4a/m33/ns samples/hello_world

构建 CM55 核心(使用--sysbuild标志):

west build -p -b kit_pse84_eval/pse846gps2dbzc4a/m55 samples/hello_world --sysbuild

注意:CM55 构建必须--sysbuild。Sysbuild 会自动创建 CM33 的enable_cm55伴生应用,由它来启动 CM55 核心(见 sysbuild.cmake)。

编程与调试(Programming and Debugging)

重要:板上BOOT SW拨码开关必须拨到ON,任何示例应用才能正常工作。在某些板卡上该开关位于附带的 LCD 屏幕下方。

KIT_PSE84_EVAL 板载 KitProg3 编程器/调试器,可用于编程和调试 PSOC™ Edge E84 的两个核心。

Infineon OpenOCD 安装

ModusToolbox™ Programming Tools软件包中自带 Infineon OpenOCD。也可以单独安装:下载对应平台的Infineon OpenOCD发行版,解压到任意目录即可。

注意:Linux 下需要为 KitProg3 配置设备访问权限。ModusToolbox™ Programming Tools 安装时会自动处理;若是单独安装 OpenOCD,需手动执行脚本openocd/udev_rules/install_rules.sh

Zephyr 侧的 runner 配置位于 board.cmake:默认调试器/烧录器为openocd(也支持probe-rs,chip 指定为PSE846GPS4DBZC4A)。CM55 目标下,OpenOCD 连接到第二个端口(默认 3333 之外使用extended-remote :3334),并加载 pse84_cm55_restart.gdb 脚本提供restart命令(因为 CM55 由 CM33 的enable_cm55应用释放,GDBrun无法重启它);west flash --erase会调用厂商erase_allOpenOCD 过程擦除片内 CM33 main_ns RRAM bank 及所有外接 SMIF/QSPI bank。

配置控制台

用 USB 线将 PC 连接到板上 KitProg3 的 USB Type-C 接口(J8),使用任意串口终端(minicom、PuTTY 等),参数如下:

  • 波特率:115200
  • 数据位:8
  • 校验位:None
  • 停止位:1

烧录(Flashing)

Windows 平台(一次性配置 Infineon OpenOCD 路径):

west config build.cmake-args -- "-DOPENOCD=path/to/infineon/openocd/bin/openocd.exe"

Linux 平台(一次性配置):

west config build.cmake-args -- -DOPENOCD=path/to/infineon/openocd/bin/openocd

两个平台下的构建 + 烧录命令一致:

CM33(Secure):

west build -b kit_pse84_eval/pse846gps2dbzc4a/m33 -p always samples/hello_world west flash

CM33 Non-Secure / TF-M:

west build -b kit_pse84_eval/pse846gps2dbzc4a/m33/ns -p always samples/hello_world west flash

CM55(sysbuild):

west build -b kit_pse84_eval/pse846gps2dbzc4a/m55 -p always samples/hello_world --sysbuild west flash

烧录成功后,控制台应输出:

*** Booting Zephyr OS build vX.Y.Z *** Hello World! kit_pse84_eval

调试(Debugging)

west build -p -b kit_pse84_eval/pse846gps2dbzc4a/m33 samples/hello_world west debug

GDB 控制台启动后,即可在 PSOC™ Edge E84 的 CM33 核心上设置断点并进行标准 GDB 调试。

安全启动(Secure Boot)

PSOC™ Edge E84 MCU 的 ROM 中包含一个扩展引导阶段(extended boot stage):复位后它直接跳转到第一个应用镜像。目标由板上的BOOT SW决定:

  • BOOT SWOFF:ROM 扩展引导跳转到内部RRAM中的第一个应用;
  • BOOT SWON:ROM 扩展引导跳转到外部 Flash中的第一个应用。

无论哪种情况,第一个应用镜像都必须是MCUboot 镜像格式:前置 MCUboot 镜像头(magic number、header size、vector table address、image size),后跟包含 hash/signature TLVs 的 trailer。出厂状态下设备未做安全启动预配置(未 provision),因此 ROM 扩展引导只校验镜像格式与哈希,不会针对已配置密钥做密码学签名验证。

镜像元数据如何自动生成

MCUboot 镜像格式由 soc/infineon/edge/pse84/pse84_metadata.cmake 中的辅助函数pse84_add_metadata_secure_hex()自动生成。该函数调用imgtool sign,其中 header 地址、header 大小与 slot 大小均从 devicetree 内存映射推导

  • 通过dt_reg_addr/dt_reg_size读取m33s_header(1 KB 头)与m33s_xip(2304 KB XIP 分区)的地址和大小,slot_size = m33s_xip_size + header_size
  • 由于同一片外部 Flash 存在三个视图(CBUS Secure 视图flash0_s@ 0x18000000、CBUS NS 视图flash0@ 0x08000000、SAHB 视图flash0_sahb@ 0x60000000,见 kit_pse84_eval_memory_map.dtsi),函数会把分区地址从flash0_s空间 rebase 到flash0_sahb空间,再传给imgtool sign
  • 默认不传入签名密钥,这对未 provision 的设备已经足够。

启用真正的签名校验(Enabling Secure Boot)

要让 ROM 扩展引导执行真正的签名验证,必须重新 provision 设备。请参照PSOC™ Edge Security Getting Started Application Note2.2.1、2.2.2、2.2.3章节:

  1. 生成(或导入)OEM 签名密钥对;
  2. 将对应的公钥与生命周期转换(lifecycle transition)provision 到设备;
  3. 编程所需的安全计数器 / 防回滚(anti-rollback)值。

设备 reprovision 完成后,需要修改 pse84_metadata.cmake 中的pse84_add_metadata_secure_hex(),让imgtool sign同时接收签名密钥与安全计数器。相关增补如下:

${PYTHON_EXECUTABLE} ${IMGTOOL} sign --version "0.0.0+0" --header-size ${header_size} --erased-val 0xff --pad-header --slot-size ${slot_size} --hex-addr ${header_addr} --key <oem-private-key-file> --security-counter <value> ${INPUT_FILE} ${OUTPUT_FILE}

其中<oem-private-key-file>是 OEM 私钥文件路径(如.pem文件),必须与 provision 进设备的公钥匹配;<value>是 provision 时分配的安全计数器值。缺少这些额外参数时,为已 provision 设备构建的镜像会被 ROM 扩展引导拒绝。

TF-M 多核支持(TF-M Multicore Support)

PSOC™ Edge E84 支持一种TF-M 配对构建(paired-build)配置:

  • CM33 Non-Secure 应用作为安全固件(TF-M Secure Processing Environment)本地的 PSA client;
  • CM55 Non-Secure 应用通过mailbox 中继(mailbox-based relay)访问运行在 CM33 上的同一个 TF-M SPE。

该功能由 Kconfig 选项CONFIG_PSOC_EDGE_M55_SRF_SUPPORT启用,且必须在两个镜像上都开启

注意:此配置下 CM55 镜像通过 sysbuild 构建。两个镜像都是独立的 Zephyr 应用,必须分别烧录;配对构建通过 CMake 变量协调,而非 sysbuild。

构建顺序与依赖(Build Order and Dependency)

CM55 构建会消费 CM33-NS TF-M 构建生成的 PSA manifest 头文件,因此CM33-NS 镜像必须先行构建。CM55 的 CMake 配置在 configure 阶段就期望 CM33-NS 构建输出可用,若找不到目录<cm33-ns-build>/tfm/generated/interface/include会以FATAL_ERROR失败。

默认情况下,CM55 构建在${ZEPHYR_BASE}/build下查找 CM33-NS 构建输出;若使用其他输出目录(如west build -d),必须通过 CMake 变量PSE84_CM33_BUILD_DIR把路径传给 CM55 构建。

构建步骤

第 1 步:构建带 mailbox/relay 支持的 CM33-NS 镜像(以显式构建目录为例):

west build -b kit_pse84_eval/pse846gps2dbzc4a/m33/ns \ -d build_multicore_33 samples/hello_world \ -- -DCONFIG_PSOC_EDGE_M55_SRF_SUPPORT=y

第 2 步:构建 CM55-NS 镜像,通过PSE84_CM33_BUILD_DIR指向上一步的 CM33-NS 构建目录:

west build -b kit_pse84_eval/pse846gps2dbzc4a/m55 \ -d build_multicore_55 samples/basic/blinky \ -- -DCONFIG_PSOC_EDGE_M55_SRF_SUPPORT=y \ -DPSE84_CM33_BUILD_DIR=build_multicore_33

若 CM33-NS 镜像使用默认build目录构建,-DPSE84_CM33_BUILD_DIR=...参数可以省略。

烧录步骤

两个镜像是相互独立的烧录产物,必须分别编程先烧录 CM55 镜像——因为 CM33-NS 镜像在复位时会尝试引导 CM55 镜像,若找不到有效镜像跳转就会 fault:

west flash -d build_multicore_55 west flash -d build_multicore_33

参考资源

  • KIT_PSE84_EVAL 板级文档(本文主题)
  • 板卡 devicetree 公共定义
  • 板卡内存/Flash/RRAM 分区映射
  • CM33 Secure 构建 devicetree
  • CM33 Non-Secure 构建 devicetree
  • CM55 构建 devicetree
  • CM33 Secure defconfig
  • 烧录/调试 runner 配置
  • CM55 sysbuild 伴生应用配置
  • MCUboot 镜像元数据签名辅助脚本
  • CM55 重启 GDB 脚本
  • OpenOCD 配置文件

如需了解更多 PSOC™ Edge E84 与 KIT_PSE84_EVAL 的官方信息,可查阅PSOC Edge E84 SoC WebsiteKIT_PSE84_EVAL Board Website(英飞凌官网);调试工具链可参考ModusToolbox™ Programming ToolsInfineon OpenOCDKitProg3项目。若需在本地拉取本仓库进行构建,可执行:

git clone https://gitcode.com/GitHub_Trending/ze/zephyr

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 1:40:22

用LED驱动入门Linux设备开发:从字符设备到GPIO与设备树实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/18 1:39:37

TeXLive2020安装避坑:报错、镜像源与宏包配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华