Bootloader启动过程

1、作用

嵌入式系统的引导加载程序,系统上电后运行的第一段程序。在完成对系统的初始化任务后,它会将非易失性存储器(通常是FLASH)中的Linux内核拷贝到RAM中,然后跳转到内核的第一条指令处继续执行,从而启动Linux内核。

2、功能

实际应用中的Bootloader根据所需功能的不同可以设计的很复杂,除完成基本的初始化系统和调用Linux内核等基本任务外,还可以执行很多用户输入的命令,比如设置Linux启动参数,给Flash分区等;为了能达到启动Linux内核的目的,所有的Bootloader都具备以下功能:

(1)初始化RAM

因为Linux内核一般都会在RAM中运行,所有在调用Linux内核之前bootloader必须设置和初始化RAM,为调用Linux内核做准备。初始化RAM的任务包括设置CPU的控制寄存器参数,以便能正常使用RAM以及检测RAM大小等。

(2)初始化串口

在执行过程中初始化一个串口做为调试端口

(3)检测处理器类型

在调用Linux内核前必须检测系统的处理器类型,并将其保存到某个常量中提供给Linux内核。Linux内核在启动过程中会根据该处理器类型调用相应的初始化程序。

(4)设置Linux启动参数

目前传递启动参数主要采用两种方式:即通过struct param_struct 和struct tag(标记列表,tagged list)两种结构传递。struct param_struct是一种比较老的参数传递方式,在2.4版本以前的内核中使用较多,从2.4版本以后Linux内核基本上采用标记列表的方式。但为了保持和以前版本的兼容性,它仍支持struct param_struct参数传递方式,只不过在内核启动过程中它将被转换成标记列表方式。标记列表方式是比较新的参数传递方式,需要以ATAG_CORE开始,并以ATAG_NONE结尾。中间根据需要加入其它列表。Linux内核在启动过程中会根据该启动参数进行相应的初始化工作。

(5)调用Linux内核映像

Bootloader完成的最后一项工作便是调用Linux内核。在跳到Linux内核执行之前CPU的寄存器必须满足以下条件:r0=0,r1=处理器类型,r2=标记列表在RAM中的地址。

 

转载于:https://www.cnblogs.com/killer-xc/p/4378851.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值