Übertakten jedes Modells von Raspberry Pi ist wirklich einfach. Aber Übertakten der Himbeer Pi Pico ist noch einfacher. Alles, was Sie brauchen, sind zwei Zeilen MicroPython und Ihr Pico kann problemlos mit der doppelten normalen Geschwindigkeit laufen, und zwar ohne die Notwendigkeit für die Die besten CPU-Kühler.
In dieser Anleitung übertakten wir einen Raspberry Pi Pico auf 270 MHz, das Doppelte der Basisgeschwindigkeit von 133 MHz. Dann schreiben wir ein Skript, um zu testen, wie weit wir übertakten können und wie weit wir die CPU untertakten können.
Sie denken vielleicht: „Warum einen Raspberry Pi Pico übertakten?“ Mit einer Low-Level-Sprache wie C kann der Pico verwendet werden, um Spiele wie Doom (das vollständige Spiel) über eine HDMI-Ausgangskarte zu spielen. Es kann Retro-Computer wie den ZX Spectrum und den Commodore 64 emulieren. Mit MicroPython wird uns das Übertakten einen spürbaren Geschwindigkeitsschub geben, und das Untertakten kann uns eine längere Akkulaufzeit verschaffen, wenn wir es in einem batteriebetriebenen Projekt verwenden.
So funktioniert es mit dem Raspberry Pi Pico, Pico W und viele andere der besten RP2040-basierten Boards bei der Verwendung von MicroPython. Es gibt andere Methoden zum Ändern der Frequenz, wenn die Karten in anderen Sprachen programmiert werden.
Für dieses Projekt benötigen Sie
Ein Raspberry Pi Pico oder Pico W oder ein anderes RP2040-basiertes Board, auf dem MicroPython ausgeführt wird.
Übertakten des Raspberry Pi Pico mit MicroPython
1. Installieren Sie die neueste Version von MicroPython auf deinem Pico. Wenn Sie dies noch nicht getan haben, folgen Sie bis Schritt drei dieser Anleitung zu lernen wie.
2. Importieren Sie in der REPL das Maschinenmodul Und Überprüfen Sie die aktuelle Geschwindigkeit des Raspberry Pi Pico. Der zurückgegebene Wert wird wahrscheinlich 125000000 Hertz (125 MHz) sein. Einige Boards oder Versionen von MicroPython haben es möglicherweise standardmäßig etwas höher eingestellt.
import machine
machine.freq()
3. Verwenden Sie denselben Befehl, Stellen Sie die CPU-Geschwindigkeit auf 270 MHz ein.
machine.freq(270000000)
4. Überprüfen Sie die CPU-Geschwindigkeit um sicherzustellen, dass die Übertaktung funktioniert hat. Der zurückgegebene Wert sollte 270000000 Hertz (270 MHz) sein.
machine.freq()
Im Moment ist dieser Geschwindigkeitsschub nur vorübergehend. Wenn der Pico neu gestartet wird, kehrt er zu seiner Standardgeschwindigkeit zurück (normalerweise 125 MHz). Um die Übertaktung beizubehalten, muss sie bei jedem Start des Pico eingestellt werden. Das Hinzufügen dieser beiden Zeilen am Anfang eines beliebigen MicroPython-Codes übertaktet den RP2040 auf die gewünschte Geschwindigkeit, wenn der Code ausgeführt wird.
import machine
machine.freq(SPEED IN HERTZ)
Wie weit kann der RP2040 geschoben werden?
Übertakter wollen immer ein bisschen schneller werden, aber wie können wir unser Glück in der Silizium-Lotterie bestimmen? Dafür haben wir den Prozess mit ein wenig Python-Code automatisiert.
1. In Thonny eine neue Datei starten von zunächst zwei Module importieren. Die Maschine wird verwendet, um die CPU-Geschwindigkeit zu ändern, und die Zeit wird verwendet, um den Code zu beschleunigen.
import machine
import time
2. Erstellen Sie eine Variable, freq und speichern Sie 270 MHz als Hertz. Wir wissen, dass 270 MHz gut funktionieren, also gehen wir von einer bekannten Arbeitsgeschwindigkeit aus. Wenn Sie den RP2040 untertakten möchten, reduzieren Sie den Wert entsprechend.
freq = 270000000
3. Erstellen Sie ein Objekt, Geschwindigkeit, und speichern Sie dort die aktuelle Geschwindigkeit des RP2040. Mit ein wenig Mathematik wird der zurückgegebene Wert in Hertz in Megahertz umgewandelt, dann auf eine Dezimalstelle gerundet und schließlich in einen String umgewandelt.
speed = str(round(machine.freq()/1000000,1))
4. Gibt die aktuelle CPU-Geschwindigkeit als Teil einer Nachricht aus. Wir mussten die Geschwindigkeit in einen String umwandeln, um sie in die Nachricht einzufügen.
print("The starting speed is",speed,"MHz")
5. Drucken Sie eine Nachricht an den Benutzer und informieren Sie ihn darüber, dass der Test in fünf Sekunden beginnt, und warten Sie dann fünf Sekunden.
print("Starting the test in five seconds")
time.sleep(5)
6. Erstellen Sie eine Schleife, um den Code kontinuierlich auszuführen. Wir könnten eine for-Schleife verwenden, aber eine while-True-Schleife stürzt ab, wenn sie auf eine schlechte Frequenz trifft, sodass wir von einer for-Schleife nichts gewinnen.
while True:
7. Stellen Sie die CPU-Geschwindigkeit mit der freq-Variablen ein.
machine.freq(freq)
8. Erstellen Sie ein Objekt, Geschwindigkeit, und speichern Sie dort die aktuelle Geschwindigkeit des RP2040. Mit ein wenig Mathematik wird der zurückgegebene Wert in Hertz in MegaHertz umgewandelt, dann auf eine Dezimalstelle gerundet, bevor er schließlich in einen String umgewandelt wird.
speed = str(round(machine.freq()/1000000,1))
9. Gibt die aktuelle CPU-Geschwindigkeit als Teil einer Nachricht aus. Wir mussten die Geschwindigkeit in einen String umwandeln, um sie in die Nachricht einzufügen.
print("The starting speed is",speed,"MHz")
10. Erhöhen Sie die Geschwindigkeit um 10 MHz und speichern Sie den Wert in freq. Der += Operator wird übersetzt in freq = freq + 10000000. Er ist kürzer und übersichtlicher im Code. Beide funktionieren gleichermaßen und können zur Verdeutlichung ausgetauscht werden. Das += kann gegen -= ausgetauscht werden, sodass die Werte heruntergezählt werden, um die niedrigste CPU-Geschwindigkeit zu finden.
freq += 10000000
11. Halten Sie den Code zwei Sekunden lang an. Dies gibt uns Zeit, die Werte zu lesen, bevor sich die Schleife wiederholt.
time.sleep(2)
12. Speichern Sie den Code auf dem Raspberry Pi Pico als speedtest.py und klicken Sie auf Ausführen. Unsere beste Geschwindigkeit war 280 MHz, aber Sie können Glück haben.
Wir haben auch eine Untertaktung getestet (wobei die Geschwindigkeit bei jeder Schleife um 10 MHz reduziert wurde) und es geschafft, sie auf 10 MHz zu senken, was den Stromverbrauch für Projekte, die eine lange Akkulaufzeit erfordern, erheblich reduzieren sollte. Aufgrund der erforderlichen Präzisionsausrüstung konnten wir keine Daten erfassen.
Vollständige Codeliste
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)