
操作系统嵌入式物联网嵌入式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 开源仓库中 bsp/hpmicro/hpm6300evk/README_zh.md 的中文技术指南扩展版面向希望在一款基于 RISC-V 内核、面向电机控制场景的 HPM6300EVK 开发板上快速运行 RT-Thread 的开发者。通过本文你将完整掌握该 BSP 的板级资源与外设支持情况、基于 RT-Thread ENV 的编译构建流程、借助 OpenOCD 完成固件下载与 GDB 调试的实战方法并了解 BSP 底层的时钟、控制台、LED 驱动与调试脚本实现。板级资源介绍HPM6300EVK 是由先楫半导体HPMicro推出的一款基于 RISC-V 内核的开发板片上资源与板上资源均十分丰富可广泛用于电机控制等应用场景。开发板外观如下图所示从仓库中的 BSP 工程配置rtconfig.py可以看到该板卡的芯片信息CPU 架构为risc-vARCHrisc-v芯片型号为 HPM6360CHIP_NAMEHPM6360归属于 HPM6300 系列SOC_FAMILYHPM6300。开发板主频等关键参数在 board/board.h 中定义BOARD_CPU_FREQ为 648 MHz板载 32 MB SDRAM地址0x4000000016-bit 位宽与 16 MB QSPI NOR Flash地址0x80000000。板载外设支持情况本 BSP 目前对外设的支持情况如下表所示内容继承自原文档板载外设支持情况备注USB√QSPI Flash√以太网√由 RT-Thread Industry IO 扩展板提供支持GPIO√SPI√I2C√SDIO√RTC√PWM√板载调试器√ft2232这些外设支持均可以在 board/Kconfig 的 Hardware Drivers Config → On-chip Peripheral Drivers 菜单中按需开关下文「menuconfig 外设配置详解」一节会展开说明。使用说明快速开始本 BSP 支持通过scons命令完成编译开始之前需要先准备好开发所需的环境。准备环境按照原文档的四步流程依次准备步骤 1准备 RT-Thread ENV 工具。ENV 是 RT-Thread 提供的命令行构建环境其中集成了menuconfig、scons等工具链。步骤 2准备 RISC-V 32 位 GNU 工具链toolchain。下载 riscv32-gnu-toolchain版本 2022.04.12并解压到指定目录例如C:\DevTools\riscv32-gnu-toolchain。步骤 3设置环境变量RTT_RISCV_TOOLCHAIN。将其指向工具链的 bin 目录例如C:\DevTools\riscv32-gnu-toolchain\bin。该变量正是 rtconfig.py 中解析交叉编译器路径的依据当检测到RTT_RISCV_TOOLCHAIN时EXEC_PATH直接取其值否则回退到RTT_EXEC_PATH或默认路径/opt/riscv-gnu-gcc/bin。步骤 4准备 OpenOCDhpmicro 版本。下载 rtt-debugger-support-packagev0.4.0并解压到指定目录例如C:\DevTools\openocd-hpmicro再将OPENOCD_HPMICRO环境变量设置为OPENOCD_HPMICRO_DIR\bin例如C:\DevTools\openocd-hpmicro\bin。工具链编译前缀为riscv32-unknown-elf-见 rtconfig.py对应 GDB 调试器为riscv32-unknown-elf-gdb.exe后续调试步骤会用到。配置和构建工程通过 RT-Thread ENV 命令行切换到当前 BSP 所在目录bsp/hpmicro/hpm6300evk后用户可以通过menuconfig命令配置 RT-Thread BSP 的功能通过scons -jN命令完成构建其中N最大值可以指定为 CPU 拥有的物理内核数通过scons -c命令清除构建产物。构建目标在 rtconfig.py 中由BUILD flash_debug指定默认生成 flash 调试版本固件-O0优化、带-gdwarf-2调试信息、链接 flash_rtt.ld 链接脚本构建完成后会自动调用objcopy生成rtthread.bin。若需要其他运行形态可将BUILD调整为flash_release、ram_debug或ram_release对应的链接脚本位于 board/linker_scripts/gcc/ 目录如ram_rtt.ld、flash_sdram_rtt.ld等。硬件连接将 BOOT 引脚拨到2b00通过 TYPE-C 线将板上的PWR_DEBUG接口连接到电脑。PWR_DEBUG接口同时承担供电、板载 ft2232 调试器与串口终端三合一功能因此烧录、调试和查看日志都只需这一根线。下载和调试下载固件在 ENV 命令行中执行如下命令注意其中-f依次加载了探针、SoC、板卡三份 OpenOCD 配置脚本并完成init → halt → 擦除并写入 flash → reset → shutdown的完整烧录动作%OPENOCD_HPMICRO%\openocd.exe -f boards\debug_scripts\probes\ft2232.cfg -f boards\debug_scripts\soc\hpm6360.cfg -f boards\debug_scripts\boards\hpm6300evk.cfg -c init; halt; flash write_image erase rtthread.elf; reset; shutdownGDB 调试分两步进行。先通过 OpenOCD 连接开发板不附加-c烧录指令保持 OpenOCD 进程运行以监听 GDB 连接%OPENOCD_HPMICRO%\openocd.exe -f boards\debug_scripts\probes\ft2232.cfg -f boards\debug_scripts\soc\hpm6360.cfg -f boards\debug_scripts\boards\hpm6300evk.cfg再通过 GDB 启动调试器%RTT_EXEC_PATH%\riscv32-unknown-elf-gdb.exe rtthread.elf在 GDB Shell 中使用如下命令加载固件并运行load c关于上述 OpenOCD 配置文件可以在仓库 board/debug_scripts/openocd/ 下找到probes/ft2232.cfg板载 ft2232 调试探针配置此外还提供 cmsis_dap、jlink、ft232、nds_aice_micro 等可选探针位于同目录下soc/hpm6360.cfgHPM6360 芯片级配置boards/hpm6300evk.cfg板卡级配置内含 Flash 驱动声明flash bank xpi0 hpm_xpi 0x80000000 0x1000000 ...对应 16 MB XPI Flash以及reset-init事件中的init_clock使能时钟与init_sdram初始化 32 MB SDRAM两个 TCL 过程并在gdb-attach事件中自动执行reset halt以配合 GDB 调试。运行结果固件成功下载后程序会自动运行板载 LED 灯会周期性闪烁。配置好串口终端串口配置为 115200, 8-N-1按复位键后串口终端会打印如下 RT-Thread 启动日志\ | / - RT - Thread Operating System / | \ 5.0.1 build Aug 16 2023 18:18:18 2006 - 2023 Copyright by RT-Thread team串口细节说明控制台默认使用 UART0调试串口波特率 115200这可以从 rtconfig.h 中的RT_CONSOLE_DEVICE_NAME uart0与 board/board.h 中的BOARD_CONSOLE_UART_BAUDRATE (115200UL)得到印证。BSP 源码级原理分析为了让读者理解为什么按上述步骤就能跑起来本节从仓库源码出发梳理 BSP 的启动与初始化链路。系统启动与板级初始化入口入口位于 board/rtt_board.c 的rt_hw_board_init()先调用rtt_board_init()完成底层初始化再调用rt_components_board_init()进入 RT-Thread 组件初始化流程。rtt_board_init()内部依次完成board_init_clock()配置系统时钟board_init_console()初始化调试控制台board_init_pmp()配置 RISC-V PMP/PMA含非缓存内存区域dma_mgr_init()初始化 DMA 管理器rt_system_heap_init()初始化 RT-Thread 堆内存os_tick_config()配置系统时钟节拍rt_hw_uart_init()初始化串口驱动先于其他驱动因为后续驱动初始化可能需要rt_kprintf打印日志rt_console_set_device(RT_CONSOLE_DEVICE_NAME)设置控制台设备。时钟配置board/board.c 的board_init_clock()将 CPU 配置为 648 MHz、AXI/AHB 为 162 MHz并将 mchtmr 定时器时钟配置为 24 MHz系统节拍由 board/rtt_board.c 中的mchtmr_isr()中断服务例程驱动通过rt_tick_increase()为内核提供RT_TICK_PER_SECOND默认 1000见 rtconfig.h节拍。板载 LED 闪烁 Demoapplications/main.c 演示了最小应用写法main()中创建名为led_th的线程线程函数通过 RT-Thread PIN 设备接口以 500 ms 间隔翻转板载 LEDAPP_LED0_PIN_NUM即 board/board.h 中定义的 GPIOA7APP_LED_ON/APP_LED_OFF对应低/高电平。这就是运行结果一节中 LED 周期性闪烁的现象来源同时它也是rt_pin_mode/rt_pin_write两个 PIN 设备 API 的标准用法范例。menuconfig 外设配置详解在 board/Kconfig 的 On-chip Peripheral Drivers 菜单下可以按需开关下列外设驱动均对应 RT-Thread 设备驱动框架开启后自动select对应的 RT-Thread 组件配置项说明默认值BSP_USING_GPIOGPIO 驱动联动RT_USING_PIN可选 GPIO 中断优先级范围 1~7nBSP_USING_UARTUART 驱动联动RT_USING_SERIAL包含 UART0~UART7每个可独立开关 RX/TX DMA、设置缓冲区大小RX 范围 64~65535与中断优先级yUART0/UART2 默认开启BSP_USING_SPISPI 驱动SPI0~SPI3可配置 DMA、CS 类型软件 CS / 硬件 CS、IO 模式单线/双线/四线nBSP_USING_RTCRTC 驱动联动RT_USING_RTCnBSP_USING_ETH以太网驱动联动RT_USING_ETH、RT_USING_PHYETH0 使用 RTL8201 PHYnBSP_USING_SDXCSD 卡驱动联动RT_USING_SDIO支持中断驱动模式、总线宽度1-bit/4-bit、缓冲类型与容量选择nBSP_USING_GPTMRGPTMR 定时器驱动GPTMR0~GPTMR3联动RT_USING_CLOCK_TIMEnBSP_USING_I2CI2C 驱动I2C0~I2C3可配置 DMA 与中断优先级nBSP_USING_FEMC外部 DRAMSDRAM控制器默认开启另有INIT_EXT_RAM_FOR_DATA选项控制启动时是否初始化外部 RAMyBSP_USING_XPI_FLASHXPI Flash 驱动联动RT_USING_FAL分区表框架nBSP_USING_PWMPWM 驱动联动RT_USING_PWMnBSP_USING_USBUSB 驱动可选 USB Device / USB Host均联动RT_USING_CACHEnBSP_USING_WDG看门狗驱动WDG0/WDG1联动RT_USING_WDTnBSP_USING_CANCAN 驱动CAN0/CAN1联动RT_USING_CANnBSP_USING_ADCADC 驱动ADC16含 ADC0/ADC1/ADC2联动RT_USING_ADCn以当前仓库默认配置rtconfig.h为例已开启 GPIOBSP_USING_GPIO中断优先级 1、UARTBSP_USING_UART0RX 缓冲 128 字节、TX 缓冲 0、中断优先级 1以及 RT-Thread 的 MSH 命令行组件RT_USING_MSH、FINSH_USING_MSH可直接在串口终端中使用 finsh/msh 命令交互。默认配置还启用了RT_USING_CPU_USAGE_TRACERCPU 占用率统计采样间隔 200 ms与软件定时器RT_USING_TIMER_SOFT等内核特性。参考链接本 BSP 说明文档README_zh.md中文、README.md英文BSP 工程配置入口Kconfig、rtconfig.h、rtconfig.py板级外设配置board/Kconfig板级驱动实现board/board.c、board/rtt_board.c、board/pinmux.c板级参数定义board/board.h启动代码startup/链接脚本board/linker_scripts/gcc/调试脚本board/debug_scripts/openocd/应用示例applications/main.cRT-Thread 内核文档documentation/INDEX.md赞分享操作系统嵌入式物联网嵌入式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 在 HPM6200EVK 上的实践先楫 RISC-V 电机控制开发板 BSP 快速上手指南RT Thread 在 HPM6200EVK 上的实践先楫 RISC V 电机控制开发板 BSP 快速上手指南 本篇技术指南以 RT Thread 官方仓库中操作系统嵌入式物联网嵌入式OSRTOSRT-Thread HPM6750EVKMINI BSP 快速上手先楫双核 RISC-V 开发板的构建、下载与调试实战RT Thread HPM6750EVKMINI BSP 快速上手先楫双核 RISC V 开发板的构建、下载与调试实战 本篇技术指南以 RT Thread 仓操作系统嵌入式物联网嵌入式OSRTOSRT-Thread HPM6E00EVK BSP 上手指南RISC-V 开发板环境搭建、构建、烧录与调试RT Thread HPM6E00EVK BSP 上手指南RISC V 开发板环境搭建、构建、烧录与调试 本篇指南以 RT Thread 仓库中 bsp/hp操作系统嵌入式物联网嵌入式OSRTOS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考