android 無法開機的uart log淺析
類似complex R/W mem test fail 在preloader階段掛掉,請和弊司聯絡;
[SD0] DAT CRC error,請打patch:ALPS00787669;
NAND項目:
init: command r=-1 ' mount ubifs ubi@system /system wait'
init: command r=-1 ' mount ubifs ubi@userdata /data nosuid nodev wait'
init: command r=-1 ' mount ubifs ubi@cache /cache nosuid nodev wait'
eMMC項目:
init: command r=-1 ' mount ext4 /emmc@android /system noatime ro remount wait'
init: command r=-1 ' mount ext4 /emmc@usrdata /data noatime nosuid nodev wait noauto_da_alloc,discard'
init: command r=-1 ' mount ext4 /emmc@cache /cache noatime nosuid nodev wait noauto_da_alloc,discard'
出現類似NAND項目或者eMMC項目的任一條錯誤,請按照[FAQ05169] [Storage]如何從手機上readback任意分區的image回來
的說明read back對應的分區資料;對於NAND項目,需要page only和page +spare兩種方式
log中出現Exception stack,則請提供對應版本的symbols(須與抓取log的問題機器中版本為同一次編譯產生):\kernel\out\vmlinux
其他說明:
[SD0] SET_CLK(52000kHz): SCLK(50000kHz) 表示eMMC在preloader階段工作在52MHZ
msdc0 -> !!! Set<200000KHz> Source<200000KHz> 表示eMMC在kernel階段工作在200MHZ
對於log中出現data crc error,time out的情況,時常需要對eMMC的工作頻率進行降低,pl、lk和kernel階段的clk設定分別為
\mediatek\platform\mt6×××\preloader\src\drivers\msdc.c
void msdc_config_clock(struct mmc_host *host, int ddr, u32 hz)
\mediatek\platform\mt6×××\lk\msdc.c
void msdc_config_clock(struct mmc_host *host, int ddr, u32 hz)
\mediatek\platform\mt6×××\kernel\drivers\mmc-host\sd.c
static void msdc_set_mclk(struct msdc_host *host, int ddr, u32 hz)
對應的降頻處理修改點為下面三支檔案去除MSDC_UHS1,可以查看patch:ALPS00787669的修改來進一步理解:
\mediatek\custom\project\lk\cust_msdc.c
\mediatek\custom\project\preloader\msdc_cust.c
\mediatek\custom\project\kernel\core\src\board.c