dtb文件反编译修改再编译
Linux源码的arch/powerpc/boot/dts/目录下存放了很多dts文件,可以作为参考文件。另外dtc编译器在内核源码2.6.25版本之后已经被包含进去。在2.6.26版本之后,生成blob的简单规则已经加入makefile,如下命令:
$ make ARCH=powerpc canyonlands.dtb
也可以根据自己的硬件修改好dts文件后,用下面类似命令生成dtb文件。
$ dtc -f -I dts -O dtb -R 8 -S 0x3000 test.dts > mpc836x_mds.dtb
$ mkimage -A ppc -O Linux -T flat_dt -C none -a 0x300000 -e 0 -d mpc836x_mds.dtb mpc836x_mds.dtu
‘贰’ 请教linux启动过程中dtb的作用
是如何使用dtb文件的?
我的理解是,在linux内核启动过程中会解析dtb文件,根据dtb文件中设备列表进行加注各个外设的驱动模块。不知这样理解是否正确?
答“正确,解析dtb并创建platform
device
过程请参见of_platform_populate和of_platform_bus_probe。
dtb文件中外设列表,和在linux内核中使能各个外设驱动模块(设置*或M)有什么关系?
是否可以这么理解,要想一份linux
kernel可以运行在多块板卡上,必须在linux
kernel配置中包括所有这些板卡的driver
模块,这样在linux启动过程中才能根据dtb
中的列表进行加载模块。
答:dtb里面最后被kernel解析,并创建为platform
device,
相应的
你也必须要有platform
driver
才行。
是否可以这么理解?PC机在启动时会自动扫描外设,而在嵌入式中,linux内核启动过程中只是解析dtb文件,从而加载对应的模块。
答:因为PC机基本就是暗指X86,这样X86架构上外设都是基于PCI或者PCIE总线,这类总线可以在启动的时候,动态扫描。
嵌入式里面,ARM和PowerPC,
SOC
主要的设备控制器都是基于soc总线,其不像pci/pcie总线可以动态的扫描。所以需要dtb。
是否可以这么理解?编译linux内核时必须选择某外设模块,并且dtb中包括该外设的信息。在linux内核启动过程中才能自动加载该模块。
答:对
‘叁’ dtb是什么文件怎么打开
dtb是可以减少linux内核版本数量的文件,打开方式如下:
1、首先,网络搜索框中输入UltraEdit,然后单击网络一下,如下图所示,然后进入下一步。
‘肆’ dtb是什么文件怎么打开
dtb是可以减少linux内核版本的数量的文件。同一份linux 内核代码可以在多个板卡上运行,每个板卡可以使用自己的dtb文件。
1,在linux内核启动过程中会解析dtb文件,根据dtb文件中设备列表进行加注各个外设的驱动模块。
2,PC机在启动时会自动扫描外设,而在嵌入式中,linux内核启动过程中只是解析dtb文件,从而加载对应的模块。
3,编译linux内核时必须选择某外设模块,并且dtb中包括该外设的信息。在linux内核启动过程中才能自动加载该模块。
‘伍’ 如何将dtb反编译成dts
由于device tree会将一个node的信息分布在各个文件里,查看起来很不方便,比如如下例子,ldb在三个文件中都有配置:
imx6qdl-sabresd.dtsi:
&ldb {
status = "okay";
.......
};
imx6qdl.dtsi:
ldb: ldb@020e0008 {
#address-cells = <1>;
#size-cells = <0>;
......
};
imx6q.dtsi:
&ldb {
compatible = "fsl,imx6q-ldb", "fsl,imx53-ldb";
.......
}
其实device tree编译之后最终是会被全部放在一个.dtb结尾的文件,
比如这里是imx6q-sabresd-ldo.dtb,用如下命令就可以看到整个ldb node的内容,而且也可以作为编译之后的检查。
[kris@ecovacs:~/kernel_imx/scripts/dtc]$
./dtc -I dtb -O dts ../../arch/arm/boot/dts/imx6q-sabresd-ldo.dtb > ~/f.dts
‘陆’ s905刷写Lakka一直失败 不知是什么原因 望各位大神赐教
先将盒子刷机破解取得root权限(部分盒子按复位键即可引导进卡系统),然后下载整合镜像,并把下载的文件解压为img后辍文件。
下载并安装win32diskimager中文版工具
TF卡用读卡器插到电脑上,打开win32diskimager烧录工具,映像文件选择下载好的IMG镜像,选择自己的TF卡的盘符,然后点击“写入”按钮。等待烧录进度完成即可。其他需要注意的看以下几点!
--------------------------------------------------------------------------------------------------------------------
一:烧录整合镜像是基于Q5盒子的一般都已经替换好dtb文件我们只要按上面的完成烧录即可!如果是烧录官方镜像或者整合镜像不是基于Q5盒子的就需要下载或者提取自己盒子的dtb文件改名为dtb.img替换TF卡FAT分区根目录里的dtb.img文件即可。
二:关于盒子引导进入卡系统的几种方式:
1.通过卡载系统app引导(需设备root)
2.通过复位键引导.
3.通过终端模拟器app引导(需设备root输入:su回车授权再输入reboot update回车重启即可
3.通过ttl引导(输入reboot update回车即可)
二:烧录完成后TF卡容量变成512MB(TF卡被分成两个区了:一个是FAT分区,另一个是linux分区windows系统下是看不到的,磁盘管理可以看到,这个是正常的)。
三:以上烧录方法通用于SX05RE/LAKKA/LibreELEC/UBUNTU等等卡载系统的烧录,烧录软件也不止这一个大家可以自己尝试。
后记:S905盒子还是比较小众知道的人少之又少这里推广下请大家不要介意,从今天起我会陆续更新教程,请大家可以关注下我。
文章用到的相关软件请点我 提取码:fypo
需要S905设备的可以闲鱼:闲鱼设备链接(Q5/3300M/二手/全新等)请点我
或者淘宝店铺有改装机出售:淘宝Q5改装机链接请点我
8人点赞
S905等设备使用教程
作者:摘杏的风
链接:https://www.jianshu.com/p/9db8ed37aafa
来源:简书
着作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。