news 2026/9/23 15:09:18

RT-Thread 在 Infineon PSoC 6 CY8CKIT-062-BLE 上的 BSP 快速上手与进阶开发指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RT-Thread 在 Infineon PSoC 6 CY8CKIT-062-BLE 上的 BSP 快速上手与进阶开发指南

RT-Thread 在 Infineon PSoC 6 CY8CKIT-062-BLE 上的 BSP 快速上手与进阶开发指南

【免费下载链接】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)PSoC 6 CY8CKIT-062-BLE双核 Cortex-M4/M0+ 开发板提供的 BSP(板级支持包)使用指南。文章以 bsp/Infineon/psoc6-cy8ckit-062-BLE/README.md 为主线,完整覆盖开发板资源、外设支持矩阵、MDK V5 与 RT-Thread Studio 两套开发流程、运行结果验证,并结合仓库中的 board/Kconfig、applications/main.c、HAL 驱动层等源码展开进阶剖析。读完本文,你将能够独立完成该开发板的工程构建、烧录调试、串口验证,并掌握通过 Kconfig 裁剪与使能 UART、GPIO、PWM、SPI、I2C、ADC、SDMMC、RTC、WDT 等片上外设的具体方法。

开发板介绍

PSoC 6 CY8CKIT-062-BLE是英飞凌推出的一款基于 PSoC 6 系列芯片的双核开发板,其核心价值在于在一个芯片内集成了两个可独立调度的 ARM 内核,可以充分发挥 PSoC 6 双核架构的性能与低功耗优势。

双核 CPU 子系统

内核主频关键特性
ARM Cortex-M4F150 MHz带浮点单元(FPU)与存储器保护单元(MPU),支持单周期乘法
ARM Cortex-M0+100 MHz带单周期乘法与 MPU,适合承担外设控制、低功耗任务等负载

两个内核通过共享外设与内存资源协同工作,开发者既可以将 RT-Thread 运行在 Cortex-M4 上,也可以将 M0+ 用作安全/低功耗协处理器。

板载核心资源

  • MCU:CY8C6347BZI_BLD53,Cortex-M4 主频 150MHz,Cortex-M0+ 主频 100MHz,1MB Flash、288KB SRAM。
  • 开发环境:ModusToolbox 2.0 / MDK V5(编译器:ARMClang / GCC)。

在 BSP 的 board/board.h 中可以看到 SRAM 的划分:IFX_SRAM_SIZE被定义为 277,堆空间终点IFX_SRAM_END计算为0x08002000 + IFX_SRAM_SIZE * 1024,即 BSP 在 288KB SRAM 中为 RT-Thread 动态堆预留了约 277KB 空间,其余部分用于系统栈与静态数据。

开发板外观与更多硬件细节可在英飞凌官方 CY8CKIT-062-BLE 产品页面查询,本仓库不重复搬运外部链接,仅在此说明 MCU 数据手册、ModusToolbox 工具链等资料均可从英飞凌官网获取。

BSP 目录结构速览

进入 bsp/Infineon/psoc6-cy8ckit-062-BLE 后,可以看到一个典型的 RT-Thread BSP 工程布局:

目录 / 文件作用
applications/应用入口,main.c 中实现了 LED 闪烁示例
board/板级初始化(board.c / board.h)、Kconfig 外设配置、链接脚本(linker_scripts/)、示例程序(ports/
libs/TARGET_CY8CKIT-062-BLE/英飞凌芯片支持库:COMPONENT_CM0PCOMPONENT_CM4两套启动文件(startup)、系统初始化(system_psoc6_cm4.c)、链接脚本(linker.sct/ld/icf)及config/GeneratedSource下由 ModusToolbox 生成的引脚、时钟、外设配置代码
libraries/HAL_Drivers/RT-Thread 设备驱动框架与 PSoC 6 HAL 的对接层(UART、GPIO、SPI、I2C、PWM、ADC、DAC、RTC、WDT、TIM、Flash、SD 卡、以太网等)
rtconfig.h/rtconfig.py内核与组件配置头文件 / SCons 构建配置
project.uvprojx/template.uvprojxMDK V5 工程与模板
SConscript/SConstructSCons 构建脚本

板级驱动实现位于 bsp/Infineon/libraries/HAL_Drivers,其中drv_uart.cdrv_gpio.cdrv_spi.cdrv_i2c.cdrv_pwm.cdrv_adc.cdrv_dac.cdrv_rtc.cdrv_timer.cdrv_wdt.cdrv_flash.cdrv_sdcard.cdrv_eth.c分别对应各外设的 RT-Thread 设备驱动,底层调用英飞凌cyhal/ PDL 库。

外设支持情况

本 BSP 对外设的支持情况如下:

片上外设支持情况备注
USB 转串口支持UART5
GPIO支持
UART支持UART0-5

需要说明的是,上表只是 BSP 的默认使能配置。通过 board/Kconfig 还可以进一步开启 PWM、SPI、ADC、SDMMC、硬件/软件 I2C、RTC、WDT、DAC、TIM 以及片内 Flash 等外设,详见下文"进阶使用方法"章节。

默认配置(见 rtconfig.h)中已经使能了BSP_USING_USB_TO_USART(板载 USB 转串口 UART5)、BSP_USING_GPIOBSP_USING_UARTBSP_USING_UART5,并且控制台设备名被设置为"uart5"RT_CONSOLE_DEVICE_NAME),因此下载程序后无需额外配置即可在串口终端看到 RT-Thread 的输出。

