我爱捡垃圾:小黄鱼垃圾盒子,提取DTB文件

我爱捡垃圾:小黄鱼垃圾盒子,提取DTB文件
2021年09月14日 18:33 什么值得买

作者:男勃丸儿

【写作说明】:网上找来找去,奈何我搜断腿也没有一篇文章讲清楚该如何提取盒子的DTB文件。找到的也只是一些模糊的描述。让人摸不着头脑。为了方便大家提取DTB文件,少走弯路,我把这次我盒子提取DTB的方法详细的介绍一下,也顺带把这两天摸索、折腾的东西记录一下。

PS:本篇内容,纯属自己瞎折腾出来的方法。

DTB文件介绍:

说起电视盒子就得提到安卓系统,说道安卓系统就不得不提及Linux。Linux其实才是整个安卓系统运行的基石。这也就是文章为什么用Linux小企鹅做头图。

作为一个合格的垃圾佬,你可千万别说第一次看那个萌萌的小企鹅感到眼生。其实呢,它才是最火爆的企鹅,运行于各个平台,小到电饭煲、刷卡机、路由器,大到航母、飞机、导弹、卫星、空间站……,数量&&作用之重比咱的国产企鹅……可牛皮多啦。你没听说过电饭煲里或者战斗机上,按装QQ的吧?

你:歪~!电饭煲!米饭好了没?

电饭煲:快了…等我跟这个网友聊完,马上煮饭…

正以为Linux的迅猛发展,内核维护者尽力想linux kernel支持更多的硬件平台,导致一段时间后, linux kernel中存在大量的特殊的板级细节相关的源码。一个内核实现,却关注了具体板级细节的东西,这对linux kernel的长远规划是一种伤害。

以至于让Linux之父:Linus都发出了怒吼:

那最后咋解决的这个事呢?那就是dtb文件的作用了。

dtb 全文 dtb - device tree blob--设备树二进制文件

使用DTB文件 可以减少内核的版本数。比如同一块板子,在外设不同的情况下不使用dtb文件需要编译多个版本的内核。当使用dtb文件时同一份linux 内核代码可以在多个板卡上运行,每个板卡可以使用自己的dtb文件。

介绍就到这里吧,这个网上也都有更详细的介绍,这里简单提一下就行了。

毕竟提到了Linus这位暴躁老哥,就想起了他的名言↓,不得不早点结束啰嗦的话:

“Talk is cheap,show me the code!!!!”    

1,dt.img文件的解压&提取:

盒子刷机包中,找到.dtb文件结尾的,我这个固件包中能找到有两个kernel.dtb和meson1.dtb 经过比较,这俩其实是一样的。

接下来将kernel.dtb命名为kernel.zip并打开,将其中的dt.img文件提取出来。这个dt.img就是完全解压状态的dtb文件了。

2,dt.img文件的二进制构成分析:

我们分析一下这个文件,使用文本编辑器16进制方式打开这个文件:

可以看到,开头的四个字节,被定义为了AML_也就是晶晨自己的名字。

再往后,四个字节0x0A是说明这里包含10个dtb文件,

再往后,四个字节0x02是说明版本号是v2。

再往后,出现了第一个名字是 gxl_p211_1g,后边跟着dtb文件的起始地址是0x800,文件大小是0x9800。

总结一下:

去0x800地址看一下:

不错,正是一个dtb文件的起始地址。

0x800+0x9800=0xA000 正是下一个dtb文件的起始地址。

那么把0x800->0xA000这一块数据复制出来,做成一个新的文件。那么就是一个单独的dtb文件了。

3,dtb文件的解包:

使用 AMLogicTools工具,bin 目录下的dtc.exe即可将dtb文件和dts文件相互转换:

DTB --> DTS

dtc.exe -I dtb -O dts gxl_xxxx.dtb -o gxl_xxxx.dts

DTS -> DTB

dtc.exe -I dts -O dtb -o gxl_xxxx.dtb gxl_xxxx.dts

以下,是我提取到的所有的E900-V21C中的所有dtb文件:

链接

提取码:qkt1

总结

Linux  YYDS!!

什么值得买APP 全网实时购物好价优惠

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部