一、bootloader设计蓝图
1、什么是bootloader
如果说系统内核是航天飞机的话,那么bootloader就是助推器,它带动了内核。在内核启动之前它要做许多硬件的初始化操作,来适合系统的安全启动。
2、bootloader设计方法-模仿
90%的设计从模仿开始,模仿加入自己的想法就是设计。bootloader的模仿我们一般会参照行业老大uboot。
3、uboot简介
uboot可以支持多种嵌入式cpu,例如X86、ARM、MIPS
还可以支持多种嵌入式操作系统,例如wince、linux、vxworks、QNX
uboot分为自主模式和开发模式:自主模式下,uboot的运行不需要人的参与,这往往也是产品模式。
开发模式是供开发人员使用,对uboot进行修改,来适应自己的需要。
4、uboot的查看
我们一般会使用sourceinsight来查看相对比较大的程序,它可以自动定位函数位置。这方便了我们的查找。
二、ARM的启动流程
为什么要关心ARM的启动流程
这是因为软件的设计要遵循硬件的要求。满足硬件的一些要求。
主要从三个方面进行介绍:1、启动方式 2、地址布局 3、启动流程
几点说明:一上电,处理器会从0地址开始读取指令并执行。 Nandflash不参与统一编址。
2440:
1、启动方式:Norflash Nandflash
2、内存地址从00x30000000开始
3、启动流程(来自手册):s3c2440A boot code can be executed on an external NAND flash memory. In ord