玩转鲁班猫之-魔改dtb支持 Msata 存储

背景

继上个月尝鲜 Armbian之后,就逐步搭建各种生产力工具平台,这个时候小主板自带的 32GB EMMC就显得有点捉急了(羡慕隔壁家的 OrangePi的可拆卸EMMC)。尝试了几次TF卡 莫名其妙挂载异常后,决定对版上的 Mini Pcie入手。

根据野火科技官方文档的介绍

鲁班猫的mini-pcie接口除了能作为mini-pcie的功能使用外,还能作为msata接口使用,可以连接msata硬盘"

野火科技还附带了dtbo的文件挂载用。当然毫无意外,Armbian无法正常加载。需要参考 dtbo 进行魔改 Armbian的 dtb文件,于是有了本文的摸索记录。

分析官方通过dtbo开启 msata方法

dtbo文件是无法直接查看内容的。借助chatGPT工具,使用下面指令可以反解析出来dts文件

dtc -I dtb -O dts -o rk3568-lubancat-msata-overlay.dts rk3568-lubancat-msata-overlay.dtbo

文件内容如下

/dts-v1/;

/ {
	compatible = "rockchip,rk3568";

	fragment@0 {
		target = <0xffffffff>;

		__overlay__ {
			status = "disable";
		};
	};

	fragment@1 {
		target = <0xffffffff>;

		__overlay__ {
			status = "okay";
			vpcie3v3-supply = <0xffffffff>;
		};
	};

	__fixups__ {
		pcie2x1 = "/fragment@0:target:0";
		sata2 = "/fragment@1:target:0";
		mini_pcie_3v3 = "/fragment@1/__overlay__:vpcie3v3-supply:0";
	};
};

虽然格式很奇怪,但这个文件的意思是

  1. 关闭 pcie2x1 (/fragment@0:target:0
    • status = "disable"
  2. 开启 mdata (/fragment@1:target:0
    • status = "okay"

参考官方修改办法修改本地 lubancat-2.dtb

1. 找到当前系统所依赖的 dtb文件

cd /boot
cat armbianEnv.txt

2. 反编译为 dts 文件

## 备份原dtb
cp /boot/dtb/rockchip/rk3568-lubancat-2.dtb  /boot/dtb/rockchip/rk3568-lubancat-2.dtb.old

## dtb转dts 
dtc -I dtb -O dts -o /root/rk3568-lubancat-2.dts /boot/dtb/rockchip/rk3568-lubancat-2.dtb 


## 修改 rk3568-lubancat-2.dts
pcie@fe260000 ---> status = "disabled"; 
sata@fc800000 ---> status = "okay"; 

## dts转dtb 
dtc -@ -Hepapr -I dts -O dtb -o /boot/dtb/rockchip/rk3568-lubancat-2.dtb /root/rk3568-lubancat-2.dts

3. 生效

重启系统后,查看 fdisk -l 确认硬盘是否识别到

美中不足

  1. 由于Armbian自带系统dtb来自 lubancat-2,因此适配2N的设备并不完整
  2. 建议在TF卡刻录系统,当系统崩溃时,可通过 SD卡带的系统来进行挂载文件修复
  3. 修改dtb支持双2.5GB网卡还在调试中,复杂度高,容易无法正常启动。