当前位置: 首页 > article >正文

Raspberry Pi Pico 2 RISC-V开发实战指南

1. 项目概述在Raspberry Pi Pico 2上探索RISC-V核心的潜力上个月发布的Raspberry Pi Pico 2开发板搭载了全新的RP2350微控制器这款芯片的独特之处在于同时集成了Arm Cortex-M33和RISC-V两种处理器架构。作为一名长期从事嵌入式开发的工程师我对这种异构设计充满兴趣——它让我们能够在一款价格亲民的开发板上同时体验两种主流指令集架构。RP2350的具体配置非常有意思两个Cortex-M33核心加上两个32位RISC-V Hazard3核心但任何时候最多只能同时使用两个核心可以是两个Arm、两个RISC-V或者各一个。这种设计既保留了Arm生态的成熟优势又为RISC-V爱好者提供了实践平台。更令人兴奋的是某些型号的RP2350板卡还配备了PSRAM使得在其上运行简化版Linux成为可能。在本指南中我将带您完成以下实践搭建RISC-V开发环境编写并运行简单的LED闪烁程序对比Arm和RISC-V核心的性能表现探索在RP2350上运行Linux的可能性2. 开发环境搭建与工具链配置2.1 硬件准备在开始之前我们需要准备以下硬件Raspberry Pi Pico 2开发板或兼容RP2350的其他板卡如Cytron MOTION 2350 ProMicro USB数据线用于供电和编程可选Raspberry Pi Debug Probe用于调试可选USB转TTL串口模块用于串口通信提示如果您计划尝试Linux部分建议选择带有外部PSRAM的板卡如SparkFun Pro Micro - RP2350因为标准Pico 2的520KB内存不足以运行Linux。2.2 软件工具链安装对于Arm核心的开发我们可以使用标准的Arm GCC工具链。在Ubuntu/Debian系统上安装如下sudo apt update sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential对于RISC-V核心情况稍微复杂一些。由于RP2350使用的Hazard3核心需要较新版本的GCC支持14.1.0而Ubuntu 22.04的默认仓库不包含这些版本。我们可以选择从源码编译或者使用预编译的CORE-V工具链wget https://buildbot.embecosm.com/job/corev-gcc-ubuntu2204/47/artifact/corev-openhw-gcc-ubuntu2204-20240530.tar.gz tar xvf corev-openhw-gcc-ubuntu2204-20240530.tar.gz export PICO_TOOLCHAIN_PATH~/corev-openhw-gcc-ubuntu2204-20240530 export PICO_RISCV_TOOLCHAIN_PATH~/corev-openhw-gcc-ubuntu2204-202405302.3 SDK获取与配置无论是Arm还是RISC-V开发我们都需要Raspberry Pi的Pico SDKgit clone https://github.com/raspberrypi/pico-sdk cd pico-sdk git submodule update --init3. 第一个RISC-V程序LED闪烁3.1 从Arm版本开始为了确保我们的开发环境正常工作我们先为Arm核心构建一个简单的LED闪烁程序git clone -b master https://github.com/raspberrypi/pico-examples.git cd pico-examples/blink_simple/ export PICO_SDK_PATH../../pico-sdk cmake -DPICO_PLATFORMrp2350 .. cd blink_simple make -j$(nproc)构建完成后将生成的blink_simple.uf2文件拖拽到Pico 2的虚拟磁盘中应该能看到板载LED开始闪烁。3.2 移植到RISC-V核心现在我们来为RISC-V核心构建相同的程序。关键区别在于CMake配置时需要指定平台为rp2350-riscvcd .. rm -rf CMakeCache.txt CMakeFiles/ cmake -DPICO_PLATFORMrp2350-riscv .. cd blink_simple make clean make构建完成后使用file命令检查生成的ELF文件确认它是RISC-V架构$ file blink_simple.elf blink_simple.elf: ELF 32-bit LSB executable, UCB RISC-V, RVC, soft-float ABI, version 1 (SYSV), statically linked, with debug_info, not stripped将新的UF2文件烧录到板子上LED应该同样开始闪烁。虽然功能相同但观察文件大小会发现RISC-V版本略大一些13.8KB vs 12.8KB这主要是由于不同的编译器优化和指令集特性导致的。4. 串口通信与调试技巧4.1 硬件连接为了查看程序输出和调试信息我们需要设置串口通信。Pico 2的UART0默认使用以下引脚GP0 (Pin 1) - UART0 TXGP1 (Pin 2) - UART0 RXGND (Pin 3) - 地线将这些引脚连接到USB转TTL模块的对应引脚或者更方便的是使用Raspberry Pi Debug Probe它集成了USB转串口功能。4.2 串口示例程序Pico SDK提供了两种串口输出方式通过硬件UART或USB CDC。有趣的是这两种方式的源代码几乎完全相同区别仅在于CMake配置// hello_serial.c 和 hello_usb.c 内容相同 #include stdio.h #include pico/stdlib.h int main() { stdio_init_all(); while (true) { printf(Hello, world!\n); sleep_ms(1000); } }关键区别在于CMakeLists.txt中的配置# 对于硬件串口版本 add_executable(hello_serial hello_serial.c) target_link_libraries(hello_serial pico_stdlib) # 对于USB串口版本 add_executable(hello_usb hello_usb.c) target_link_libraries(hello_usb pico_stdlib) pico_enable_stdio_usb(hello_usb 1) # 启用USB输出 pico_enable_stdio_uart(hello_usb 0) # 禁用UART输出4.3 串口终端设置连接好硬件后可以使用任何串口终端程序如minicom、screen或picocom查看输出。在Linux上Debug Probe通常注册为/dev/ttyACM0sudo apt install picocom picocom -b 115200 /dev/ttyACM0如果使用USB CDC串口设备节点可能是/dev/ttyACM1。注意USB CDC需要主机安装适当的驱动程序在Linux上通常开箱即用。5. 性能对比Arm Cortex-M33 vs RISC-V Hazard35.1 CoreMark基准测试介绍CoreMark是EEMBC开发的嵌入式系统基准测试程序它通过执行以下操作来评估处理器性能链表操作测试内存访问性能矩阵乘法测试算术运算性能状态机处理测试控制逻辑性能CRC计算测试位操作性能5.2 测试环境搭建我们可以使用CoreMark-RP2040项目进行测试。对于RISC-V版本需要修改Makefile# 修改前 cmake .. -DCMAKE_BUILD_TYPEDebug # 修改后 cmake -DPICO_PLATFORMrp2350-riscv .. -DCMAKE_BUILD_TYPEDebug此外还需要在src/core_portme.h中设置MULTITHREAD为1以启用多核支持#define MULTITHREAD 15.3 测试结果分析在相同时钟频率下我们得到了以下结果Arm Cortex-M33核心CoreMark/MHz: ~280编译器: GCC 10.3.1优化选项: -OgRISC-V Hazard3核心CoreMark/MHz: ~286 (我们的测试) / 3.81 (官方Hazard3仓库)编译器: GCC 14.1.0优化选项: -Og注意我们的测试结果与官方Hazard3仓库的3.81 CoreMark/MHz存在显著差异。这主要是因为测试条件不同——官方使用了更严格的优化参数和特定的编译器标志。实际上两种核心在相同优化条件下的整数性能相近。对于浮点性能由于RP2350的RISC-V核心目前没有硬件FPU使用软件实现时性能会明显低于具有硬件浮点支持的Cortex-M33。6. 在RP2350上运行RISC-V Linux6.1 硬件需求与限制标准Pico 2板载资源520KB SRAM 4MB Flash不足以运行Linux。要尝试此部分您需要至少8MB PSRAM如SparkFun Pro Micro - RP235016MB Flash存储6.2 构建Linux系统Mr-Bossman提供了一个基于Buildroot的Linux移植项目git clone https://github.com/Mr-Bossman/pi-pico2-linux cd pi-pico2-linux git submodule update --init cd buildroot make BR2_EXTERNAL$PWD/../ raspberrypi-pico2_defconfig make -j$(nproc)构建过程可能需要较长时间30分钟到数小时取决于主机性能最终会在output/images/目录下生成flash-image.bin等文件。6.3 系统组成与特性生成的Linux系统包含以下主要组件Linux内核5.15针对RP2350定制BusyBox提供基本命令行工具设备树文件raspberrypi-pico2.dtb根文件系统约2MB的ext2格式系统特性支持PSRAM作为主内存通过UART0提供控制台基本外设驱动GPIO、I2C、SPI等启动时间约10-15秒6.4 烧录与启动将flash-image.bin烧录到板载Flash的起始位置。对于具有SWD接口的板卡可以使用openocd -f interface/raspberrypi-swd.cfg -f target/rp2350.cfg -c program flash-image.bin reset exit启动后通过串口终端应该能看到Linux启动日志最终获得登录提示。默认用户名为root无密码。7. 开发经验与问题排查7.1 常见问题与解决方案问题1RISC-V程序无法启动检查是否正确设置了PICO_PLATFORMrp2350-riscv确认工具链路径设置正确PICO_RISCV_TOOLCHAIN_PATH检查生成的UF2文件架构./uf2conv.py -i firmware.uf2应显示RP2350_RISCV问题2串口无输出确认接线正确TX-RXRX-TX检查终端程序波特率设置为115200对于USB CDC检查dmesg是否识别了设备问题3CoreMark结果异常确保在core_portme.h中正确设置了MULTITHREAD尝试不同的优化级别-O1, -O2, -O3检查编译器版本是否符合要求7.2 性能优化建议内存布局优化将频繁访问的数据放入TCMTightly Coupled Memory使用DMA减轻CPU负担合理设置缓存策略编译器优化针对RISC-V核心-marchrv32ima_zicsr_zifencei_zba_zbb_zbkb_zbs针对Cortex-M33-mcpucortex-m33 -mfpufpv5-sp-d16 -mfloat-abihard多核协作使用RP2350的硬件IPC机制进行核间通信合理分配任务如Arm核心处理浮点RISC-V处理控制逻辑7.3 调试技巧利用Debug Probe单步调试实时变量监控性能分析日志记录使用分段缓冲日志减少对性能的影响添加时间戳帮助分析时序问题电源管理监控不同工作模式下的电流消耗合理使用睡眠模式降低功耗8. 项目扩展与进阶方向8.1 实时操作系统支持除了LinuxRP2350也适合运行实时操作系统FreeRTOS已有社区移植版Zephyr官方支持RP2040可适配RP2350RIOT适用于物联网应用8.2 混合架构编程利用两种核心的优势构建异构系统在Arm核心运行用户界面或通信协议栈在RISC-V核心实现实时控制算法使用共享内存或消息队列进行核间通信8.3 外设开发RP2350新增的外设值得探索HSTX接口高速数据传输增强型安全特性安全启动、加密加速改进的PIO可编程I/O功能8.4 社区资源Raspberry Pi官方论坛Pico板块GitHub上的RP2350相关项目RISC-V国际基金会的资源库EEMBC的CoreMark优化指南

