操作系统嵌入式物联网嵌入式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 为英飞凌 XMC7200 系列提供了完整的板级支持包BSPxmc7200-kit_xmc7200_evk本文以仓库中该 BSP 的 README.md 为骨架结合仓库内的源码与配置系统讲解开发板资源、外设支持矩阵、MDK V5 环境下的编译下载流程、运行结果验证方法以及基于源码的移植细节。读完本文你将能够独立完成从环境准备、工程生成、固件烧录到串口控制台验证的全流程并理解该 BSP 的底层初始化与驱动实现原理。开发板介绍XMC7200 的双核可编程嵌入式片上系统xmc7200-kit_xmc7200_evk是英飞凌推出的 XMC7200 系列评估板核心是XMC7200D-E272K-8384AA芯片。它是一款为工业应用设计的 32 位双核 CPU 子系统开发板属于真正的可编程嵌入式片上系统PSoC其计算资源布局如下主应用处理器最多两个350MHz Arm Cortex-M7负责运行主应用RT-Thread 内核即运行于该核协处理器一个100MHz Arm Cortex-M0通常承担低功耗监控、安全启动等辅助任务存储资源8MB Flash与1MB SRAM为 RT-Thread 内核、组件和用户应用提供了充裕的内存空间。该 BSP 的工程骨架位于 bsp/Infineon/xmc7200-kit_xmc7200_evk其中board/目录存放板级初始化代码与三种链接脚本GCC 的 link.ld、IAR 的 link.icf、MDK 的 link.sctlibs/目录则存放英飞凌官方生成的 CM0P/CM7 双核启动文件、系统初始化文件以及由 ModusToolbox 生成的cycfg_*外设配置源码applications/目录存放用户入口程序。外设支持矩阵当前 BSP 对外设的支持情况如下表所示片上外设支持情况备注USB 转串口支持UART3兼作系统控制台GPIO支持板载 LED 已接线UART支持UART0-3这一矩阵与 rtconfig.h 中的宏开关一一对应BSP_USING_GPIO、BSP_USING_UART、BSP_USING_UART3均已使能同时RT_USING_SERIAL与RT_USING_PIN也已打开说明串口与 GPIO 驱动在默认配置下即被编译进内核。值得注意的是控制台设备被指定为uart3见RT_CONSOLE_DEVICE_NAME uart3即板载 USB 转串口链路。快速上手在 MDK V5 环境下运行 RT-Thread本 BSP 以MDK V5和Cypress Programmer为主要开发环境编译器支持 ARMClang / GCC。核心工具链在 rtconfig.py 中定义默认CROSS_TOOLarmclang并可通过环境变量RTT_CC、RTT_EXEC_PATH覆盖为 GCC 或 IAR。以下按官方流程逐步说明。第一步硬件连接使用数据线将开发板连接到 PC此时板载 USB 转串口UART3会被识别为串口设备同时为板卡供电。第二步在 ENV 环境下更新软件包并生成 MDK 工程该 BSP 依赖英飞凌的 HAL 库软件包Infineon_mtb-pdl-cat1等这些包不会随仓库直接携带需要先执行包管理器命令下载文件会存放在Packages目录下pkgs --update从 SConstruct 的源码可以看到构建系统正是通过find_package_root(SDK_ROOT, package_prefixInfineon_mtb-pdl-cat1)来定位 HAL 库根目录的若找不到会提示 Packages for HAL_Driver does not exist, pull it in ENV usingpkg --update 并回退到packages目录。因此必须先执行pkgs --update才能成功编译。所需的软件包宏在 rtconfig.h 中也有体现包括PKG_USING_INFINEON_CAT1CM0P、PKG_USING_INFINEON_CMSIS、PKG_USING_INFINEON_CORE_LIB、PKG_USING_INFINEON_MTB_HAL_CAT1、PKG_USING_INFINEON_MTB_PDL_CAT1、PKG_USING_INFINEON_RETARGET_IO六项。随后在 ENV 环境下生成 MDK5 工程scons --targetmdk5ENV 会自动生成 MDK5 工程文件即仓库中的project.uvprojx与template.uvprojx。第三步配置 MDK 工程打开 MDK 工程后若本机尚未安装Infineon-XMC7200的芯片支持包CMSIS PackMDK 会提示在线安装按提示完成安装即可若受网络问题影响无法在线安装可前往 Arm Keil 的 CMSIS Packs 官网下载对应安装包后进行离线安装。芯片支持包提供了器件定义、Flash 下载算法仓库libs/下的CAT1C_SMIF.FLM即烧录算法文件等关键资源缺一不可。第四步编译生成 HEX 文件安装好芯片支持包后在 MDK 中直接编译工程即可生成 HEX 文件。MDK 工程默认输出目录为Build/Keil/Obj编译产物即位于该目录下。工程同时支持 ARMClang 与 GCC 两种编译器后端rtconfig.py 中PLATFORM armclang分支使用armclang armlink armasmPLATFORM gcc分支使用arm-none-eabi-gcc并链接board/linker_scripts/link.ld。第五步使用 Cypress Programmer 烧录打开 Cypress Programmer 工具按以下顺序操作找到 MDK 生成的.hex文件一般在Build/Keil/Obj目录下在软件中选择该文件点击Connect连接到开发板点击Program完成固件下载。运行结果验证下载程序成功之后系统会自动运行。打开终端工具如串口调试助手 MobaXterm选择波特率115200复位设备后即可观察到两个现象板载 LED 闪烁LED 以 500ms 为间隔翻转电平。串口输出 RT-Thread 启动信息\ | / - RT - Thread Operating System / | \ 5.1.0 build May 25 2024 18:03:35 2006 - 2024 Copyright by RT-Thread team msh 出现msh 提示符即代表系统已成功运行可以开始输入 RT-Thread 的 shell 命令。从源码看 LED 与串口的实现LED 闪烁逻辑位于 applications/main.c#include rtthread.h #include rtdevice.h #include drv_gpio.h #define LED_PIN GET_PIN(16, 1) 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); } }代码将 LED 引脚GET_PIN(16, 1)即 GPIO 端口 16 的第 1 脚配置为推挽输出并在死循环中每 500ms 翻转一次电平因此 LED 呈周期性闪烁亮 500ms、灭 500ms。该程序依赖 GPIO 驱动接口rt_pin_mode/rt_pin_write其底层实现位于 bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c通过英飞凌cyhalHAL 层操作引脚寄存器。系统启动信息中的版本号与 rtconfig.h 中的RT_VER_NUM 0x50300对应 RT-Thread 5.3.0一致内核时钟节拍配置为RT_TICK_PER_SECOND 1000即 1ms 一个 tick。串口控制台由drv_uart.c驱动 UART3 提供rtconfig.h中的UART_CPU_IRQ_Number 3指定了 UART 中断连接到 CPU 的中断号。进阶使用深入 BSP 内部结构与配置板级初始化流程系统上电后RT-Thread 的启动流程会调用板级初始化函数。该 BSP 的初始化入口位于 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); } }cy_bsp_all_init封装了英飞凌cybsp_init()调用用于完成时钟、引脚与板级外设的初始化初始化失败时会触发CY_ASSERT断言并停止执行。该函数的声明位于 board/board.h同时该头文件还定义了堆区边界IFX_SRAM_SIZE为 1014KB堆结束地址为0x28000000 1014 * 1024并针对 ARMCC、ICCARM、GCC 三种编译器分别给出了HEAP_BEGIN/HEAP_END的获取方式供 RT-Thread 内存堆初始化使用。硬件驱动裁剪Kconfig开发者可以通过menuconfig对硬件驱动进行裁剪配置入口由 bsp/Infineon/xmc7200-kit_xmc7200_evk/Kconfig 引入board/Kconfig。当前可配置项包括SOC 型号SOC_XMC7200D_E272K8384AA默认选中并自动依赖SOC_SERIES_IFX_XMC板载外设BSP_USING_USB_TO_USART即 uart3默认开启会连带选中 GPIO、UART、UART3片上外设BSP_USING_GPIO默认开启依赖RT_USING_PINBSP_USING_UART默认开启依赖RT_USING_SERIAL其下可单独开关BSP_USING_UART3并可通过UART_CPU_IRQ_Number取值范围 0-7默认 3配置 UART 连接 CPU 的中断号BSP_USING_ETH默认关闭依赖RT_USING_ETH。对应的串口实现为 bsp/Infineon/libraries/HAL_Drivers/drv_uart.cGPIO 实现为 bsp/Infineon/libraries/HAL_Drivers/drv_gpio.c。此外HAL_Drivers 目录还提供了 ADC、DAC、Flash、I2C、PWM、RTC、SPI、Timer、WDT 等驱动文件如drv_adc.c、drv_flash.c、drv_spi.c开发者可按需在 Kconfig 中扩展使能其中config/xmc7200/adc_config.h等文件为对应外设提供了引脚与通道配置。双核架构与启动文件XMC7200 的双核特性在 BSP 中体现为两套启动文件均位于 bsp/Infineon/xmc7200-kit_xmc7200_evk/libs/TARGET_APP_KIT_XMC72_EVKCOMPONENT_CM0PCortex-M0 核的启动文件startup_cm0plus.s/startup_cm0plus.S与系统初始化文件system_cm0plus.cCOMPONENT_CM7Cortex-M7 核的启动文件startup_cm7.c与系统初始化文件system_cm7.c。RT-Thread 内核运行在 CM7 核上CM0 核负责系统级辅助功能。两个核的链接脚本linker.sct / linker.ld / linker.icf也按核分别存放。system_cm7.c负责配置 CM7 的系统时钟与总线xmc7xxx_partition.h定义了 XMC7000 系列的内存分区。开发者若需自定义时钟频率或内存布局可修改对应核的system_*.c与链接脚本。外设配置文件ModusToolbox 生成libs/.../config/GeneratedSource/下存放了由英飞凌 ModusToolbox 根据design.modus、design.cyqspi设计文件自动生成的外设配置源码包括cycfg_pins.c/h引脚复用与电气属性配置cycfg_clocks.c/h时钟树配置cycfg_peripherals.c/h外设实例配置UART、GPIO 等cycfg_qspi_memslot.c/h与qspi_config.cfg外部 FlashQSPI存储配置配合FlashLoaders/CAT1C_SMIF.FLM烧录算法实现片外 Flash 的读写。这些文件由工具链自动维护通常在修改design.modus后重新生成无需手工编辑。小结xmc7200-kit_xmc7200_evkBSP 完整展示了 RT-Thread 在英飞凌 XMC7200 双核平台上从编译、烧录到运行验证的整套流程通过pkgs --update拉取 HAL 软件包、scons --targetmdk5生成工程、MDK 编译、Cypress Programmer 烧录最终在 115200 波特率下看到 RT-Thread 的启动 banner 与msh控制台。结合 board/board.c、applications/main.c、rtconfig.h 等源码开发者可以进一步理解双核启动、板级初始化与 GPIO/UART 驱动的底层机制并借助 Kconfig 按需裁剪外设将 BSP 快速迁移到自己的 XMC7200 项目中。赞分享操作系统嵌入式物联网嵌入式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 PSoC6-CY8CKIT-062S4 上的 BSP 快速上手与双核外设开发指南RT Thread 在 Infineon PSoC6 CY8CKIT 062S4 上的 BSP 快速上手与双核外设开发指南 本指南以 RT Thread 为英飞操作系统嵌入式物联网嵌入式OSRTOSRT-Thread 基于 Infineon PSoC6 CY8CKIT-062S2-43012 双核开发板的 BSP 快速上手与实战指南RT Thread 基于 Infineon PSoC6 CY8CKIT 062S2 43012 双核开发板的 BSP 快速上手与实战指南 导读 本文以 RT T操作系统嵌入式物联网嵌入式OSRTOSRT-Thread 在 AT32F403A AT-START 开发板上的 BSP 移植与快速上手指南RT Thread 在 AT32F403A AT START 开发板上的 BSP 移植与快速上手指南 AT32F403A AT START 是雅特力Arter操作系统嵌入式物联网嵌入式OSRTOS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考