Zephyr 在 Infineon KIT_PSC3M5_EVKPSOC™ Control C3M5评估板上的开发实战指南【免费下载链接】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导读本文围绕 Infineon KIT_PSC3M5_EVK 评估板在 Zephyr RTOS 中的板级支持展开系统讲解该板卡基于 PSOC™ Control C3M5PSC3M5FDS2AFQ1Cortex-M33 主控的硬件资源、三种板级变体、默认外设映射、系统时钟树、构建烧录与调试流程以及基于 ROM BootFLASH_BOOT与 MCUboot 的安全启动签名方案。读完本文你将掌握如何在 Zephyr 中为目标板编译并烧录应用程序、如何启用 NOR Flash 变体并完成硬件改造以及如何使用 Infineon EdgeProtect Tools 对镜像进行签名与安全启动配置。板卡概述面向工业控制与电机驱动的评估平台KIT_PSC3M5_EVK 是 Infineon 推出的评估套件核心 SoC 为 PSOC™ Control C3M5型号 PSC3M5FDS2AFQ1搭载一颗主频最高240 MHz的Arm® Cortex®-M33内核专门面向工业控制与电机驱动类应用设计。板卡关键硬件指标如下SoCPSOC™ Control C3M5PSC3M5FDS2AFQ1CPUArm® Cortex®-M33 240 MHzFlash256 KBSRAM64 KB连接性2× CAN FD、6× SCB可配置为 UART/SPI/I2C外设高分辨率定时器、可编程模拟子系统、比较器安全Arm® TrustZone®-M调试板载 KitProg3SWD UART 桥接供电USB 供电3.3V 工作电压接口USB Type-C编程与供电一体扩展Arduino Uno R3、mikroBUS、两路 40-pin 排针用户 IO两颗用户 LED、两颗用户按键、电位器从板级元数据kit_psc3m5_evk.yaml可以看到Zephyr 已为该板声明支持can、gpio、spi、timer、uart、dma、comparator、rtc等外设类别工具链支持 Zephyr SDK 与 GNU Arm Embedded。套件内容PSOC™ Control C3M5 评估板USB Type-A 转 Type-C 线缆跳线若干快速入门指南印刷于包装上板级变体KIT_PSC3M5_EVK 在 Zephyr 中支持三种构建目标对应 board.yml 中声明的 SoC 变体变体说明kit_psc3m5_evkSecure 变体默认启用 Arm® TrustZone®-M 安全态kit_psc3m5_evk/psc3m5fds2afq1/nsNon-secure 变体面向非安全态应用kit_psc3m5_evk/psc3m5fds2afq1/norflashNOR Flash 变体需要执行板卡硬件改造默认的 Secure 变体在 kit_psc3m5_evk_defconfig 中通过CONFIG_TRUSTED_EXECUTION_SECUREy与CONFIG_ARM_TRUSTZONE_My开启安全执行环境同时默认启用 Infineon MXCRYPTOLITE 的 TRNG 熵源CONFIG_ENTROPY_INFINEON_MXCRYPTOLITE_TRNGy与加密加速CONFIG_CRYPTO_INFINEON_MXCRYPTOLITEy而非安全变体则在 kit_psc3m5_evk_psc3m5fds2afq1_ns_defconfig 中通过CONFIG_TRUSTED_EXECUTION_NONSECUREy配置。连接与 IO 映射用户 LED名称GPIO Pin极性LED0P8.5Active LowLED1P8.4Active Low在 kit_psc3m5_evk-common.dtsi 中两颗 LED 通过gpio-leds兼容节点声明并分别被别名到led0与led1leds { compatible gpio-leds; user_led0: led_0 { label LED_0; gpios gpio_prt8 5 GPIO_ACTIVE_LOW; }; user_led1: led_1 { label LED_1; gpios gpio_prt8 4 GPIO_ACTIVE_LOW; }; };用户按键名称GPIO Pin极性SW1P5.0Active LowSW2P2.0Active Low按键在 devicetree 中以gpio-keys兼容节点声明并带有上拉与输入事件码INPUT_KEY_0/INPUT_KEY_1方便直接接入 Zephyr Input 子系统gpio_keys { compatible gpio-keys; user_bt0: user_btn0 { label SW_1; gpios gpio_prt5 0 (GPIO_PULL_UP | GPIO_ACTIVE_LOW); zephyr,code INPUT_KEY_0; }; user_bt1: user_btn1 { label SW_2; gpios gpio_prt2 0 (GPIO_PULL_UP | GPIO_ACTIVE_LOW); zephyr,code INPUT_KEY_1; }; };默认 Zephyr 外设映射Pin功能用途P6.3SCB3 UART TXConsole TXP6.2SCB3 UART RXConsole RXP6.1SCB3 UART RTSConsole RTSP6.0SCB3 UART CTSConsole CTSP8.5GPIOLED0P8.4GPIOLED1P5.0GPIOButton SW1P2.0GPIOButton SW2UART 引脚在 kit_psc3m5_evk-pinctrl.dtsi 中配置了驱动模式TX/RTS 为推挽输出drive-push-pullRX/CTS 使能输入input-enable。系统时钟树PSOC™ Control C3M5 默认以IMOInternal Main Oscillator作为系统时钟源Zephyr 板级描述中的完整时钟路径为IMO内部主振荡器8 MHzFLLIMO → 100 MHzCLK_HF0180 MHz系统时钟CLK_HF3240 MHz高性能外设时钟在 kit_psc3m5_evk-common.dtsi 中可以找到与文档对应的时钟配置证据fll0被配置为 96 MHz 输出dpll_lp0位于 CLKPATH1配置为 180 MHzfeedback-div 45; reference-div 6; output-div 2dpll_lp1位于 CLKPATH2配置为 240 MHzfeedback-div 60; reference-div 6; output-div 2。其中CLK_HF2从 CLKPATH2240 MHz三分频得到 80 MHz专门用于驱动外设组 4UART、CAN、SPI、计数器以保证符合 CiA 601-3 规范的 CAN FD 位速率UART 驱动会动态重算其外设分频系数。CLK_HF4 则为 NOR Flash 变体中的 SCB5 SPI 外设时钟源见 kit_psc3m5_evk_psc3m5fds2afq1_norflash.dts。串口ConsolePSOC™ Control C3M5 拥有 6 个 SCBSerial Communication Block接口每个 SCB 均可配置为 UART、SPI 或 I2C。Zephyr 控制台输出被分配至SCB3设备树节点uart3经 KitProg3 的 USB-UART 桥接路由到上位机。在 kit_psc3m5_evk-common.dtsi 中SCB3 被配置为uart3: scb3 { compatible infineon,uart; status okay; current-speed 115200; clocks peri0_group4_8bit_0; pinctrl-0 p6_3_scb3_uart_tx p6_2_scb3_uart_rx p6_1_scb3_uart_rts p6_0_scb3_uart_cts; pinctrl-names default; };并在 kit_psc3m5_evk.dts 的chosen节点中被指定为控制台与 shell 串口chosen { zephyr,sram sram0; zephyr,flash flash0; zephyr,flash-controller flash_controller; zephyr,console uart3; zephyr,shell-uart uart3; zephyr,canbus can1; zephyr,entropy mxcryptolite_trng; };默认通信参数为115200 8N18 数据位、无校验、1 停止位。构建应用程序以 Zephyr 的hello_world示例为例在 Zephyr 环境已安装 west 并完成 SDK 配置下执行west build -b kit_psc3m5_evk -p always samples/hello_world-b kit_psc3m5_evk指定目标板默认 Secure 变体-p always每次都进行 pristine 构建确保干净输出。编译产物默认输出在build/zephyr/目录下。NOR Flash 变体kit_psc3m5_evk/psc3m5fds2afq1/norflash变体启用了一片通过SCB5连接的外部S25FL128P SPI NOR Flash16 MB。该 Flash 被暴露为一个 storage 分区storage_partition适用于 Zephyr 的 Flash API、文件系统或 Settings 存储。注意该变体需要硬件改造。未经改造的板卡应始终使用默认目标kit_psc3m5_evk。NOR Flash 板卡改造Kit Rework根据 KIT_PSC3M5_EVK 用户指南Table 7需要按下表进行电阻改造以启用 SCB5 SPI NOR Flash 接口。该改造会将LPCOMP1 输入断开并复用这些引脚作为 SPI 接口。参考位号Reference Designator装配AssemblyR96StuffR105StuffR101StuffR114StuffR113DNIR95DNIR104DNIR100DNI“Stuff”表示焊装电阻“DNI”表示不焊装/移除。改造完成后SPI 与 Flash 节点在 kit_psc3m5_evk_psc3m5fds2afq1_norflash.dts 中被启用spi5: scb5 { #address-cells 1; #size-cells 0; compatible infineon,spi; status okay; pinctrl-0 p8_1_scb5_spi_m_mosi p8_2_scb5_spi_m_miso p8_3_scb5_spi_m_clk; pinctrl-names default; cs-gpios gpio_prt8 0 GPIO_ACTIVE_LOW; clocks peri0_group6_16_5bit_0; s25fl128p: s25fl128p0 { compatible jedec,spi-nor; reg 0; spi-max-frequency DT_FREQ_M(8); jedec-id [01 60 18]; size 0x8000000; /* 128 Mbit */ partitions { compatible fixed-partitions; #address-cells 1; #size-cells 1; storage_partition: partition0 { label storage; reg 0x0 DT_SIZE_M(16); }; }; }; };同时该变体的 Kconfigkit_psc3m5_evk_psc3m5fds2afq1_norflash_defconfig开启CONFIG_SPIy与CONFIG_SPI_NORy。构建 NOR Flash 变体使用flash_shell示例验证 NOR Flash 的读写操作west build -b kit_psc3m5_evk/psc3m5fds2afq1/norflash -p always samples/drivers/flash_shell编程与调试KIT_PSC3M5_EVK 板载KitProg3编程器/调试器可用于对 PSOC™ Control C3M5 的 Cortex-M33 内核进行编程与调试。Zephyr 侧通过 OpenOCD runner 支持烧录board.cmake 中指定了--target-handleTARGET.cm33并引入openocd.board.cmake。Infineon OpenOCD 安装烧录依赖Infineon OpenOCD标准 OpenOCD 不含 PSOC Control C3 目标支持有两种获取方式ModusToolbox™ Programming Tools 软件包自带 Infineon OpenOCD独立安装下载 Infineon OpenOCD 对应系统的发布版本解压到任意位置。Linux 提示Linux 需要为 KitProg3 配置设备访问权限。ModusToolbox™ Programming Tools 安装时会自动完成独立安装 OpenOCD 时可手动执行脚本openocd/udev_rules/install_rules.sh完成配置。配置控制台将 USB 线缆从 PC 连接到板卡 KitProg3 的 USB Type-C 接口J15然后使用任意串口终端minicom、PuTTY 等连接参数如下Speed波特率115200Data数据位8 bitsParity校验NoneStop bits停止位1烧录Windows一次性配置 Infineon OpenOCD 路径west config build.cmake-args -- -DOPENOCDpath/to/infineon/openocd/bin/openocd.exe构建并烧录west build -b kit_psc3m5_evk -p always samples/hello_world west flashLinux一次性配置 Infineon OpenOCD 路径west config build.cmake-args -- -DOPENOCDpath/to/infineon/openocd/bin/openocd构建并烧录west build -b kit_psc3m5_evk -p always samples/hello_world west flash烧录成功后串口控制台应输出*** Booting Zephyr OS build vX.Y.Z *** Hello World! kit_psc3m5_evk调试通过 GDB 启动调试会话west build -b kit_psc3m5_evk -p always samples/hello_world west debugGDB 控制台启动后即可在 PSOC™ Control C3M5 的 Cortex-M33 内核上设置断点并进行标准 GDB 调试。安全启动Secure BootPSOC™ Control C3M5 内置 ROM 启动阶段FLASH_BOOT负责认证并启动内部 Flash 中的第一个 OEM 应用。BOOT_SIMPLE_APP 模式设备默认工作于BOOT_SIMPLE_APP模式FLASH_BOOT 直接加载内部 Flash 起始处的应用镜像不进行任何加密签名校验。镜像采用基本的 Cortex-M33 格式中断向量表 代码。在该模式下标准的 Zephyr 构建无需签名即可直接运行。当通过 sysbuild 使用MCUboot引导加载程序时MCUboot 本身是 FLASH_BOOT 启动的第一个应用随后 MCUboot 使用标准 Zephyrimgtool签名流程独立认证位于slot0_partition中的应用镜像。该配置无需 OEM 密钥预置BOOT_SIMPLE_APP模式同样适用MCUboot 二进制在无 BootROM 签名校验的情况下运行。启用 BootROM 签名校验要启用 BootROM 签名校验必须对设备执行预置provision操作。流程概述参考AN240106 PSoC Control C3 Security应用笔记初始化Infineon EdgeProtect Tools项目生成 OEM 密钥对运行provision-device。警告provision-device是不可逆操作执行后 OEM 密钥哈希会被写入 SFLASH且生命周期状态将推进。请务必使用专用开发板进行预置。预置完成后FLASH_BOOT 校验的第一个镜像必须使用 OEM 密钥签名。使用 sysbuild 时这个镜像是 MCUboot 二进制不使用 MCUboot 的独立 Zephyr 应用则同样执行sign-image仅需根据应用二进制与其分区大小调整--image与--slot-size。参考签名命令使用 PSC3 特定参数源自 Zephyr 分区布局edgeprotecttools sign-image \ --image build/mcuboot/zephyr/zephyr.hex \ --output build/mcuboot/zephyr/zephyr.signed.hex \ --key oem-private-key.pem \ --hex-addr 0x32000000 \ --header-size 0x400 --slot-size 0x10000 \ --align 1 --min-erase-size 0x200 --erased-val 0 --overwrite-only west flash --hex-file build/mcuboot/zephyr/zephyr.signed.hex参数要点--hex-addr 0x32000000必须使用 SAHB 窗口地址因为 SAHB 窗口是可写的 Flash 数据访问路径而 CBUS 窗口0x12000000是只读的无法写入--header-size 0x400、--slot-size 0x10000、--align 1、--min-erase-size 0x200、--erased-val 0、--overwrite-only均需与 Zephyr 的 MCUboot 分区布局一致使用 MCUboot 时位于slot0_partition的 Zephyr 应用由标准imgtoolsysbuild 流程签名无需 EPTEdgeProtect Tools签名。总结KIT_PSC3M5_EVK 在 Zephyr 中的支持已经相当完整从默认 Secure 变体的 TrustZone®-M 配置、180/240 MHz 双 DPLL 时钟树、SCB3 控制台、CAN FD 使能到 NOR Flash 变体的 SCB5 SPI 外部存储扩展再到 FLASH_BOOT MCUboot EdgeProtect Tools 的完整安全启动链路均能在本仓库的板级文件中找到一一对应的实现证据kit_psc3m5_evk-common.dtsi、kit_psc3m5_evk.dts、kit_psc3m5_evk_psc3m5fds2afq1_norflash.dts。开发者可据此快速评估并落地面向工业控制、电机驱动场景的 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),仅供参考