桌面电脑刚加电时,一个叫做BIOS的软件程序立刻获得了处理器的控制权。(历史上,BIOS是Basic Input/Output Software的缩写,但现在这个单词已经有了自身的含义,因为其完成的功能比以前复杂多了。)BIOS可能实际存储在一块闪存中,便于升级BIOS程序。

BIOS是一个复杂的系统配置软件,它拥有硬件架构的底层信息。当电脑加电时,BIOS首先获得处理器的控制权。它的主要任务是初始化硬件,特别是内存子系统,并且从PC的硬盘驱动器中加载操作系统。

在典型的嵌入式系统中,引导加载程序(bootloader)完成与BIOS相同的功能。对于定制嵌入式系统,你必须在开发计划中预留出时间,开发针对具体硬件板卡的引导加载程序。幸运的是,有几个很好的开源引导加载程序可供选择,你可以按照项目需求进行定制。

下面列出一些引导加载程序在系统加电时完成的重要任务:

初始化关键的硬件,比如SDRAM控制器、I/O控制器和图形控制器。

初始化系统内存,并准备将控制权移交给操作系统。

为外设控制器分配必要的系统资源,比如内存和中断电路。

提供一个定位和加载操作系统镜像的机制。

加载操作系统,并将控制权移交给它,同时传递必要的启动信息。这些信息可能包括内存总容量、时钟频率、串行端口速率和其他与底层硬件相关的配置数据。

需要注意的是:如果你的嵌入式系统基于定制的硬件平台,这些引导加载程序的功能必须由你,也就是系统的设计者来提供。

 

区别:与桌面PC的BIOS不同,大多数的嵌入式系统都采用这样一种架构:当Linux内核掌握控制权时,引导加载程序就不复存在了。Linux内核要求收回那些之前被引导加载程序所占用的内存和系统资源。将控制权交回给引导加载程序的唯一方法就是重启目标板。

最新文章

  1. 从零开始编写自己的C#框架(21)——添加分类类型页面
  2. 【推荐】CentOS安装PHP-5.6.4+扩展安装+安全配置+性能配置
  3. python3 实现简单的信用卡还款,取款转账功能V2
  4. Dubbo系列(3)_官方Demo说明
  5. MyEclipse------黑科技
  6. MySQL注释符
  7. bzoj 3687 bitset的运用
  8. C#上位机读数据库
  9. ReentrantLock源码分析与理解
  10. 设置eclipse联想功能
  11. 1,postman的安装
  12. 使用storyboard显示UITableView时,如果不修改系统默认生成的tableView:cellForRowAtIndexPath:方法中的代码,则必须为UITableViewCell注册(填写)重用标识符:identifier.必须要代码方法中的标识符一致.
  13. webservice(草稿)
  14. Unity -----一些可能存在的错误
  15. mysql/mariadb学习记录——查询2
  16. 玩PHP必了解的PHP常用符号和函数
  17. MySQL 基于lvm2的备份实战演练 (快照备份)
  18. python基础===利用unittest进行测试用例执行的几种方式
  19. Oracle中用sql语句取随机数和整数
  20. centos7 vnc server

热门文章

  1. cloc 统计代码行数工具
  2. [JAVA] JAVA JDK 安装配置
  3. HDU 4730 We Love MOE Girls (2013成都网络赛,签到水题)
  4. react-native开发总结
  5. IoC Containers with Xamarin
  6. linux 监控CPU 内存情况
  7. 【BZOJ】【2434】【NOI2011】阿狸的打字机
  8. 附1 hystrix详述(1)
  9. struts2 18拦截器详解(五)
  10. WebView 加载网页 加载资源 总结 MD