嵌入式系统bootl过程

来源:互联网 发布:浮雕软件 编辑:程序博客网 时间:2024/04/30 23:43

      工作几年陆陆续续接触了一些平台系统,在新板子更改了DDR\Norflash等硬件后引导都容易出现问题,就是常说的烧录不进去、系统跑不起来。所以虽然bootloader一般改动不大,但开发人员还是有必要去理解掌握它--系统生命周期必不可缺的一环。

在讨论嵌入式系统boot初期,先得理解各种内存:

ROM(read only memory)只读内存,掉电不丢失数据。由于贵、写入慢,常用存一些不易改变的固件、数据类。比如E2PROM,可擦除可编程,比如蓝牙芯片中用来存储蓝牙地址,以byte为擦除单位。

RAM(random access memory)又分两种:

静态RAM,static RAM,又称SRAM,目前读写最快的存储器,贵,一般作为CPU的一级缓存。

动态RAM,dynamic RAM,又称DRAM,最常见的有SDRAM\DDR\DDR2\DDR3。现在的嵌入式一般配备DDR加外部flash。

FLASH(闪存)同时结合了RAM和ROM的特点,掉电不丢数据,写入速度比ROM快,价格也合适,是目前嵌入式固件、数据存储的首选。常见的有Nandflash、Norflash:

Norflash,内存随机读取,写入擦除慢,读取快,无坏块,用户可以直接运行里面的程序,也有RAM\Nor一体的芯片。好处是读写时序和SRAM一样,比较简单。

Nandflash,块读取,写入擦除略快,便宜。容易产生坏块,需要有坏块管理工具。用Nandflash来存储操作系统时,烧录环节会快一些。读写通过I0复用+命令的形式,代码量大一些。

-----------------------肚子刚存入午饭的分割线----------------------


最先接触到的是三星的S5PV210平台,DDR2+Nandflash。

大家都知道,系统上电或复位时,CPU一般从0x00000000地址读第一条指令,而某类固态存储设备会被映射到这个地址上来,厂家出厂前已经在该处固化了一段程序,这部分就是系统bootloader的入口。称为iRom。

通常多阶段的BL能提供更复杂的功能和更好的移植性,S5PV210是 3 阶段的启动过程:IROM(Boot Loader 0);Boot Loader 1 ; BootLoader 2 。


     整个过程中,IROM是最先被运行的,它会首先做一些初始化,具体IROM的流程如下:

 1. 禁用Watch-dog

 2. 初始化指令Cache

 3. 初始化栈区域

 4. 初始化堆区域

 5. 初始化设备拷贝函数,用于拷贝BL1到SRAM中

 6. 初始化PLL和设置系统时钟

 7. 拷贝BL1到SRAM中

 9. 验证BL1

9. 检查是否为secure-boot,如果YES,检查BL1的完整性

10. 跳转到BL1的起始地址



0 0
原创粉丝点击