0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Pico 2 RP2350 独立开发:跳过 Pico SDK ,直接上手!

上海晶珩电子科技有限公司 2025-03-25 09:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Raspberry Pi 推出了搭载全新RP2350微控制器的Pico 2。

RP2350是一款有趣的微控制器单元(MCU)。它拥有两个核心,这两个核心中的一个或两个都可以配置为Arm Cortex-M33或Hazard3 RISC-V。但本文将忽略RISC-V功能。

f586cfa4-0919-11f0-9434-92fbcf53809c.jpg

Pico 2并非唯一一款搭载Cortex-M33微控制器的开发板,但我相信它是全球范围内最便宜且最容易购买的一款。然而,从编程的角度来看,与其他如STM32H5系列的Arm Cortex-M33 MCU相比,Pico 2有一个主要的不同点:RP2350拥有一个(固定的)启动ROM,这为其提供了额外的功能。这带来的影响是,RP2350会首先执行其启动ROM,而不是用户应用程序。此外,我认为为了支持RP2350的特性(如版本控制、A/B版本、安全启动、签名镜像),引入了块(以及分区表)的概念。分区表是可选的,但使用块是必须的。因此,虽然一个用C编写的简单裸机应用程序可以使用Arm GNU工具链进行编译(Pico SDK提供了RP2350 CMSIS支持),但它无法直接在RP2350上执行,因为它缺少描述镜像所需的(元数据)块。

在Pico SDK构建系统中,所需的块在和pico-sdk/src/rp2_common/pico_crt0/embedded_end_block.inc.S中定义。这些是包含一些ifdefs的汇编源文件,这些文件中定义的数据被放入一个名为.embedded_block的段中。然后,这个块根据pico-sdk/src/rp2_common/pico_crt0/rp2350中的链接器描述脚本嵌入到镜像中。

用户应用程序二进制文件的元数据所需的最小块在RP2350数据手册的第5.9.5节“最小可行镜像元数据”中进行了描述。这些元数据存储在一个名为IMAGE_DEF的块中,该块包含两个项目:PICOBIN_BLOCK_ITEM_1BS_IMAGE_TYPE和PICOBIN_BLOCK_ITEM_2BS_LAST。每个块都需要一个类型为LAST的项目作为最后一个项目,这意味着这个最小块实际上只包含一个有意义的项目(IMAGE_TYPE)。镜像类型项目包含以下关于镜像的信息:

镜像是可执行的(IMAGE_TYPE_EXE)

镜像在安全模式下运行(EXE_SECURITY_S)

镜像针对Arm架构(EXE_CPU_ARM)

镜像针对RP2350(EXE_CHIP_RP2350)

这个块长20字节,应该位于加载到闪存的二进制文件的前4KB内。这是启动ROM代码找到它的方式。

上述所有信息(EXE、ARM、RP2350)除了一个(SECURITY_S)之外都应该很明显,但你可能会问为什么它在安全模式下运行。原因是RP2350的安全扩展始终启用(不能像STM32 MCU那样禁用)。启动ROM在安全模式下运行,并正常跳转到用户应用程序,因此(至少最初)用户应用程序也应该在安全模式下运行。之后,用户应用程序可以根据需要配置安全性。

由于通常将向量表保存在闪存镜像的开头,并且向量表小于4KB,因此将这个20字节长的块放在向量表之后是有意义的。与Pico SDK构建系统类似,这个块可以很容易地在汇编源文件中创建,并使用链接器描述脚本链接到正确的位置。

