bootloader的作用
一.bootloader的作用
其实bootloader主要的必须的作用只有一个:就是把操作系统映像文件拷贝到RAM中去,然后跳转到它的入口处去执行。
而操作系统文件的来源,可以是flash,sd card,PC(可以通过网络,USB,甚至串口传输)等等,所谓的EBOOT,UBOOT,其实就是表明了系统文件是通过Ethernet或者USB从PC传输过去的。
当然,为了实现这个功能(以及其它附加功能),我们必须对硬件做一些必要的初始化,这个也是必须的(废话!)。除了这个必须的,现在的bootloader还常常会加入以下功能:
1.将操作系统映像文件写入FLASH/硬盘等:读取过来的操作系统文件,除了可以拷贝到RAM中直接运行,还可以烧录到FLASH,或者写入硬盘永久保存,这样下次就可以直接从本机来读取操作系统映像。
2.硬件诊断:如同PC的BIOS一样,检测硬件是否正常功能。
3.显示一个LOGO,因为拷贝操作系统文件和启动操作系统需要时间,所以产品化的设备,一般需要在这段时间显示一个LOGO。
二.bootloader是不是必须的
bootloader并不是必须的,如果我们的硬件有足够大的norflash,并且实现了XIP技术,那么WinCE 操作系统可以直接在norflash里面运行起来,不需要将它复制到RAM中去,所以bootloader就失去了作用。
但是考虑到成本因素,现在的硬件一般都不会配置这么大的norflash,image文件都存储在nand flash里面,所以都会用到bootloader。
三.关于nboot和eboot
国内很多人做WinCE都是使用Samsung的2410或者2440入门的,所以对nboot和eboot是最熟悉的。eboot是微软在WinCE里面提供的开放源代码的一个bootloader的框架,因为它默认的是使用ethernet从PC下载image而得名,使用该框架,根据自己的硬件做一些修改就可以直接拿来用了,那么nboot又是怎么回事呢?
之所以需要nboot(注:三星的后续产品中,nboot已经改名为stepldr,ldr是looder的缩写,step是stepstone的意思,这是三星系列CPU为解决nand启动而内置的一小块RAM),是和硬件紧密相关的。我们在设计硬件的时候,ROM部分可以只使用norflash,也可以使用1片小容量的norflash+大容量的nandflash,还可以只使用nandflash。第一种方案,可以不用bootloader,也可以只使用eboot;第二种方案,把eboot放到norflash中,image放在nandflash中,并将硬件设置为norflash启动模式,也不用nboot。只有第3种方案,才需要使用nboot,这是为什么呢?
我们知道nandflash本身不能运行程序,它里面的内容必须拷贝到RAM中才能运行,但是CPU上电后,RAM中是空的,谁来执行这个拷贝的工作呢?三星的解决方案,就是内置了一小块RAM(stepstone),然后从硬件上实现CPU上电后先读取nand flash最开始的一段代码到stepstone中去(当然,要设置硬件为nandflash启动方式),然后从stepstone起始处(被设置为RAM的0地址)去执行。这个stepstone一般很小(2410,2440是4K),所以它没办法放下一个功能复杂的bootloader(比如eboot),只能放一个功能很简单的,这就是需要nboot的原因了。nboot的功能十分单一,就是从nandflash复制image到RAM中去,然后跳转执行。这里的image可以是eboot的(一般开发阶段这样做),也可以是OS的。
优龙的开发板提供了一种叫做BIOS的bootloader,它远远超出了4K的限制,但是还可以在nandflash启动方式下正常运行,这是为什么呢?原来,它实现了2次加载,也就是说CPU上电后自动加载了4K代码,这4K代码又将整个bootloader重新拷贝到RAM中再执行,要实现这样的功能要对链接器做一些设置,使“拷贝”功能的代码必须放到前4K里面去。
总之,bootloader是需要直接和硬件打交道,不同的硬件设计,就会影响到它的实现,所以了解硬件的设计是理解bootloaer的第一步。
bootloader的作用相关推荐
- [嵌入式]Bootloader的作用
关于Bootloader的作用,老师教我们把它当作PC的BIOS来理解,但其实不完全是这么回事.文章参考: http://www.cnblogs.com/yashi88/archive/2010/02 ...
- Bootloader 的作用
https://blog.csdn.net/feihuxiaozi/article/details/6963654 一.bootloader的作用 其实bootloader主要的必须的作用只有一个:就 ...
- Bootloader的作用与实现
一.为什么要用Bootloader? 1.对于不同的CPU体系结构都有不同的Bootloader,例如ARM.MIPS都有自己的Bootloader.除了依赖于CPU的体系结构外,Bootloader ...
- bootloader的作用和功能
在电脑中bios的目的是启动Windows操作系统,BIOS从硬盘上面读入内核, Bootloader的最终目的是启动内核,Bootloader实质上就是一个单片机程序,只不过是一个比较复杂的单片机程 ...
- Bootloader
在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行.可以初始化硬件设备.建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境.在嵌入 ...
- Bootloader概述
Bootloader概述 Bootloader的含义 PC机上windows.linux引导过程简介 嵌入式Bootloader介绍与分析 嵌入式bootloader介绍 Bootloader的操作模 ...
- 【linux】BootLoader简介(c语言编程)
BootLoader简介 一.BootLoader 1.BootLoader的作用 一个嵌入式linux系统从软件的角度看通常可以分为4个层次: ...
- ARM上的Bootloader的具体实现1071098736
BootLoader简介: 当完成用户程序的编译并下载到目标板上运行时,总是要首 先进行存储器的映射,然后通过 ADS(或 SDT)调试环境下载,显然,这个过程对 普通用户来说显得特别烦琐,然而,要在 ...
- STM32的BootLoader 从SD卡更新固件
目 录 1. 前言 2. 初识BootLoader 2.1 百度百科的BootLoader 2.2 BootLoader的简单理解 2.3 BootLoader的作用 ...
最新文章
- paddle一体安装
- HTTPSConnectionPool(host=‘files.pythonhosted.org‘, port=443): Read timed out的解决方法
- 根据浏览器内核判断是web/iOS/android/ipad/iphone 来打开不同的网站或页面
- linux下查看进程占用端口和端口占用进程命令
- (数据库系统概论|王珊)第二章关系数据库-第二节、第三节:关系操作和关系完整性
- Java: Number转换为BigDecimal:最好方法
- 嵌入式操作系统内核原理和开发(实时系统中的定时器)
- 泄漏 iOS 关键源码的人,居然是苹果的一个实习生
- layUI数据表格可编辑扩展下拉框
- Tilemill + tilestream + mapbox.js 自制地图
- 智汇华云 | 异步?NO! 同步?NO! 华云数据新专利解决云平台容灾难题
- (测试可用)针式打印机打印WEB页面字体不清晰,解决方法
- JDBC在jsp中的使用
- 车型代号对照表_上海大众车型与VIN代号对照表
- 银河麒麟系统PDF转Word
- 小技巧:两种方式快速实现平滑涂鸦画板
- Apollo感知解析之MinBox障碍物边框构建
- w10系统服务器如何创建新用户,关于Win10怎么给本地账户添加管理员权限的讲解...
- Warpspeed 2021 DFINITY×IAF黑客松Demo Day落幕,10支队伍获奖
- Python爬虫:获取糗事百科笑话