ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

RT-Thread 中 CY8CKIT-062-BLE 板级支持包(BSP)深度解析:PSoC 6 BLE Pioneer Kit 的初始化、时钟与电源配置指南

RT-Thread 中 CY8CKIT-062-BLE 板级支持包(BSP)深度解析:PSoC 6 BLE Pioneer Kit 的初始化、时钟与电源配置指南 操作系统嵌入式物联网嵌入式OSRTOS【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址https://gitcode.com/gh_mirrors/rt/rt-thread点击查看免费下载本篇文章以 RT-Thread 仓库中随附的 Infineon CY8CKIT-062-BLE BSP位于bsp/Infineon/psoc6-cy8ckit-062-BLE/libs/TARGET_CY8CKIT-062-BLE为核心系统讲解 PSoC 6 BLE Pioneer Kit 的开发板特性、BSP 配置机制Components 与 Defines、时钟树与电源策略并结合仓库内cybsp.c、cycfg_*生成代码以及 RT-Thread 侧board/board.c、Kconfig等源码还原从cybsp_init()到 RT-Thread 内核启动的完整板级初始化链路。读完本文你将掌握如何在 RT-Thread 工程中理解、裁剪与二次配置这块 BSP并能够自行定位时钟、电源、BLE 与 HAL 相关的配置项。开发板概览PSoC 6 BLE Pioneer KitCY8CKIT-062-BLE 是英飞凌Infineon前 Cypress推出的 PSoC™ 6 BLE Pioneer Kit是一款低成本的硬件平台面向 PSoC™ 63 系列具体型号为 CY8C6347BZI-BLD53的设计与调试。在 RT-Thread 仓库中该 BSP 以独立目录的形式被收纳其根 READMETARGET_CY8CKIT-062-BLE/README.md即该板级支持包的使用说明。从 RT-Thread 视角看这块开发板的核心价值在于双核架构PSoC 6 采用 Arm Cortex-M4浮点 MPU主频可达 150 MHz与 Cortex-M0单周期乘法 MPU主频 100 MHz双核子系统为 RT-Thread 多核调度SMP与低功耗场景提供了硬件基础。仓库中 board/SConscript 的编译宏同时定义了CORE_NAME_CM0P_0与CORE_NAME_CM4_0并启用了CY_USING_PREBUILT_CM0P_IMAGE说明 BSP 采用CM0 运行预编译镜像、CM4 跑用户代码的典型 PSoC 6 双核分工方式。BLE v5.0板载 BLE 能力与蓝牙平台配置见 bluetooth/cybsp_bt_config.h 中的cybsp_bt_platform_cfg为低功耗无线物联网应用铺路。一套统一的板级抽象BSP 的使用方式非常简洁——只需在应用中引用cybsp.h一个头文件即可获得板级初始化、引脚状态宏、硬件配置等全部接口。板载特性与套件内容套件特性Kit Features原文档列出以下核心特性这也是该 BSP 在 RT-Thread 生态中最值得关注的硬件能力BLE v5.0支持蓝牙 5.0 协议栈配合 PSoC 6 的低功耗特性可构建 BLE 物联网节点串行存储器接口Serial memory interface板载 QSPI Flash用于存放固件、资源或文件系统BSP 内config/GeneratedSource/cycfg_qspi_memslot.*与config/design.cyqspi即为 QSPI 存储器槽位的配置产物PDM-PCM 数字麦克风接口支持 PDM 数字麦克风输入便于语音采集类应用行业领先的 CAPSENSE™PSoC 6 的电容触摸传感技术BSP 内config/design.cycapsense与config/GeneratedSource/cycfg_capsense.*即 CAPSENSE 的设计与生成代码。套件内容Kit ContentsCY8CKIT-062-BLE 套件随附CY8CKIT-062-BLE 评估板本体E-Ink 显示扩展板shield包含一块超低功耗 2.7 英寸 E-ink 墨水屏、热敏电阻thermistor、6 轴运动传感器motion sensor以及数字麦克风USB 数据线用于供电与板载 DAP-Link 调试下载。注原 README 中引用的板卡实物图docs/html/board.png并未随本仓库一并收录故此处不再配图读者可依据上文文字描述理解板卡形态。BSP 目录结构与依赖该 BSP 在仓库中的完整路径为bsp/Infineon/psoc6-cy8ckit-062-BLE/libs/TARGET_CY8CKIT-062-BLE其目录结构本身就是理解 BSP 组成的最佳入口目录 / 文件作用COMPONENT_CM0P/、COMPONENT_CM4/双核各自的启动文件startup_psoc6_01_cm0plus.s/startup_psoc6_01_cm4.s与链接脚本linker.ld/linker.icf/linker.sct按工具链分为 GCC_ARM、IAR、ARM、A_Clang 四个子目录system_psoc6_cm0plus.c、system_psoc6_cm4.c、system_psoc6.h双核系统初始化代码与系统头文件cybsp.c/cybsp.hBSP 核心实现与对外 API 声明cybsp_init等cybsp_types.h引脚状态、WiFi 接口类型等类型与宏定义cybsp_hw_config.h硬件默认配置如按键默认上拉CYBSP_USER_BTN_DRIVEcybsp_doc.hAPI 文档分组声明bluetooth/BLE 平台配置结构体cybsp_bt_config.c/.hconfig/GeneratedSource/由 Device Configurator 自动生成的配置代码时钟、引脚、外设、系统、QSPI、CAPSENSE生成文件不应手工修改deps/BSP 依赖的组件包.mtbxmtb-hal-cat1.mtbxHAL 层、mtb-pdl-cat1.mtbxPDL 驱动层、core-lib、core-make、cat1cm0p、recipe-make-cat1a等从依赖可以看出该 BSP 建立在 Infineon 的HALcyhal/ PDLcy_sys、cy_gpio双层驱动**之上。在 RT-Thread 工程中这些依赖通过 rtconfig.h 中的PKG_USING_INFINEON_*系列配置如PKG_USING_INFINEON_MTB_HAL_CAT1、PKG_USING_INFINEON_MTB_PDL_CAT1、PKG_USING_INFINEON_CAPSENSE等以软件包形式拉取。BSP 配置机制Components 与 Defines原文档指出BSP 提供若干钩子hooks用于调整其行为其中一部分默认启用、另一部分需显式开启。默认启用的项记录在CY8CKIT-062-BLE.mk文件中该文件属于 ModusToolbox 工程体系未随本仓库发布在 RT-Thread 场景下这些开关对应的宏定义由 board/SConscript 通过CPPDEFINES统一注入包括CY8C6347BZI_BLD53、CY_USING_HAL、COMPONENT_CAT1、COMPONENT_CAT1A、COMPONENT_BSP_DESIGN_MODUS等。Components组件Device specific category reference如 CAT1默认启用。该组件会把本开发板所属设备系列CAT1即 PSoC 6 / PMG1 等第一类设备的专用代码拉入编译。在 RT-Thread 侧对应的宏为COMPONENT_CAT1/COMPONENT_CAT1A见 board/SConscript同时SOC_FAMILY_IFX、SOC_SERIES_IFX_PSOC63也被定义以标识芯片归属。Defines编译宏Define默认状态作用CYBSP_WIFI_CAPABLE禁用若板载无线芯片则让 BSP 初始化该无线芯片的接口。在 cybsp.c 中当该宏与CYHAL_UDB_SIO同时定义时会调用SDIO_ReserveResources()预留 UDB SDIO 接口所需的时钟与 DMA 资源完整无线功能仍需通过cybsp_wifi_init_primary()在启动 WiFi 时另行初始化CY_USING_HAL启用指明应用将使用 HAL 层。启用后 BSP 会包含相应 HAL 头文件cyhal_hwmgr.h、cyhal_syspm.h并初始化系统级驱动同时触发cycfg_*中 HAL 资源对象如cyhal_resource_inst_t的生成与预留CYBSP_CUSTOM_SYSCLK_PM_CALLBACK禁用启用后BSP 将跳过默认的 SysClk 电源管理回调注册改为调用应用自定义的cybsp_register_custom_sysclk_pm_callback()函数以便用应用特定的逻辑替换默认的深度睡眠时钟处理除上述三个宏外BSP 还支持通过CYBSP_SYSCLK_PM_CALLBACK_ORDER默认 255调整 SysClk 电源管理回调的执行顺序见 cybsp.c以及通过CYBSP_USER_BTN_DRIVE配置按键默认驱动模式默认CYHAL_GPIO_DRIVE_PULLUP见 cybsp_hw_config.h。时钟配置Clock Configuration原文档给出的板级时钟拓扑如下ClockSourceOutput FrequencyFLLIMO100.0 MHzPLLIMO48.0 MHzCLK_HF0CLK_PATH0100 MHz即FLL 与 PLL 均以内部主振荡器 IMO 为参考源FLL 输出 100 MHz 供给高频时钟域PLL 输出 48 MHz典型用于 USB / BLE 等外设CLK_HF0 经由 CLK_PATH0 路径以 100 MHz 运行。这些数值并非文档凭空给出而是与仓库中的生成代码一一对应。在 config/GeneratedSource/cycfg_system.c 中可以找到如下可验证的配置FLLCY_CFG_SYSCLK_FLL_MULT 500U、CY_CFG_SYSCLK_FLL_REFDIV 20U、CY_CFG_SYSCLK_FLL_OUT_FREQ 100000000即 IMO约 8 MHz经 20 分频、500 倍频后输出 100 MHzPLLCY_CFG_SYSCLK_PLL0_FEEDBACK_DIV 30、REFERENCE_DIV 1、OUTPUT_DIV 5CY_CFG_SYSCLK_PLL0_OUTPUT_FREQ 48000000输出 48 MHzCLK_HF0CY_CFG_SYSCLK_CLKHF0_DIVIDER CY_SYSCLK_CLKHF_NO_DIVIDE、CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ 100UL、CY_CFG_SYSCLK_CLKHF0_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH0对应文档中CLK_HF0 ← CLK_PATH0 100 MHz。时钟的实际初始化由 config/GeneratedSource/cycfg_clocks.c 中的init_cycfg_clocks()完成通过Cy_SysClk_PeriphSetDivider等 PDL 接口配置外设分频器并在 HAL 模式下通过cyhal_hwmgr_reserve()预留相应时钟资源。这些文件头部均标注automatically generated and should not be modified如需改动时钟方案应回到 Device Configuratorconfig/design.modus中修改后重新生成。电源配置Power Configuration原文档定义的板级电源策略System Active Power ModeLPLow PowerSystem Idle Power ModeDeep Sleep深度睡眠VDDA 电压3300 mVVDDD 电压3300 mV同样地这些配置可以在生成代码 config/GeneratedSource/cycfg_system.h 中得到源码级印证CY_CFG_PWR_SYS_ACTIVE_MODE CY_CFG_PWR_MODE_LP活动态工作模式为 LPCY_CFG_PWR_SYS_IDLE_MODE CY_CFG_PWR_MODE_DEEPSLEEP空闲态进入深度睡眠CY_CFG_PWR_VDDA_MV 3300与CY_CFG_PWR_VDDD_MV 3300模拟/数字电源域均为 3.3 V同时CY_CFG_PWR_VBACKUP_MV、CY_CFG_PWR_VDD_NS_MV、CY_CFG_PWR_VDDIO0_MV、CY_CFG_PWR_VDDIO1_MV也统一为 3300 mVCY_CFG_PWR_USING_LDO 1使用片内 LDO 供电CY_CFG_PWR_DEEPSLEEP_LATENCY 0。电源配置的运行时应用发生在 cybsp.c当定义了CY_CFG_PWR_VDDA_MV时cybsp_init()会调用cyhal_syspm_set_supply_voltage(CYHAL_VOLTAGE_SUPPLY_VDDA, CY_CFG_PWR_VDDA_MV)显式设置 VDDA 供电电压。这些参数直接决定了系统在空闲时能否真正进入深度睡眠、以及唤醒后时钟能否正确恢复是低功耗应用调整的首要对象。核心 API 与初始化流程BSP 对外暴露的接口以 cybsp.h 为准主要包括cy_rslt_t cybsp_init(void); cy_rslt_t cybsp_register_custom_sysclk_pm_callback(void); /* 仅当定义 CYBSP_CUSTOM_SYSCLK_PM_CALLBACK 时 */cybsp_init()板级初始化的唯一入口cybsp_init()cybsp.c负责初始化板上的全部硬件其内部执行顺序为初始化硬件管理器cyhal_hwmgr_init()建立资源占用跟踪表供后续所有 HAL 外设申请/预留资源使用初始化系统电源管理cyhal_syspm_init()并在配置存在时通过cyhal_syspm_set_supply_voltage()设置 VDDA 电压应用设备配置调用cycfg_config_init()执行由 Device Configurator 生成的系统/时钟/引脚/外设初始化其内部依次调用init_cycfg_system()、init_cycfg_clocks()、init_cycfg_peripherals()等见 config/GeneratedSource/cycfg.h。从源码注释cybsp.c看外设配置默认在第一个运行用户代码的内核上完成存在 CM0 且未运行预编译镜像时为 CM0否则为 CM4以保证所有内核都能使用该配置资源预留cycfg_config_reservations()为 BSP 保留所需资源时钟分频器、CSD 时钟、TRACE 时钟等见 cycfg_clocks.c注册 SysClk 深度睡眠回调默认注册Cy_SysClk_DeepSleepCallback类型为CY_SYSPM_DEEPSLEEP执行顺序为CYBSP_SYSCLK_PM_CALLBACK_ORDER默认 255即最后一个进入深度睡眠、第一个从深度睡眠唤醒从而最小化低功耗模式的进出时间见 cybsp.c。若定义了CYBSP_CUSTOM_SYSCLK_PM_CALLBACK则改调应用自定义的cybsp_register_custom_sysclk_pm_callback()预留 WiFi 接口资源可选当CYBSP_WIFI_CAPABLE与CYHAL_UDB_SIO同时定义时调用SDIO_ReserveResources()。错误码约定若 SysClk 电源管理回调注册失败cybsp_init()返回CYBSP_RSLT_ERR_SYSCLK_PM_CALLBACK定义于 cybsp.h。此外若用户此前已占用 BSP 需要的资源可能返回CYHAL_HWMGR_RSLT_ERR_INUSE此时需对照config/design.modus与 BSP 的资源预留清单排查冲突见 cybsp.c 注释。引脚状态等辅助宏cybsp_types.h 提供板级引脚状态抽象用于屏蔽LED/按键是高电平有效还是低电平有效的硬件差异CYBSP_LED_STATE_ON0/CYBSP_LED_STATE_OFF1LED 亮灭对应的引脚电平CYBSP_BTN_PRESSED0/CYBSP_BTN_OFF1按键按下/释放对应的电平。在 RT-Thread 工程中的集成与使用该 Infineon BSP 组件在 RT-Thread 侧被封装为完整的板级支持包目录为bsp/Infineon/psoc6-cy8ckit-062-BLE二者通过board/目录衔接。板级启动入口cy_bsp_all_init()RT-Thread 的板级初始化函数cy_bsp_all_init()board/board.c在启动阶段直接调用cybsp_init()并对其返回值做断言检查初始化失败返回值非CY_RSLT_SUCCESS即触发CY_ASSERT(0)停止执行。board.hboard/board.h统一引入了cy_result.h、cybsp_types.h、cyhal.h、cybsp.h并定义了堆区边界IFX_SRAM_SIZE为 277 KB堆结束地址为0x08002000 277 * 1024。外设裁剪Kconfig 与 rtconfig.hRT-Thread 的外设使能通过 board/Kconfig 配置覆盖 UARTUART0~UART5、GPIO、PWM、SPI、ADC、SDMMC、硬件/软件 I2C、RTC、片上 Flash、看门狗、DAC、定时器等。默认配置见 rtconfig.h为启用USB 转串口BSP_USING_USB_TO_USART对应 UART5控制台设备为uart5RT_CONSOLE_DEVICE_NAME uart5波特率 115200启用 GPIOBSP_USING_GPIO与 UART5BSP_USING_UART5。需要注意BSP_USING_USB_TO_USART会select BSP_USING_UART与BSP_USING_UART5见 board/Kconfig若需改用其他串口打印日志应同步修改 Kconfig 与RT_CONSOLE_DEVICE_NAME。最小运行示例LED 闪烁仓库 applications/main.c 给出了一个可直接落地的示例通过GET_PIN(13, 7)取得 LED 引脚对应 P13_7以 500 ms 周期翻转电平。结合cybsp_init()完成的外设/引脚初始化下载后即可在串口终端看到 RT-Thread 的启动 Banner 与msh 命令行提示符。小结CY8CKIT-062-BLE BSP 是文档配置 生成代码 运行时初始化三层结构的典型代表README.md给出板卡特性与配置概览config/GeneratedSource/cycfg_*固化时钟FLL 100 MHz / PLL 48 MHz / CLK_HF0 100 MHz与电源LP / Deep Sleep / 3.3 V的最终参数而cybsp_init()则把这些配置在运行时逐项落地并注册深度睡眠回调。在 RT-Thread 中开发者只需通过 board/Kconfig 裁剪外设、引用cybsp.h获得板级抽象即可基于双核 PSoC 6 快速构建 BLE / CAPSENSE / 低功耗物联网应用。深入研读 cybsp.c 与cycfg_system.*生成代码是后续自定义时钟、电源与无线接口的第一步。赞分享操作系统嵌入式物联网嵌入式OSRTOS【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址https://gitcode.com/gh_mirrors/rt/rt-thread点击查看免费下载相关推荐RT-Thread 在 PSoC 6 BLE Pioneer KitCY8CKIT-062-BLE上的 BSP 快速上手与源码解析RT Thread 在 PSoC 6 BLE Pioneer KitCY8CKIT 062 BLE上的 BSP 快速上手与源码解析 RT Thread 官方操作系统嵌入式物联网嵌入式OSRTOSclaude-code-templates 的 E2B 沙箱报 “401: Invalid API key” 时如何定位密钥问题claude code templates 的 E2B 沙箱报 “401: Invalid API key” 时如何定位密钥问题 用 npx claude c操作系统嵌入式物联网嵌入式OSRTOSVideo2X深度解析如何用AI算法让老旧视频重获新生Video2X深度解析如何用AI算法让老旧视频重获新生 你是否曾经翻出多年前的家庭录像却发现画面模糊得看不清人脸或者下载了一部经典动漫却因为分辨率太低而操作系统嵌入式物联网嵌入式OSRTOS上一篇CPU-X硬件检测工具版本演进与技术解析下一篇AnimeGAN用AI轻松生成动漫人脸的终极DCGAN实现指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表