我创建了一个非常简单的LED闪烁项目,没有使用Pico SDK构建系统。可以在GitHub上的rp2350-bare-metal-build找到该项目。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Pico
    +关注

    关注

    0

    文章

    189

    浏览量

    18661
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1112

    浏览量

    52027
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    DLPA3000:DLP Pico投影仪的高效电源管理解决方案

    DLPA3000:DLP Pico投影仪的高效电源管理解决方案 在电子设备的设计中,电源管理一直是关键环节,尤其是对于像DLP Pico投影仪这类对性能和体积有较高要求的设备。今天我们要介绍
    的头像 发表于 04-19 09:15 108次阅读

    Pico示波器如何实现多通道同步采集

    。方案一:利用PICO 示波器有带外部触发的接口可以实现同步采集PICO 示波器有带外部触发的接口外部触发类型:边缘、时间间隔、逻辑阈值范围:±5V1. 从所有信号中分出一路信号。2. 这一路信号既
    发表于 03-17 11:28

    Pico示波器PicoScope 9311进行TDR测试流程详解

    TDR(Time Domain Reflectometry),即时域反射计,被广泛用于信号完整性、生产测试领域,以分析测试线缆、PCB走线、连接器等的特征阻抗、不连续断点导致的反射、长度等。Pico
    发表于 12-09 14:42

    Pico Technology发布Python软件包pyPicoSDK

    近日,全球领先的基于 PC 的仪器供应商Pico Technology 官方发布了 pyPicoSDK,这是一款旨在简化 PicoScopes 应用的 Python 软件包。pyPicoSDK 在
    的头像 发表于 09-29 15:03 1114次阅读

    rp2040编译不通过的原因?

    拉取最新的RTT master,按照readme.md的说明编译,出现图中的问题,使用的env版本1.5.2;应该是pico-sdk中的SConstruct没有正常运行,排查不到具体问题,特来求助。
    发表于 09-23 08:18

    Pico2-ICE FPGA开发板的应用示例

    FPGA 和 MCU 结合的开发板不多,而 Pico2‑ICE 则把小巧、灵活和易上手完美结合。搭载 RP2350 双核 RISC-V MCU + Lattice iCE40UP5K
    的头像 发表于 09-06 10:02 1322次阅读
    <b class='flag-5'>Pico2</b>-ICE FPGA<b class='flag-5'>开发</b>板的应用示例

    在树莓派Pico上运用不同的并行化手段

    树莓派PicoRP2040微控制器驱动,其上搭载两个CPU核,这让它非常适合探索并行计算。本文通过真实的数字信号处理样例来说明从双核架构中提取最大价值的方法和考量。
    的头像 发表于 08-29 09:51 4150次阅读
    在树莓派<b class='flag-5'>Pico</b>上运用不同的并行化手段

    RP2354 上市!20000美元全新黑客挑战赛!

    树莓派的第二代微控制器RP2350即将迎来面世一周年。自去年8月以来,树莓派已经售出了超过50万块Pico2Pico2W开发板,而RP2350
    的头像 发表于 08-04 17:03 1619次阅读
    <b class='flag-5'>RP</b>2354 上市!20000美元全新黑客挑战赛!

    rp2040编译不通过的原因?

    拉取最新的RTT master,按照readme.md的说明编译,出现图中的问题,使用的env版本1.5.2;应该是pico-sdk中的SConstruct没有正常运行,排查不到具体问题,特来求助。
    发表于 06-13 07:55

    用于教育的紫色雏菊 RP2350A STEAM 平台!

    的RaspberryPi公民科学项目”。此代码库是基于树莓派RP2350A微控制器的紫色雏菊平台的。这是一个开源平台,用于利用树莓派RP2350A微控制器开展公民科学实验。具有
    的头像 发表于 05-29 16:33 828次阅读
    用于教育的紫色雏菊 <b class='flag-5'>RP2350</b>A STEAM 平台!

    贸泽开售Raspberry Pi用于嵌入式和IIoT应用的RP2350微控制器

    RP2350 微控制器。RP2350建立在Raspberry PI RP2040的成功基础上,旨在以实惠的价格提供更高的性能和安全性,非常适合嵌入式计算和工业物联网应用。   Raspberry Pi
    发表于 05-27 14:50 1571次阅读

    用树莓派RP2350 DIY 桌面动态温湿度计

    桌面动态温湿度计本文介绍了DFrobotBeetleRP2350开发板结合DHT11模块、锂电池模块、随机眨眼动画,实现OLED显示的桌面动态温湿度计的项目设计。一、项目介绍本项目包括工作原理:ADC电压采集与电量转换工程调试:电量获取
    的头像 发表于 05-27 08:05 1107次阅读
    用树莓派<b class='flag-5'>RP2350</b> DIY 桌面动态温湿度计

    树莓派RP2350 - 桌面动态温湿度计

    树莓派RP2350 - 桌面动态温湿度计 本文介绍了 DFRobot Beetle RP2350 开发板结合 DHT11 模块、锂电池模块、随机眨眼动画,实现 OLED 显示的桌面动态温湿度计的项目
    发表于 05-26 02:02

    树莓派 RP2350 实现步进电机精确控制

    树莓派 RP2350 实现步进电机精确控制 本文介绍了 树莓派 RP2350 开发板实现步进电机驱动的项目设计,主要包括旋转角度的精确控制、串口发送实现自定义角度旋转、OLED 显示旋转状态三部
    发表于 05-03 15:11

    Made with KiCad(九十八):USB-C 的 Raspberry PiCo 2

    “  project-piCo,用 Type-C 替代 Micro USB 的 Pico 2。 ” KiCon Asia 2024 将于 2024 年 11 月 15~16 日在深圳举行,报名已开启
    的头像 发表于 04-28 18:27 1320次阅读
    Made with KiCad(九十八):USB-C 的 Raspberry <b class='flag-5'>PiCo</b> <b class='flag-5'>2</b>