ARTICLE DETAIL

资讯详情

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

STM32H730-EspHostedEVB 开发板 RT-Thread BSP 指南:快速上手与进阶配置

STM32H730-EspHostedEVB 开发板 RT-Thread BSP 指南:快速上手与进阶配置 操作系统嵌入式物联网嵌入式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点击查看免费下载本文以 bsp/stm32/stm32h730-esphosted-evb/README.md 为核心骨架结合仓库内源码applications/main.c、board/board.c、board/linker_scripts/link.lds、rtconfig.h等进行纵深讲解。读者将掌握该 BSP 的板载资源与外设支持现状、MDK5 与 GCC/CMake 两套编译下载流程、基于 ENV 的 menuconfig 进阶配置方法以及其背后 550MHz 时钟、MPU 内存划分、外部 Flash XiP 启动等底层实现细节为在 ESP-Hosted 测试板上基于 RT-Thread 开发 WiFi/蓝牙应用打下基础。1. 开发板与 BSP 概览STM32H730-EspHostedEVB是维护者kaidegit/Kai为测试与调试ESP-Hosted方案而手工制作的一块测试板并在此基础上移植了 RT-Thread BSP板级支持包。开发板外观如下该开发板的常用板载资源MCUSTM32H730VBT6主频 550MHz432KB RAM、64KB ITCM、128KB DTCM、32KB I-Cache、32KB D-Cache128KB 内部 FLASH同时外挂 QSPI Flash / SPI Flash支持 XiP片外直接执行与 OTFDEC外部存储器解密网络适配器ESP32-C3-WROOM-02使用 ESP-Hosted 固件调试器板载 ST-Link V2-1更多开发板硬件信息可参考 OSHWHUB 与 GITHUB 上的开源工程见 README.md 原始链接。1.1 外设支持情况BSP 目前对开发板外设的支持情况如下表该表完整继承自原文档板载外设支持情况备注LED支持应用示例默认驱动QSPI FLASH不支持也不建议操作用于运行程序SPI FLASH待支持ESP32-C3待支持WIFI BLUETOOTH片上外设支持情况备注GPIO支持UART支持UART2SPI支持QSPI不支持已被占用USB待支持从 rtconfig.h 可以看到默认配置仅开启了BSP_USING_GPIO、BSP_USING_UART/BSP_USING_UART2并把控制台绑定到uart2#define RT_CONSOLE_DEVICE_NAME uart2这与文档中“默认只开启了 GPIO 和串口 2”的描述完全一致。QSPI 之所以“不支持也不建议操作”是因为该 BSP 的程序默认通过外部 QSPI Flash 以 XiP 方式运行见后文链接脚本分析QSPI 接口已被程序运行占用。2. BSP 目录结构该 BSP 位于仓库bsp/stm32/stm32h730-esphosted-evb/关键文件与职责如下路径说明applications/main.c应用入口默认演示 GPIO 点灯board/board.c系统时钟配置、MPU 配置、GCC 下复位向量/启动逻辑board/board.hFlash/RAM 边界定义、堆起始与结束地址board/Kconfig硬件驱动 menuconfig 菜单I-Cache/D-Cache、GPIO、UART2 等board/linker_scripts/link.ldsGCC 链接脚本外部 Flash 起始、ITCM/DTCM 划分board/CubeMX_ConfigSTM32CubeMX 工程与 HAL 配置头文件stm32h730-ospi1.cfgOpenOCD 外部 Flash 下载算法配置custom.cmakeCMake 工程中集成的ninja flash下载目标project.uvprojxMDK5 工程另含 IAR 与 GCC 支持rtconfig.h当前生效的 RT-Thread 配置KconfigBSP 顶层配置菜单声明SOC_STM32H730VB3. 快速上手本 BSP 同时提供MDK5、IAR 工程并支持 GCC 开发环境。下面以 MDK5 为例介绍运行流程。3.1 编译前准备拉取依赖包⚠️ 请注意在执行编译工作前必须先打开 ENV 执行以下指令用于拉取必要的 HAL 库及 CMSIS 库否则无法通过编译pkgs --update这一要求并非可有可无而是由构建系统强制检查的。查看 SConstruct 可知构建前bsp_pkg_check()会检查以下三个目录是否存在packages/CMSIS-Core-latestpackages/stm32h7_cmsis_driver-latestpackages/stm32h7_hal_driver-latest缺失时直接报错退出并提示先执行pkgs --update若软件包源尚未初始化需先pkgs --upgrade再pkgs --update。与之对应rtconfig.h 中启用了PKG_USING_STM32H7_HAL_DRIVER、PKG_USING_STM32H7_CMSIS_DRIVER、PKG_USING_CMSIS_CORE等软件包选项。3.2 硬件连接使用数据线连接开发板上靠上的 USB-C接口板载 ST-Link V2-1 调试/供电口。3.3 编译下载MDK5双击project.uvprojx打开 MDK5 工程编译工程下载程序到开发板。工程默认配置使用STLink下载程序在通过 ST-Link 连接开发板的基础上点击下载按钮即可完成烧录。3.4 运行结果下载程序成功之后系统会自动运行观察开发板上 LED 效果红色 LED 常亮、绿色 LED 周期性闪烁。将开发板对应串口连接到 PC在终端工具中打开相应串口115200-8-1-N复位设备后可以看到 RT-Thread 启动信息\ | / - RT - Thread Operating System / | \ 5.2.0 build Feb 3 2025 13:14:21 2006 - 2024 Copyright by RT-Thread team msh 出现msh 提示符即代表 RT-Thread 已成功运行在开发板上可输入 RT-Thread 的 shell 命令进行交互。4. GCC / 命令行编译与下载除 MDK5 外该 BSP 也完整支持 GCC 工具链可通过命令行完成编译与下载mkdir build scons --targetcmake --project-nameEspHostedEVBDemo cd build cmake .. -G Ninja ninja -j8 ninja flash命令含义拆解scons --targetcmake --project-nameEspHostedEVBDemo由 scons 构建系统生成 CMake 工程项目名可自定义cmake .. -G Ninja生成 Ninja 构建文件ninja -j8以 8 并行任务编译产物为rt-thread.elfninja flash通过 OpenOCD 将固件烧录到外部 Flash。flash目标由 custom.cmake 定义它调用openocd加载仓库自带的 stm32h730-ospi1.cfg 配置文件执行program ${CMAKE_PROJECT_NAME}.elf、reset、shutdown三个命令完成“烧录-复位-退出”。注意custom.cmake中的 OpenOCD 路径是维护者本机的绝对路径Windows/macOS 各一份如果你本地的 OpenOCD 安装位置不同需要按OPENOCD_PATH_WIN/OPENOCD_PATH_MACOS的格式自行修改后才能在ninja flash中直接使用。也可以生成 CMake 工程后用CLion打开开发调试scons --targetcmake --project-nameEspHostedEVBDemo clion .GCC 方式下载后的串口输出与 MDK 方式一致... some bootloader log... \ | / - RT - Thread Operating System / | \ 5.2.0 build Feb 3 2025 13:16:15 2006 - 2024 Copyright by RT-Thread team msh 5. 进阶使用ENV 配置更多外设此 BSP 默认仅开启 GPIO 与串口 2 功能。如需使用更多高级功能SPI、更多 UART、DMA 等需要利用ENV 工具对 BSP 进行配置步骤为在 bsp 目录即bsp/stm32/stm32h730-esphosted-evb下打开 ENV 工具输入menuconfig命令配置工程配置完成后保存退出输入pkgs --update命令更新软件包输入scons --targetmdk5/cmake命令重新生成工程。5.1 可配置项详解board/Kconfig 定义了本 BSP 的硬件驱动配置菜单核心选项如下配置项类型/默认值说明BSP_SCB_ENABLE_I_CACHEbool默认 y使能 I-Cache32KBBSP_SCB_ENABLE_D_CACHEbool默认 y使能 D-Cache32KBBSP_USING_GPIObool默认 y使能 GPIO自动 selectRT_USING_PINBSP_USING_UARTbool默认 y使能串口驱动自动 selectRT_USING_SERIALBSP_USING_UART2bool默认 y使能 UART2调试串口BSP_UART2_RX_USING_DMAbool默认 nUART2 接收 DMA依赖RT_SERIAL_USING_DMABSP_UART2_TX_USING_DMAbool默认 yUART2 发送 DMABSP_UART2_RX_BUFSIZEint默认 256范围 64~65535UART2 接收缓冲区大小BSP_UART2_TX_BUFSIZEint默认 0范围 0~65535UART2 发送缓冲区大小0 表示无BSP_USING_UART3bool默认 n使能 UART3另外BSP_STM32_UART_V1_TX_TIMEOUT默认 6000仅在RT_USING_SERIAL_V1场景下生效用于控制串口 v1 框架的发送超时。菜单末尾还会引入bsp/stm32/libraries/HAL_Drivers/drivers/Kconfig因此 SPI、QSPI、USB、SDIO 等 STM32 HAL 驱动也都可以通过 menuconfig 统一开关。5.2 配置后的工程再生成若使用 MDK5执行scons --targetmdk5若使用 CMake/GCC执行scons --targetcmake。重新生成工程后新开启的外设驱动会被纳入编译同时rtconfig.h会自动同步更新。本章节更详细的通用教程请参考 STM32 系列 BSP 外设驱动使用教程。6. 源码级细节从点灯到 550MHz 启动为了让读者理解该 BSP 的工程组织方式下面结合源码剖析三个关键实现。6.1 默认应用GPIO 点灯applications/main.c 是默认的应用入口#include rtthread.h #include rtdevice.h #include board.h #define LED_PIN GET_PIN(E, 2) int main(void) { /* set GPIO pin mode to output */ rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT); while (1) { rt_pin_write(LED_PIN, !rt_pin_read(LED_PIN)); rt_thread_mdelay(1000); } }LED 接在PE2GET_PIN(E, 2)采用 RT-Thread 标准 PIN 设备接口rt_pin_mode设置为输出rt_pin_read/rt_pin_write每秒翻转一次电平对应 README 中“绿色 LED 周期性闪烁”的现象通过RT_USING_USER_MAINrtconfig.h机制系统初始化完成后自动创建main线程执行该入口RT_MAIN_THREAD_STACK_SIZE为 2048、优先级为 10。6.2 系统时钟与 MPU 配置board/board.c 中的SystemClock_Config()将系统时钟配置到 550MHzRCC_OscInitStruct.PLL.PLLM 5; RCC_OscInitStruct.PLL.PLLN 110; RCC_OscInitStruct.PLL.PLLP 1;即HSE 频率 / 5 × 110 / 1 550MHz并配置了FLASH_LATENCY_33 个等待周期以匹配高速主频。同文件中的MPU_Config()通过INIT_BOARD_EXPORT在板级初始化阶段自动执行划分了 6 块内存区域与 STM32H7 的存储映射一一对应MPU 区域地址大小属性ITCM0x0000000064KB只读、允许取指DTCM0x20000000128KB读写、允许取指RAM D10x24000000512KB实际 320K读写、可缓存作为主堆/运行内存RAM D20x3000000032KB读写、不可缓存DMA Buffer 用RAM D30x3800000016KB读写、不可缓存DMA Buffer 用外部 Flash0x90000000128MB只读、可缓存、允许取指XiP6.3 链接脚本程序为何跑在外部 FlashGCC 链接脚本 link.lds 展示了该 BSP 与众不同的内存布局MEMORY { ITCMRAM (xrw) : ORIGIN 0x00000000, LENGTH 64K DTCMRAM (xrw) : ORIGIN 0x20000000, LENGTH 128K FLASH (rx) : ORIGIN 0x90000000, LENGTH 1M RAM_D1 (xrw) : ORIGIN 0x24000000, LENGTH 320K RAM_D2 (xrw) : ORIGIN 0x30000000, LENGTH 32K RAM_D3 (xrw) : ORIGIN 0x38000000, LENGTH 16K }FLASH 段起始地址为0x90000000即 STM32H7 的 OCTOSPI1 memory-mapped 区程序直接链接到外部 QSPI Flash上电后由 Bootloader 完成外部 Flash 初始化并跳转实现 XiP 执行.data段被放置到DTCMRAM0x20000000128KB.ramfuncRAM 中执行的函数被放置到ITCMRAM堆_heap_start/_heap_end位于 DTCM 内栈_sstack/_estack由_system_stack_size 0x4001KB在 DTCM 尾部划分启动入口为Reset_Handler对应 board.c 中 GCC 专用的复位处理函数手动拷贝.ramfunc、.data并清零.bss后调用SystemInit()与entry()。这解释了 README 注意事项中“GCC 使用外部 FlashMDK 使用内部 Flash”的差异GCC 链路默认把代码链接到0x90000000外部 QSPI Flash而 MDK 工程使用的是内部 128KB Flash因此两种工具链的下载算法与烧录目标不同。也正因如此QSPI 接口被程序运行占用“不支持也不建议操作”。7. 注意事项与常见问题结合 README.md 的注意事项章节整理如下下载算法尚未完全就绪GCC 使用外部 Flash需 OpenOCD 配合stm32h730-ospi1.cfgMDK 使用内部 Flash。OpenOCD 所需的 cfg 已随 BSP 提供MDK 与 CubeProg 的外部 Flash 下载算法标记为TODO暂不可用。调试串口为串口 2默认接到 ST-Link串口参数为115200-8-1-N控制台设备名uart2。Bootloader 下载需要先烧录支持外部 Flash 初始化的 Bootloader参考 ESPHostedEVB 仓库的Software/Bootloader目录说明可使用STM32CubeProgrammer下载。ST-Link 固件下载参考 OSHWHUB 各项目教程ST-Link V2-1 需先烧录正确固件才能作为调试器使用。ESP-Hosted 固件下载ESP32-C3 模块需预先烧录 ESP-Hosted 固件参考 ESP-Hosted 项目esp_hosted_fg/README.md的说明本 BSP 中 ESP32-C3 的外设驱动标记为“待支持”。8. 维护与社区该 BSP 的维护人为kaidegitKaiREADME 维护信息位于 bsp/stm32/stm32h730-esphosted-evb/README.md。该 BSP 是一个面向 ESP-Hosted 测试场景的专用移植整体遵循 RT-Thread STM32 系列 BSP 的标准结构applications/、board/、libraries/、Kconfig/SConscript 体系开发者既可以按“快速上手”章节直接体验 RT-Thread 在 STM32H730 上的运行效果也可以按“进阶使用”章节扩展 SPI、UART、WiFi 等外设逐步完成 ESP-Hosted 在 RT-Thread 上的整机验证。赞分享操作系统嵌入式物联网嵌入式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 NS800RT7P65-NSSinePad 开发板 BSP 快速上手与进阶配置指南RT Thread NS800RT7P65 NSSinePad 开发板 BSP 快速上手与进阶配置指南 本文基于 RT Thread 开源仓库中 bsp/nov操作系统嵌入式物联网嵌入式OSRTOSGD32450Z-EVAL 开发板 RT-Thread BSP 快速上手与进阶配置指南GD32450Z EVAL 开发板 RT Thread BSP 快速上手与进阶配置指南 本指南以 RT Thread 仓库中 bsp/gd32/arm/gd32操作系统嵌入式物联网嵌入式OSRTOSGD32H759I-START 开发板 RT-Thread BSP 快速上手与进阶配置指南GD32H759I START 开发板 RT Thread BSP 快速上手与进阶配置指南 GD32H759I START 是兆易创新推出的 GD32H7 系列操作系统嵌入式物联网嵌入式OSRTOS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表