【linux】BootLoader简介(c语言编程)
BootLoader简介
一、BootLoader
1、BootLoader的作用
一个嵌入式linux系统从软件的角度看通常可以分为4个层次:
引导加载程序(boot代码和BootLoader)
Linux内核
文件系统 + (GUI)
用户应用程序
引导加载程序是系统加电后运行的第一段软件代码,用于将内核映像从硬盘上读到RAM中,实现到
核的入口点去运行,即开始启动操作系统。
简单的说,BootLoader就是在操作系统内核运行之前运行的一小段程序,通过这段小程序,可以初始
化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个适合的状态,以便为最终调用操
作系统内核准备好正确的环境。
2、BootLoader操作模式:(大多BootLoader都包含两种不同的操作模式)
(1)、启动模式:BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程
没有用户的介入。
(2)、下载模式:目标机上的BootLoader通过串口连接或联网等方式从主机上下载文件(内核映像、根
文件系统映像...),保存到目标机的RAM中,接着再被BootLoader写到目标机的Flash
类固态存储设备,该模式下通常会向终端用户提供一个简单的命令行接口。
二、常用的BootLoader
ARMBoot, PPCBoot, U-Boot, RedBoot, Blob, Vivi
三、BootLoader基本原理(假定内核映像与根文件映像(可以在固态存储设备运行)都被加载到RAM中运行)
通常,BootLoader是严重地依赖于硬件而实现的,除了依赖于CPU的体系结构外,BootLoader实际上也依
赖于具体的嵌入式板级设备。
由于BootLoader的实现依赖于CPU的体系结构,因此大多数BootLoader分为stage1和stage2两个部分。
stage1:存放依赖于CPU体系结构的代码,如设备初始化代码(通常用汇编语言实现)。
stage2:存放实现更复杂的功能的代码,通常使用C语言实现,代码具有更好的可读性和可移植性。
BootLoader的stage1通常包括以下步骤:
(1)、硬件设备初始化
(2)、为加载BootLoader的stage2准备RAM空间
(3)、复制BootLoader的stage2到RAM空间中
(4)、设置好堆栈
(5)、跳转到stage2的C入口点
BootLoader的stage2通常包括以下步骤:
(1)、初始化本阶段要使用到的硬件设备
(2)、检测系统内存映射
(3)、将内存映像和根文件系统映像从Flash上读到RAM空间中。
(4)、为内核设置启动参数
(5)、调用内核
转载于:https://blog.51cto.com/tobeys/1720030
【linux】BootLoader简介(c语言编程)相关推荐
- linux c语言 ppt,linux操作系统下c语言编程入门.ppt
linux操作系统下c语言编程入门.ppt Linux操作系统下C语言编程入门 CNT Linux操作系统简介基础知识进程介绍文件操作时间概念消息管理线程操作网络编程Linux下C开发工具介绍 一 L ...
- linux环境c语言课程设计,linux环境下c语言编程课程设计
linux环境下c语言编程课程设计 (14页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 1/14LINUX操作系统教程课程设计题目算术 ...
- Linux下C语言串口应用编程,Linux下串口C语言编程
Linux下串口C语言编程 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 串口操作代码#include #include #inclu ...
- 实验linux下的编程,实验四 Linux下的C语言编程;
<实验四 Linux下的C语言编程;>由会员分享,可在线阅读,更多相关<实验四 Linux下的C语言编程;(5页珍藏版)>请在人人文库网上搜索. 1.实验四Linux 下的 C ...
- 南工程c语言实验报告,Linux环境下-C语言编程实验报告(1)(总4页).doc
Linux环境下-C语言编程实验报告(1)(总4页).doc 西 安 邮 电 大 学 (计算机学院)课内实验报告实验名称 Linux环境下 C语言编程 专业名称 网络工程班 级 1203班 学生姓名 ...
- linux下的c语言编程实验4,实验四-Linux下的C语言编程
实验四Linux 下的 C 语言编程 四.实验内容 本实验要求在LINUX/UNIX环境下用C语言编写三个具体的SHELL命令,基本涉及了LINUX/UNIX文件系统中较为常用的有关文件操作的系统调用 ...
- linux操作系统下 c语言编程入门
linux操作系统下 c语言编程入门 (一)目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门 ...
- [转] linux操作系统下c语言编程入门
(一)目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程 ...
- 在linux下用c语言编程软件下载,在Linux下进行C语言编程
在Linux下进行C语言编程 在Linux下进行C语言编程,必然要采用GNU GCC来编译C源代码生成可执行程序. 一.GCC快速入门 Gcc指令的一般格式为:Gcc [选项] 要编译的文件 [选项] ...
- linux操作系统下c语言编程入门
linux操作系统下c语言编程入门 整理编写:007xiong 原文:Hoyt等 (一)目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux ...
最新文章
- 【怎样写代码】工厂三兄弟之工厂方法模式(五):工厂方法模式扩展
- 生成邮件图片签名的链接Gmail、hotmail 等... ...
- Excel异常Cannot get a text value from a numeric cell
- 08 Spring框架 AOP (一)
- MySQL—常用SQL语句整理总结
- 高通camera架构讲解
- Azure夜校培训第二场2月22日18:00 正式盛情开幕
- vscode regex previewer插件怎么用_分享五款开挂神器!助你效率倍增!做PPT怎么能不会用插件?...
- (三)洞悉linux下的Netfilteriptables:内核中的rule,match和target
- STS代码式预付费用电管理系统
- CSS font-family 各名称一览表
- 阮一峰es6,Proxy和Reflect学习
- iMindMap2020 中文旗舰免费版
- 微课在小学计算机教学中的应用,微课技术在小学信息技术课堂中的应用
- awk oracle,工具: ass109.awk 分析 Oracle 的跟踪文件
- ChatGPT ,能替代程序员吗?
- python画图,坐标轴问题
- 物联网之STM32开发四(中断系统)
- java毕业设计鑫通物流车辆调度系统mp4Mybatis+系统+数据库+调试部署
- (一)、Spring Security OAuth2 五种授权方式介绍
热门文章
- Javascript ES6 Promise异步链式读取文件解决回调地狱
- java中long的包装类_Java中基本数据的包装类
- sql server 比较大小
- android获取有线、wifi、3G(4G)的IP
- 心语收集11:我们可以经得起心脏的千疮百孔,可以接受感情的支离破碎,却不愿喝下忘情水,忘记那曾经爱过的人。...
- 阿里百度旷视商汤京东,AI大厂怎么看产业实践?
- CNN更新换代!性能提升算力减半,还即插即用
- 国内NLP领域单轮融资新纪录,达观数据获1.6亿元B轮投资
- 2018星际AI大赛冠军诞生!一个个机器学习算法,都输给不会学习的韩国bot
- 2年20亿搞自动驾驶+环卫,酷哇和中联环境成立合资子公司