bootloader

Nand flash不能片上执行(page读写 NFB_ReadPhysicalPage, NFB_ProgramPhysicalPage, block擦除 NFB_ErasePhysicalBlock),故需要bootloader.

MTK平台关于bootloader的代码,可参考bl_bootarm.s, bl_main.c, bl_init.c

bl_bootarm.s:

1. 中断向量表, reset handler...

2. disable IRQ&FIQ

3. INT_InitEMIInitCode, Initialize the EMI setting related code regions

4. SetPLLEMI, custom_InitDRAM

5. PreserveExtBootloaderHeader, To remove some information before regionInit, or it will be destroyed

6. GenerateRandomSeed

7. InitRegions

8. Init

9. LoadExtBootloader, VerifyExtBootloader

10. ExtBootloader

 

bl_man.c

ExtBootloader:

1. LoadImageListblock

2. CacheInit

3. BootAndHandOver

   1). LoadPrimariMAUI

   2). RemapCmd

   3). jump_cmd

 

 

MTK代码的加载:

1. Extbootloader是由bootloader加载的, 即bl_bootarm.s中LoadExtBootloader

2. First ROM(及少数secu方面的)是由Extbootloader加载的, 即LoadPrimariMAUI

3. Second ROM(及CUST ROM,STUDY PARA, CUST PARA, SECU等)是由First ROM中的Application_Initialize中的NFB_LoadingSecondaryMAUI加载的      (Nand Flash进度条显示的时候)

4. Third ROM及demand paging是调用到才加载进RAM的(两者机制可能不一样, 留待以后研究)

 

 

INC_Initialize 初始化nucleus各组件(QUI--Queue, SMI--Semaphore, MBI--mail box, PII--pipe, EVI--event group, PMI--partition memory, DMI--dynamic memory, TMI--timer , IOI--io Driver, ERI--error handling, HII--history, TCI---thread control...)

之后Application_Initialize留给客户

最后TCT_Schedule

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值