- 操作系统
- 嵌入式
- 物联网
- 嵌入式OS
- RTOS
【免费下载链接】rt-thread
RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/
本指南以 RT-Thread 开源仓库中的 FANKE FK750M1-VBT6 开发板 BSP 说明 为核心骨架,面向希望在这块基于 Cortex-M7 内核(最高 480MHz、片内 128KB ROM / 1MB RAM、外扩 8MB QSPI Flash)的核心板上快速运行 RT-Thread 并驱动板载资源的开发者。阅读完本文,你将掌握该 BSP 的硬件资源分布、MDK5/IAR/GCC 三种工程的上手流程、ENV 工具配置外设的完整命令链,以及如何绕过 H750 128KB Flash 容量限制的多种方案。
开发板简介与硬件资源
FK750M1-VBT6 是 FANKE 推出的一款基于 ARM Cortex-M7 内核(具体型号为 STM32H750VBT6,rtconfig.h中通过SOC_STM32H750VBT6宏标识)的核心板,最高频率 480MHz,具有 128KB ROM、1MB RAM,外接 8MB QSPI Flash。该 BSP 位于bsp/stm32/stm32h750-fk750m1-vbt6目录,由维护人 NU-LL 提供。
板载资源如下:
- 外扩 W25Q64,容量 8M 字节(QSPI 接口)
- 1 个复位按键,1 个用户按键
- 1 个 BOOT 按键
- 1 个用户 LED
- 1 个 Type C 接口
- 1 个 TF 卡接口
- 1 个 SPI 液晶和摄像头接口
- 引出 73 个 IO 口
片内存储与多段 SRAM 布局(源码佐证)
从 board.h 可以看到该 BSP 对芯片存储的精确划分:ROM_START为0x80000000、ROM_SIZE为 128KB;RAM_START为0x20000000(DTCM 区域)、RAM_SIZE为 128KB。而 board.c 中的init_sram()函数(通过INIT_BOARD_EXPORT自动初始化)进一步把 H750 剩余的 RAM 以rt_memheap形式挂载到系统:
| 内存区 | 起始地址 | 大小 |
|---|---|---|
| AXI SRAM | 0x24000000 | 512KB |
| SRAM1 | 0x30000000 | 128KB |
| SRAM2 | 0x30020000 | 128KB |
| SRAM3 | 0x30040000 | 32KB |
| SRAM4 | 0x38000000 | 64KB |
| Backup SRAM | 0x38800000 | 4KB |
这些 memheap 与rtconfig.h中开启的RT_USING_MEMHEAP、RT_USING_MEMHEAP_AS_HEAP、RT_USING_MEMHEAP_AUTO_BINDING配置相配合,允许大块数据(如摄像头图像缓冲)使用 AXI SRAM 等高速内存区域。
系统时钟配置
board.c 中的SystemClock_Config()展示了完整的时钟树:以 HSE 为 PLL 源(PLLM=5, PLLN=192, PLLP=2),将 SYSCLK 提升至 480MHz,同时开启 LSE 供 RTC 使用,并为 USART1/UART4 选择D2PCLK时钟源。该 BSP 的BSP_CLOCK_SYSTEM_FREQ_MHZ在 board.h 中配置为 480。
外设支持情况
本 BSP 目前对外设的支持情况如下:
| 板载外设 | 支持情况 | 备注 |
|---|---|---|
| TF Card | 待支持 | |
| QSPI Flash | 待支持 | W25Q64JV |
| OV2640 Camera | 支持 | |
| OV5640 Camera | 待支持 | |
| 0.96' LCD | 待支持 | 160*80 |
| 1.14' LCD | 待支持 | 240*135 |
| 1.30' LCD | 支持 | 240*240 |
| 1.54' LCD | 待支持 | 240*240 |
| 1.69' LCD | 待支持 | 240*280 |
| 2.00' LCD | 待支持 | 240*320 |
| 片上外设 | 支持情况 | 备注 |
| GPIO | 支持 | |
| UART | 支持 | USART1 |
| SPI | 支持 | |
| RTC | 支持 | |
| USB Device | 待支持 |
已支持外设的源码实现
- SPI LCD(1.30' 240×240,ST7789):驱动位于 drv_lcd_spi.c,lcd_port.h 中定义了
LCD_HEIGHT (240U)、LCD_WIDTH (240U);rtconfig.h中通过BSP_USING_LCD_SPI默认开启。驱动以struct drv_lcd_device封装了双缓冲(front_buf/back_buf)与图形设备接口,提供lcd_clear、lcd_drawpoint、lcd_drawline、lcd_copybuffer等绘图 API(见 drv_lcd_spi.h)。 - OV2640 摄像头:驱动位于 drv_ov2640.c,配合 DCMI 接口采集图像。其头文件 drv_ov2640.h 中声明了丰富的控制接口:
ov2640_set_pixformat()(RGB565/JPEG)、ov2640_set_framesize()、ov2640_set_horizontal_mirror()、ov2640_set_vertical_flip(),以及饱和度/亮度/对比度/特效(负片、黑白等)设置函数;默认输出分辨率 400×300(4:3),并由 DCMI 裁剪为屏幕比例显示。 - 片上 Flash 抽象(FAL):fal_cfg.h 预留了基于 FAL 的分区表——
bootloader(onchip 128K)、filesystem(nor 8MB)、fs_qspi(W25Q64_q 8MB),为后续在 QSPI Flash 上实现文件系统与 bootloader 启动做好了铺垫。
使用说明
使用说明分为快速上手与进阶使用两个章节:
- 快速上手:为刚接触 RT-Thread 的新手准备,遵循简单步骤即可将 RT-Thread 运行在该开发板上并看到实验效果。
- 进阶使用:为需要在 RT-Thread 上使用更多开发板资源的开发者准备,通过 ENV 工具配置 BSP 可开启更多板载资源,实现更多高级功能。
快速上手
本 BSP 为开发者提供 MDK5 和 IAR 工程,并且支持 GCC 开发环境。下面以 MDK5 开发环境为例,介绍如何将系统运行起来。
请注意!!!
在执行编译工作前请先打开 ENV 执行以下指令(该指令用于拉取必要的 HAL 库及 CMSIS 库,否则无法通过编译):
pkgs --update这一步会把rtconfig.h中声明的PKG_USING_STM32H7_HAL_DRIVER、PKG_USING_STM32H7_CMSIS_DRIVER、PKG_USING_CMSIS_CORE等软件包从远端拉取到本地packages目录。若不执行,MDK5/IAR/GCC 均会因为缺失 STM32H7 HAL 头文件而编译失败。
硬件连接
使用数据线连接开发板到 PC。使用 usb 转串口工具连接 PA9(USART1_TX)和 PA10(USART1_RX)。串口引脚映射与board.h中BSP_UART1_RX_BUFSIZE/BSP_UART1_TX_BUFSIZE(默认 256 字节)以及rtconfig.h中RT_CONSOLE_DEVICE_NAME "uart1"的配置一致——即系统控制台默认就挂载在串口 1 上。
编译下载
双击project.uvprojx文件,打开 MDK5 工程,编译并下载程序到开发板。若使用 GCC 环境,可在 ENV 下执行scons完成编译;IAR 用户则打开同目录下的project.eww/project.ewp工程。
运行结果
下载程序成功之后,系统会自动运行,LED 闪烁。用户 LED 的驱动逻辑位于 main.c:通过GET_PIN(C, 13)获取 PC13 引脚,先rt_pin_mode(..., PIN_MODE_OUTPUT)配置为输出,再在while循环中以 500ms 间隔交替rt_pin_write输出高低电平实现闪烁——这也是验证 RT-Thread 已正常启动的最直观信号。
连接开发板对应串口到 PC,在终端工具里打开相应的串口(115200-8-1-N),复位设备后,可以看到 RT-Thread 的输出信息:
\ | / - RT - Thread Operating System / | \ 5.0.0 build Mar 22 2023 00:10:44 2006 - 2022 Copyright by RT-Thread team msh />msh />提示符出现后即进入 RT-Thread 的 MSH 命令行(finsh 组件在rtconfig.h中默认开启),此时已可以在终端中执行help、list_device等命令查看系统状态。
进阶使用
此 BSP 默认只开启了 GPIO 和串口 1 的功能,如果需使用更多高级功能,需要利用 ENV 工具对 BSP 进行配置,步骤如下:
- 在 bsp 下打开 env 工具。
- 输入
menuconfig命令配置工程,配置好之后保存退出。 - 输入
pkgs --update命令更新软件包。 - 输入
scons --target=mdk4/mdk5/iar命令重新生成工程。
menuconfig的菜单结构由 board/Kconfig 定义,其中常用的板级选项包括:
BSP_USING_LCD_SPI:开启 1.30' 240×240 LCD(ST7789),会自动连带选中 GPIO、SPI、SPI4(注:当前不支持 SPI TX DMA);BSP_USING_OV2640:开启 OV2640 摄像头,自动连带选中 DCMI、软件 I2C1(SCL/SDA 默认引脚 24/25),I2C 用于 SCCB 总线配置摄像头寄存器;BSP_USING_UART1下的子项:BSP_UART1_RX_USING_DMA/BSP_UART1_TX_USING_DMA(需先开启RT_SERIAL_USING_DMA)、接收/发送缓冲区大小(范围 64~65535);BSP_USING_QSPI:开启 QSPI 总线(需配合 SFUD 使用 W25Q64);BSP_USING_ONCHIP_RTC:开启片内 RTC;BSP_USING_ON_CHIP_FLASH:开启片内 Flash 设备。
重新生成工程后,新开启的外设驱动会自动以INIT_BOARD_EXPORT/INIT_DEVICE_EXPORT等方式在系统启动阶段完成注册,通过 MSH 的list_device命令即可查看新挂载的设备节点。
本章节更详细的介绍可参考 STM32 系列 BSP 外设驱动使用教程。
注意事项(128KB Flash 容量限制与应对方案)
目前仅测试 V1.1 版本硬件,较老的 V1.0 暂未测试。
默认仅开启 LCD 功能,此时生成的固件大小约为 110k 左右,如果开启其他功能固件超过 128k,可以通过如下方式:
- H750 实际上可以使用片内 2M RAM,但是 128k 之后 ST 不保证可用性,此时可以:
- 在 Keil 中将芯片选为 H743,此时会出现 2MB Flash 的下载算法,选择此下载算法下载程序;
- bsp/stm32/stm32h750-weact-ministm32h7xx 目录下会提供一份 H750 的 Keil 内部 RAM 下载算法,可以采用该下载算法。
- 通过 bootloader 从片外 QSPI Flash 启动——这一路径与本 BSP 中 fal_cfg.h 预置的
bootloader/fs_qspi分区表设计相呼应,可以将应用固件存放在 8MB 的 W25Q64 中运行。
- H750 实际上可以使用片内 2M RAM,但是 128k 之后 ST 不保证可用性,此时可以:
另外,board.c 中预留了ota_app_vtor_reconfig()函数(当前被注释),其将 SCB->VTOR 重定位到0x08020000,正是为 QSPI Flash 启动 / OTA 场景准备的向量表重映射示例,开发者按需取消INIT_BOARD_EXPORT注释即可启用。
调试串口为串口 1,映射说明如下:
PA9 ------> USART1_TX PA10 ------> USART1_RX
联系人信息
维护人:NU-LL。
进一步阅读
- STM32 系列 BSP 外设驱动使用教程
- STM32 系列 BSP 制作教程
- STM32 系列外设驱动添加指南
- 操作系统
- 嵌入式
- 物联网
- 嵌入式OS
- RTOS
【免费下载链接】rt-thread
RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/
相关推荐
LifeOS 如何为 Pulse 编写自定义 check 脚本并注册为定时任务
LifeOS 如何为 Pulse 编写自定义 check 脚本并注册为定时任务 这篇文章面向已经在本机跑起 Pulse(LifeOS 的统一守护进程,macOS
操作系统嵌入式物联网嵌入式OSRTOSRT-Thread HC32L196 核心板 BSP 指南:从快速上手到源码级外设驱动解析
RT Thread HC32L196 核心板 BSP 指南:从快速上手到源码级外设驱动解析 HC32L196 是华大半导体(HDSC)面向低功耗应用推出的 AR
操作系统嵌入式物联网嵌入式OSRTOSES32VF2264 开发板 RT-Thread BSP 快速上手与外设驱动配置指南
ES32VF2264 开发板 RT Thread BSP 快速上手与外设驱动配置指南 ES PDS ES32VF2264 是上海东软载波微电子(EastSoft
操作系统嵌入式物联网嵌入式OSRTOS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考