这确实是一个高级且非常有用的需求。树莓派 Pico 官方固件本身不支持直接从 MicroSD 卡启动。Pico 的设计是让固件存储在板载的 QSPI 闪存芯片上,并从那里直接执行。

但是,这并不意味着完全没有办法。一些社区开发者已经创建了自定义的引导加载程序 (bootloader) 来实现这个功能。

核心原理

这个方法的关键是替换 Pico 默认的引导加载程序。具体步骤如下:

  1. 刷入自定义引导程序: 你需要将一个特殊的 UF2 文件 刷入 Pico 的板载闪存。这个 UF2 文件包含了自定义的引导程序,其功能不再是直接启动 MicroPython 固件,而是去寻找并加载 MicroSD 卡上的固件。
  2. 准备 MicroSD 卡: 你将要启动的固件文件(通常是 .bin.uf2 格式)复制到 MicroSD 卡的根目录,并可能需要重命名为特定的文件名(例如 firmware.bin)。
  3. 启动过程: 当你插入带有固件的 MicroSD 卡,并给 Pico 上电时,自定义的引导程序会首先运行,然后它会执行以下操作:

    • 初始化 SPI 接口,读取 MicroSD 卡。
    • 找到卡上的固件文件。
    • 将固件文件加载到 Pico 的 RAM 中。
    • 跳转到 RAM 中的固件代码,开始执行。

为什么有人会这样做?

将固件放在 MicroSD 卡上启动有几个显著的优点:

  • 轻松更新固件: 你不需要将 Pico 连接到电脑上,然后进入 BOOTSEL 模式来刷写新的固件。你只需要将新的固件文件复制到 MicroSD 卡,然后插入 Pico 即可。
  • 多固件管理: 你可以准备多张不同功能的 MicroSD 卡,每张卡上都存放着一个不同的固件。这使得在不同项目之间切换变得非常方便。
  • 绕过板载存储限制: 虽然固件最终会加载到 RAM 中运行,但你可以将一些大型应用程序的资源文件(如图片、音频等)也放在 MicroSD 卡上,从而绕过 Pico 板载闪存 2MB 的限制。

如果你对这个方案感兴趣,可以在 GitHub 或相关论坛上搜索 "pico sd card bootloader""RP2040 boot from sd card",可以找到一些开源项目和详细的教程。但请注意,这个过程需要一定的技术知识,并且不像直接刷写固件那样简单。

标签: none

评论已关闭