ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Bootloader

2022-08-30 13:34:20  阅读:173  来源: 互联网

标签:初始化 bootloader Flash 内核 Linux Bootloader


什么是bootloader?

     首先我们都知道操作系统(作为一个程序)必须要运行在内存中。但究竟操作系统是如何跑到内存中的呢?CPU在出厂设置的时候会内置一段代码,这段代码用于将bootloader 代码拷贝至内存。bootloader 必须存在于ROM 中,它是断电不易失的存储媒介,否则一关机,bootloader 就消失了,那下次就无法启动了。bootloader 所存储的位置并不是用户的硬盘,而是烧写在 开发板 上的特殊ROM硬件上。因为bootloader 必须根据特殊的硬件架构而定制,所以它并不具备跨硬件平台的特性。

    CPU上电后,会从某个地址开始执行。比如MIPS结构的CPU会从0xBFC00000取得第一条指令,而ARM结构的CPU则从地址0x00000000开始。嵌入式开发板中,需要把存储器件ROM或Flash等映射到这个地址,Bootloader就存放在这个地址开始处,这样一上电就可以执行。

  • Bootloader是在系统上电时开始执行一段小程序,
  • 主要功能是初始化硬件设备、准备好软件环境,最后调用操作系统内核。

   UBoot就是一个Bootloader,可以实现在系统上电后,进行初始化系统(关闭WATCHDOG,改变系统时钟,初始化存储控制器等),复制操作系统到内存中。

(1)uboot主要作用是用来启动操作系统内核。
(2)uboot建立内存空间映射图,为内核的启动运行做好一切准备,将Linux内核代码加载到RAM中运行。
(3)uboot中还有操作Flash等板子上各种硬件的驱动。
(4)uboot还得提供一个命令行界面供人来操作

 

嵌入式系统中广泛采用的非易失性存储器通常是 Flash,而 Flash 又分为 Nor Flash 和Nand Flash 两种。 它们之间的不同在于: Nor Flash 支持芯片内执行(XIP, eXecute In Place),这样代码可以在Flash上直接执行而不必拷贝到RAM中去执行。而Nand Flash并不支持XIP,所以要想执行 Nand Flash 上的代码,必须先将其拷贝到 RAM中去,然后跳到 RAM 中去执行。实际应用中的 bootloader根据所需功能的不同可以设计得很复杂,除完成基本的初始化系统和调用 Linux 内核等基本任务外,还可以执行很多用户输入的命令,比如设置 Linux 启动参数,给 Flash 分区等;也可以设计得很简单,只完成最基本的功能。

 

嵌入式Linux软件系统架构图:

 

软件程序开发中,从下往上每一层的作用依次为:

Bootloader:将硬件初始化,并将内核引导起来;
Linux Kernel:定制、裁剪之后的Linux内核;
根文件系统:提供文件系统,更好的使用存储空间;
设备驱动:完成设备操作,并向上层软件提供设备的调用接口;
应用程序:Linux系统编程、网络编程、shell编程、图形界面编程等等;

 

标签:初始化,bootloader,Flash,内核,Linux,Bootloader
来源: https://www.cnblogs.com/ghnie/p/16638926.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有