自闭症康复网,内容丰富有趣,生活中的好帮手!
自闭症康复网 > UBOOT启动流程中的BL0 BL1 BL2

UBOOT启动流程中的BL0 BL1 BL2

时间:2021-12-07 21:58:54

相关推荐

UBOOT启动流程中的BL0 BL1 BL2

系列文章目录


文章目录

系列文章目录前言一、什么是BootLoader?二、BL0的作用三、BL1的作用1、BL1的说明2、BL1的作用 四、BL2的作用1、BL2的说明2、BL2的作用 总结

前言


一、什么是BootLoader?

在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行,是嵌入式系统开发过程中不可逾越的一步。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由Boo Loader来完成。 uboot就是bootloader的一种,全称Universal Boot Loader。

第一阶段使用汇编来实现,它完成初始化的CPU体系结构,并调用第二阶段的代码;

第二阶段则通常使用C语言实现,这样可以实现更复杂的功能,而且代码会有更好的可读性和可移植性

Make menuconfig图形化界面配置内核,把编译后的uboot烧写到SD卡,插到板子上,和主机交互。只有BL2是可以改变的,我们写的裸机代码放到BL2这部分.

二、BL0的作用

芯片上电后肯定会从0x0这个地址开始跑

M3芯片它开始跑程序的时候是直接从 main开始跑吗?先跑的启动文件(start.s)

exynos芯片的0地址对应的IROM64KB IROM是掉电不丢失的存储介质 这里面的这个存储空间是用户不能访问的空间

这个64KB的空间存储的有一定的程序

三星提供了IROM里面的代码(不开源你看不到的)

这段代码干嘛用的呢?

1:判断硬件的启动方式

2:去不同的启动方式的启动设备里面加载BL1

三、BL1的作用

1、BL1的说明

BL1存放在外部的存储介质的

说白点BL1需要我们下载存储介质里面

BL1干的事情比较多也比较复杂

这一部分代码是三星提供的二进制文件

它是不开源的

只有二进制文件

2、BL1的作用

硬件设备初始化使ARM芯片进入超级管理权限SVC关闭中断,关看门狗设置CPU的速度、时钟频率及终端控制寄存器复制BL2到RAM空间中分配堆栈空间,设置堆栈指针;清零 BSS 数据段跳转到第二阶段代码的C入口函数。

四、BL2的作用

1、BL2的说明

BL2这个阶段可以是用户写的代码BL2两种情况:1:小于14KB的时候BL2全部加载到256KB SRAM2: 当BL2大于14KB的时候BL2会把前14KB放到 256KB SRAMBL2会把 14KB之后的内容全部搬运1GB的DDR3-RAM

2、BL2的作用

重新进入SVC模式初始化本阶段要使用的硬件设备检测系统内存映射将内核映像和根文件系统映像从FLASH上读到RAM空间中为内核设置启动参数

总结

BL0 BL1 我们动不了,改不了。

BL2 我们可以动

普及:ARM的启动过程

向量表定义地址重映射及中断向量表的转移堆栈初始化设置系统时钟频率中断寄存器的初始化进入C应用程序

如果觉得《UBOOT启动流程中的BL0 BL1 BL2》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。