EDN China > 设计实例 > 嵌入式系统 > 参考设计 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图)基于cortex-A8的Bootloader设计

叶茂?? 李智?? 任和?? 2015年05月06日 ?? 收藏4
随着整个微电子行业日新月异的发展,ARM处理器已经带给了人们越来越多的惊喜。目前它凭借着自身高性能,低成本,低功耗等特点,已经广泛应用于消费电子、数字家电、及工业生产等领域中。ARM公司推出的新一代cortex系列产品为开发人员提供了更多不同层面的选择。cortex-A8为cortex系列中的“A”系,属于ARMV7架构,主要面向搭载操作系统的,高性能的应用领域。Bootloader是系统上电后执行的第一段代码,其功能类似于电脑的BIOS。简单来说,Bootloader主要的工作有两点:其一是初始化底层硬件资源,为操作系统启动提供必要的环境;其二是从存储设备中读取操作系统镜像并启动。但为了方便后期开发,我们往往要为Bootloader添加其他的功能。如支持串口打印调试信息,支持nfs网络下载,支持根文件系统烧写等。本文以u-boot-2013.01为源码包,设计和实现了一个基于s5pv210平台的,功能齐全且高效稳定的Bootloader。

1 硬件平台

1.1 s5pv210简介

s5pv210是三星公司推出的一款基于cortex-A8架构的,高性能的应用处理器。该处理器支持ARM V7指令集,具有32位内部总线结构,主频最高可达1GHz。另外该处理器还支持挂接LPDDR1、LPDDR2和DDR2类型的RAM,Flash方面可选择Nand Flash,Nor Flash等。不仅如此,该处理器还提供了包括串口、LCD、IIC、SPI、USB、HDMI等丰富的外部接口资源。目前s5pv210以其高效的性能和卓越的图形处理能力已经广泛的应用于智能手机和平板电脑之中。

1.2 s5pv210的启动方式

s5pv210支持多种启动方式,下图为s5pv210启动的流程图:

图1  s5pv210的启动流程
图1 s5pv210的启动流程

s5pv210的启动过程由BL0,BL1和BL2(BL为Bootloader的简称)三部分代码实现,其中BL0在出厂时已经被固化到64KB的iROM中。s5pv210上电后首先执行BL0,该段代码主要负责一些简单的初始化工作,如关看门狗,初始化ICache等。然后BL0会根据硬件设置判断为何种方式启动,并将BL1从启动设备(OneNand,Nand Flash,USB,UART,SD card等)拷贝到Internal SRAM的BL1区中。最后BL0会比较一个校验值,如果相等则跳转到BL1中继续执行,否则转入其他启动方式。该校验值存在BL1的头部中,其大小为16字节。

开发人员一般会单独编写一个工具对BL1编译出的二进制文件添加头部。其校验值(checksum)的计算方法如下:

...

a = Buf + SPL_HEADER_SIZE;

for(i = 0, checksum = 0; i < IMG_SIZE - SPL_HEADER_SIZE; i++) {

checksum += (0x000000FF) & *a++;

}

...

BL1的完整结构如下:

BL1的完整结构如下

由于BL1的大小被限制为16K,所以一般情况下BL1负责的工作也不多。BL1在被执行后首先初始化系统时钟、内存、串口等。然后将BL2代码拷贝到Internal SRAM的BL2区中并跳转执行。实际上SRAM的BL2区的大小只有80K,但很多情况下BL2代码的大小远远超过80K,所以将BL2代码拷贝到SRAM中意义不大。更好的做法是直接将BL2拷贝到容量更大的内存中,不过在拷贝之前一定要先初始化好系统时钟和内存。

BL2是整个Bootloader的主体部分,因此它需要完成更多的初始化工作,例如初始化网卡,Flash等。之后BL2读取操作系统镜像到内存中运行。我们一般把操作系统镜像放到Flash上,也可以放到SD卡上,根据具体的开发平台而定。

【分页导航】


上一页12345下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

cortext-A8? Bootloader设计? s5pv210?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