💨给你的Nanopi R4S手动超频
前言
我的nanopi R4S
安装的openwrt
系统默认给R4S的频率比较保守, 刷超频固件或者自己修改固件都比较麻烦, 我们可以手动超频率, 超频后可以让它跑到稳定的千兆速度, 而且我的散热盒子自带了一个小风扇, 散热应该是有保障的, 不用担心过热
⚠️超频有风险, 修改错误可能会导致无法启动系统, 并且超频后, 需要的电压较高, 你需要注意你的电源电压是否足够, 建议电源输出功率15-20W, 电压不够可能会导致系统不稳定, 自动关机等, 需要自己准备好点的电源
修改
首先挂载一下必要的文件
我们先挂载/dev/mmcblk0p1
$ mount /dev/mmcblk0p1 /mnt/mmc1
复制dtb
文件到home
目录
$ cp /mnt/mmc1/rockchip.dtb ~
回到home
目录, 反编译dtb
为dts
$ opkg update
# 安装dtc
$ opkg install dtc
# 反编译dtb
$ dtc -I dtb -O dts -o rockchip.dts rockchip.dtb
然后使用vim
编辑反编译dtb
出来的dts
小核
默认频率1.4Ghz超频到1.8Ghz
$ vim rockchip.dts
使用vim
的命令搜索 ?opp-table0
定位到opp-table0
opp-table0
是A53小核心的主频描述表,opp-table1
是A72大核心,opp-table2
是GPU核心
Armbian
仓库有核心超频文件参考build/patch/kernel/archive/rk3399-4.4 at master · armbian/build · GitHub
我们在opp-table0
增加两档频率, 也就是在原有的基础上增加两个oop
//......
opp-table0 {
compatible = "operating-points-v2";
opp-shared;
phandle = <0x0b>;
//......
// 1.4Ghz
opp05 {
opp-hz = <0x00 0x54667200>;
opp-microvolt = <0x112a88>;
};
//新增
// 1.5Ghz
opp06 {
opp-hz = <0x00 0x5a1f4a00>;
opp-microvolt = <0x124f80>;
};
//新增
// 1.8Ghz
opp07 {
opp-hz = <0x00 0x6b49d200>;
opp-microvolt = <0x149970>;
};
};
//......
分别是oop06
和oop07
, 上边hz就是指的是频率, 我们要用16进制表示, 比如我们需要1.8GHZ的频率, 就是数值1800000000
, 转换成十六进制就是0x6b49d200
microvolt表示电压, 单位是微伏, 我们直接参考仓库的超频文件修改即可
大核
默认频率1.8Ghz超频到2.2Ghz
和小核超频步骤基本一样, 搜索opp-table1
定位到大核心频率描述
// ......
opp-table1 {
compatible = "operating-points-v2";
opp-shared;
phandle = <0x0d>;
// ......
// 1.8Ghz
opp07 {
opp-hz = <0x00 0x6b49d200>;
opp-microvolt = <0x124f80>;
};
// 新增
// 2.0Ghz
opp08 {
opp-hz = <0x00 0x76bb8200>;
opp-microvolt = <0x13d620>;
};
// 新增
// 2.2Ghz
opp09 {
opp-hz = <0x00 0x839b6800>;
opp-microvolt = <0x155cc0>;
};
};
// ......
增加oop08
和oop09
两个频率, 修改完成后保存dts
文件, 然后把本来的dtb文件先备份一下
# backup
$ mv rockchip.dtb rockchip_original.dtb
# 编译新的dts文件为dtb文件
$ doc -I dts -O dtb -o rockchip.dtb rockchip.dts
替换挂载出来的mmcblk0p1
的dtb文件
$ cp rockchip.dtb /mnt/mmc1/
卸载挂载的mmcblk0p1
分区
$ umount /mnt/mmc1
$ umount /mnt/mmcblk0p1
接着重启系统, 然后检查是否超频成功
$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies
如果参数有了的话, 说明超频成功
408000 600000 816000 1008000 1200000 1416000 1512000 1800000
408000 600000 816000 1008000 1200000 1416000 1512000 1800000
408000 600000 816000 1008000 1200000 1416000 1512000 1800000
408000 600000 816000 1008000 1200000 1416000 1512000 1800000
408000 600000 816000 1008000 1200000 1416000 1608000 1800000 1992000 2208000
408000 600000 816000 1008000 1200000 1416000 1608000 1800000 1992000 2208000
上边四行是四个小核心, 最高1.8Ghz, 下边是两个大核心, 最高2.2Ghz
跑分测试
CoreMark
47500分左右, 提升20%左右, 几乎可以跑满千兆了
$ coremark
2K performance run parameters for coremark.
CoreMark Size : 666
Total ticks : 67373
Total time (secs): 67.373000
Iterations/Sec : 47496.771704
Iterations : 3200000
Compiler version : GCC8.4.0
Compiler flags : -O2 -DMULTITHREAD=16 -DUSE_PTHREAD -lrt
Parallel PThreads : 16
openssl
$ openssl speed -multi 6 -evp aes-128-cbc
OpenSSL 1.1.1k 25 Mar 2021
built on: Thu Apr 8 08:22:08 2021 UTC
evp 1231546.60k 3401060.07k 5378946.60k 6696702.60k 7334679.89k 7368840.53k