Preloader bin size过大编译报错怎么办
答案:1 悬赏:80 手机版
解决时间 2021-03-18 16:06
- 提问者网友:风月客
- 2021-03-18 10:23
Preloader bin size过大编译报错怎么办
最佳答案
- 五星知识达人网友:街头电车
- 2021-03-18 10:44
由于需要兼容更多的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去实做。相关的F
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