相关文章:

Raspberry Pi Pico 2 RISC-V开发实战指南

1. 项目概述:在Raspberry Pi Pico 2上探索RISC-V核心的潜力上个月发布的Raspberry Pi Pico 2开发板搭载了全新的RP2350微控制器,这款芯片的独特之处在于同时集成了Arm Cortex-M33和RISC-V两种处理器架构。作为一名长期从事嵌入式开发的工程师&#xff0c…...

nli-MiniLM2-L6-H768效果展示:中英文混合标签(technology, 情感积极)精准识别

nli-MiniLM2-L6-H768效果展示:中英文混合标签精准识别 1. 开篇亮点 nli-MiniLM2-L6-H768是一款基于轻量级NLI模型开发的本地零样本文本分类工具。它最大的特点是不需要任何微调训练,只需输入文本和自定义标签,就能一键完成文本分类任务。这…...

PPTAgent终极指南:10分钟掌握AI智能演示文稿生成

PPTAgent终极指南:10分钟掌握AI智能演示文稿生成 【免费下载链接】PPTAgent An Agentic Framework for Reflective PowerPoint Generation 项目地址: https://gitcode.com/gh_mirrors/pp/PPTAgent 你是否曾为制作演示文稿而烦恼?从整理文档内容到…...

技术代理中的访问控制与功能增强

