|
MTK6235的(nand+sdram),采用nand boot架构(multi-bin),normal power up的过程大致是:
1:reset,从emi获取预定义的一条跳转指令,pc指向内部rom
2:内部rom程序跑起来后,做简单c运行环境初始化,以及外部io初始化.
3:寻找nand boot loader,并校验是否正确,若找到,则load nand boot到 sdram(开始空间为第一个image的执行域意外的空间)
4:执行nand boot,装载手机运行所需要的第一个rom.以及其他一些必要的初始化.
5:跳转到上述装载的rom的执行域,开始执行程序.
6:又开始做很多的初始化,这时用户可以看见开机logo.并且开始装载程序的第二个rom.
7:装载好第二个rom之后,程序的控制权交给os,后面程序就全面跑起来了(各个task初始化,...)
我有个疑惑:
程序运行需要的第三个rom(DEMAND_PAGING_ROM0),是怎样装载运行的?我看有很多的用户ui res,以及部分的程序都是在这个load 域内的,并且这个load域以及执行域的地址都在0xf2000000,这个地址空间不是mtk,reverse的没有用到的,如何访问到这个地址的?
我刚接触mtk,不熟.请高人解惑. |
|