新闻详情

新闻详情

首页 / 资讯中心 / 详情

RT-Thread 树莓派 4B(Raspberry Pi 4)64 位 BSP 移植实战:编译、u-boot 网络加载与驱动支持解析

发布时间:2026/9/25 7:21:46来源:尧图网络
RT-Thread 树莓派 4B(Raspberry Pi 4)64 位 BSP 移植实战:编译、u-boot 网络加载与驱动支持解析
操作系统嵌入式物联网嵌入式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点击查看免费下载树莓派 4B 是 RT-Thread 官方支持的 64 位 ARM 平台之一本指南以bsp/raspberry-pi/raspi4-64板级支持包为对象完整讲解如何用scons编译固件、通过串口GPIO 14/15观察输出、借助 u-boot TFTP 将rtthread.bin加载到内存运行并逐项解析该 BSP 已支持的 UART、SPI、SDIO、以太网、HDMI 等驱动及其rtconfig.h配置依据。读完本文你将掌握从零开始在该平台构建并启动 RT-Thread 的完整流程并了解其 SMP 四核调度、内存布局与设备树DTB加载机制。1. 平台概述BCM2711 与树莓派 4B 的移植价值树莓派 4B 的核心处理器为博通BCM2711四核1.5GHz Cortex-A72架构上一代树莓派 3 为四核 Cortex-A53搭配LPDDR4 内存供电方式为5V/3A USB-C或GPIO 5V。外设方面引入了双频 Wi-Fi、蓝牙 5.0、千兆网卡、MIPI CSI 相机接口、双 USB 口以及 40 个扩展引脚。该 BSP 是 RT-Thread 面向 Raspberry Pi 4 的一份移植对应的 SoC 配置在 Kconfig 中通过config SOC_BCM2711声明并自动选择ARCH_ARMV864 位 ARMv8 架构、ARCH_CPU_64BIT、RT_USING_CACHE、RT_USING_STDC_ATOMIC以及RT_USING_COMPONENTS_INIT、RT_USING_USER_MAIN等内核选项default y保证该配置随 BSP 默认生效。由于树莓派价格便宜、使用者甚众它是研究和运行 RT-Thread 的可选平台之一尤其适合验证 RT-Thread 在真实 Cortex-A 多核 SoC 上的 SMP对称多处理能力——rtconfig.h 中显式定义了RT_USING_SMP与RT_CPUS_NR 4对应四核启动。2. 编译说明用 scons 构建固件推荐使用 env 工具RT-Thread 官方开发环境在控制台进入bsp/raspberry-pi/raspi4-64目录后运行scons如果编译正确无误会生成rtthread.elf与rtthread.bin两个文件。从构建脚本 SConstruct 与 rtconfig.py 可以确认编译细节工具链ARCH aarch64、CPU cortex-a默认前缀aarch64-none-elf-可用环境变量RTT_CC_PREFIX覆盖交叉编译器路径默认为/opt/gcc-arm-8.3-2019.03-x86_64-aarch64-elf/bin/亦可通过RTT_EXEC_PATH环境变量指定。编译选项-marcharmv8-a -mtunecortex-a72与 BCM2711 的 Cortex-A72 核心对应BUILD debug时追加-O0 -ggdbrelease 时为-O2。链接与后处理LFLAGS使用-T link.lds链接脚本并生成rtthread.map、rtt.asmPOST_ACTION执行objcopy -O binary $TARGET rtthread.bin与size $TARGET这正是rtthread.bin的来源。环境变量RTT_ROOT、RTT_CC、RTT_EXEC_PATH、RTT_CC_PREFIX均可按需覆盖默认路径便于接入自建的 aarch64 GCC 工具链。3. 环境搭建与运行方式3.1 串口连线与参数当前版本使用树莓派GPIO 14TXD、GPIO 15RXD作为串口输出接线图如下串口参数为115200 8N1硬件与软件流控均为关闭状态。串口的引脚复用是在驱动层完成的drivers/board.c中的ttyAMA0_init函数通过INIT_EXPORT(ttyAMA0_init, 1.3)在初始化阶段执行会解析内核启动参数中的console当使用ttyAMA0控制台时通过设备树节点/soc/gpio7e200000下的uart0-gpio14配置节点调用 pinctrl 的pin_ctrl_confs_apply将 PL011 UART 复用切换到 GPIO 14/15代码注释说明 Pi4 默认设备树将 PL011 路由到 GPIO 32/33 蓝牙因此头部 40 针的 UART 需要显式切回 GPIO 14/15。3.2 RTT 固件放入 SD 卡运行暂不支持当前 BSP暂时不支持直接从 SD 卡启动固件需要使用 u-boot 加载。3.3 用 u-boot 加载 RTT 程序TFTP 网络引导BSP 的tools目录下提供了 u-boot64.bin 与 config.txt 两个文件将其替换 SD 卡中原有文件即可。SD 卡推荐使用树莓派官方 imager 工具制作。config.txt 内容如下是树莓派固件侧的启动配置enable_uart1 kernelu-boot64.bin #kernelkernel7.img #kernel_address0xc0000000 arm_64bit1其中enable_uart1打开串口kernelu-boot64.bin指定启动 u-bootarm_64bit1通知固件以 64 位模式引导。完整步骤如下1. 电脑上启动 TFTP 服务器Windows 系统可安装 tftpd 搭建 TFTP 服务器将目录指定到bsp/raspberry-pi/raspi4-64即固件所在目录。2. 修改 u-boot 设置在 u-boot 控制台输入下列命令setenv bootcmd dhcp 0x208000 x.x.x.x:rtthread.bin;fdt addr ${fdt_addr};fdt set /chosen bootargs earlyconuart8250,mmio32,0xfe215040 consolettyAMA0 cma8M coherent_pool2M;booti 0x208000 - ${fdt_addr} saveenv reset其中x.x.x.x为 TFTP 服务器的 PC 端 IP 地址。该命令组合的含义为先通过dhcp 0x208000从 TFTP 下载rtthread.bin到内存地址0x208000该地址与 rtconfig.h 中的ARCH_TEXT_OFFSET 0x208000严格对应是 64 位内核镜像的加载偏移随后把 bootargs 写入设备树/chosen节点指定 earlycon 串口、consolettyAMA0、cma8M与coherent_pool2M最后用booti以 Image 格式启动内核并传入fdt_addr对应的设备树。3. 链接脚本自动替换无需手动处理链接脚本会在 python 脚本中自行替换无需人工干预。4. 插入网线将网线插入保证开发板与 TFTP 服务器处于同一网段的路由器上。上电后 u-boot 会自动从 TFTP 服务器获取固件并开始执行。完成后可以看到串口输出信息\ | / - RT - Thread Operating System / | \ 5.0.0 build Mar 29 2023 10:56:23 2006 - 2022 Copyright by RT-Thread team lwIP-2.1.2 initialized! EMMC: assuming clock rate to be 100MHz [I/sal.skt] Socket Abstraction Layer initialize success. [I/utest] utest is initialize success. [I/utest] total utest testcase num: (0) [I/DBG] version is B1 [I/SDIO] SD card capacity 31166976 KB. found part[0], begin: 4194304, size: 256.0MB found part[1], begin: 272629760, size: 3.856GB file system initialization done! cpu 2 boot success cpu 1 boot success cpu 3 boot success msh /该输出直观展示了 BSP 的完整启动链路RT-Thread 5.0.0 内核、lwIP 2.1.2 协议栈、SAL Socket 抽象层、utest 测试框架、SDIO/SD 卡与文件系统初始化以及cpu 2/1/3 boot success的 SMP 从核启动信息最终进入msh /命令行。3.4 补充QEMU 快速验证方式除真机外BSP 还附带 qemu.py 脚本可基于qemu-system-aarch64 -M raspi4b -m 2G在模拟环境中运行脚本会先用设备树编译工具把../dm/dts/bcm2711-rpi-4-b.dts编译为 dtb再以-kernel rtthread.bin加载bootargs 使用consolettyAMA0 earlyconpl011,0xfe201000 cma8M coherent_pool2M。运行python qemu.py即可体验支持-debug-S -s等待 GDB 连接与-graphic挂载 USB 鼠标键盘参数适合没有硬件时先验证构建产物。4. 驱动支持情况该 BSP 的驱动支持情况汇总如下驱动支持情况备注UART支持UART0, UART2, UART3, UART4, UART5GPIO支持-SPI支持SPI0MAILBOX支持-WATCHDOG支持-HDMI支持-SDIO支持-ETH支持-这些支持项在 rtconfig.h 中均有对应开关可交叉印证串口RT_USING_SERIAL、RT_SERIAL_PL011PL011 串口控制器与RT_SERIAL_8250、RT_SERIAL_8250_BCM2835AUXBCM2835 辅助 UART即 mini UARTRT_CONSOLE_DEVICE_NAME uart0指定控制台设备GPIO / 引脚控制RT_USING_PIN、RT_PIN_BCM_VIRT、RT_PIN_BRCMSTB、RT_PIN_RASPBERRYPI_EXP配合RT_USING_PINCTRL、RT_PINCTRL_BCM2835完成引脚复用SPIRT_USING_SPI、RT_SPI_BCM2835、RT_SPI_BCM2835AUXMAILBOXRT_USING_MBOX、RT_MBOX_BCM2835树莓派固件 mailbox 通道广泛用于图形、温度等固件查询看门狗RT_USING_WDT、RT_WDT_BCM2835HDMI / 显示RT_USING_GRAPHIC、RT_GRAPHIC_FB_BCM2708、RT_GRAPHIC_BACKLIGHT_RPI、RT_GRAPHIC_LOGO_RASPI_CLUT224启动 logo 图片路径为../dm/graphic/logo/logo-raspi-clut224.ppmSDIO / 存储RT_USING_SDIO、RT_USING_SDHCI、RT_SDIO_SDHCI_BRCMSTB、RT_MMCSD_MAX_PARTITION 16配合RT_USING_DFS_ELMFATFAT 文件系统与分区表支持RT_BLK_PARTITION_DFS、RT_BLK_PARTITION_EFI以太网RT_USING_ETHERNET、RT_ETHERNET_BCMGENETBCM2711 千兆网卡 GENET 控制器、RT_PHY_MDIO_BCM_UNIMAC、RT_PHY_BCM54213BCM54213 千兆 PHY协议栈使用RT_USING_LWIP212lwIP 2.1.2并通过 SAL 抽象层接入静态 IPv4 默认配置为RT_LWIP_IPADDR 192.168.137.100、网关192.168.137.1、掩码255.255.255.0其他外设I2CRT_I2C_BCM2835、RTC、PWM、DMA、硬件加密RT_HWCRYPTO_BCM2835、PCIeRT_PCIE_BRCMSTB对应树莓派 4 的 PCIe 接口、热管理RT_THERMAL_BCM2711、DVFS 调频RT_DVFS_RASPBERRY_CPUFREQ、中断控制器RT_PIC_ARM_GICRT_PIC_BCM2835_INTC等。各驱动源码位于 BSP 共享的设备模型目录bsp/raspberry-pi/dm下按serial/、spi/、sdio/、ethernet/、mailbox/、watchdog/、pinctrl/、thermal/、pwm/、clk/等子目录组织并统一由 SConscript 通过SConscript(cwd /../dm/SConscript, ...)引入构建。5. 注意事项内存与堆栈配置目前 RT-Thread 程序可使用的内存在100MB 以内。可以通过调整 drivers/board.c 中platform_mem_desc表的数据进行相关内存映射以及修改 drivers/board.h 来确定程序使用的堆栈大小。相关内核级配置参考 rtconfig.h 中的ARCH_HEAP_SIZE 0x400000064MB 堆、IDLE_THREAD_STACK_SIZE 8192、SYSTEM_THREAD_STACK_SIZE 8192、RT_MAIN_THREAD_STACK_SIZE 16384等宏。此外board.c的rt_hw_board_init通过调用rt_hw_common_setup()完成 MMU、设备树解析等公共初始化其中注释掉的rt_hw_noncacheable_map展示了如何通过rt_hw_mmu_control将一段内存标记为非缓存区域MMU_CNTL_NONCACHE需要做 DMA 一致性处理时可以参考这一模式恢复启用。6. 联系人信息该 BSP 的维护人为 bernard。使用时如遇驱动适配、启动问题可结合本节涉及的 rtconfig.h、board.c、config.txt 与 qemu.py 自行排查树莓派 4B 以外的兄弟 BSP如 raspi2、raspi3-32、raspi3-64、raspi4-32也在同一目录下可作为对比参考。赞分享操作系统嵌入式物联网嵌入式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 树莓派 4BBCM2711BSP 移植指南编译、烧录、串口调试与 uboot 网络加载RT Thread 树莓派 4BBCM2711BSP 移植指南编译、烧录、串口调试与 uboot 网络加载 本篇技术指南以 RT Thread 仓库中 b操作系统嵌入式物联网嵌入式OSRTOSRT-Thread 树莓派 3B32 位BSP 移植指南编译、烧录与四核 SMP 启动实战RT Thread 树莓派 3B32 位BSP 移植指南编译、烧录与四核 SMP 启动实战 树莓派 3B 采用四核 ARM Cortex A53ARMv操作系统嵌入式物联网嵌入式OSRTOSRT-Thread 树莓派 3 64 位模式 BSP 移植指南交叉编译、SD 卡烧录与串口调试实战RT Thread 树莓派 3 64 位模式 BSP 移植指南交叉编译、SD 卡烧录与串口调试实战 导读 本文以 RT Thread 官方仓库中的 Raspb操作系统嵌入式物联网嵌入式OSRTOS上一篇高级应用指南RustDesk API服务器的OAuth、LDAP和自定义命令下一篇PHP农历转换终极指南快速实现公历农历互转创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