技术代理中的访问控制与功能增强 在数字化时代,技术代理(如API网关、微服务代理或智能代理)已成为系统架构中不可或缺的组成部分。它们不仅负责请求转发和协议转换,还通过访问控制与功能增强保障系统的安全性与灵活性。访问控制确…...

Z2格点规范理论中的强子动力学与排斥束缚态研究

1. Z2格点规范理论中的强子动力学研究概述在量子多体物理研究中,格点规范理论作为连接高能物理与凝聚态物理的重要桥梁,为我们理解强相互作用系统提供了独特视角。Z2格点规范理论因其离散对称性和相对简单的数学结构,成为研究规范场论非微扰特…...

终极指南:用Python轻松读取通达信数据,开启量化分析新时代

终极指南:用Python轻松读取通达信数据,开启量化分析新时代 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx Mootdx——这个强大的Python库正在改变金融数据分析的游戏规则。…...

个人数据防护新选择:OEMexe加密方案的安全机制与应用价值分析

数字化时代,个人隐私数据面临着前所未有的泄露风险。 从云端存储到本地传输,每一个环节都可能成为安全漏洞的突破口。 如何在保证便捷性的前提下实现数据的有效防护,成为当代用户必须面对的技术命题。 OEMexe作为一款专注文件加密的技术工…...

209K轻量级文件加密神器OEMexe:零安装跨格式全支持的技术解析

