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來得激情...


返回上一頁