wp-calypso 多站点 Dashboard 的包导入限制策略:calypso 与 @automattic 依赖边界实战指南 2026/9/25 7:58:52

wp-calypso 多站点 Dashboard 的包导入限制策略:calypso 与 @automattic 依赖边界实战指南

前端CMS 【免费下载链接】wp-calypso The JavaScript and API powered WordPress.com 项目地址: https://gitcode.com/gh_mirrors/wp/wp-calypso 点击查看 免费下载 本文解读 wp-calypso 仓库中新版多站点 Dashboard(服务于 WordPress.com 托管控制台与…

阅读更多 →
CSP-S 2026初赛模拟卷2:考点拆解与备考策略 2026/9/25 7:58:51

CSP-S 2026初赛模拟卷2:考点拆解与备考策略

1. 从一份模拟卷说起:CSP-S 初赛到底在考什么如果你正在准备 CSP-S(CCF 非专业级软件能力认证提高组)的第一轮,那你大概率已经刷过不少真题和模拟卷了。但很多人刷题的方式其实很低效——做完对个答案,看看分数&#x…

阅读更多 →
RisingWave Stream Engine Executor 测试编写指南:基于 expect_test 与集成测试的最佳实践 2026/9/25 7:58:45

RisingWave Stream Engine Executor 测试编写指南:基于 expect_test 与集成测试的最佳实践

