ophub / amlogic-s9xxx-armbian

Support for Armbian in Amlogic, Rockchip and Allwinner boxes. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588, rk3568, rk3399, rk3328, h6, etc.
GNU General Public License v2.0
5.8k stars 1.86k forks source link

请教如何替换DTB文件? #2385

Closed Chinajy closed 2 months ago

Chinajy commented 2 months ago

Device Information | 设备信息

Describe the bug | 问题描述 op大佬你好,我买了一块开发版,准备用来安装Pikvm,作为台式机电脑的带外管理。但是这块开发版,官方只提供了Ubuntu20.04版本,官方镜像下载地址为:https://www.t-firefly.com/doc/download/54.html。 具体地址为:https://pan.baidu.com/s/1e05PTHrLkEHGkAd0sweQUA?#list/path=%2F,密码为1234。 经过一番查询,安装Pikvm需要armbian系统Jammy版本以上才行。 又经过一番查询,发现了op大佬你编译的armbian系统,有Firefly-RK3399版本的镜像。下载下来,顺利刷入,但是USB2.0无法使用。 尝试过直接替换DTB文件,发现无法启动。尝试过反编译称DTS文件修改,发现无法启动。 故来请教大佬,如何使用官方系统的DTB文件,编译armbian系统? 查询了好久好久,还是无从下手。希望大佬给出解决方案。 跪谢大佬! 以下为官方的DTB文件。 rk3399-firefly-aioc-ai.zip

ophub commented 2 months ago

https://github.com/unifreq/linux-6.1.y/tree/main/arch/arm64/boot/dts/rockchip

这是dts源文件,你看armbian使用的是哪个,编辑这个dts源文件后重新编译测试。在armbian里使用下面的命令可以编译内核。

# 更新本地依赖
armbian-kernel -u

# 初次编译使用这个命令
armbian-kernel -m dtbs -k 6.1.95

# 把你修改好的dts文件放在这个目录里覆盖同名的文件:arch/arm64/boot/dts/rockchip
# 使用 -a false 命令直接使用本地的源码编译,不再拉取仓库避免覆盖了你手动修改的dts
armbian-kernel -m dtbs -k 6.1.95 -a false

armbian里编译内核的方法和相关参数的解释 https://github.com/ophub/amlogic-s9xxx-armbian/tree/main/compile-kernel

Chinajy commented 2 months ago

op大佬,我是小白,只会使用,不会修改编译,不会根据参数修改DTS文件,只会把USB部分全部复制过去。o(╥﹏╥)o 所以我想请教的是,我有官方的DTB文件,我如果使用大佬的仓库,GitHub Action在线编译属于我这块板子的armbian?有没有教程之类的文档? 比如,我把官方DTB文件放在哪个目录下,我需要修改什么参数,然后我就能在线编译属于我这块板子的armbian?

Chinajy commented 2 months ago

我用的是大佬编译的rk3399-firefly这个镜像,USB2.0不能用。想着用官方的DTB文件,能全部驱动起来用。但是不知道怎么替换、修改、编译。

ophub commented 2 months ago

https://github.com/unifreq/linux-6.1.y/blob/main/arch/arm64/boot/dts/rockchip/rk3328-beikeyun-1296mhz.dts#L259-L325

参考现在的案例,添加 USB PHY 节点,配置 USB 节点,配置 GPIO 引脚,具体的值可以参考ubuntu里dtb反编译后看到的结果,或者你查看他的官方原理图。

Chinajy commented 2 months ago

大佬 我不会看具体的值啊~o(╥﹏╥)o 大佬 举例来说,你编译的armbian镜像: Armbian_24.8.0_rockchip_firefly-rk3399_jammy_6.1.93_server_2024.06.15.img.gz ,使用的是rk3399-firefly.dtb。 我怎么编译armbian镜像,使用官方提供ubuntu系统里提取的DTB文件?DTB文件为附件。 rk3399-firefly-aioc-ai.zip

ophub commented 2 months ago

使用armbian使用的内核源码,具体的值可以参考ubuntu里dtb反编译后看到的结果,修改dts添加USB的设置。

eagle-lk commented 2 months ago

Device Information | 设备信息

Describe the bug | 问题描述 op大佬你好,我买了一块开发版,准备用来安装Pikvm,作为台式机电脑的带外管理。但是这块开发版,官方只提供了Ubuntu20.04版本,官方镜像下载地址为:https://www.t-firefly.com/doc/download/54.html。 具体地址为:https://pan.baidu.com/s/1e05PTHrLkEHGkAd0sweQUA?#list/path=%2F,密码为1234。 经过一番查询,安装Pikvm需要armbian系统Jammy版本以上才行。 又经过一番查询,发现了op大佬你编译的armbian系统,有Firefly-RK3399版本的镜像。下载下来,顺利刷入,但是USB2.0无法使用。 尝试过直接替换DTB文件,发现无法启动。尝试过反编译称DTS文件修改,发现无法启动。 故来请教大佬,如何使用官方系统的DTB文件,编译armbian系统? 查询了好久好久,还是无从下手。希望大佬给出解决方案。 跪谢大佬! 以下为官方的DTB文件。 rk3399-firefly-aioc-ai.zip

我做过类似的事情,建议你参考我的求助帖

我的总结是:

  1. 如果只是跑个应用,建议你买成品板,要求提供所需的适配;
  2. 最好能获得官方的dts文件。现成的dtb并不能保证在armbian下能够使用,因为从dts编译为dtb,是有环境依赖的;特别是很多dtb实际是给Android系统使用的;
  3. 如果dts和dtb都没有可靠来源,只能尽量找一款硬件类似,已经有支持版本的固件下载,然后反复尝试验证。这需要非常的耐心和十足的运气。