构建、烧录与安全启动)
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.dtsCM33 Secure、kit_pse84_eval_m33_ns.dtsCM33 Non-Secure / TF-M、kit_pse84_eval_m55.dtsCM55。构建目标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伴生应用用于引导bootCM55 核心。该逻辑定义在 sysbuild.cmake当启用SB_CONFIG_BOARD_KIT_PSE84_EVAL_PSE846GPS2DBZC4A_M55时会通过ExternalZephyrProject_Add从samples/basic/minimal生成名为enable_cm55的伴生应用并设置CONFIG_SOC_PSE84_M55_ENABLE1由 CM33 负责释放并启动 CM55 核心。注意CM33 Secure 镜像在构建过程中会自动使用imgtool签名构建输出为适合烧录的.signed.hex文件Non-SecureTF-M变体则输出tfm_merged.hex文件。这一逻辑体现在 board.cmakeCM33 Secure 构建将 runner 的hex_file属性设置为${KERNEL_NAME}.signed.hexCM33 Non-Secure 构建则设置为tfm_merged.hex。硬件资源一览核心规格SoCPSOC™ Edge E84PSE846GPS2DBZC4A主 CPUArm® Cortex®-M55 400 MHz从 CPUArm® Cortex®-M33 200 MHzNPUArm® Ethos™-U55SOM Flash128-Mb QSPI Flash 1-Gb Octal FlashSOM RAM128-Mb Octal HYPERRAM无线CYW55513IUBG板载 SOM M.2 E-key 外接射频协处理器PSOC™ 4000T CAPSENSE 协处理器显示MIPI-DSI兼容 Raspberry Pi 与定制屏音频模拟与 PDM 麦克风、耳机、扬声器传感器6 轴 IMU、3 轴磁力计USBHost Type-A Device Type-C以太网RJ45扩展M.2 B-key存储 E-key射频、Shield2Go、mikroBUS、Arduino存储microSD 卡槽用户 I/OCAPSENSE 按键与滑条安全Arm® TrustZone®-M带加密加速器的安全 enclave调试板载 KitProg3SWD UART 桥接ETM/JTAG/SWD 排针电源Active HP / Deep Sleep 空闲模式VDDA/VDDD1800 mV电压选项MCU2.7V / 3.3V / 4.2V外设1.8V / 3.3V套件清单Kit ContentsPSOC™ Edge E84 底板PSOC™ Edge E84 SOM 模块4.3 英寸电容触摸显示屏与 USB 摄像头模块USB Type-C 转 Type-C 线缆两根接近传感器引线四个用于 Raspberry Pi 兼容显示屏的铜柱快速入门指南连接与 IO 映射Connections and IOsLED名称GPIO 引脚LED0/RedP16.7active HIGHLED1/GreenP16.6active HIGHLED2/BlueP16.5active HIGH在 kit_pse84_eval_common.dtsi 中三颗 LED 通过gpio-leds节点声明分别映射到gpio_prt16的 7/6/5 号引脚GPIO_ACTIVE_HIGHkit_pse84_eval_m33.dts中的aliases将led0/led1/led2指向这三颗灯供 Zephyr 应用按别名直接使用。按键名称GPIO 引脚SW0P8.3active 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控制台 TXP6.5SCB2 UART RX控制台 RXP10.1SCB4 UART TXBT HCI TXP10.0SCB4 UART RXBT HCI RXP10.3SCB4 UART RTSBT HCI RTSP10.2SCB4 UART CTSBT HCI CTSP16.7GPIOLED0/RedP16.6GPIOLED1/GreenP16.5GPIOLED2/BlueP8.3GPIO按键 SW0在 devicetree 中kit_pse84_eval_common.dtsi与kit_pse84_eval_m33.dtsuart2SCB2作为zephyr,console与zephyr,shell-uart当前速率 115200引脚为 P6.7/P6.5uart4SCB4作为zephyr,bt-hci启用hw-flow-controlP10.0-P10.3 四线并在其子节点中配置了 CYW55513 蓝牙控制器infineon,bt-hci-uartbt-reg-on-gpios位于 P11.0固件下载与 HCI 工作速率均为 115200此外i2c0SCB0P8.0/P8.1上挂载了 BMI270 六轴 IMU地址 0x68CM55 构建还在同一 I2C 总线上配置了 FT5406 电容触摸屏地址 0x38480×800。系统时钟System ClockPSOC™ Edge E84 使用 14 路高频时钟主要时钟配置为CLK_HF0200 MHz系统时钟CLK_HF1400 MHzCM55 核心CLK_HF2300 MHzCLK_HF4400 MHzDevicetree 层面kit_pse84_eval_m33.dts 中配置了三路 DPLLdpll_lp0时钟路径 0clock-frequency 400000000feedback-div 56、reference-div 7、output-div 1dpll_lp1时钟路径 149.152 MHz用于低功耗外设路径dpll_hp时钟路径 2300 MHzdiv-p/div-n/div-k分别为 0/11/1。文件注释特别说明clock-frequency仅用于 devicetree 参考实际频率由其余分频参数决定若需其他频率必须重新计算并写入dpll_*节点。随后clk_hf0~clk_hf13通过source-path引用不同时钟路径并设置分频系数例如clk_hf0取 CLKPATH0 二分频得到 200 MHzclk_hf1直接取 CLKPATH0 得到 400 MHz。串口Serial PortPSOC™ 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-SecureTF-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-rschip 指定为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烧录FlashingWindows 平台一次性配置 Infineon OpenOCD 路径west config build.cmake-args -- -DOPENOCDpath/to/infineon/openocd/bin/openocd.exeLinux 平台一次性配置west config build.cmake-args -- -DOPENOCDpath/to/infineon/openocd/bin/openocd两个平台下的构建 烧录命令一致CM33Securewest build -b kit_pse84_eval/pse846gps2dbzc4a/m33 -p always samples/hello_world west flashCM33 Non-Secure / TF-Mwest build -b kit_pse84_eval/pse846gps2dbzc4a/m33/ns -p always samples/hello_world west flashCM55sysbuildwest 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调试Debuggingwest build -p -b kit_pse84_eval/pse846gps2dbzc4a/m33 samples/hello_world west debugGDB 控制台启动后即可在 PSOC™ Edge E84 的 CM33 核心上设置断点并进行标准 GDB 调试。安全启动Secure BootPSOC™ Edge E84 MCU 的 ROM 中包含一个扩展引导阶段extended boot stage复位后它直接跳转到第一个应用镜像。目标由板上的BOOT SW决定BOOT SWOFFROM 扩展引导跳转到内部RRAM中的第一个应用BOOT SWONROM 扩展引导跳转到外部 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_header1 KB 头与m33s_xip2304 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 transitionprovision 到设备编程所需的安全计数器 / 防回滚anti-rollback值。设备 reprovision 完成后需要修改 pse84_metadata.cmake 中的pse84_add_metadata_secure_hex()让imgtool sign同时接收签名密钥与安全计数器。相关增补如下${PYTHON_EXECUTABLE} ${IMGTOOL} sign --version 0.0.00 --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 SupportPSOC™ Edge E84 支持一种TF-M 配对构建paired-build配置CM33 Non-Secure 应用作为安全固件TF-M Secure Processing Environment本地的 PSA clientCM55 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 DependencyCM55 构建会消费 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_SUPPORTy第 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_SUPPORTy \ -DPSE84_CM33_BUILD_DIRbuild_multicore_33若 CM33-NS 镜像使用默认build目录构建-DPSE84_CM33_BUILD_DIR...参数可以省略。烧录步骤两个镜像是相互独立的烧录产物必须分别编程。先烧录 CM55 镜像——因为 CM33-NS 镜像在复位时会尝试引导 CM55 镜像若找不到有效镜像跳转就会 faultwest flash -d build_multicore_55 west flash -d build_multicore_33参考资源KIT_PSE84_EVAL 板级文档本文主题板卡 devicetree 公共定义板卡内存/Flash/RRAM 分区映射CM33 Secure 构建 devicetreeCM33 Non-Secure 构建 devicetreeCM55 构建 devicetreeCM33 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),仅供参考