Como fazer overclock e underclock em um Raspberry Pi Pico

Overclock de qualquer modelo de Raspberry Pi é realmente simples. Mas fazer overclock no Framboesa Pi Pico é ainda mais simples. Bastam duas linhas de MicroPython e seu Pico pode rodar facilmente com o dobro de sua velocidade normal e sem a necessidade do melhores coolers de CPU.
Neste tutorial vamos fazer overclock de um Raspberry Pi Pico para 270 MHz, o dobro da velocidade base de 133 MHz. Em seguida, escreveremos um script para testar até que ponto podemos fazer overclock e, em seguida, até que ponto podemos reduzir o clock da CPU.
Você pode estar pensando “Por que fazer overclock em um Raspberry Pi Pico?” Usando uma linguagem de baixo nível, como C, o Pico pode ser usado para jogar jogos como Doom (o jogo completo) usando uma placa de saída HDMI. Ele pode emular computadores retrô, como o ZX Spectrum e o Commodore 64. Com o MicroPython, o overclock nos dará um aumento de velocidade perceptível, e o underclocking pode nos fornecer maior duração da bateria se o estivermos usando em um projeto alimentado por bateria.
Este how to irá funcionar com o Raspberry Pi Pico, Pico W e muitos outros melhores placas baseadas em RP2040 ao usar o MicroPython. Existem outros métodos para alterar a frequência ao programar as placas em outros idiomas.
Para Este Projeto Você Vai Precisar
Um Raspberry Pi Pico ou Pico W ou qualquer outra placa baseada em RP2040 que esteja executando o MicroPython.
Fazendo overclock do Raspberry Pi Pico com MicroPython
1. Instale a versão mais recente do MicroPython no seu Pico. Se você ainda não fez isso, siga até passo três deste guia para aprender como.
2. No REPL, importe o módulo máquina e verifique a velocidade atual do Raspberry Pi Pico. O valor retornado provavelmente será 125000000 Hertz (125 MHz). Algumas placas ou versões do MicroPython podem ter um valor um pouco maior por padrão.
import machine
machine.freq()
3. Usando o mesmo comando, defina a velocidade da CPU para 270 MHz.
machine.freq(270000000)
4. Verifique a velocidade da CPU para garantir que o overclock funcionou. O valor retornado deve ser 270000000 Hertz (270 MHz).
machine.freq()
No momento, esse aumento de velocidade é temporário. Quando o Pico for reinicializado, ele retornará à sua velocidade padrão (geralmente 125 MHz). Para manter o overclock, ele deve ser definido toda vez que o Pico inicializar. Adicionar essas duas linhas ao início de qualquer código MicroPython fará o overclock do RP2040 para a velocidade desejada quando o código for executado.
import machine
machine.freq(SPEED IN HERTZ)
Até que ponto o RP2040 pode ser empurrado?
Os overclockers estão sempre procurando ir um pouco mais rápido, mas como podemos determinar nossa sorte na loteria do silício? Para isso, automatizamos o processo com um pouco de código Python.
1. Em Thonny iniciar um novo arquivo por primeiro importando dois módulos. A máquina é usada para alterar a velocidade da CPU e o tempo é usado para acompanhar o código.
import machine
import time
2. Crie uma variável, freq e armazene 270 MHz como Hertz. Sabemos que 270 MHz funciona bem, então partimos de uma velocidade de trabalho conhecida. Se seu objetivo é diminuir o clock do RP2040, reduza o valor de acordo.
freq = 270000000
3. Crie um objeto, velocidade, e nele armazene a velocidade atual do RP2040. Usando um pouco de matemática, o valor retornado em Hertz é convertido em megahertz, depois arredondado para uma casa decimal, antes de finalmente ser convertido em uma string.
speed = str(round(machine.freq()/1000000,1))
4. Imprima a velocidade atual da CPU como parte de uma mensagem. Precisávamos converter a velocidade em uma string para colocá-la na mensagem.
print("The starting speed is",speed,"MHz")
5. Imprima uma mensagem para o usuário, informando que o teste começa em cinco segundos e aguarde cinco segundos.
print("Starting the test in five seconds")
time.sleep(5)
6. Crie um loop para executar continuamente o código. Poderíamos usar um loop for, mas um loop while True falhará quando atingir uma frequência ruim, então não ganhamos nada com um loop for.
while True:
7. Defina a velocidade da CPU usando a variável freq.
machine.freq(freq)
8. Crie um objeto, velocidade, e nele armazene a velocidade atual do RP2040. Usando um pouco de matemática, o valor retornado em Hertz é convertido em MegaHertz, depois arredondado para uma casa decimal, antes de finalmente ser convertido em uma string.
speed = str(round(machine.freq()/1000000,1))
9. Imprima a velocidade atual da CPU como parte de uma mensagem. Precisávamos converter a velocidade em uma string para colocá-la na mensagem.
print("The starting speed is",speed,"MHz")
10. Aumente a velocidade em 10 MHz e salve o valor em freq. O operador += se traduz em freq = freq + 10000000. Ele é mais curto e mais organizado no código. Ambos funcionam igualmente bem e podem ser trocados para maior clareza. O += pode ser trocado por -= para que os valores façam uma contagem regressiva para encontrar a menor velocidade da CPU.
freq += 10000000
11. Pause o código por dois segundos. Isso nos dará tempo para ler os valores antes que o loop se repita.
time.sleep(2)
12. Salve o código no Raspberry Pi Pico como speedtest.py e clique em executar. Nossa melhor velocidade foi de 280 MHz, mas você pode ter sorte.
Também testamos um underclock (reduzindo a velocidade em 10 MHz a cada loop) e conseguimos baixá-lo para 10 MHz, o que deve reduzir significativamente a quantidade de consumo de energia para projetos que exigem bateria de longa duração. Não foi possível capturar nenhum dado devido ao nível de precisão do equipamento necessário.
Listagem de código completa
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)