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/m33 | CM33 Secure —— 烧录与调试的主要目标 |
kit_pse84_eval/pse846gps2dbzc4a/m33/ns | CM33 Non-Secure —— TF-M 变体 |
kit_pse84_eval/pse846gps2dbzc4a/m55 | CM55 ——必须使用--sysbuild标志 |
注意:CM55 构建必须使用
--sysbuild标志。Sysbuild 会自动创建 CM33 的enable_cm55伴生应用,用于引导(boot)CM55 核心。该逻辑定义在 sysbuild.cmake:当启用SB_CONFIG_BOARD_KIT_PSE84_EVAL_PSE846GPS2DBZC4A_M55时,会通过ExternalZephyrProject_Add从samples/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/Red | P16.7(active HIGH) |
| LED1/Green | P16.6(active HIGH) |
| LED2/Blue | P16.5(active HIGH) |
在 kit_pse84_eval_common.dtsi 中,三颗 LED 通过gpio-leds节点声明,分别映射到gpio_prt16的 7/6/5 号引脚,GPIO_ACTIVE_HIGH;kit_pse84_eval_m33.dts中的aliases将led0/led1/led2指向这三颗灯,供 Zephyr 应用按别名直接使用。
按键
| 名称 | GPIO 引脚 |
|---|---|
| SW0 | P8.3(active low,上拉) |
对应 devicetree 中的gpio_keys节点(kit_pse84_eval_common.dtsi),按键配置为GPIO_PULL_UP | GPIO_ACTIVE_LOW,并绑定输入事件码INPUT_KEY_0,sw0别名指向user_bt。
默认 Zephyr 外设映射
| 引脚 | 功能 | 用途 |
|---|---|---|
| P6.7 | SCB2 UART TX | 控制台 TX |
| P6.5 | SCB2 UART RX | 控制台 RX |
| P10.1 | SCB4 UART TX | BT HCI TX |
| P10.0 | SCB4 UART RX | BT HCI RX |
| P10.3 | SCB4 UART RTS | BT HCI RTS |
| P10.2 | SCB4 UART CTS | BT HCI CTS |
| P16.7 | GPIO | LED0/Red |
| P16.6 | GPIO | LED1/Green |
| P16.5 | GPIO | LED2/Blue |
| P8.3 | GPIO | 按键 SW0 |
在 devicetree 中(kit_pse84_eval_common.dtsi与kit_pse84_eval_m33.dts):
uart2(SCB2)作为zephyr,console与zephyr,shell-uart,当前速率 115200,引脚为 P6.7/P6.5;uart4(SCB4)作为zephyr,bt-hci,启用hw-flow-control(P10.0-P10.3 四线),并在其子节点中配置了 CYW55513 蓝牙控制器(infineon,bt-hci-uart,bt-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 的控制台输出分配在SCB2(uart2),通过 KitProg3 的 USB-UART 桥接引出。默认通信参数为 115200 8N1。
蓝牙 HCI UART 分配在SCB4(uart4),带硬件流控(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 flashCM33 Non-Secure / TF-M:
west build -b kit_pse84_eval/pse846gps2dbzc4a/m33/ns -p always samples/hello_world west flashCM55(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 debugGDB 控制台启动后,即可在 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 Note的2.2.1、2.2.2、2.2.3章节:
- 生成(或导入)OEM 签名密钥对;
- 将对应的公钥与生命周期转换(lifecycle transition)provision 到设备;
- 编程所需的安全计数器 / 防回滚(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 Website与KIT_PSE84_EVAL Board Website(英飞凌官网);调试工具链可参考ModusToolbox™ Programming Tools、Infineon OpenOCD与KitProg3项目。若需在本地拉取本仓库进行构建,可执行:
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),仅供参考