https://www.tomshardware.com/news/nano-pi-r4s-pi-competition

💨给你的Nanopi R4S手动超频

Linux Mar 28, 2022

前言

我的nanopi R4S安装的openwrt系统默认给R4S的频率比较保守, 刷超频固件或者自己修改固件都比较麻烦, 我们可以手动超频率, 超频后可以让它跑到稳定的千兆速度, 而且我的散热盒子自带了一个小风扇, 散热应该是有保障的, 不用担心过热

⚠️超频有风险, 修改错误可能会导致无法启动系统, 并且超频后, 需要的电压较高, 你需要注意你的电源电压是否足够, 建议电源输出功率15-20W, 电压不够可能会导致系统不稳定, 自动关机等, 需要自己准备好点的电源

修改

首先挂载一下必要的文件

我们先挂载/dev/mmcblk0p1

$ mount /dev/mmcblk0p1 /mnt/mmc1

复制dtb文件到home目录

$ cp /mnt/mmc1/rockchip.dtb ~

回到home目录, 反编译dtbdts

$ 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>;
		};
	};
//......

分别是oop06oop07, 上边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>;
		};
	};
// ......

增加oop08oop09两个频率, 修改完成后保存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

Credits

Tags

壳壳

理解过去,专注当下。