rk3368 Android9.0 升级固件后,一直在recovery界面

升级rk3368设备到Android9.0后,设备一直停留在recovery界面。问题源于在recovery模式下找不到misc和cache分区。通过串口日志发现缺少块设备。解决方法是利用Android9的设备树叠加层功能,修改dts文件以启用nandc并更新boot_devices属性,使init程序能正确识别分区信息。

升级固件后,一直在recovery界面

Platform: RK3368
OS: Android 9.0
Kernel: 4.4.194

1. 串口日志

E:Failed to mount /cache: No such file or directory
E:Failed to set BCB message: failed to stat /dev/block/by-name/misc try 1: No such file or directory
E:failed to stat /dev/block/by-name/misc try 2: No such file or directory
E:failed to stat /dev/block/by-name/misc try 3: No such file or directory
E:failed to stat /dev/block/by-name/misc try 4: No such file or directory
E:failed to stat /dev/block/by-name/misc try 5: No such file or directory
E:failed to stat /dev/block/by-name/misc try 6: No such file or directory
E:failed to stat /dev/block/by-name/misc try 7: No such file or directory
E:failed to stat /dev/block/by-name/misc try 8: No such file or directory
E:failed to stat /dev/block/by-name/misc try 9: No such file or directory
E:failed to stat /dev/block/by-name/misc try 10: No such file or directory
E:failed to stat /dev/block/by-name/misc
E:
E:Failed to mount /cache: No such file or directory
E:Can't mount /cache/recovery/last_locale

通过日志可知是在recovery模式下misc,cache等分区找不到,通过串口执行命令ls /dev/block/,发现确实没有块设备.

2. 解决方法

Android9支持提前装载分区,设备可以使用设备树叠加层 (DTO) 为提前装载的分区指定 fstab 条目。所以不用修改recovery.fstab了.
修改当前dts,由于调试的设备是nand flash,而SDK默认是EMMC,所以需要开启nandc,把emmc关闭;

&emmc {
	bus-width = <8>;
	cap-mmc-highspeed;
	mmc-hs200-1_8v;
	supports-emmc;
	disable-wp;
	non-removable;
	num-slots = <1>;
	pinctrl-names = "default";
	pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
	status = "disabled";
};

&nandc0 {
	status = "okay";
};

开启nandc还不够,这只是解决recovery中块设备不存在的问题,不会有/dev/block/by-name目录,还需要在firmware_android节点中添加boot_devices = “ff0f0000.dwmmc,ff400000.nandc”;这样init程序才能找到正确的分区信息;

&firmware_android {
	compatible = "android,firmware";
	boot_devices = "ff0f0000.dwmmc,ff400000.nandc";
	vbmeta {
		compatible = "android,vbmeta";
		parts = "vbmeta,dtbo";
	};
	fstab {
		compatible = "android,fstab";
		vendor {
			compatible = "android,vendor";
			dev = "/dev/block/by-name/vendor";
			type = "ext4";
			mnt_flags = "ro,barrier=1,inode_readahead_blks=8";
			fsmgr_flags = "wait,avb";
		};
	};
};
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值