斐讯 N1 Armbian 低负载 dtb 编译

前言

斐讯 N1 刷入 Armbian 固件后,使用镜像自带的 dtb 文件会导致负载居高不下,解决方案是替换为大佬们编译的低负载 dtb 文件。然而对于刚刷最新固件的我,正为找不到相关的 dtb 文件而发愁。那么旧版固件的 dtb 是否可以用在新版固件上?或者能不能自己编译呢?这些问题促使了我进行了一系列的探索。

分析 dtb 文件

刷完最新版(5.98)固件,直接使用镜像自带 dtb 文件开机后负载一路飙升。所以确实有必要对 dtb 文件进行替换。

为了弄清楚镜像自带 dtb 和大佬编译的 dtb 到底有什么区别,我提取了旧版本(5.97)固件中的 dtb 文件和相关低负载 dtb 文件,对它们进行了反编译。对比发现只是注释了一行代码,所以可以肯定这行代码就是解决高负载问题的关键。

然后对比了5.98版与5.97版自带的 dtb 文件,结果是相同的。这说明5.98版的 dtb 文件相对于5.97版没有进行过改动,那么它们的低负载 dtb 文件理论上可以通用。也就是说在自带 dtb 文件相同的情况下,低负载 dtb 文件不论版本都是通用的。

不过考虑到后续版本 dtb 文件可能会发生变化,那么自行编译低负载 dtb 文件才是正确的选择。所以我并没有直接使用已有的低负载 dtb 文件,而是进行了一次编译尝试。

编译低负载 dtb

  • 反编译固件自带的 dtb 文件
dtc -I dtb -O dts -o n1.dts /boot/dtb/amlogic/meson-gxl-s905d-phicomm-n1.dtb
  • 对反编译出的n1.dts文件进行编辑,修改关键代码
vim n1.dts
也可使用 SFTP 工具取回到 PC 再进行编辑。
  • 编译修改后的 dtb 文件
dtc -I dts -O dtb -o n1.dtb n1.dts
  • 覆盖固件自带的 dtb 文件
cp n1.dtb /boot/dtb/amlogic/meson-gxl-s905d-phicomm-n1.dtb
  • 重启
reboot

验证结果

重启开机后负载逐渐在下降。

经过几分钟的等待,负载降到了0。

尾巴

只要找对了方法和突破口,有些事远比你想象的简单。

参考资料

反编译及编译方法来源

对比的 dtb 文件来源

添加新评论

已有 8 条评论

反编译好几条警告,博主可否放个编译好的?Armbian_5.98_Aml-g12_Debian_buster_dev_5.4.0-rc4_20191025.img.xz,有劳了。

警告是正常的,只要不是报错,文件能打开就没问题。这个最新版的内核不是正式版,建议你用8号发的那个版本,dtb 可以用文章最下面参考资料引用的帖子里的。

Leo Leo 回复 @P3TERX
0 0

好的,回家在刷一遍,谢谢。

Leo Leo 回复 @P3TERX
0 0

另外,请教下,博主的Linux 都是自学的吗?有什么建议吗?小白,接触很久了,进展缓慢。

自学的,也只是略懂。要多实践。

Leo Leo 回复 @P3TERX
0 0

太谦虚了。

谢谢大大分享,我想问下,这个dtb可以用于coreelec吗???coreelec的负载也好高
或者大大有coreelec的吗?

P3TERX P3TERX 回复 @A1exander
0 0

没有,你可以按照我这个思路去试一下。