更新固件後,一直在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";
};
};
};