快速上手:使用 MDK V5 开发

本 BSP 支持以MDK V5RT-Thread Studio作为开发环境(编译器:ARMClang / GCC)。下面先介绍 MDK V5 流程。

硬件连接

使用 USB 数据线将开发板连接到 PC。开发板板载 DAP-LINK 调试器,同时提供 USB 转串口功能,因此一根数据线即可同时完成供电、下载与串口通信。

编译下载步骤

1、下载软件包

在 ENV 环境下执行:

pkgs --update

该命令会将 BSP 依赖的英飞凌 HAL 库软件包下载到本地Packages目录。从 rtconfig.h 的 "Infineon HAL Packages" 配置段可以看到,本 BSP 依赖INFINEON_CAT1CM0PINFINEON_CMSISINFINEON_CORE_LIBINFINEON_MTB_HAL_CAT1INFINEON_MTB_PDL_CAT1INFINEON_RETARGET_IOINFINEON_CAPSENSE等软件包,这些正是cyhal/PDL 驱动与电容触摸(CapSense)示例运行的基础。

2、生成 MDK 工程

在 ENV 环境下执行:

SCons --target==MDK5

ENV 会自动生成 MDK5 工程(本 BSP 根目录已预置project.uvprojx工程文件可供直接使用)。

3、配置工程

打开 MDK 后,若未安装Infineon-PSoC6的芯片支持包(PACK),MDK 会提示在线安装,根据提示安装即可;若受网络条件限制,可以进入 Keil 官网的 Pack 下载页面获取安装包进行离线安装。

4、编译

在安装好芯片支持包后,在 MDK 工程中直接点击编译(Build)。

5、下载

工程默认配置使用板载 DAP-LINK 以 SWD 方式下载程序。用数据线连接开发板后,编译成功直接点击下载(Download)按钮即可将固件烧录到芯片。

快速上手:使用 RT-Thread Studio 开发

导入工程

打开RT-Thread Studio开发工具,依次点击左上角文件 → 导入 → RT-Thread Studio 项目到工作空间中

接着选择Psoc6-CY8ckit-062-BLE开发板支持包的目录(即本仓库中的bsp/Infineon/psoc6-cy8ckit-062-BLE),完成导入:

编译下载

  • 点击 IDE 左上角的构建选项进行工程编译;
  • 当编译无错误、无警告后,点击DebugDownload选项进行调试/下载。

注:若点击下载并下载成功后串口终端无显示信息,请手动按下开发板复位按键进行重启运行。

运行结果

程序下载成功后系统会自动运行。打开串口终端工具(推荐使用MobaXterm等串口调试助手),选择波特率115200。复位设备后,板载 LED 会以500ms 周期翻转闪烁(源码见 applications/main.c:先拉高 500ms 再拉低 500ms),同时在终端上可以看到 RT-Thread 的启动输出信息,例如:

\ | / - RT - Thread Operating System / | \ 4.1.1 build Jul 25 2022 18:03:35 2006 - 2022 Copyright by RT-Thread team msh >

