一、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 order to support nand flash bootloader, the s3c2440A is equipped with an internal SRAM buffer called "steppingstone". When