ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

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 为英飞凌InfineonPSoC 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-M0100 MHz带单周期乘法与 MPU适合承担外设控制、低功耗任务等负载两个内核通过共享外设与内存资源协同工作开发者既可以将 RT-Thread 运行在 Cortex-M4 上也可以将 M0 用作安全/低功耗协处理器。板载核心资源MCUCY8C6347BZI_BLD53Cortex-M4 主频 150MHzCortex-M0 主频 100MHz1MB 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_CM0P与COMPONENT_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.c、drv_gpio.c、drv_spi.c、drv_i2c.c、drv_pwm.c、drv_adc.c、drv_dac.c、drv_rtc.c、drv_timer.c、drv_wdt.c、drv_flash.c、drv_sdcard.c、drv_eth.c分别对应各外设的 RT-Thread 设备驱动底层调用英飞凌cyhal/ PDL 库。外设支持情况本 BSP 对外设的支持情况如下片上外设支持情况备注USB 转串口支持UART5GPIO支持—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_GPIO、BSP_USING_UART、BSP_USING_UART5并且控制台设备名被设置为uart5RT_CONSOLE_DEVICE_NAME因此下载程序后无需额外配置即可在串口终端看到 RT-Thread 的输出。快速上手使用 MDK V5 开发本 BSP 支持以MDK V5和RT-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_CAT1CM0P、INFINEON_CMSIS、INFINEON_CORE_LIB、INFINEON_MTB_HAL_CAT1、INFINEON_MTB_PDL_CAT1、INFINEON_RETARGET_IO、INFINEON_CAPSENSE等软件包这些正是cyhal/PDL 驱动与电容触摸CapSense示例运行的基础。2、生成 MDK 工程在 ENV 环境下执行SCons --targetMDK5ENV 会自动生成 MDK5 工程本 BSP 根目录已预置project.uvprojx工程文件可供直接使用。3、配置工程打开 MDK 后若未安装Infineon-PSoC6的芯片支持包PACKMDK 会提示在线安装根据提示安装即可若受网络条件限制可以进入 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 左上角的构建选项进行工程编译当编译无错误、无警告后点击Debug或Download选项进行调试/下载。注若点击下载并下载成功后串口终端无显示信息请手动按下开发板复位按键进行重启运行。运行结果程序下载成功后系统会自动运行。打开串口终端工具推荐使用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_NUM为0x50300对应 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_UART与BSP_USING_UART5开启片上外设配置项说明默认值BSP_USING_GPIO使能 GPIO选中RT_USING_PIN对接 RT-Thread PIN 设备框架开启BSP_USING_UART使能 UART选中RT_USING_SERIAL其下可分别选择 UART0 ~ UART5UART5 开启其余关闭BSP_USING_PWM使能 PWMRT_USING_PWM支持 PWM0 的 CH3PORT13与 CH7PORT2/5/7/9/10/12 等多个引脚复用选项关闭BSP_USING_SPI使能 SPI 总线RT_USING_SPI可选 SPI3 及对应的 SPI3 Sample关闭BSP_USING_ADC使能 ADCRT_USING_ADC可选 ADC1关闭BSP_USING_SDMMC使能 SD 卡自动选中RT_USING_SDIO、RT_USING_DFS、RT_USING_DFS_ELMFAT可选 SDIO1关闭BSP_USING_HW_I2C使能硬件 I2C 总线RT_USING_I2C可选 I2C3默认 SCLP6_0/48SDAP6_1/49与 I2C6默认 SCLP13_0/104SDAP13_1/105SCL/SDA 引脚号可在 1~113 范围内配置关闭BSP_USING_SOFT_I2C使能软件 I2Cswi2cRT_USING_SOFT_I2Cswi2c1 默认 SCL105、SDA106关闭BSP_USING_RTC使能 RTCRT_USING_RTC可选用 LSE 或 LSI 作为时钟源关闭BSP_USING_ON_CHIP_FLASH使能片内 Flash 操作关闭BSP_USING_WDT使能看门狗RT_USING_WDT关闭BSP_USING_DAC使能 DACRT_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_SERIAL、RT_USING_PIN因此使用 menuconfig 裁剪时依赖关系会自动处理无需手工修改rtconfig.h。示例程序在 board/ports 目录下还提供了若干可参考的示例spi_sample.c配合BSP_USING_SPI3_SAMPLE使用的 SPI 总线示例slider_sample.c基于 CapSense 的滑条Slider触摸采样示例底层依赖INFINEON_CAPSENSE软件包fal_cfg.hFALFlash 抽象层分区配置头文件为片内 Flash 管理提供分区定义。源码级解析系统是如何跑起来的启动与板级初始化RT-Thread 在启动后会执行组件自动初始化RT_USING_COMPONENTS_INIT见 rtconfig.h其中板级初始化函数cy_bsp_all_init定义于 board/board.cvoid 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_CM0P与COMPONENT_CM4两套启动代码COMPONENT_CM0P/startup_psoc6_01_cm0plus.SCortex-M0 启动文件负责 PSoC 6 芯片的上电复位流程与安全/低功耗核的引导COMPONENT_CM4/startup_psoc6_01_cm4.SCortex-M4 启动文件RT-Thread 主系统运行于此核。每种核都提供了 ARMlinker.sct、GCClinker.ld、IARlinker.icf、ARMClang 等多套链接脚本分别对应TOOLCHAIN_ARM、TOOLCHAIN_GCC_ARM、TOOLCHAIN_IAR、TOOLCHAIN_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_DMAdrv_gpio.c则将cyhal_gpio映射到rt_pin_ops操作集。因此上层应用通过标准的rt_device_find(uart5)、rt_pin_write()等 API 即可访问硬件与芯片无关。工具链与构建配置rtconfig.py 定义了本 BSP 的构建参数架构为armCPU 为cortex-m4默认交叉编译器为armclang可通过环境变量RTT_CC切换为gcc同时支持keilARMClang与iarICCARM平台EXEC_PATH默认指向C:/Keil_v5可通过RTT_EXEC_PATH环境变量覆盖GCC 平台的编译参数包含-mcpucortex-m4 -mfpufpv4-sp-d16 -mfloat-abihard链接脚本为board/linker_scripts/link.ld生成物为rtthread.bin通过fromelf或objcopy转换MDK 构建成功后同样会在工程目录输出rtthread.bin供烧录使用。注意rtconfig.py中的EXEC_PATH为模板默认值实际使用时请根据本机 MDK/GCC 安装路径修改或直接通过环境变量注入。常见问题与注意事项串口无输出确认波特率设置为 115200且选择的是板载 USB 转串口对应的串口号下载成功后若无输出手动按一次复位按键。MDK 编译报芯片型号相关错误多半是未安装Infineon-PSoC6芯片支持包按提示在线安装或到 Keil 官网离线安装 PACK。pkgs --update下载缓慢/失败该步骤需要联网获取英飞凌 HAL 软件包网络受限时可先配置软件包镜像源后重试。首次导入 RT-Thread Studio 无构建按钮请确认导入的是Psoc6-CY8ckit-062-BLE目录本身包含rtconfig.h与SConstruct而非其上层目录。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),仅供参考
返回列表