您的位置 首页 被动

根据cortex-A8的Bootloader规划

基于cortex-A8的Bootloader设计,随着整个微电子行业日新月异的发展,ARM处理器已经带给了人们越来越多的惊喜。目前它凭借着自身高性能,低成本,低功耗等特点,已经广泛应用于消费电子、数字

跟着整个微电子职业一日千里的开展,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,该段代码首要担任一些简略的初始化作业,如关看门狗,初始化%&&&&&%ache等。然后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卡上,依据详细的开发渠道而定。

2 软件渠道

2.1 U-Boot介绍

U-Boot(全称Universal Boot Loader)是Bootloader的一种,其他常见的Bootloader还有RedBoot,vivi等。与之比较,U-Boot具有代码开源,可靠性和扩展性较高级长处。别的,关于类似于Nand Flash、Nor Flash、网卡、LCD等硬件资源的,U-Boot现已笼统出与硬件渠道无关的代码作为设备驱动源码供给给开发者。关于与硬件渠道相关的代码,U- Boot将其界说成宏,并保留到配置文件中。开发者往往只需求修正这些宏的值就能成功运用这些硬件资源,这让咱们的移植作业变得非常简略。

2.2 U-Boot中几个比较重要的源文件

U-Boot的源码包包含有上千个源文件,但经过剖析之后,能够找出如下几个比较重要的源文件(括号中为该源文件地点源码包的方位)。

(1)start.S(arch\arm\cpu\armv7\start.S)

经过剖析U-Boot的链接文件能够发现,start.S是U-Boot上电后被履行的榜首个源文件。该源文件包含界说了反常向量进口,相关的全局变量,禁用L2缓存,封闭MMU等,之后跳转到lowlevel_init()函数中持续履行。

(2)lowlevel_init.S(board\samsung\smdkv210\lowlevel_init.S)

该源文件相同用汇编代码编写,其间只界说了一个函数lowlevel_init()。该函数完结对渠道硬件资源的一系列初始化进程,包含关看门狗,初始化体系时钟,内存和串口。

(3)mem_setup.S(board\samsung\smdkv210)

该源文件包含对内存进行初始化的汇编源码。

(4)board.c(arch\arm\lib\board.c)

该源文件是用C编写的,首要完结了U-Boot第二阶段发动进程。包含初始化环境变量,串口控制台,Flash和打印调试信息等,最终调用main_loop()函数。

(5)smdkv210.h(include\configs\Smdkv210.h)

s5pv210渠道的配置文件,该源文件界说了一些与CPU或许外设相关的参数,这些参数都是用宏来界说的。

2.3 U-Boot发动的一般流程

2.3.1 榜首阶段初始化

U-Boot的发动进程分为两个阶段,榜首个阶段首要由汇编代码完结,担任对CPU及底层硬件资源的初始化。第二阶段用C完结,担任使能Flash,网卡和引导操作体系等。其榜首阶段流程如下图所示:

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/300965.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部