码迷,mamicode.com
首页 > 其他好文 > 详细

AOSP5.0换8G eMMC不能开机问题

时间:2015-06-30 18:19:27      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:emmc aosp 安卓 memory

AOSP5.0 MT6572平台,用H9TP32A4GDBCPR_KGM这颗4G的eMMC就可以,但是用H9TP65A8JDACPR_KGM这个8G的就开不了机,一直是重启,用串口抓LOG发现下面这个东东:

[    2.028532]<1>.(0)[6:kworker/u4:0]total reserve: l_otp_reserve = 0x0 blocks, l_mtk_reserve = 0xa800 blocks, l_offset = 0x7fd000 blocks

[    2.028538]<1>.(0)[6:kworker/u4:0]l_reserve = 0x807800

[    2.030884]<1>.(0)[6:kworker/u4:0][mmc_blk_probe]: mmcblk0 by manufacturer settings, quirks=0x10000000

[    2.032043]<1>.(0)[65:mmcqd/0]msdc0 -> Address offset in USER REGION(Capacity 7456 MB) is 0xffffd000 <- msdc_cal_offset() : L<2574> PID<mmcqd/0><0x41>

[    2.032057]<1>.(0)[65:mmcqd/0]msdc0 -> XXX Address offset error(-12288),please check MBR start address!! <- msdc_cal_offset() : L<2576> PID<mmcqd/0><0x41>

[    2.032075]<1>-(0)[65:mmcqd/0][KERN Warning] ERROR/WARN forces debug_lock off!

[    2.032079]<1>-(0)[65:mmcqd/0][KERN Warning] check backtrace:


根据上边“Address offset error”这个错误信息,定位代码到:...h10\kernel-3.10\drivers\misc\mediatek\mmc-host\mt6572\sd.c文件

技术分享技术分享

开机正常的4G的eMMC的串口log如下:

[    2.016319]<0>.(1)[58:kworker/u4:1][mmc_blk_probe]: mmcblk0 by manufacturer settings, quirks=0x10000000

[    2.017554]<0>.(1)[65:mmcqd/0]msdc0 -> Address offset in USER REGION(Capacity 3696 MB) is 0x0 <- msdc_cal_offset() : L<2574> PID<mmcqd/0><0x41>

[    2.020739]<0>.(0)[1:swapper/0]warning init time too long!

[    2.021471]<0>.(0)[1:swapper/0][pdev] mtk-msdc

感觉应该是这里出了问题。结合代码分析,应该是MBR_START_ADDRESS_BYTE这个宏定义应该有问题,这个宏是......h10\bootable\bootloader\preloader\tools\emigen\MT6572\MemoryDeviceList_MT6572.xls这个文件中emmc_region表格Boot1(KB)+Boot2(KB)+RPMB(KB)的值。有人说在......h10\device\mediatek\build\build\tools\ptgen\MT6572\mbr_addr.pl中改MBR_Start_Address_KB就行,但是我试了试不行的,不知道为何。


在解决问题过程中查到一下几篇文章,可供参考,留作以后学习:


1、关于mt6572不能开机问题 - Tracy Mcgrady的专栏 - 博客频道 - CSDN.NET

刚接触mtk的平台,就遇到一个问题,新代码配置好flash之后,烧写到板子上,系统不能够正常启动,配置串口为115200,只能得到如下信息:

[DL] 00001388 00000015 010301F0: 1028 0000F3: 0000 0000V0: 0000 0000 [0001]00: 1027 000201: 0000 0000BP: 0000 0051G0: 0090 0003T0: 0000 1499EC: 0000 0080 [0000]Jump to BL

一直循环打印这段信息,也没有太多信息输出。不是吧,连preloader都没进入,因为之前看过一点preloader的代码,至少也有几个print函数,难道flash配置有问题,或者是ddr配置的问题,查找了一下代码,也没有看见哪里配置ddr(后来才知道ddr和nand flash是一个模块)。后来也没有找到原因,都快要放弃了的时候,在网上找到了同样的问题,修改mediatek/custom/projec_dir/preloader/inc/cust_bldr.h文件,修改部分如下:

-#define CFG_UART_LOG                (UART2)+#define CFG_UART_LOG                (UART1)

也就是log信息改成从UART1输出,波特率为921600,重新编译烧写preloader之后,preloader的信息得到了,输出信息的最后发现了问题,问题如下:

[EMI] no flash ID match, no DRAM info match ! mt_emi.c:line 1048 0PL fatal error...PL delay for Long Press Rebootpl pmic powerkey Release[PLFM] emergency download mode(timeout: 5s).mtk_arch_reset at pre-loader!

哦,preloader是进入了的,也就是说并不是之前想象的停留在mtk rom当中,还是跳转到了preloader中,只是flash没有匹配正确,造成preloader不断重启,再重新配置好flash之后,系统启动起来了。
这里也有一点疑问,如果说flash都配置不正确的话,那么烧写也应该是不能成功的,难道preloader执行下载模式时不检测flash ID?


2、[FAQ08871]更换新(eMCP)emmc之后无法开机


[DESCRIPTION]
当更换一款新的emmc之后,尤其是更换的这款emmc容量较大,例如16G等等,会发现无法开机。
查看kernel log会有如下类似的错误信息:
[MSDC] msdc0 -> Address offset in USER REGION(Capacity 15032 MB) is 0xffffd000 <- msdc_cal_offset br style=‘font-size:14px;font-style:normal;font-weight:normal;font-family:Tahoma;color:rgb(51, 51, 51);‘ />L<2937> PID<0x40>
[MSDC] msdc0 ->  XXX Address offset error(-12288),please check MBR start address!! <- msdc_cal_offset br style=‘font-size:14px;font-style:normal;font-weight:normal;font-family:Tahoma;color:rgb(51, 51, 51);‘ />L<2939> PID<0x40>
[SOLUTION]
例如更换H9TP17ABLDMCNR_KGM_MMD2之后出现问题。
1、先去alps/mediatek/build/tools/emigen/MT65XX/MemoryDeviceList_MT65XX.xls里面的emmc_region页中寻找
H9TP17ABLDMCNR_KGM_MMD2所对应的BOOT1+BOOT2+RPMB的size总和(例如4096+4096+4096 = 12288)。
2、如果在emmc_region中找不到H9TP17ABLDMCNR_KGM_MMD2,但是可以找到H9TP17ABLDMCNR_KGM,则需要
H9TP17ABLDMCNR_KGM这行新复制到新的行,并将新复制出来的那行第一列名字修改为H9TP17ABLDMCNR_KGM_MMD2
3、打开alps/mediatek/config/project_name/mbr_addr.pl,查看$MBR_Start_Address_KB的值(例如6144),如果
$MBR_Start_Address_KB < BOOT1 BOOTRPMBsize MBR_Start_Address_KB ="
BOOT1+BOOT2+RPMB的size总和($MBR_Start_Address_KB = 12288)
4、修改之后重新build new


版权声明:本文为博主原创文章,未经博主允许不得转载。

AOSP5.0换8G eMMC不能开机问题

标签:emmc aosp 安卓 memory

原文地址:http://blog.csdn.net/xiaocaohuyang/article/details/46698371

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!