在信息安全日益受到重视的当下,文件加密已成为个人用户与企业用户的刚性需求。 市面上多数加密软件存在体积庞大、安装繁琐、依赖环境复杂等问题,严重影响了用户的使用体验。 OEMexe的出现为这一痛点提供了优雅的解决方案。 该软件以极致轻量化为核心…...

Rust的匹配中的模式

Rust的匹配模式:代码逻辑的优雅表达 在编程语言中,模式匹配是一种强大的工具,能够以简洁的方式处理复杂的数据结构。Rust的模式匹配不仅功能丰富,还能在编译时确保安全性,避免常见的运行时错误。无论是处理枚举、解构…...

无服务器(Serverless)架构的优缺点

无服务器架构的优缺点解析 在云计算技术快速发展的今天,无服务器(Serverless)架构因其独特的优势逐渐成为开发者的热门选择。它允许开发者专注于业务逻辑,而无需管理底层服务器资源,从而大幅提升开发效率。这种架构并…...

2283 美元与 20 小时:Claude Opus 4.6 写出 Chrome Bug 利用链,AI 降低黑客攻击门槛

2283 美元与 20 小时:Claude Opus 4.6 成功写出 Chrome Bug 利用链,AI 降低黑客攻击门槛如果你在网络安全圈,最近肯定被 "Mythos" 刷屏了。Anthropic 研发出一个能挖 Bug 的 AI 模型,但因担心被坏人滥用,未公…...

具微科技完成A+++轮融资,聚焦特种场景,欲打造具身智能发展新范式

36氪获悉,全域移动智能机器人公司具微科技近期完成A轮融资,总融资金额达数亿元。资金将用于技术研发与场景落地,其产品聚焦特种场景,优势显著。融资情况与团队实力具微科技此次A轮融资由滨州国投等联合领投,和达控股等…...

库克超长待机15年后卸任,硬件老兵特努斯接棒,苹果AI之路何去何从?

【库克退休计划与超长任期】这是一场事先铺垫的退休计划。至少五年前库克就曾公开表示过自己「未来十年内不打算继续任职」,此后每隔一段时间,关于「库克候选人」的传闻就不断会被媒体们拿出来反复讨论。在随后苹果全体大会上,他甚至说&#…...

QMCDecode:macOS平台QQ音乐加密格式一键解密解决方案

QMCDecode:macOS平台QQ音乐加密格式一键解密解决方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转…...

中部存储芯片“双子星”崛起,能否重塑中国芯片产业格局?

1. “双子星”上桌一场由人工智能算力需求引爆的存储芯片超级周期,正加速席卷全球产业链。有媒体援引产业链核心人士消息披露,武汉长江存储一季度营收已突破200亿元,同比实现翻倍增长。因庞大存储订单芯片涌入,武汉长江存储正以最…...

手机存储速度翻倍的秘密:一文读懂UFS 2.2协议中的MIPI UniPro层

手机存储速度翻倍的秘密:一文读懂UFS 2.2协议中的MIPI UniPro层 当你在旗舰手机上秒开《原神》、连拍100张4800万像素照片却毫无卡顿时,背后是UFS 2.2存储协议与MIPI UniPro层的精密协作。这个藏在闪存芯片里的交通指挥系统,通过独特的CPort连…...

CoolProp架构深度解析:开源热力学计算库的技术实现

CoolProp架构深度解析:开源热力学计算库的技术实现 【免费下载链接】CoolProp Thermophysical properties for the masses 项目地址: https://gitcode.com/gh_mirrors/co/CoolProp CoolProp是一个基于现代C架构的开源热力学性质计算库,为工程师和…...

如何处理.NET中的Oracle Number溢出_OracleDecimal与C# decimal数据类型对应

<p>Oracle NUMBER 超出 C# decimal 范围时直接抛 OverflowException&#xff0c;应优先使用 OracleNumber 接收并校验 IsValid/IsFinite 后再转换&#xff0c;EF Core 中需改用 OracleNumber? 或显式指定列精度&#xff0c;废弃 OracleDecimal。</p>Oracle NUMBER…...

Hypnos-i1-8B代码生成效果秀:根据注释自动生成Python/JavaScript函数

Hypnos-i1-8B代码生成效果秀&#xff1a;根据注释自动生成Python/JavaScript函数 1. 开篇&#xff1a;代码生成的新体验 最近试用Hypnos-i1-8B模型进行代码生成&#xff0c;效果确实让人眼前一亮。这个模型最厉害的地方在于&#xff0c;你只需要用自然语言描述想要的功能&…...

Rails 7.1 新特性深度解析:从Dockerfile生成到异步查询的全面升级

