0.Boot Loader的概念和功能

转载:http://blog.chinaunix.net/uid-20543672-id-94371.html
1、嵌入式Linux软件结构与分布
在一般情况下嵌入式Linux系统中的软件主要分为以下及部分:
(1)引导加载程序:其中包括内部ROM中的固化启动代码和Boot Loader两部分。
而这个内部固化ROM是厂家在芯片生产时候固化的,作用基本上是引导Boot Loader。有的芯片比较复杂,比如Omap3,他在flash中没有代码的时候有许多启动方式:USB、UART或以太网等等。而S3C24x0则很简单,只有Norboot和Nandboot。
(2)Linux kernel 和drivers。
(3)文件系统。包括根文件系统和建立于Flash内存设备之上的文件系统(EXT4、UBI、CRAMFS等等)。它是提供管理系统的各种配置文件以及系统执行用户应用程序的良好运行环境的载体。
(4)应用程序。用户自定义的应用程序,存放于文件系统之中。

在linux内核的启动运行除了内核映像必须在主存的适当位置,CPU还必须具备一定的条件:
1. CPU 寄存器的设置:
R0=0;
R1=Machine ID(即Machine Type Number,定义在linux/arch/arm/tools/mach-types);
R2=内核启动参数在 RAM 中起始基地址;
2. CPU 模式:
必须禁止中断(IRQs和FIQs);
CPU 必须 SVC 模式;
3. Cache 和 MMU 的设置:
MMU 必须关闭;
指令 Cache 可以打开也可以关闭;
数据 Cache 必须关闭;

但是在CPU刚上电启动的时候,一般连内存控制器都没有配置过,根本无法在内存中运行程序,更不可能处在Linux内核的启动环境中。为了初始化CPU和其他外设,使得Linux内核可以在系统主存中跑起来,并让系统符合Linux内核启动的必备条件,必须要由一个先于内核运行的程序,他就是所谓的引导加载程序(Boot Loader)。
而Boot Loader并不是Linux才需要,是几乎所有的运行操作系统的设备都具备的。我们的PC的BOIS就是Boot Loader的一部分(只是前期引导,后面一般还有外存中的各种Boot Loader),对于Linux PC来说,Boot Loader = BIOS + GRUB/LILO。

3、Boot Loader的功能和选择
通过上面的讲述,我们可以知道:bootloader是在OS内核运行之前的一段小程序。通过这段小程序,我们可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用OS内核准备好正确的环境,最后从别处(flash/以太网/UART)载入内核映像并跳到入口地址。
由于BootLoader直接操作硬件,所以她严重依赖于硬件,而且依据所引导的操作系统的不同,也有不同的选择对于嵌入式世界中更是如此。就S3C24x0而言,如果是引导Linux,一般选用韩国的mizi公司设计的vivi或者DENX软件工程中心的U-boot,如果是引导Win CE,就选用Eboot。如果是开发StrongARM 构架下的LART,就可选用由Jan-Derk Bakker 和 Erik Mouw发布的Blob(Boot Loader Object)。如果是要引导eCos系统,就可以选用同是Redhat公司开发的Redboot。
所以在嵌入式世界中建立一个通用的 BootLoader 几乎是不可能的,而有可能的是让一个 Boot Loader代码支持多种不同的构架和操作系统,并让她方便移植。U-boot就是支持多平台多操作系统的一个杰出代表。这也是为什么我喜欢用U-boot的原因,因为如果在开发S3C2440时熟悉了U-boot,再转到别的平台的时候就可以很快地完成这个平台下的U-boot移植,而且U-boot的代码结构越来越合理,对于新功能的添加也十分容易。
值得一提的是国内的一个开源项目maxwit中的g-bios也是一个不错的开源BootLoader,同样支持多平台。

转载于:https://www.cnblogs.com/Ocean-Star/p/9236349.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

平板电脑可以插u盘吗_电视TV盒子安装app的六个方法,u盘/电脑/手机都可以安装...

点击上方蓝字 关注我们首先,要看盒子是否支持安装第三方app,这期只讲支持第三方app安装的安卓系统盒子,iOS盒子不讲。怎么看电视盒子能不能安装第三方?很简单,方法很多,最常见就是用装有apk文件的u盘连接盒…

IT人士必去的10个网站

1、Chinaunix 网址:http://www.chinaunix.net/ 简介:中国最大的linux/unix技术社区。 2、ITPub 网址:http://www.itpub.net/ 简介:有名气的IT技术论坛,看看它的alexa排名就知道有多火了,尤其以数据库技术讨…

drive es 软件兼容_某知名软件被完美修改!对不住了!

⭐星标Or 置顶⭐右上角三点-设为星标(置顶)今天给大家介绍两款超好用的免费神器!支持,请点亮文章底部“在看” ?搜图神器绿化版安卓 / 9M这是一款装机必备的搜图应用,支持图片搜索,百度识图,谷歌识图,拍照…

OpenCv学习笔记(二)—cv Mat学习

由于在写上一篇图像的数据结构时,发现自己只知道CvMat,竟然还有Mat数据结构,真是无知了,看了这么多程序,貌似没有看到这个结构。有可能那些程序都是些老版本的例子,这是在2.0以后加上的,所以我也得紧跟呀&a…

5g pdu session_运营商下架4G套餐,用户被5G!

近日,网上突然出现诸多报道,称三大运营商为了推广5G套餐,开始下架4G套餐,用户办理套餐时只能选择价格相对较高的5G套餐。看到这些报道很多网友坐不住了,这难道要倒逼用户改用5G吗?要知道,三大运…

oracle 取前10条记录

