Preloader bin size过大编译报错怎么办

由于需要兼容更多的emcp,mcp,discrete dram,以及由于新的需求修改preloader code都可能会增大preloader bin的size,这时就可能会在build preloader阶段发生build error,log中会报类似以下的错误信息:===================== Building Fail =========================== IMG ROM Size: 101340 bytes > 100828 bytes!! WARNING: Reduce your code size first then compile again!! ========================================================= 以上这段error log是mediatek/platform//preloader/check_size.sh这个script报出来的,脚本中会比较build出的preloader bin和PL_MAX_ROM_SIZE的value,如果build出的preloader bin size超过这个值,就会报错。你会发现这个值一般都会设置的很小,不会超过128KB,也许你很奇怪为什么要限制的这么小,请继续看[SOLUTION]部分的说明。 PL_MAX_ROM_SIZE的value的值之所以设置的比较小,是因为开机时由于external dram还未被初始化,BROM会把preloader bin整体从flash(emmc or nand)load到chip内部的shared sram中。又由于chip内部的shared sram的size一般都会很小,典型的size是128KB(MT6572/71/82/92等),MT6595是256KB,因此preloader bin的size不能超过internal shared sram的size。 同时,还需要扣除Header, GFH 以及rum time BSS段,stack等占用的ram空间,留给真正preloader bin的空间就肯定会小于internal shared sram size。 因此当发生preloader bin size过大时,请不要自己增大PL_MAX_ROM_SIZE的value,这样做虽然可以build通过,但是可能会发生无法开机等奇怪的问题,且不容易debug。 對於JB版本,目前唯一的解决方法就是严格控制兼容的emcp,mcp,discrete dram个数,同时尽量避免在preloader中添加新的feature,如果要客制化新feature的话,建议移到lk去实做。相关的FAQ请参考"[FAQ07839]【Storage】eMMC和NAND Flash的兼容个数" 對於KK版本,由於Preloader新增了對LPDDR3的支援,因此default可能無法配置出10顆兼容的mcp/emcp/discrete dram,需要參考以下的說明修改code,減少debug code佔用的size。* MT6589/72/71平台,请修改alps\mediatek\platform\$PLATFORM\preloader\src\drivers\inc\mt_pmic_wrap_init.h文件* MT6582/92平台,请修改alps\mediatek\platform\$PLATFORM\preloader\src\drivers\inc\pmic_wrap_init.h文件 具体修改code的方法是一样的:(1)#define PMIC_WRAP_DEBUG //注释掉这一行(2)#define PWRAPERR(fmt, arg...) printf(PWRAPTAG "ERROR,line=%d " fmt, __LINE__, ##arg)修改为:#define PWRAPERR(fmt, arg...) printf(PWRAPTAG "ERROR,line=%d ", __LINE__) 另外JB3.MP MT6572版本的check_size.sh脚本存在bug,size检查机制会失效,如果您发现在这个脚本中PL_MAX_ROM_SIZE定义的方法如下,那么就说明您没有打上patch,需要提e-service申请ALPS00869854这笔patch。 # Keep ROM size smaller than 90KB PL_MAX_ROM_SIZE=(95*1024)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值