一.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的作用相关推荐

  1. [嵌入式]Bootloader的作用

    关于Bootloader的作用,老师教我们把它当作PC的BIOS来理解,但其实不完全是这么回事.文章参考: http://www.cnblogs.com/yashi88/archive/2010/02 ...

  2. Bootloader 的作用

    https://blog.csdn.net/feihuxiaozi/article/details/6963654 一.bootloader的作用 其实bootloader主要的必须的作用只有一个:就 ...

  3. Bootloader的作用与实现

    一.为什么要用Bootloader? 1.对于不同的CPU体系结构都有不同的Bootloader,例如ARM.MIPS都有自己的Bootloader.除了依赖于CPU的体系结构外,Bootloader ...

  4. bootloader的作用和功能

    在电脑中bios的目的是启动Windows操作系统,BIOS从硬盘上面读入内核, Bootloader的最终目的是启动内核,Bootloader实质上就是一个单片机程序,只不过是一个比较复杂的单片机程 ...

  5. Bootloader

    在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行.可以初始化硬件设备.建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境.在嵌入 ...

  6. Bootloader概述

    Bootloader概述 Bootloader的含义 PC机上windows.linux引导过程简介 嵌入式Bootloader介绍与分析 嵌入式bootloader介绍 Bootloader的操作模 ...

  7. 【linux】BootLoader简介(c语言编程)

    BootLoader简介 一.BootLoader     1.BootLoader的作用             一个嵌入式linux系统从软件的角度看通常可以分为4个层次:            ...

  8. ARM上的Bootloader的具体实现1071098736

    BootLoader简介: 当完成用户程序的编译并下载到目标板上运行时,总是要首 先进行存储器的映射,然后通过 ADS(或 SDT)调试环境下载,显然,这个过程对 普通用户来说显得特别烦琐,然而,要在 ...

  9. STM32的BootLoader 从SD卡更新固件

    目  录 1. 前言 2. 初识BootLoader 2.1      百度百科的BootLoader 2.2      BootLoader的简单理解 2.3      BootLoader的作用 ...

最新文章

  1. paddle一体安装
  2. HTTPSConnectionPool(host=‘files.pythonhosted.org‘, port=443): Read timed out的解决方法
  3. 根据浏览器内核判断是web/iOS/android/ipad/iphone 来打开不同的网站或页面
  4. linux下查看进程占用端口和端口占用进程命令
  5. (数据库系统概论|王珊)第二章关系数据库-第二节、第三节:关系操作和关系完整性
  6. Java: Number转换为BigDecimal:最好方法
  7. 嵌入式操作系统内核原理和开发(实时系统中的定时器)
  8. 泄漏 iOS 关键源码的人,居然是苹果的一个实习生
  9. layUI数据表格可编辑扩展下拉框
  10. Tilemill + tilestream + mapbox.js 自制地图
  11. 智汇华云 | 异步?NO! 同步?NO! 华云数据新专利解决云平台容灾难题
  12. (测试可用)针式打印机打印WEB页面字体不清晰,解决方法
  13. JDBC在jsp中的使用
  14. 车型代号对照表_上海大众车型与VIN代号对照表
  15. 银河麒麟系统PDF转Word
  16. 小技巧:两种方式快速实现平滑涂鸦画板
  17. Apollo感知解析之MinBox障碍物边框构建
  18. w10系统服务器如何创建新用户,关于Win10怎么给本地账户添加管理员权限的讲解...
  19. Warpspeed 2021 DFINITY×IAF黑客松Demo Day落幕,10支队伍获奖
  20. Python爬虫:获取糗事百科笑话

热门文章

  1. 生成一个5位随机验证码(包含数字大小写字母)
  2. 背景图片填满整个Div
  3. oracle++spm,ORACLE 11G 使用SPM来调整SQL语句的执行计划
  4. Vue3的filter过滤器代替方法
  5. python面试自我介绍_python自我描述
  6. 如今做网商还能以前一样吗?网站必不可少
  7. js及jQuery移除html元素所有的class
  8. 2021-06-28国外调查问卷真的赚钱吗
  9. 4、Reading Rasa Source Code —— Domain 解析
  10. 修复打开Excel提示