--oracle取前十条数据 --(1)第一种 select * from t_base_employee where rownum < 11;--(2)第二种 select *from (select * from t_base_employee t order by t.modify_time desc)where rownum < 10; 转载于:https://www.cnblogs.com/feifeicui/p/9244568.html

OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate

通俗的说&#xff1a;膨胀算法使图像扩大一圈。腐蚀算法使二值图像减小一圈。腐蚀&#xff1a;删除对象边界的某些像素膨胀&#xff1a;给图像中的对象边界添加像素算法&#xff1a;从图像处理角度看&#xff0c;二值图像的腐蚀和膨胀就是将一个小型二值图&#xff08;结构元素…

台达asda-b2伺服驱动器说明书_台达解决方案提升粉末冶金液压机的控制精度

项目背景粉末冶金液压机是一种利用液体压力来传递能量&#xff0c;实现各种压力加工工艺的机床&#xff0c;适用于各种金属及非金属粉末的压制成形&#xff0c;如铁基、铜基、钨、钛、锰、硼等。某生产企业所应用的粉末冶金液压机采用以台达油电伺服驱动器VFD-VJ系列为核心的控…

hadoop中map和reduce的数量设置问题

转载http://my.oschina.net/Chanthon/blog/150500 map和reduce是hadoop的核心功能&#xff0c;hadoop正是通过多个map和reduce的并行运行来实现任务的分布式并行计算&#xff0c;从这个观点来看&#xff0c;如果将map和reduce的数量设置为1&#xff0c;那么用户的任务就没有并行…

shell变量里的字符替换

shell变量里的字符替换b${a/123/321};将${a}里的第一个123替换为321b${a//123/321};将${a}里的所有123替换为321shell调试:sh -x aaa.shfrom:http://bbs.chinaunix.net/viewthread.php?tid218853&extra&page7#pid1628522shell十三问不過&#xff0c;假如你只看到 ${ }…

常州win8如何禁用应用商店_Win8系统当中Windows defnedder安全软件应该如何禁用?...

Win8系统如何禁用defender&#xff1f;Windows defender安全软件但是win8系统自带的&#xff0c;但有时该软件也会与其他软件发生冲突&#xff0c;那么这个时候应该如何禁用Windows defender安全软件呢&#xff1f;接下来就为大家分享win8系统禁用defender的操作方法。操作方法…

Django 的工程创建

1.环境安装 1. 创建虚拟环境 mkvirtualenv django_py3_1.11 -p python3注意需要联网 2. 安装Django 使用django 1.11.11版本&#xff0c;注意需要联网 pip install django1.11.113. 复习虚拟环境和pip的命令 # 虚拟环境 mkvirtualenv # 创建虚拟环境 rmvirtualenv # 删除虚拟…

python提取网页中p标签中的内容_使用Python进行爬虫的初学者指南

前言爬虫是一种从网站上抓取大量数据的自动化方法。即使是复制和粘贴你喜欢的网站上的引用或行&#xff0c;也是一种web抓取的形式。大多数网站不允许你保存他们网站上的数据供你使用。因此&#xff0c;唯一的选择是手动复制数据&#xff0c;这将消耗大量时间&#xff0c;甚至可…

OpenCv的连通域操作

由于项目需要&#xff0c;要对图像中的最大连通域进行标定&#xff0c;并且存储。首先需要使用cvFindCountour对边缘进行标定&#xff0c;其实它的原理就是连通域的边缘提取&#xff1b;其次就是对连通域进行大小判断找出最大的连通域&#xff1b;最后当然就是进行Rect并且ROI了…

DAY5网络

1.用select实现TCP客户端程序 #include <head.h> #define PORT 9999 // 服务器端口号 #define IP "192.168.125.74" // 服务器IP地址#define CIP "192.168.125.74" // 客户端 #define CPORT 6666int main(int argc, const char* argv[]) {// 创建套…

pyCharm最新2018激活码

最近开始研究python&#xff0c;因公司需要获取一些数据&#xff0c;比如电影名&#xff0c;航班名&#xff0c;航班号&#xff0c;列车号等等。所以让我来做一个爬虫去获取数据。所以我们就从这篇博文开始吧&#xff01;&#xff01;&#xff01; 首先告诉大家激活方式&#x…

提高电脑反应速度_设计师笔记本电脑推荐——视觉系ThinkBook 15p创造本

说到设计师笔记本电脑推荐&#xff0c;非近期大热的高颜值、高性能、更出彩的ThinkBook 15p创造本莫属了。作为专为时尚青年量身定做的品牌系列&#xff0c;ThinkBook一直都以“锐意破局”、“以思考重构世界”的理念征服着广大优秀的年轻创意用户&#xff0c;此次推出的全新产…

C语言 system函数

Windows函数windows操作系统下system () 函数详解&#xff08;主要是在C语言中的应用&#xff09; 函数名&#xff1a; system功 能&#xff1a; 发出一个DOS命令用 法&#xff1a; int system(char *command);system函数已经被收录在标准c库中&#xff0c;可以直接调用程序例…

Python format功能

1 #通过位置2 print {0},{1}.format(chuhao,20)3 4 print {},{}.format(chuhao,20)5 6 print {1},{0},{1}.format(chuhao,20)7 8 #通过关键字参数9 print {name},{age}.format(age18,namechuhao) 10 11 class Person: 12 def __init__(self,name,age): 13 self.na…

javascript option 菜单图标_MacBook上神奇的Option键

不知道昨天的(Mac上Command键的妙用)有没有帮助到大家呢&#xff1f;今天我们就来讲一讲Mac上的Option键。Option作为Mac上四大控制键(Shift&#xff0c;Command&#xff0c;Control&#xff0c;Option)之一&#xff0c;Option在单独使用的情况下&#xff0c;很多时候是发挥调出…