
Zephyr 开发 CYW920829M2EVK-02基于 AIROC CYW20829 蓝牙 LE 的完整构建、烧录与安全引导实战指南【免费下载链接】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 官方板级文档 boards/infineon/cyw920829m2evk_02/doc/index.rst 为骨架系统讲解 Infineon AIROC CYW20829 蓝牙 LE 评估板 CYW920829M2EVK-02 的硬件资源、SoC 变体、环境准备、构建/烧录/调试全流程并深入 SECURE LCS 安全生命周期与 MCUboot 签名/加密引导的实现细节。读完本文你将能够独立完成该板卡从取依赖、编译、串口调试到安全启动配置的完整开发闭环。板卡概览与适用场景CYW920829M2EVK-02 是面向 AIROC CYW20829 蓝牙 LE MCU 的官方评估套件MCU 搭载 Arm Cortex-M33 内核主频 96 MHz。它面向典型低功耗蓝牙场景设计覆盖工业物联网、智能家居、资产追踪、信标、传感器与医疗设备等方向。板卡核心指标如下SoCAIROC CYW20829 蓝牙 LE MCU56 引脚 QFN 封装CPUArm Cortex-M33 96 MHzFlash2048 KBSRAM1024 KB无线蓝牙 LE10 dBm 发射功率无需外置 PA传感器6 轴 IMU、热敏电阻、模拟麦克风、数字麦克风USBMicro-B供电、编程、USB-UART 桥接扩展兼容 Arduino Uno R3 排针用户 I/ORGB LED、两颗用户 LED、两个用户按键调试板载 KitProg3SWD USB-UART供电USB 供电3.3V 工作电压套件包含 CYW20829 评估板由 CYW9BTM2BASE3 底板与 CYW920829M2IPA2 处理器板组成、USB Type-A 转 Micro-B 线缆、六根跳线以及快速入门指南。三种 SoC 变体与构建目标CYW920829M2EVK-02 支持同一板卡上的多个 SoC 型号对应不同的 Zephyr 构建目标build target构建目标SoC 变体cyw920829m2evk_02/cyw20829b0lkmlCYW20829 B0LKMLcyw920829m2evk_02/cyw20829b1010CYW20829 B1010cyw920829m2evk_02/cyw20829b1340CYW20829 B1340该对应关系在 board.yml 中登记socs列表包含cyw20829b0lkml、cyw20829b1010、cyw20829b1340并在 Kconfig.cyw920829m2evk_02 中通过select SOC_CYW20829B0LKML / SOC_CYW20829B1010 / SOC_CYW20829B1340完成变体选择。此外cyw920829m2evk_02-memory_map.dtsi 的注释明确指出对于 CYW20829B1340、CYW20829B1240、CYW89829B0232、CYW89829B1232 等型号Flash 集成在 SoC 封装内部但仍通过 QSPI 接口访问而本板其他变体的 Flash 位于处理器板 CYW920829M2IPA2 上、属于外部 Flash。下文默认以cyw920829m2evk_02/cyw20829b0lkml作为示例目标。板载资源LED、按键与默认外设映射LED名称GPIO 引脚电平LED0P1.1低电平有效active lowLED1P5.2低电平有效active low按键名称GPIO 引脚属性SW1P0.5低电平有效内部上拉SW2P1.0低电平有效内部上拉上述映射可在 cyw920829m2evk_02-common.dtsi 中直接印证LED 定义于gpio-leds节点user_led0: gpios gpio_prt1 1 GPIO_ACTIVE_LOWuser_led1: gpios gpio_prt5 2 GPIO_ACTIVE_LOW按键定义于gpio-keys节点user_bt0使用gpio_prt0 5且带GPIO_PULL_UP | GPIO_ACTIVE_LOWuser_bt1使用gpio_prt1 0同时aliases将led0/led1/sw0/sw1分别关联到上述设备Zephyr 应用可通过标准别名直接操作。默认 Zephyr 外设映射引脚功能用途P3.3SCB2 UART TXConsole TXP3.2SCB2 UART RXConsole RXP3.1SCB2 UART RTSConsole RTSP3.0SCB2 UART CTSConsole CTSP1.1GPIOLED0P5.2GPIOLED1P0.5GPIO按键 SW1P1.0GPIO按键 SW2系统时钟与串口AIROC CYW20829 使用内部高频振荡器Internal High-frequency OscillatorIHO作为时钟源时钟路径为FLLIHO → 96 MHzCLK_HF096 MHz系统时钟这一配置在板级设备树 cyw920829m2evk_02.dtsi 中落地clk_hf0节点通过clocks fll0引用 FLLfll0与各path_mux均置为okay同时chosen节点指定了zephyr,sram sram0、zephyr,flash flash0、zephyr,console uart2、zephyr,bt-hci bluetooth、zephyr,entropy mxcryptolite_trng等关键运行时选择。CYW20829 提供多个 SCBSerial Communication Block串行通信块接口Zephyr 控制台输出固定分配给SCB2即uart2。该 UART 通过 KitProg3 的 USB-UART 桥接引出默认启用硬件流控uart2: scb2 { compatible infineon,uart; status okay; current-speed 115200; hw-flow-control; pinctrl-0 p3_3_scb2_uart_tx p3_2_scb2_uart_rx p3_1_scb2_uart_rts p3_0_scb2_uart_cts; pinctrl-names default; dmas dma0 8, dma0 9; dma-names tx, rx; };对应引脚偏置在 cyw920829m2evk_02-pinctrl.dtsi 中配置TX/RTS 为推挽输出drive-push-pullRX/CTS 为输入使能input-enable。默认通信参数为115200 8N1。此外该 UART 还启用了 DMA 通道tx/rx 分别映射到dma0的 8/9 号通道。开发前置条件二进制 Blob 与签名工具CYW920829M2EVK-02 在构建前需要先获取二进制 Blob例如蓝牙控制器固件、以及 MCUboot 所需的 64K 擦除粒度 FlashLoaderwest blobs fetch hal_infineon需要特别说明的是若未预先获取 FlashLoaderboard.cmake 在使能CONFIG_BOOTLOADER_MCUBOOT时会打印警告 MCUboot requires a flashloader with 64k erase size, please use west blobs fetch hal_infineon to download it并从${ZEPHYR_HAL_INFINEON_MODULE_DIR}/zephyr/blobs/flashloader/TARGET_CYW920829M2EVK-02目录查找CYW208xx_SMIF_64K.FLM。另外本板卡上进行 MCUboot 镜像签名需要 cysecuretoolsEdge Protect Tools安装方式pip install cysecuretools构建第一个应用hello_world以下以hello_world示例为例完成一次干净构建-p always先清理再构建west build -p always -b cyw920829m2evk_02/cyw20829b0lkml samples/hello_world烧录并观察串口输出后应能看到如下提示即表示系统已成功启动*** Booting Zephyr OS build vX.Y.Z *** Hello World! cyw920829m2evk_02编程与调试支持的 RunnerCYW920829M2EVK-02 板载 KitProg3 编程器/调试器SWD USB-UART可对 CYW20829 的 Cortex-M33 内核进行编程与调试。从 board.cmake 可以看到两个 runner 的注册逻辑OpenOCDboard_runner_args(openocd --target-handleTARGET.cm33)且在 MCUboot 场景下追加--openocd-search与--config${BOARD_DIR}/support/openocd_CYW208xx_SMIF_64K.cfg使用 64K 擦除粒度的专用配置J-Linkboard_runner_args(jlink --deviceCYW20829_tm)。同时hex_file属性被设置为zephyr_merged.hex烧录时使用合并后的 hex。板卡还附带 support/openocd.cfg、support/openocd_CYW208xx_SMIF_64K.cfg 与 support/qspi_config.cfg 供底层 OpenOCD 使用。通过 SEGGER RTT 输出控制台除串口外该板还支持通过 SEGGER J-Link 设备使用 RTT目标名称为cyw20829_tm。可通过两种方式启用构建时附带rtt-consolesnippet对应仓库 snippets/rtt-console手动设置 KconfigCONFIG_UART_CONSOLEn、CONFIG_RTT_CONSOLEy、CONFIG_USE_SEGGER_RTTy。示例命令blinky RTTwest build -p always -b cyw920829m2evk_02/cyw20829b0lkml samples/basic/blinky -S rtt-consoleRTT 控制块使用注意事项不要使用 Auto Detection而应手动设置搜索范围RAM RangeStart 为0x20000000RAM RangeSize 为0x3d000。该地址范围与 cyw920829m2evk_02-memory_map.dtsi 中sram0: memory20000000SAHB 别名地址的定义一致。安装 Infineon OpenOCD烧录依赖 Infineon 定制版 OpenOCD可通过以下任一方式获得安装 ModusToolbox Programming Tools 软件包其中包含 Infineon OpenOCD独立安装下载对应系统的 Infineon OpenOCD 发布包解压到任意位置。Linux 设备访问权限Linux 需要为 KitProg3 配置设备访问权限。ModusToolbox Programming Tools 安装时会自动处理若采用独立安装可手动执行脚本openocd/udev_rules/install_rules.sh配置串口控制台使用 USB 线连接 PC 与板上 KitProg3 的 Micro-B USB 接口J5然后用任意串口终端minicom、PuTTY 等连接参数如下Speed115200Data8 bitsParityNoneStop bits1烧录不同平台需先一次性配置 Infineon OpenOCD 路径Windowswest config build.cmake-args -- -DOPENOCDpath/to/infineon/openocd/bin/openocd.exe west build -b cyw920829m2evk_02/cyw20829b0lkml -p always samples/hello_world west flashLinuxwest config build.cmake-args -- -DOPENOCDpath/to/infineon/openocd/bin/openocd west build -b cyw920829m2evk_02/cyw20829b0lkml -p always samples/hello_world west flashGDB 调试进入调试模式west build -p always -b cyw920829m2evk_02/cyw20829b0lkml samples/hello_world west debugGDB 控制台启动后即可对 CYW20829 的 Cortex-M33 内核设置断点并进行标准 GDB 调试。在 SECURE 生命周期阶段SECURE LCS运行设备生命周期阶段Lifecycle StageLCS是 AIROC CYW20829 安全体系的关键概念。生命周期阶段由 eFuse 位从 0 变为 1不可逆的编程决定各阶段严格递进用于按用户需求保护设备数据与代码。SECURE即已安全化设备的生命周期阶段在该阶段保护状态被置为 secure设备只有在 Flash 内容认证成功后才允许启动。将设备迁移到 SECURE LCS 需参照 Infineon 应用笔记 AN239590Provision CYW20829 to SECURE LCS执行。迁移完成后可通过以下 Zephyr Kconfig 选项为 SECURE LCS 加密 Flash 接口构建固件Kconfig 选项作用CONFIG_INFINEON_SECURE_LCS目标设备处于 SECURE LCS 时启用CONFIG_INFINEON_SECURE_POLICY指向为设备预置 SECURE LCS 时创建的 policy JSON 文件路径对应 AN239590 第 3.2 节 Key creationCONFIG_INFINEON_SMIF_ENCRYPTION在 SECURE LCS 下启用加密 Flash 接口这三个选项在 soc/infineon/cat1b/cyw20829/Kconfig 中有明确定义INFINEON_SECURE_LCS描述 SECURE 阶段仅当 flash 引导与应用代码认证成功后才启动INFINEON_SECURE_POLICY默认值为default_policy.jsonpolicy 是以 JSON 格式描述的设备配置属性集如调试访问端口开关、SMIF 配置、密钥信息等INFINEON_SMIF_ENCRYPTION依赖INFINEON_SECURE_LCS才能生效。构建系统层面soc/infineon/cat1b/cyw20829/CMakeLists.txt 会根据上述选项自动引入密钥派生与镜像签名处理。以blinky为例为 SECURE LCS 设备构建west build -p always -b cyw920829m2evk_02/cyw20829b0lkml samples/basic/blinky \ -DCONFIG_INFINEON_SECURE_LCSy \ -DCONFIG_INFINEON_SECURE_POLICYpolicy/policy_secure.json使用 MCUbootCYW20829 系列由 Cypress MCU 引导程序MCUBootApp来自 Cypress 分支的 MCUboot支持。启用 MCUboot 后板卡通过 board.cmake 自动切换到 64K 擦除粒度的 OpenOCD 配置openocd_CYW208xx_SMIF_64K.cfg并从west blobs fetch hal_infineon获取的 FlashLoader 目录加载CYW208xx_SMIF_64K.FLM。构建 Cypress MCU BootloaderMCUBootAppMCUBootApp 的构建请参照 CYW20829 平台说明文档操作了解 normal/secure 硅片下的构建过程及其作为引导程序的整体用法。关键步骤与要点将密钥keys与 policy 相关文件夹放到 Cypress 目录mcuboot/boot/cypress/确保默认内存映射与 Zephyr 应用的内存映射一致参考 cyw920829m2evk_02-memory_map.dtsi 中 flash0 的分区定义。以west flash烧录 MCUBootApp# Flash MCUBootApp.hex west flash --no-rebuild --hex-file /path/to/cypress/mcuboot/boot/cypress/MCUBootApp/out/CYW20829/Debug/MCUBootApp.hex注意west flash需要已存在的 Zephyr 构建目录可先为板卡构建任意 Zephyr 应用来生成。从 cyw920829m2evk_02-memory_map.dtsi 可以看到与 MCUboot 严格对齐的 Flash 分区布局B0LKML 等外部 Flash 变体分区标签起始地址大小bootstrapbootstrap_region0x0BOOTSTRAP_SIZEbootmcuboot0x00x20000只读slot0image-00x200000x60000slot1image-10x800000x60000storagestorage0xe000064 KB同时 Kconfig.defconfig 在BOOTLOADER_MCUBOOT下将ROM_START_OFFSET置为0x0保证应用镜像从正确偏移启动。构建带 MCUboot 的 Zephyr 应用以blinky为例构建并烧录签名镜像west build -p always -b cyw920829m2evk_02/cyw20829b0lkml samples/basic/blinky \ -DCONFIG_BOOTLOADER_MCUBOOTy \ -DCONFIG_MCUBOOT_SIGNATURE_KEY_FILE/path/to/cypress/mcuboot/boot/cypress/keys/cypress-test-ec-p256.pem west flash生成加密镜像若通过CONFIG_MCUBOOT_ENCRYPTION_KEY_FILE生成加密镜像则最终 hex 文件为zephyr.signed.encrypted.hex对应 bin 文件为zephyr.signed.encrypted.bin前者用于烧录后者用于 OTA 上传。构建并烧录加密的blinky镜像示例west build -p always -b cyw920829m2evk_02/cyw20829b0lkml samples/basic/blinky \ -DCONFIG_BOOTLOADER_MCUBOOTy \ -DCONFIG_MCUBOOT_SIGNATURE_KEY_FILE/path/to/cypress/mcuboot/boot/cypress/keys/cypress-test-ec-p256.pem \ -DCONFIG_MCUBOOT_ENCRYPTION_KEY_FILE/path/to/cypress/mcuboot/enc-ec256-pub.pem west flash --hex-file build/zephyr/zephyr.signed.encrypted.hex结语与延伸阅读至此你已经掌握了 CYW920829M2EVK-02 从板级资源识别、环境准备、应用构建到 OpenOCD/J-Link 烧录调试、RTT 控制台、SECURE LCS 安全引导以及 MCUboot 签名/加密镜像的完整开发路径。若要进一步深入可继续阅读仓库内的以下素材板级设备树与分区cyw920829m2evk_02.dtsi、cyw920829m2evk_02-common.dtsi、cyw920829m2evk_02-memory_map.dtsi构建系统与 runner 配置board.cmake、Kconfig.defconfig默认配置cyw920829m2evk_02_cyw20829b0lkml_defconfig含 MPU、栈保护、控制台、GPIO、时钟、SMIF 代码/数据重定位、熵源与加密加速等默认开关SoC 安全与时钟配置soc/infineon/cat1b/cyw20829/Kconfig、soc/infineon/cat1b/cyw20829/CMakeLists.txt实践示例samples/hello_world、samples/basic/blinky【免费下载链接】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),仅供参考