树莓派 Pico 超频/降频指南

对任何型号的树莓派超频都很简单,对树莓派 Pico 超频甚至更容易实现。仅需两行 MicroPython 代码就能使你的 Pico 以正常速度的两倍运行,无需任何散热器。

本文中我们将树莓派 Pico 超频至 270 MHz(约基准速度 133 Mhz 的两倍)。然后,我们将写一个脚本来测试 Pico CPU 超频的上限和降频的下限。

在 C 语言的支持下,Pico 既可以通过 HDMI 接口输出 Doom 完整版游戏,也可以模拟 ZX Spectrum、Commodore 64 之类的复古计算机,超频似乎显得没有必要。但对 MicroPython 程序来说,超频能显著提升 Pico 的运行速度。同时,当我们需要使用电池对 Pico 供电时,降频能延长电池的电池续航。

当你使用 MicroPython 时,本文适用于树莓派 Pico、Pico W、PicoBit 和其他基于 RP2040 的开发板。当然你也可以使用其他编程语言来更改 Pico 的 CPU 频率,本文中不再阐述。

对树莓派 Pico 超频

安装最新版本 MicroPython,具体方法参考这篇文章的第三步。
在 MicroPython 交互式解释器中,导入 machine 并检查树莓派 Pico 的当前速度。返回的结果可能为 125000000 Hz (125 MHz)。默认情况下,某些开发板可能会将其设置得更高一些。

import machine
machine.freq()

将 CPU 频率设置为 270 MHz。

machine.freq(270000000)

检查 CPU 频率,确保超频已生效。不出意外的话,返回的结果为 270000000 Hz(270 MHz)。

machine.freq()

现在速度的提升只是暂时的。一旦重新启动树莓派 Pico ,它就会恢复到默认速度(通常为 125 MHz)。如果不想让超频失效,每次启动树莓派 Pico 时都必须设置超频。这很简单,只需将这两行添加到任何 MicroPython 代码的开头,就能在代码运行时将 RP2040 (树莓派 Pico 的 CPU)超频到期望的速度。

import machine
machine.freq(此处填写超频后的 CPU 频率,纯数字,不带单位)

RP2040 超频的上限是多少?

超频爱好者们总希望尽可能提高 CPU 频率,但如何才能确定 RP2040 超频的上限呢?为此,我们使用 Python 代码来自动获取 RP2040 能运行的极限频率。

注:完整的代码在文末

下载并打开 Thonny 编辑器。然后创建一个新文件,并导入两个模块。其中 machine 模块用于调整 CPU 频率,time 模块用于调整代码执行速度。

import machine
import time

创建一个变量 freq,并将其值设置为 270 MHz。经测试,RP2040 能以 270 MHz 的频率稳定运行,所以我们从 270 MHz 开始。如果你要对对 RP2040 进行降频,请相应地降低 freq 的值。

freq = 270000000

创建一个对象 speed,并把它设置为 RP2040 的当前速度。借助数学运算,我们把返回值的单位转换为 MHz,然后保留一位小数,最后将其转换为字符串。

speed = str(round(machine.freq()/1000000,1))

把当前 CPU 速度插入要打印的消息中。由于 speed 对象是整数,我们需要把它转换为字符串。

print("The starting speed is",speed,"MHz")

向用户打印一条消息,通知他们测试将在五秒后开始,然后等待五秒钟。

print("Starting the test in five seconds")
time.sleep(5)

为了持续运行代码,我们需要创建一个循环。你可以尝试使用 for 循环,但是 True 循环在遇到不合适的 CPU 频率时会崩溃,所以我们不建议这么做。

while True:

使用 freq 变量设置 CPU 速度。

machine.freq(freq)

创建一个对象 speed,并把它设置为 RP2040 的当前频率。借助数学运算,我们把返回值的单位转换为 MHz,然后保留一位小数,最后将其转换为字符串。

speed = str(round(machine.freq()/1000000,1))

把当前 CPU 频率插入要打印的消息中。由于 speed 对象是整数,我们需要把它转换为字符串。

print("The starting speed is",speed,"MHz")

将 CPU 频率增加 10 MHz 并将值保存到 freq。这里的+= 运算符相当于 freq = freq + 10000000。这么写可以简化代码,使代码看起来清晰。如果你要获取 CPU 的最低工作速度,只需把 += 换成 -= 即可。

freq += 10000000

让代码暂停两秒钟,以便在循环重复之前有充足的时间读取数值。

time.sleep(2)

将代码命名为 speedtest.py 并保存树莓派 Pico 上,然后单击“运行”。我们测试到的最佳频率是 280 MHz,但你也可能会得到比这更好的结果。

我们还进行了一个降频测试(每次循环减少10 MHz 的频率),并成功将其降至10 MHz,这对需要长时间使用电池的项目很有用。但由于设备测量精度的限制,我们无法捕获任何数据。

完整代码

import machine
import time
freq = 270000000
speed = str(round(machine.freq()/1000000,1))
print("The starting speed is",speed,"MHz")
print("Starting the test in five seconds")
time.sleep(5)
while True:
   machine.freq(freq)
   speed = str(round(machine.freq()/1000000,1))
   print("The current speed is",speed,"MHz")
   freq += 10000000
time.sleep(2)


1 评论

发表评论

你的邮件地址不会公开


*