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

Bootloader启动过程相关推荐

  1. ucore - 第一章 - bootloader启动过程

    目录 1.概述 2.引用 3.关键字 4.cup上电过程 5.bootloader 5.1.关闭中断.初始化段寄存器 5.2.开启A20总线 5.3.初始化GDT表 5.3.1.实模式和保护模式 5. ...

  2. bootloader 启动过程

    一.    Boot Loader的概念和功能 1.嵌入式Linux软件结构与分布在一般情况下嵌入式Linux系统中的软件主要分为以下及部分: (1)引导加载程序:其中包括内部ROM中的固化启动代码和 ...

  3. 简述arm linux内核启动流程,Linux内核启动过程和Bootloader(总述)

    1.Linux内核启动过程概述 一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序.其中 Bootloader是系统启 ...

  4. Linux内核启动过程和Bootloader(总述)

    1.Linux内核启动过程概述     一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序.其中 Bootloader ...

  5. BootLoader与MCU启动过程

    STM32那点事(1)_STM32F40_41xx启动文件详解 STM32 官方为广大开发者提供一套统一开发固件,主要是屏蔽寄存器封装,提供初始化等功能,较少开发者负担.只需要调用相关模块封装,对相关 ...

  6. BootLoader(U-Boot)启动过程记录

    BootLoader(U-Boot)启动过程记录 定义 Bootloader终极目的是引导内核,加载内核到内存然后跳转到内核的地方执行,在加载之前也会做一些硬件的初始化等等操作.启动模式分为两种:启动 ...

  7. TI OMAP Bootloader Project 关于启动过程

    以下wiki详细讲解了启动过程 http://omappedia.org/wiki/Bootloader_Project http://omappedia.org/wiki/OMAP3_U-Boot_ ...

  8. linux系统需要占多大的内存,linux启动过程Bootloader、kernel

    256M可以推1080P屏幕 128M可以基本运行并安装 256M可以勉强开启特效 512M流畅运行特效 当然内存越大越好,特效与显卡也有关系 和windows相比,当然linux对内存的需求小 Bo ...

  9. Tiva C(TM4C)的bootloader和启动过程与stm32对比

    gossip: 最近在咸鱼捡了个123GXL的板子,板子没到就先装好了环境,然后看了看资料,前天板子到了,先点了个灯,然后把板子扔到一边又继续看资料去了emmm... 看资料的时候发现有些东西挺有意思 ...

最新文章

  1. rhel6 mysql replication
  2. linux虚拟实验服务,Linux虚拟服务器(LVS)实验文档PDF
  3. iOS 更改项目名称
  4. 看完这个你还不理解右值引用和移动构造 你就可以来咬我(中)
  5. OVS vxlan 底层结构分析 - 每天5分钟玩转 OpenStack(148)
  6. 阿里云天池 零基础入门NLP - 新闻文本分类 2种做法,F1=0.87
  7. cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-wwma2wne\opencv\module
  8. java 云虚拟机_Java 虚拟机一览表
  9. 【精益生产】108页PPT搞懂精益生产价值流分析图(VSM)
  10. ESP32-C3入门教程 IoT篇⑤——阿里云 物联网平台 EspAliYun RGB LED 实战之设备生产流程
  11. IMU与GPS传感器ESKF融合定位(转载)
  12. 【Vue】实现出生日期计算年龄
  13. 微信小程序高德地图获取当前定位
  14. 链接直接打开QQ对话窗口
  15. 【小技巧】PDF 转 图片 虚拟打印
  16. H.264基础知识总结
  17. python 文件路径找不到_python路径正确但找不到文件
  18. 小程序个人中心(我的页面)
  19. 辽宁 viewpro.php,辽宁省策划学会赴沙地沟村考察
  20. macbook pro黑屏没反应无法开机的解决方法

热门文章

  1. C#实现简单WEB服务器
  2. 李洋疯狂C语言之用递归解决李白喝酒问题(附填空题解法)
  3. Vue + webpack 项目配置化、接口请求统一管理
  4. CentOS 7 搭建CA认证中心实现https取证
  5. MySQL5.7 group by新特性,报错1055
  6. 进程(并发,并行) join start 进程池 (同步异步)
  7. Java类集框架 —— LinkedHashMap源码分析
  8. GreenSock (TweenMax) 动画案例(二)
  9. linux下.a/.so/.la目标库区别
  10. spring MVC中页面添加锚点