数据库流处理后端数据工程 【免费下载链接】risingwave Event streaming platform for agentic AI. Continuously ingest, transform, and serve event streams in real time, at scale. 项目地址: https://gitcode.com/gh_mirrors/ri/risingwave 点击查看 免费下载…

阅读更多 →
把浏览器交给 AI Agent 之前,BrowserSkill 的 11 项权限与隐私边界怎么验(15 分钟串讲) 2026/9/25 7:58:39

把浏览器交给 AI Agent 之前,BrowserSkill 的 11 项权限与隐私边界怎么验(15 分钟串讲)

把浏览器交给 AI Agent 之前,BrowserSkill 的 11 项权限与隐私边界怎么验(15 分钟串讲) 【免费下载链接】BrowserSkill Let AI agents use your real, logged-in browser without interrupting your work. CLI extension for browser automa…

阅读更多 →
Java多智能体系统实战:用ADK构建旅游规划助手,让AI智能体协作完成任务_google adk java-CSDN博客 2026/9/25 7:58:32

Java多智能体系统实战:用ADK构建旅游规划助手,让AI智能体协作完成任务_google adk java-CSDN博客

首屏导读 本教程配套付费专栏: 大模型工程师修炼手记 19.9 元(AI 编程 / Agent 实战 | 本文同主题系统课程) AI时代程序员的自我提升 49.9 元(AI 时代成长方法论)。 单篇不过瘾?订阅解锁全量源…

阅读更多 →
幼儿园大班名胜古迹主题测评方案设计与实践 2026/9/25 7:58:32

幼儿园大班名胜古迹主题测评方案设计与实践

1. 项目背景与设计思路这个幼儿园大班上学期期末的中文测评项目,以《名胜古迹》为主题设计社会课程,是典型的幼教领域跨学科教学实践。我在参与多家幼儿园课程设计时发现,将语言能力测评与文化认知相结合,能有效提升5-6岁儿童的学…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