其中msh >表明 RT-Thread 的 FinSH/MSH 命令行组件已经运行,此时即可在终端中执行 RT-Thread 内置命令。需要说明的是,上述输出中的版本号为 BSP 文档撰写时(2022 年)的构建快照;当前仓库 rtconfig.h 中定义的RT_VER_NUM0x50300(对应 RT-Thread 5.3.0 内核版本),实际编译输出的版本信息以你本地构建为准。

进阶使用方法:通过 Kconfig 裁剪与使能外设

除了默认的 GPIO/UART5 之外,本 BSP 支持通过 Kconfig 菜单灵活使能更多片上外设。配置入口位于 board/Kconfig,在 ENV 或 RT-Thread Studio 中执行menuconfig后,进入Hardware Drivers Config即可看到以下配置项。

板载外设

配置项说明默认值
BSP_USING_USB_TO_USART使能板载 USB 转串口(UART5),会同时选中BSP_USING_UARTBSP_USING_UART5开启

片上外设

配置项说明默认值
BSP_USING_GPIO使能 GPIO(选中RT_USING_PIN,对接 RT-Thread PIN 设备框架)开启
BSP_USING_UART使能 UART(选中RT_USING_SERIAL),其下可分别选择 UART0 ~ UART5UART5 开启,其余关闭
BSP_USING_PWM使能 PWM(RT_USING_PWM),支持 PWM0 的 CH3(PORT13)与 CH7(PORT2/5/7/9/10/12 等多个引脚复用选项)关闭
BSP_USING_SPI使能 SPI 总线(RT_USING_SPI),可选 SPI3 及对应的 SPI3 Sample关闭
BSP_USING_ADC使能 ADC(RT_USING_ADC),可选 ADC1关闭
BSP_USING_SDMMC使能 SD 卡(自动选中RT_USING_SDIORT_USING_DFSRT_USING_DFS_ELMFAT),可选 SDIO1关闭
BSP_USING_HW_I2C使能硬件 I2C 总线(RT_USING_I2C),可选 I2C3(默认 SCL=P6_0/48,SDA=P6_1/49)与 I2C6(默认 SCL=P13_0/104,SDA=P13_1/105),SCL/SDA 引脚号可在 1~113 范围内配置关闭
BSP_USING_SOFT_I2C使能软件 I2C(swi2c,RT_USING_SOFT_I2C),swi2c1 默认 SCL=105、SDA=106关闭
BSP_USING_RTC使能 RTC(RT_USING_RTC),可选用 LSE 或 LSI 作为时钟源关闭
BSP_USING_ON_CHIP_FLASH使能片内 Flash 操作关闭
BSP_USING_WDT使能看门狗(RT_USING_WDT关闭
BSP_USING_DAC使能 DAC(RT_USING_DAC),可选 DAC1 / DAC2关闭
BSP_USING_TIM使能定时器(选中RT_USING_CLOCK_TIME),可选 TIM1 / TIM2关闭

配置技巧:

  • BSP_USING_HW_I2C菜单下,Kconfig 以注释形式给出了引脚提示(如P6_0 --> 48; P6_1 --> 49),这是将 PSoC 6 的端口引脚编号映射到 RT-Thread PIN 编号的参考,配置时需保持一致;
  • 使能 SDMMC 会自动拉起 DFS 与 elmfat 文件系统组件,方便直接使用mount命令挂载 TF 卡;
  • 每个外设配置项都通过select关联了对应的 RT-Thread 组件宏(如RT_USING_SERIALRT_USING_PIN),因此使用 menuconfig 裁剪时依赖关系会自动处理,无需手工修改rtconfig.h

示例程序

在 board/ports 目录下还提供了若干可参考的示例:

  • spi_sample.c:配合BSP_USING_SPI3_SAMPLE使用的 SPI 总线示例;
  • slider_sample.c:基于 CapSense 的滑条(Slider)触摸采样示例,底层依赖INFINEON_CAPSENSE软件包;
  • fal_cfg.h:FAL(Flash 抽象层)分区配置头文件,为片内 Flash 管理提供分区定义。

源码级解析:系统是如何跑起来的

启动与板级初始化

RT-Thread 在启动后会执行组件自动初始化(RT_USING_COMPONENTS_INIT,见 rtconfig.h),其中板级初始化函数cy_bsp_all_init定义于 board/board.c:

void cy_bsp_all_init(void) { cy_rslt_t result; /* Initialize the device and board peripherals */ result = cybsp_init(); /* Board init failed. Stop program execution */ if (result != CY_RSLT_SUCCESS) { CY_ASSERT(0); } }

cybsp_init()来自libs/TARGET_CY8CKIT-062-BLE下的英飞凌 BSP 库(cybsp.c),它会根据 ModusToolbox 生成的设计配置(config/GeneratedSource/cycfg_*.c)完成时钟、引脚、外设与系统资源的统一初始化。若初始化失败,程序会通过断言停机,便于开发者在调试器中发现硬件配置问题。

双核启动与链接脚本

libs/TARGET_CY8CKIT-062-BLE下同时存在COMPONENT_CM0PCOMPONENT_CM4两套启动代码:

  • COMPONENT_CM0P/startup_psoc6_01_cm0plus.S:Cortex-M0+ 启动文件,负责 PSoC 6 芯片的上电复位流程与安全/低功耗核的引导;
  • COMPONENT_CM4/startup_psoc6_01_cm4.S:Cortex-M4 启动文件,RT-Thread 主系统运行于此核。

每种核都提供了 ARM(linker.sct)、GCC(linker.ld)、IAR(linker.icf)、ARMClang 等多套链接脚本,分别对应TOOLCHAIN_ARMTOOLCHAIN_GCC_ARMTOOLCHAIN_IARTOOLCHAIN_A_Clang子目录,保证同一 BSP 可以在 MDK、GCC 与 IAR 工具链间切换。BSP 根目录下的board/linker_scripts/则提供工程实际使用的链接脚本。

LED 应用示例

applications/main.c 给出了最简的 GPIO 使用方式:

#include <rtthread.h> #include <rtdevice.h> #include "drv_gpio.h" #define LED_PIN GET_PIN(13, 7) int main(void) { rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT); for (;;) { rt_pin_write(LED_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED_PIN, PIN_LOW); rt_thread_mdelay(500); } }

关键点:

  • GET_PIN(13, 7)表示端口 13 的第 7 脚,即板载 LED 所在的引脚;
  • 通过rt_pin_mode配置为推挽输出,再通过rt_pin_write拉高/拉低,配合rt_thread_mdelay(500)实现 500ms 周期翻转;
  • 该示例展示了 RT-Thread PIN 设备框架的标准用法,扩展其他 GPIO 时只需替换端口号与引脚号。

驱动层实现

外设驱动统一位于 bsp/Infineon/libraries/HAL_Drivers。以串口为例,drv_uart.c基于 RT-Thread 串口设备框架(RT_USING_SERIAL_V1)封装 PSoC 6 的cyhal_uart接口,并支持 DMA 模式(RT_SERIAL_USING_DMA);drv_gpio.c则将cyhal_gpio映射到rt_pin_ops操作集。因此,上层应用通过标准的rt_device_find("uart5")rt_pin_write()等 API 即可访问硬件,与芯片无关。

工具链与构建配置

rtconfig.py 定义了本 BSP 的构建参数:

  • 架构为arm,CPU 为cortex-m4,默认交叉编译器为armclang(可通过环境变量RTT_CC切换为gcc);
  • 同时支持keil(ARMClang)与iar(ICCARM)平台,EXEC_PATH默认指向C:/Keil_v5,可通过RTT_EXEC_PATH环境变量覆盖;
  • GCC 平台的编译参数包含-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard,链接脚本为board/linker_scripts/link.ld
  • 生成物为rtthread.bin(通过fromelfobjcopy转换),MDK 构建成功后同样会在工程目录输出rtthread.bin供烧录使用。

注意:rtconfig.py中的EXEC_PATH为模板默认值,实际使用时请根据本机 MDK/GCC 安装路径修改,或直接通过环境变量注入。

常见问题与注意事项

  1. 串口无输出:确认波特率设置为 115200,且选择的是板载 USB 转串口对应的串口号;下载成功后若无输出,手动按一次复位按键。
  2. MDK 编译报芯片型号相关错误:多半是未安装Infineon-PSoC6芯片支持包,按提示在线安装或到 Keil 官网离线安装 PACK。
  3. pkgs --update下载缓慢/失败:该步骤需要联网获取英飞凌 HAL 软件包,网络受限时可先配置软件包镜像源后重试。
  4. 首次导入 RT-Thread Studio 无构建按钮:请确认导入的是Psoc6-CY8ckit-062-BLE目录本身(包含rtconfig.hSConstruct),而非其上层目录。
  5. LED 闪烁频率与文档描述不一致:源码实现为 500ms 高电平 + 500ms 低电平(周期 1s),以实际代码行为为准。

联系人

本 BSP 的维护人为 Rbb666。若在使用中发现问题,可在 RT-Thread 社区提交 issue 或参与仓库维护。

总结

本文完整梳理了 RT-Thread 在 Infineon PSoC 6 CY8CKIT-062-BLE 开发板上的 BSP 使用全流程:从双核芯片资源、BSP 目录结构、外设支持矩阵,到 MDK V5 与 RT-Thread Studio 两套快速上手路径,再到基于 Kconfig 的外设裁剪、源码级的启动初始化、双核链接脚本、HAL 驱动对接与 LED 示例解析。开发者可以以此为起点,将 RT-Thread 快速部署到 PSoC 6 平台,并借助libraries/HAL_Drivers的标准化驱动接口,进一步开发基于 UART、GPIO、PWM、SPI、I2C、ADC、SDMMC 等外设的 IoT 应用。

【免费下载链接】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

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 15:09:15

3个高频坑点搞定狂暴飞车下载,面试必问不再挂

3个高频坑点搞定狂暴飞车下载,面试必问不再挂 看了一堆教程还是不会写项目?别慌,这其实是90%新手的通病。 很多兄弟在准备 面试必问 的编程题时,卡在“狂暴飞车下载”这个看似简单实则暗藏玄机的场景里。 明明照着视频敲代码,一到真实环境或者面试官追问,就脑子一片空白,根本接不住话。…

作者头像 李华
网站建设 2026/9/23 15:09:06

避坑指南:解析“用我一生换你十年天真无邪”在技术选型中的隐喻与实战对比

避坑指南:解析“用我一生换你十年天真无邪”在技术选型中的隐喻与实战对比 代码从CSDN或GitHub直接复制,本地一跑就报错,环境依赖冲突、版本不兼容、配置缺失,这种“复制粘贴即翻车”的经历,是每个开发者的噩梦。很多时候,我们以为拿到的是“银弹”,结果拿到的是一堆需要手动修补的碎片。这就是为什么我们…

作者头像 李华
网站建设 2026/9/23 15:09:02

G6 数据操作 API 完全指南:从查询、增删改到层级遍历

G6 数据操作 API 完全指南&#xff1a;从查询、增删改到层级遍历 【免费下载链接】G6 ♾ A Graph Visualization Framework in JavaScript. 项目地址: https://gitcode.com/gh_mirrors/g6/G6 导读 本文以 G6&#xff08;JavaScript 图可视化框架&#xff09;官方数据 A…

作者头像 李华
网站建设 2026/9/23 15:08:52

越女剑在线阅读性能优化:面试必问的3个坑

越女剑在线阅读性能优化:面试必问的3个坑 报错一堆看不懂 StackTrace?别慌,这是 90% 后端开发在入职第一周遇到的噩梦。面试官最爱问的“越女剑在线阅读”场景,其实不是让你去读武侠小说,而是考察你在高并发下如何处理 长文本加载 、 流式响应 以及 内存泄漏 这三大痛点。这是 面试必问…

作者头像 李华
网站建设 2026/9/23 15:08:52

3步搞定cscdkey序列号:源码解析避坑指南

3步搞定cscdkey序列号:源码解析避坑指南 官方文档翻了三遍还是云里雾里?别慌,这行代码的 源码解析 才是破局关键。 项目目标与选型 我们要搭建一个轻量级服务,用于校验 cscdkey序列号 的合法性。很多初学者直接调API,结果被风控拦截,或者密钥泄露导致资源被刷爆。 核心痛点:…

作者头像 李华
网站建设 2026/9/23 15:08:48

抱抱表情包可爱渲染慢?5秒变0.1秒保姆级教程

抱抱表情包可爱渲染慢?5秒变0.1秒保姆级教程 面试被问原理答不上来,是不是心里直打鼓?特别是当面试官指着屏幕问你“为什么这个抱抱表情包可爱动画会卡顿”时,你只能干瞪眼,连个像样的解释都憋不出来。别慌,今天这篇保姆级教程,不整那些虚头巴脑的理论,直接上代码、上数据、上实战。我们要解决的,就是那个让你…

作者头像 李华