操作系统嵌入式物联网嵌入式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/raspberry-pico/RP2350 的官方 BSP 文档为核心完整讲解如何在 Linux 环境下为树莓派 RP2350 芯片编译 RT-Thread 固件、通过 UF2 文件完成烧写并结合仓库源码剖析其时钟、系统节拍、堆内存与串口控制台的初始化流程。读完本文你将能够在基于 RP2350 的 Pico 开发板上快速跑起 RT-Thread 与 msh 命令行并在此基础上按需裁剪外设驱动。RP2350 与 BSP 概览Raspberry RP2350 是树莓派推出的高性能微控制器芯片该 BSP 面向搭载此芯片的开发板。根据 README 的产品介绍其主要特性如下双核双架构设计可选择 Arm Cortex-M33 或 Hazard3 RISC-V 内核兼顾生态兼容与架构灵活性150MHz 主频520KB RAM、2MB Flash算力与存储资源足以承载 RT-Thread 完整内核、Shell 组件及多种外设驱动高度集成、超小尺寸板卡尺寸仅 25 × 20.5mm集成锂电池充电管理与电池电压监测并引出 11 个 IO低功耗休眠功耗仅 25uA文档标称值适合电池供电的物联网场景支持 C/C 与 MicroPython编程单面布局、半孔工艺可直接用于贴片量产。该 BSP 位于仓库bsp/raspberry-pico/RP2350目录与同仓库的 RP2040 BSP 共用bsp/raspberry-pico/libraries/Drivers下的通用驱动实现UART、GPIO、SPI、I2C、PWM、ADC、RTC、WDT 等并额外引入raspberrypi-pico-rp2350-sdk软件包作为底层 SDK。BSP 工程结构与关键文件编译前先了解 BSP 的目录组织便于后续按图索骥路径作用applications/main.c应用入口默认实现 LED 闪烁与 Hello, RT-Thread! 打印board/board.c板级初始化堆、系统时钟、SysTick、串口与控制台board/board.h定义 SRAM 大小与堆区边界HEAP_BEGIN / HEAP_ENDboard/Kconfig外设驱动开关与引脚复用的菜单配置KconfigBSP 顶层配置入口声明 SOC_RP2350 并关联 SDK 包SConstructscons 构建入口自动进入 SDK 包目录完成子构建SConscript递归收集子目录中的 SConscript 参与构建rtconfig.h编译期配置内核、组件、外设、引脚号rtconfig.py工具链与编译/链接参数包含 UF2 生成步骤link.ld链接脚本tools/picotool官方 picotool 工具用于 elf → uf2 转换及命令行烧写编译环境准备Linux文档明确注明当前 BSP 需要在 Linux 环境下编译测试环境为 Ubuntu 21并建议 gcc 版本不低于 6.x。构建依赖 RT-Thread 的 menuconfig 配置系统与在线软件包管理器因此需预先安装 scons、gcc、arm-none-eabi 工具链等基础环境。Step 1下载 SDK 软件包在 BSP 目录bsp/raspberry-pico/RP2350下执行menuconfig pkgs --updatemenuconfig打开图形化配置界面可在此调整内核选项与各外设驱动pkgs --update会根据配置自动下载raspberrypi-pico-rp2350-sdk软件包。该依赖关系在 Kconfig 中已声明config SOC_RP2350会自动select PKG_USING_RASPBERRYPI_PICO_RP2350_SDK并在 rtconfig.h 中体现为PKG_USING_RASPBERRYPI_PICO_RP2350_SDK与..._LATEST_VERSION两个宏。SDK 包下载后落在packages目录构建时由 SConstruct 通过find_package_path定位并进入该目录执行子构建。编译固件Step 2使用 scons 编译scons -c sconsscons -c清理上一次的构建产物避免残留对象文件造成链接错误scons执行增量编译并链接。工具链在 rtconfig.py 中定义架构为arm、CPU 为cortex-m33交叉编译器前缀为arm-none-eabi-并带有-marcharmv8-m.mainfpdsp -mcpucortex-m33 -mthumb -mfloat-abisoftfp -mfpufpv5-sp-d16 -mcmse等针对 Cortex-M33 安全扩展TrustZone的编译选项。默认BUILD debug采用-O3 -gdwarf-2 -g优化与调试信息级别。Step 3生成 UF2 烧写文件编译结束后构建脚本会自动生成UF2 烧写文件。在 rtconfig.py 的POST_ACTION中可以看到完整流程POST_ACTION OBJCPY -O binary $TARGET rtthread.bin\n SIZE $TARGET \n ... POST_ACTION {0} uf2 convert --quiet rtthread-pico.elf rtthread-pico.uf2 --family rp2350-arm-s --abs-block.format(elf2uf2_path)即先用arm-none-eabi-objcopy将 ELF 转换为rtthread.bin并打印 size 信息再调用 BSP 自带的tools/picotool执行uf2 convert将rtthread-pico.elf转换为rtthread-pico.uf2。注意这里指定的 family 为rp2350-arm-sARM Secure 变体与 rtconfig.h 中ARCH_ARM_CORTEX_SECURErtconfig.h的配置相互呼应即默认编译 ARM 安全态镜像。最终产物为rtthread-pico.uf2文件位于 BSP 根目录。烧写方式两种方式一U 盘拖拽烧写推荐按住开发板上的boot 按键再短按重启按键进入 U 盘烧写模式将 RP2350 板通过 USB 插入电脑系统会识别出一个U 盘将编译生成的rtthread-pico.uf2文件复制到该 U 盘根目录固件写入完成后开发板自动重启运行无需额外操作。方式二picotool 命令行烧写进入 boot 模式后也可以使用 BSP 附带的 picotool 工具执行烧写与重启picotool load rtthread-pico.uf2 picotool rebootpicotool load将 UF2 镜像加载到板载 Flashpicotool reboot触发开发板重启进入用户固件。运行结果烧写并重启后通过串口终端对应 UART0默认波特率取决于 SDK 配置可看到如下输出\ | / - RT - Thread Operating System / | \ 4.0.3 build Jan 28 2021 2006 - 2021 Copyright by rt-thread team Hello, RT-Thread! msh 其中RT-Thread 版本横幅与版权信息由内核打印Hello, RT-Thread!来自 applications/main.c 的rt_kprintfmsh 表明 FinSH 命令行组件已启动可以输入 RT-Thread 内置命令进行交互调试。说明横幅中显示的版本号 4.0.3 build Jan 28 2021 为 BSP 文档保留的示例输出实际构建时版本信息以你当前仓库RT_VER_NUMrtconfig.h 中为 0x50300及编译日期为准。板级初始化源码解析理解 BSP 的启动脉络有助于后续自行裁剪。板级初始化集中在 board/board.c 的rt_hw_board_init()void rt_hw_board_init() { #ifdef RT_USING_HEAP rt_system_heap_init(HEAP_BEGIN, HEAP_END); #endif set_sys_clock_khz(PLL_SYS_KHZ, true); alarm_pool_init_default(); systick_config(clock_get_hz(clk_sys) / RT_TICK_PER_SECOND); #ifdef RT_USING_COMPONENTS_INIT rt_components_board_init(); #endif #ifdef RT_USING_SERIAL stdio_init_all(); rt_hw_uart_init(); #endif #ifdef RT_USING_CONSOLE rt_console_set_device(RT_CONSOLE_DEVICE_NAME); #endif }关键点逐项说明堆初始化rt_system_heap_init(HEAP_BEGIN, HEAP_END)将堆区交由内核动态内存管理。堆边界定义在 board/board.hPICO_SRAM_SIZE为 520KBPICO_SRAM_END为0x20000000 520 * 1024HEAP_BEGIN为链接脚本中的栈符号_sstack即从栈顶到 SRAM 末尾的整段空间系统时钟set_sys_clock_khz(PLL_SYS_KHZ, true)将系统主频配置为150 * 1000kHz150MHzPLL_SYS_KHZ定义于 board.c系统节拍systick_config(clock_get_hz(clk_sys) / RT_TICK_PER_SECOND)用 Cortex-M33 的 SysTick 产生 RT-Thread 时基RT_TICK_PER_SECOND默认 100rtconfig.h即 10ms 一个 tick。节拍中断服务函数SysTick_Handlerboard.c通过rt_interrupt_enter()/rt_tick_increase()/rt_interrupt_leave()驱动内核调度器串口与控制台stdio_init_all()初始化 Pico SDK 标准 IOrt_hw_uart_init()注册 UART 设备驱动最后rt_console_set_device(RT_CONSOLE_DEVICE_NAME)将控制台设备设为uart0rtconfig.h。默认应用LED 闪烁示例applications/main.c 是默认的用户主函数演示了 RT-Thread PIN 设备 API 的基本用法#define LED_PIN 25 int main() { rt_kprintf(Hello, RT-Thread!\n); rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT); while (1) { rt_pin_write(LED_PIN, 1); rt_thread_mdelay(1000); rt_pin_write(LED_PIN, 0); rt_thread_mdelay(1000); } return 0; }rt_pin_mode/rt_pin_write来自 RT-Thread 统一 PIN 设备驱动框架由BSP_USING_PINrtconfig.h使能板载 LED 接在 GP25与 RP2040 BSP 一致每 1 秒翻转一次电平形成可观察的闪烁rt_thread_mdelay让出 CPU体现 RT-Thread 的线程化时间管理。外设支持与配置README 给出当前 BSP 支持的外设总览DriveSupportRemarkUARTSupportUART0/1GPIOSupport0-29默认rtconfig.h中已使能 UART0TXGP0、RXGP1见 rtconfig.h与 GPIO。在 board/Kconfig 中还可以开启更丰富的外设均通过menuconfig图形界面勾选后重新scons生效UART0 / UART1支持多个引脚复用选择。UART0 的 TX 可选 GP0/12/16RX 可选 GP1/13/17UART1 的 TX 可选 GP4/8RX 可选 GP5/9board/KconfigSPI0 / SPI1MOSI、MISO、SCK、CS 均提供多组引脚选择硬件 I2C0 / I2C1SCL/SDA 提供多组引脚映射PWM0 ~ PWM7覆盖全部 8 组 PWM sliceA/B 通道引脚可选ADC0/1/2对应 GP26/27/28WDT、RTC、片上 Flash配合 FAL等软件 I2C / 软件 SPIswi2c1、swspi0、swspi1适合引脚受限场景。此外板级配置还预留了两类生态集成选项BSP_USING_ARDUINOboard/Kconfig启用 RTduino 兼容层自动联动 UART1、GPIO、ADC、PWM、I2C、SPI 等驱动并默认将 SPI/I2C 引脚切换为 Arduino 布局BSP_USING_LVGLboard/Kconfig为 LCD 屏接 LVGL 图形库可附带官方 LVGL demo。对应的驱动实现位于 bsp/raspberry-pico/libraries/Driversdrv_uart.c、drv_gpio.c、drv_spi.c、drv_i2c.c、drv_pwm.c、drv_adc.c、drv_rtc.c、drv_wdt.c、drv_flash.c、drv_timer.cRP2040 与 RP2350 两个 BSP 共享这套驱动层。总结通过本文你可以完整走通 RT-Thread 在 Raspberry RP2350 上的开发闭环menuconfigpkgs --update拉取 SDK →scons编译生成rtthread-pico.uf2→ 进入 U 盘模式拖拽烧写或picotool命令行烧写 → 串口看到 RT-Thread 启动横幅与msh命令行。同时board.c 的初始化顺序与 board/Kconfig 的外设裁剪方式也为二次开发与驱动移植提供了清晰的参照。赞分享操作系统嵌入式物联网嵌入式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 Raspberry Pi 3-64 BSP 移植指南环境搭建、镜像烧写与驱动支持详解RT Thread Raspberry Pi 3 64 BSP 移植指南环境搭建、镜像烧写与驱动支持详解 Raspberry Pi 3树莓派 3是价格亲民操作系统嵌入式物联网嵌入式OSRTOSRT-Thread 在 MM32F103RBMM32 MiniBoard上的移植实战BSP 上手、编译烧写与源码解析RT Thread 在 MM32F103RBMM32 MiniBoard上的移植实战BSP 上手、编译烧写与源码解析 本篇技术指南以 RT Thread操作系统嵌入式物联网嵌入式OSRTOSRT-Thread Smart 在 Allwinner D1RISC-V64上的移植指南环境搭建、编译与烧录验证RT Thread Smart 在 Allwinner D1RISC V64上的移植指南环境搭建、编译与烧录验证 全志 D1d1 allwinner n操作系统嵌入式物联网嵌入式OSRTOS上一篇CANN hcomm通道获取API下一篇5分钟上手zip库从安装到创建第一个ZIP文件的快速教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Hunk 的 Jujutsu 后端解析:@hunk/jj 静态捆绑 VCS Provider 的设计与实现 开发工具代码评审CLIAI 应用 【免费下载链接】hunk Review-first terminal diff viewer for agentic coders 项目地址: https://gitcode.com/gh_mirrors/hu/hunk 点击查看 免费下载 Jujutsu(jj)是一款面向 Agent 工作流的现代版本控制系统&a… · 2026/9/25 2:25:10
IronClaw WebUI 设计系统完成清单(CHECKLIST)深度解析:五阶段治理路线图与验收标准 人工智能AI 应用交互助手AI Agent 【免费下载链接】ironclaw IronClaw is an Agent OS focused on privacy, security and extensibility 项目地址: https://gitcode.com/gh_mirrors/iro/ironclaw 点击查看 免费下载 本文基于 IronClaw 仓库 docs/internal/reborn/… · 2026/9/25 2:25:10
gsd-core 家族路由器 `--raw` 标量输出修复解析:SDK 分发路径与 CJS 路径的语义对齐 【免费下载链接】gsd-core Git. Ship. Done - Core 项目地址: https://gitcode.com/gh_mirrors/ge/gsd-core 点击查看 免费下载 本篇技术文章基于 .changeset/archived/fix-3631-sdk-raw-flag-routers.md 这一变更记录,深入剖析 gsd-core 中家族路由器&… · 2026/9/25 2:25:10
TypeDoc 插件系统实战指南:从 --plugin 加载到自定义插件开发 开发工具文档 【免费下载链接】typedoc Documentation generator for TypeScript projects. 项目地址: https://gitcode.com/gh_mirrors/ty/typedoc 点击查看 免费下载 TypeDoc 的插件机制是其生态扩展的核心:通过 --plugin 命令行参数或 plugin 配置项… · 2026/9/25 3:03:58
LPC54114-Lite 开发板 RT-Thread BSP 使用指南:双核语音开发板的快速上手与进阶驱动开发 操作系统嵌入式物联网嵌入式OSRTOS 【免费下载链接】rt-thread RT-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 点击查看 免费下载 导读
本… · 2026/9/25 3:03:58
使用 OpenTelemetry 完整接入 Python 可观测性:highlight.io 全栈监控实战指南 可观测性后端 【免费下载链接】highlight highlight.io: The open source, full-stack monitoring platform. Error monitoring, session replay, logging, distributed tracing, and more. 项目地址: https://gitcode.com/gh_mirrors/hi/highlight 点击查看 免费下… · 2026/9/25 3:03:58
WorkBuddy 12个Skill实战:让AI自动化处理文件与数据 前阵子把 WorkBuddy 的 12 个官方 Skill 挨个试了一遍,从安装到把一堆乱糟糟的表格变成可视化报告,前后折腾了两个晚上。说实话,一开始我以为这又是个套壳聊天框,真用下来才发现,Skill 机制的作用比想象中大得多——它… · 2026/9/25 3:03:52
Umi-OCR 离线 OCR:截图、扫描件、PDF 转文字,解压即用免费开源 Umi-OCR 离线 OCR:截图、扫描件、PDF 转文字,解压即用免费开源 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成… · 2026/9/25 3:03:52
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37