RetroMini
超頻改造
司徒看了一下JZ4725B手冊,發現有兩個電壓應該是跟超頻有關聯,那就是VDDPLL和VDDCORE
君正在手冊上寫建議電壓是1.8V,不過最大電壓則是寫上2.5V,這...,你是叫司徒操你的意思嗎?
司徒確認一下RetroMini(RS90)的電壓腳位,都是連接到VCORE_1_8V
VCORE_1_8V則是由WD1011EA驅動
司徒翻了一下手冊,找出電壓計算公式
目前是200K和100K電阻,換算電壓則是:0.6 * (1 + (200K / 100K)) = 1.8V
果然是精密電阻
司徒手上剛好有7.5K和2.7K電阻,換算電壓則是:0.6 * (1 + (7.5K / 2.7K)) = 2.27V
換裝完畢
測量到的電壓則是2.25V
接著,司徒發現系統上沒有/dev/mem,這...
而且超頻選項只有到456MHz,這...
於是,司徒抓了OpenDingux Kernel 5.1.0並且加入/dev/mem的支援
但是,更新Kernel後,發現USB有問題,司徒無法登入RS90操作,於是司徒又補上RNDIS的配置
萬事具備只欠東風
接著司徒查了一下PLL Register
CPU頻率的公式:(12MHz * (M + 2)) / (N + 2)
君正自己都說可以到500MHz...
接著,司徒使用Snes9x4D模擬器並且把頻率設定到456MHz
雖然Snes9x4D沒有關閉FrameSkip的選項,不過,還是勉強可以當作一個比較基準,CPU=456MHz時,FPS=21
超頻程式
#include <stdio.h> #include <stdint.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <sys/mman.h> #include <unistd.h> #include <time.h> int main(int argc, char* argv[]) { int fd = open("/dev/mem", O_RDWR); if(fd < 0){ printf("failed to open /dev/mem\n"); return -1; } uint32_t M=0, N=0; uint8_t *mem = mmap(0, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0x10000000); if(mem == NULL){ close(fd); printf("failed to mmap memory\n"); return -1; } printf("MEM: 0x%08x\n", mem); printf("Cur CPCCR: 0x%08x\n", *((uint32_t*)(mem + 0x00))); printf("Cur CPPCR: 0x%08x\n", *((uint32_t*)(mem + 0x10))); printf("Cur CPPSR: 0x%08x\n", *((uint32_t*)(mem + 0x14))); // (12MHz * (84 + 2)) / (0 + 2) = 516MHz M = 84; N = 0; *((uint32_t*)(mem + 0x10)) = (M << 23) | (N < 18) | 0x00000520; printf("New CPCCR: 0x%08x\n", *((uint32_t*)(mem + 0x00))); printf("New CPPCR: 0x%08x\n", *((uint32_t*)(mem + 0x10))); printf("New CPPSR: 0x%08x\n", *((uint32_t*)(mem + 0x14))); munmap(mem, 4096); close(fd); return 0; }
登入RS90後,啟動超頻程式,CPU從456MHz超頻到516MHz
P.S. 司徒測試後,發現516MHz是最大極限
CPU=516MHz時,FPS=30
或許是電壓不足,導致CPU卡在516MHz,於是進階超頻登場,司徒使用4.7K和1.5K電阻,換算電壓則是:0.6 * (1 + (4.7K / 1.5K)) = 2.48V
量測到的電壓是2.45V,不過,CPU頻率依舊卡在516MHz
司徒心想,超級賽亞人也是慢慢變身,才達到終極型態,因此,可能又是電壓不足的原因造成,於是,442K和120K電阻登場,換算電壓則是:0.6 * (1 + (442K / 120K)) = 2.81V
量測到的電壓是2.84V,不過,CPU頻率依舊卡在516MHz
雖然從目前測試到的數據顯示,JZ4725B最高的CPU頻率就是516MHz,不過,司徒好奇,如果電壓再繼續加上去呢?搞不好,它真的可以變身成最強型態...,於是,442K和105K電阻登場,換算電壓則是:0.6 * (1 + (442K / 105K)) = 3.13V
量測到的電壓是3.21V,不過,CPU頻率依舊卡在516MHz,因此,JZ4725B的最高CPU頻率應該就是516MHz
最後,司徒派出二姐量測溫度,發現MIPS果然沒有ARM來得激情...