
RT-Thread VANGOV85XXP-EVAL 板级支持包详解从编译烧写到驱动移植【免费下载链接】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-threadRT-Thread 官方仓库bsp/Vango/v85xxp目录下提供了杭州万高科技 V85XXP 系列芯片评估板 VANGOV85XXP-EVAL 的完整板级支持包BSP支持 UART、GPIO 等外设驱动并集成了 FinSH 命令行与 MSH 组件。本文将围绕该 BSP 的硬件资源、目录结构、编译烧写流程、驱动支持现状与源码实现展开帮助开发者快速在 V85XXP 平台完成 RT-Thread 的部署、验证与二次开发。板级支持包硬件概览VANGOV85XXP-EVAL 评估板VANGOV85XXP-EVAL 是杭州万高科技推出的一款基于 V85XXP 系列的评估板。根据 bsp/Vango/v85xxp/README.md 的说明其板载核心资源如下硬件描述芯片型号V8530PCPUARM Cortex M0主频26M片内 SRAM64K片内 FLASH512K需要注意的是BSP 中实际启用的堆区大小由 bsp/Vango/v85xxp/drivers/board.h 中的V85XX_SRAM_SIZE定义为 32控制即当前工程将片内 SRAM 的前 32KB 用于 RT-Thread 的堆管理堆起始地址HEAP_BEGIN依工具链不同分别取自 MDK 的Image$$RW_IRAM1$$ZI$$Limit、IAR 的CSTACK段末尾或 GCC 的__bss_end堆结束地址HEAP_END为0x20000000 32 * 1024。开发者若需要更大的动态内存可据此调整该宏。该芯片属于 ARM Cortex-M0 内核BSP 的链接脚本与编译参数也严格按 Cortex-M0 配置见下文编译说明系统时钟在 bsp/Vango/v85xxp/drivers/board.c 的SystemClock_Config()中通过 LSPLL 锁相环配置为 26.2144MHzSystemCoreClock 26214400UL。板级支持包目录结构与代码组织bsp/Vango/v85xxp目录采用 RT-Thread BSP 的标准工程布局bsp/Vango/v85xxp/ ├── applications/ # 用户应用main.c ├── drivers/ # 板级驱动board.c、drv_usart.c、drv_gpio.c 等 ├── libraries/ # 芯片固件库CMSIS 与 VangoV85xxP_standard_peripheral ├── Kconfig # 菜单配置入口 ├── SConscript / SConstruct # scons 构建脚本 ├── Target_FLASH.ld / Target_FLASH.sct # GCC 链接脚本 / MDK 分散加载文件 ├── project.uvprojx / template.uvprojx # Keil 工程文件 ├── rtconfig.h # 生成后的配置头文件 └── rtconfig.py # 工具链配置文件其中applications/main.c是默认用户入口演示了 GPIO 点灯将 PC0LED1配置为输出后以 500ms 周期翻转电平逻辑清晰可直接作为外设操作模板drivers目录下的drv_usart.c、drv_gpio.c则是 UART 与 GPIO 的 RT-Thread 驱动适配层统一通过rt_hw_serial_register、rt_device_pin_register等框架接口向内核注册驱动细节将在后文展开。编译环境与构建流程README 说明 VANGOV85XXP-EVAL 板级包支持 MDK4、MDK5、IAR 开发环境和 GCC 编译器。仓库中实际记录并测试的 GCC 版本为gcc version 6.2.1 20161205 (release)即 ARM Embedded GCC 5.4/6.2 时代发布的arm-none-eabi-gcc。工具链的完整定义位于 bsp/Vango/v85xxp/rtconfig.py其要点如下ARCH arm、CPU cortex-m0目标架构为 ARM Cortex-M0编译器通过环境变量RTT_CC或RTT_EXEC_PATH覆盖切换默认 GCC 路径为D:/toolchain/gnu_tools_arm_embedded/5.4_2016q3/binKeil 默认路径C:/Keil_v5IAR 默认路径C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3GCC 编译参数-mcpucortex-m0 -mthumb -ffunction-sections -fdata-sections链接脚本为Target_FLASH.ld构建产物GCC 工具链在编译后通过objcopy生成rtthread.bin并调用arm-none-eabi-size输出镜像大小MDK 工具链则通过fromelf --bin生成二进制BUILD debug时默认开启-O0 -gdwarf-2 -g调试选项。使用 scons 命令行构建的典型流程需先配置RTT_EXEC_PATH指向本机编译器路径# 进入 BSP 目录后执行 scons -j8之后可依据工具链生成rtthread.binGCC/MDK或对应镜像再通过下文方式烧写。烧写与执行供电方式开发板使用USB TypeA 接口或DC-005 连接器提供 5V 电源二者择一即可。程序下载下载程序到开发板需要JLink调试器或万高的SD612 工具。使用 JLink 时可直接把编译生成的rtthread.bin通过 J-Flash / J-Link Commander 烧写到片内 FLASH512K地址 0x00000000 起始处。串口连接串口连接有两种方式使用串口线连接到COM1UART0使用 USB 转 TTL 模块连接 **PA9MCU TX**与PA10MCU RX交叉相连后共地。串口参数需要与驱动配置一致BSP 的默认串口配置来自 RT-Thread 框架的RT_SERIAL_CONFIG_DEFAULT定义于 components/drivers/include/drivers/dev_serial.h即115200-8-N-1波特率 115200、8 数据位、无校验、1 停止位。开发者使用任意串口终端如 MobaXterm、minicom打开对应 COM 口即可观察输出。运行结果验证如果编译与烧写无误复位设备后会在串口上看到 RT-Thread 的启动 logo 信息\ | / - RT - Thread Operating System / | \ 4.0.3 build Jan 4 2021 2006 - 2021 Copyright by rt-thread team msh /说明几点该 logo 由 FinSH 组件输出末尾的msh /表示 MSHModule Shell命令行已就绪可直接输入help查看支持的内建命令版本号显示4.0.3与 bsp/Vango/v85xxp/rtconfig.h 中的RT_VER_NUM 0x50300对应串口控制台设备名为uartRT_CONSOLE_DEVICE_NAME uartBSP 默认在 Kconfig 中启用BSP_USING_UART2并通过INIT_BOARD_EXPORT在板级初始化阶段完成串口驱动注册随后rt_console_set_device(uart)将控制台绑定到该串口设备见 bsp/Vango/v85xxp/drivers/board.c。驱动支持情况及移植计划README 明确列出了该 BSP 当前各驱动的支持状态这是评估板移植进度的权威依据驱动支持情况备注UART支持UART0~5GPIO支持GPIOA~FADC未支持ADC0~7CLOCK_TIMER未支持TIMER0~3RTC未支持RTCWDT未支持Free watchdog timerIIC未支持I2C0SPI未支持SPI0~1LCD未支持SDRAM未支持SPI FLASH未支持从仓库源码看这一状态与 bsp/Vango/v85xxp/Kconfig 的菜单结构相互印证Kconfig 中已为 UARTUART0~5、ADCADC0、CLOCK_TIMERTIMER0~3、WDT、RTC 预留了开关选项其中只有 UART 系列默认使能BSP_USING_UART2默认y其余n其余外设选项默认关闭对应驱动代码尚未移植完成。也就是说ADC、定时器、看门狗等驱动的 Kconfig 骨架已经就位开发者后续可参考 UART/GPIO 的适配方式逐步补齐实现。IO 在板级支持包中的映射情况板级包对板载 LED 与按键的引脚映射定义如下IO号板级包中的定义PC0LED1PC2LED2PE0LED3PE1LED4PA0KEY1PC13KEY2PB14KEY3这套映射在applications/main.c中已有直接应用#define LED1 GET_PIN(C, 0)即采用GET_PIN(port, pin)宏将 PC0 编码为引脚编号配合rt_pin_mode与rt_pin_write完成点灯控制。GPIO 驱动的底层实现位于 bsp/Vango/v85xxp/drivers/drv_gpio.c其关键设计包括通过条件编译按芯片支持的端口数量GPIOA~GPIOF确定PIN_V85XXPPORT_MAX最大支持 6 个端口中断映射表pin_irq_map将各引脚GPIO_Pin_0~GPIO_Pin_15统一映射到PMU_IRQn即 V85XXP 的引脚外部中断统一由 PMU 中断服务承担驱动内部维护了 16 组pin_irq_hdr_tab回调槽位供用户注册RT_PIN_IRQ_MODE中断回调最终以标准struct rt_pin_ops接口向 RT-Thread PIN 设备框架注册用户程序只需使用通用的rt_pin_*API 即可操作任意板载引脚无需关心寄存器细节。源码级解析时钟、UART 驱动与配置项系统时钟配置V85XXP 的系统时钟在 bsp/Vango/v85xxp/drivers/board.c 的SystemClock_Config()中完成AHB 时钟源选择CLK_AHBSEL_LSPLLPLL 输入来自外部晶振CLK_PLLLSRC_XTALLPLL 输出配置为 26.2144MHzHCLK 不分频、PCLK 二分频最终SystemCoreClock固定为 26214400。SysTick 中断优先级设为 0由SysTick_Handler调用rt_tick_increase()驱动 RT-Thread 内核时基系统节拍由rtconfig.h中的RT_TICK_PER_SECOND 1000决定即 1ms 一个 tick。此外该文件还实现了rt_hw_us_delay()微秒级延时基于 SysTick 计数值递减换算实现。UART 驱动实现要点bsp/Vango/v85xxp/drivers/drv_usart.c 是完整的串口驱动适配遵循 RT-Thread 串口设备框架的rt_uart_ops四件套V85xxP_configure将框架的serial_configure参数波特率、奇偶校验等翻译为芯片库的UART_InitType并调用UART_Init、UART_Cmd完成寄存器配置V85xxP_putc/V85xxP_getc发送时轮询UART_FLAG_TXDONE标志接收时检查UART_FLAG_RXFULL后读取数据V85xxP_control通过RT_DEVICE_CTRL_SET_INT/RT_DEVICE_CTRL_CLR_INT控制接收中断的使能与关闭每个已启用的 UART 均注册独立的UARTx_IRQHandler在 ISR 中调用公共的uart_isr()经rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND)把接收事件上报给串口框架最终由rt_hw_serial_register带RT_DEVICE_FLAG_INT_RX中断接收标志注册为 RT-Thread 设备。驱动初始化函数V85xxP_hw_usart_init通过INIT_BOARD_EXPORT宏在板级初始化阶段自动执行逐一为uarts[]表中的每个串口实例绑定操作集与默认配置并注册设备设备名为uart0~uart5。需要特别注意的是rtconfig.h中RT_CONSOLE_DEVICE_NAME定义为uart而驱动注册名是uart0~uart5二者匹配依赖 RT-Thread 串口框架的设备别名机制console 设备uart实际指向默认串口实例这是 V85XXP BSP 控制台输出的关键衔接点。关键配置项速览bsp/Vango/v85xxp/rtconfig.h由 menuconfig 生成集中了本 BSP 的运行时配置常见可调项包括内核RT_TICK_PER_SECOND 1000、RT_THREAD_PRIORITY_MAX 32、RT_NAME_MAX 12内存RT_USING_SMALL_MEM小内存管理算法作为默认堆、IDLE_THREAD_STACK_SIZE 256、RT_MAIN_THREAD_STACK_SIZE 2048组件RT_USING_MSH/FINSH_USING_MSHFinSH 与 MSH 命令行、FINSH_THREAD_STACK_SIZE 4096、FINSH_HISTORY_LINES 5、FINSH_CMD_SIZE 80文件系统RT_USING_DFS虚拟文件系统框架DFS_FD_MAX 16设备驱动RT_USING_SERIAL串口、RT_SERIAL_RB_BUFSZ 64接收环形缓冲、RT_USING_PIN引脚设备片上外设SOC_SERIES_V85XXP、SOC_V85XXP以及BSP_USING_UART、BSP_USING_UART2。这些宏均可在 BSP 目录执行menuconfig后通过 bsp/Vango/v85xxp/Kconfig 的菜单树重新生成例如在 On-chip Peripheral Drivers 菜单下可开关 UART0~UART5、ADC、CLOCK_TIMER0~3、WDT、RTC 等选项。二次开发建议结合上述源码结构针对 VANGOV85XXP-EVAL 的后续开发可以遵循以下路径验证基础外设先按上文完成编译烧写确认串口输出msh /提示符再通过msh内建命令如list_device、list_thread观察设备与线程注册情况控制板载外设以applications/main.c的点灯代码为模板配合 IO 映射表 中的 LED/KEY 引脚练习rt_pin_*API 与rt_pin_attach_irq中断回调扩展串口若需启用更多 UART在menuconfig中勾选对应BSP_USING_UARTx并重新生成rtconfig.h即可驱动框架会自动注册对应设备补齐未支持驱动ADC、TIMER、RTC、WDT 等外设的 Kconfig 开关已经预留可参照drv_usart.c的框架操作集 芯片库调用 INIT_BOARD_EXPORT 注册三步范式结合libraries/VangoV85xxP_standard_peripheral芯片固件库逐一实现。需要说明的是本文涉及的驱动支持状态、GCC 版本与启动 logo 均以当前仓库 bsp/Vango/v85xxp/README.md 与对应源码为准若使用更新的工具链版本编译参数如链接脚本、-mcpu选项可能需按 rtconfig.py 中的格式做相应调整。【免费下载链接】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),仅供参考