1. Rails 7.1 新特性概览 Rails 7.1 作为 Ruby on Rails 框架的最新版本&#xff0c;带来了许多令人兴奋的新功能。这次更新不仅优化了开发体验&#xff0c;还引入了多项实用特性&#xff0c;让开发者能够更高效地构建现代 Web 应用。如果你正在考虑是否要将现有项目升级到 Rai…...

04-08-03 技术负责人 (Tech Lead)

04-08-03 技术负责人 (Tech Lead) 章节概述 本章讲述技术负责人&#xff08;Tech Lead&#xff09;这一角色的职责和挑战。Tech Lead 是技术与管理的桥梁&#xff0c;既要保持技术深度&#xff0c;又要开始承担领导职责。这是许多工程师职业生涯中的重要转折点。核心概念 Tech …...

Docker Compose农业微服务编排全解析,深度适配低带宽农田网络环境(离线部署+断网续传双模式)

第一章&#xff1a;Docker Compose农业微服务编排全解析&#xff0c;深度适配低带宽农田网络环境&#xff08;离线部署断网续传双模式&#xff09;在偏远农田、温室集群或移动农机终端等典型弱网场景中&#xff0c;传统云原生部署常因高依赖实时拉取镜像、频繁API调用和中心化注…...

04-08-02 导师与被导师 (Mentoring)

04-08-02 导师与被导师 (Mentoring) 章节概述 本章探讨导师关系的价值以及如何成为好导师和寻找好导师。导师关系是职业发展的加速器&#xff0c;能够帮助你少走弯路&#xff0c;快速成长。核心概念 导师关系的价值 对被导师者&#xff1a; ├─ 获得经验和智慧 ├─ 避免常见错…...

产品经理必学!掌握大模型,成为职场爆款!大模型时代的产品经理

学习大模型&#xff08;如GPT-3、BERT等&#xff09;对产品经理来说具有多方面优势&#xff0c;包括高效的用户需求分析、精准的市场趋势预测、高效的项目管理、智能的产品设计、准确的预测和分析以及快速的学习和适应能力。大模型能帮助产品经理在竞争激烈的市场中保持领先地位…...

GraalVM Native Image内存暴涨?3步精准定位堆外泄漏+4个编译期调优参数,上线前必做!

第一章&#xff1a;GraalVM Native Image内存暴涨的典型现象与认知误区当开发者首次将 Spring Boot 应用通过 native-image 构建为原生镜像后&#xff0c;常在运行时观察到 RSS&#xff08;Resident Set Size&#xff09;远超预期——例如一个仅含 WebMvc 的轻量服务&#xff0…...

机器人声学验证技术:非侵入式行为监测方案

1. 机器人工作流的声学验证技术解析 在工业自动化、医疗手术和仓储物流等关键领域&#xff0c;机器人系统的行为可靠性直接关系到生产安全和运营效率。传统验证方法通常依赖机器人内置的传感器数据&#xff0c;但这些数据可能被恶意篡改或受到系统故障的影响。我们团队开发的Wa…...

Ubuntu 24.04下MT7922蓝牙驱动问题解决方案

1. 解决Ubuntu 24.04下MediaTek MT7922蓝牙模块失效问题最近在GEEKOM AE7等迷你PC上搭载的MediaTek MT7922无线网卡&#xff08;支持WiFi 6和蓝牙5.3&#xff09;出现了一个典型问题&#xff1a;在Ubuntu 24.04系统下&#xff0c;WiFi功能正常但蓝牙完全无法启用。这其实是由于…...

如何快速解决TranslucentTB启动问题:3步修复透明任务栏工具

如何快速解决TranslucentTB启动问题&#xff1a;3步修复透明任务栏工具 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentTB是一…...

T3出行冲刺港股:年营收171亿,利润仅744万 腾讯阿里一汽东风是股东

雷递网 雷建平 4月22日南京领行科技股份有限公司&#xff08;又称&#xff1a;“T3出行”&#xff09;今日递交招股书&#xff0c;准备在港交所上市。T3出行成立以来获得过A轮及B轮融资&#xff0c;其中&#xff0c;A轮融资77.2亿元&#xff0c;每股成本为2.4621元&#xff1b;…...

Gitee Repo:构筑国产软件供应链安全的数字长城

在数字经济成为全球竞争新高地的背景下&#xff0c;软件供应链安全已从技术议题升级为国家安全战略的重要组成部分。作为中国最大的代码托管平台Gitee旗下核心产品&#xff0c;Gitee Repo制品管理平台正在以全栈自主创新技术重构企业研发基础设施&#xff0c;其独特的"安全…...