天天看點

rk3368 Android9.0 更新固件後,一直在recovery界面更新固件後,一直在recovery界面

更新固件後,一直在recovery界面

Platform: RK3368
OS: Android 9.0
Kernel: 4.4.194
           

文章目錄

  • 更新固件後,一直在recovery界面
    • 1. 序列槽日志
    • 2. 解決方法

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";
		};
	};
};