一、学习uboot前需要掌握的知识
1、什么是内存和外存
参考博客:
https://zhuanlan.zhihu.com/p/375053359 https://blog.csdn.net/h_8410435/article/details/101718769 https://zhuanlan.zhihu.com/p/714402846内存(Memory),又称主存,是CPU直接寻址和读写的高速存储空间。它作为处理器与硬盘、显卡等硬件之间的数据交换桥梁,起到临时缓存的作用。之所以称为"内存",是相对于硬盘、U盘等外部存储器而言——软件程序平时存储在外存中,运行时需加载到内存,CPU才能高效访问,因为CPU与内存的数据交换速度远高于外存。内存条由内存芯片、印刷电路板和金手指等部件组成。
按功能划分,内存包括ROM(只读存储器)和RAM(随机存取存储器)。其中RAM是主存的主要组成部分,用于临时存放运行中的程序和数据;ROM仅占很小一部分,用于存储BIOS等固件信息。需要说明的是,硬盘、U盘等属于外部存储设备,与ROM并非同一概念。
更加官方一点的定义:
内存:内存又称主存,计算机中的程序的运行都是在内存中进行的,只有计算机在运行,计算机CPU就会把需要的计算数据调到内存中进行运算。通常内存分为随机存储器(RAM)、只读存储器(ROM)、高速缓存(CACHE)。
硬盘:从计算机的结构体系来讲,硬盘应该算是计算机的“外存”。
二、内存和硬盘的区别
内存和硬盘的主要区别,主要为以下三点:
1、内存是计算机运行的场所,硬盘用来存放暂时不用的信息;
2、内存是半导体材料制成的,硬盘是磁性材料制成的;
3、内存(这里指内存中的RAM)中的信息会随掉电消失,硬盘中的信息可以长久保存。
2、存储器(RAM、ROM、FLASH、SRAM、DRAM、SDRAM、DDR)
- RAM和ROM
先说一下RAM和ROM的关系。
ROM(Read Only Memory):只读存储器,只能读出事先所存数据的固态半导体存储器。其特点是不能更改存储器内部的数据。适用于不需经常变更资料的系统里。其内的数据不会因为掉电而消失。ROM主要分为掩膜ROM(专用掩膜板)、PROM(可一次性编程 ROM)、EPROM(紫外线擦除可改写 ROM)、EEROM(电擦除可改写 ROM)、flash ROM(快闪 ROM)等几类。
RAM (Random Access Memory) :随机访问寄存器,可以随意取出或存入数据,且存取的速度与存储单元的位置无关。一般来说,RAM也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。它与ROM的最大区别是数据的易失性,即一旦断电所存储的数据将随之丢失。RAM在计算机和数字系统中用来暂时存储程序、数据和中间结果。所谓“随机存取”,指的是当存储器中的数据被读取或写入时,所需要的时间与这段信息所在的位置或所写入的位置无关。相对的,读取或写入顺序访问(Sequential Access)存储设备中的信息时,其所需要的时间与位置就会有关系。它主要用来存放操作系统、各种应用程序、数据等。RAM特点为:访问速度快,数据易失(断电会丢失数据,电容器或多或少有漏电的情形,不断电数据也会随时间流失,因此需要指定期读取电容器的状态,然后按照原来的状态重新为电容器充电,这一过程称为“刷新”),静电敏感性(静电会干扰存储器内电容器的电荷,引致数据流失)。
- SRAM与DRMA
静态随机存取存储器(SRAM)是RAM的一种类型。其"静态"特性意味着只要持续供电,存储数据即可稳定保持,无需像动态随机存取存储器(DRAM)那样周期性刷新。但SRAM仍属于易失性存储器,断电后数据会丢失,这一点与断电后仍能保存数据的ROM或闪存不同。
SRAM的主要缺点是集成度较低、功耗高于DRAM。相同容量下,DRAM的芯片面积更小、成本更低,而SRAM需要更大的硅片面积,因此价格更贵,通常用于对速度要求极高的缓存(Cache)等场景。
- FLASH
FLASH 闪存则是一种非易失性( Non-Volatile )内存,在没有电流供应的条件下也能够长久地保持数据。其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。
FLASH分为Nor Flash和Nand Flash。
Nor Flash有自己的地址线和数据线,可以采用类似于memory的随机访问方式,在Nor Flash上可以直接运行程序,所以Nor Flash可以直接用来做boot,采用Nor Flash启动的时候会把地址映射到0x00上。Nand Flash是IO设备,数据、地址、控制线都是共用的,需要软件区控制读取时序,所以不能像Nor Flash、内存一样随机访问,不能EIP(片上运行),因此不能直接作为boot。因此Nand Flash:适合大容量数据存储,类似硬盘;Nor Flash:适合小容量的程序或数据存储,类似小硬盘,但是可以EIP。
性能比较:
1、NOR的读速度比NAND稍快一些。
2、NAND的写入速度比NOR快很多。
3、NAND的4ms擦除速度远比NOR的5s快。
4、大多数写入操作需要先进行擦除操作。
5、NAND的擦除单元更小,相应的擦除电路更少
接口比较:
NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。
NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。
NAND flash和NOR flash的容量和成本:
NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。
NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储
- SDRAM和DDR
SDRAM (Synchronous Dynamic Random Access Memory,同步动态随机存储器,即内存)是DRAM 的一种,它是同步动态存储器。使用SDRAM不但能提高系统表现,还能简化设计、提供高速的数据传输。
内存一般是代码的执行空间,程序则是以文件的形式保存在硬盘里面的。运行程序之前,操作系统先将程序载入内存,在内存里面执行程序。由于内存是RAM(随机访问),可以通过地址去定位一个字节的数据,CPU在执行程序时将PC的值设置为程序在内存中的开始位置,之后CPU一次到内存地址中取址、译码和执行。要让程序在内存里面运行必须先对内存进行初始化,未初始化的内存是不能用来读取和存储数据的。
DDR SDRAM全称为Double Data Rate SDRAM,中文名为“双倍数据流SDRAM”。DDR SDRAM在原有的SDRAM的基础上改进而来,其数据传输速度为系统时钟频率的两倍,由于速度增加,其传输性能优于传统的SDRAM。
DDR SDRAM 在系统时钟的上升沿和下降沿都可以进行数据传输。SDRAM在一个时钟周期内只传输一次数据,它是在时钟上升期进行数据传输。
二、什么是Bootloader、u-boot?
BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
uboot (Universal Bootloader)是Bootloader的一种实现,支持多种嵌入式CPU架构(如ARM、MIPS、PowerPC等)。它不仅具备启动内核的功能,还提供了丰富的硬件管理能力和命令行界面,能够完成镜像烧录、网络功能等任务。两者的主要区别在于,Bootloader是一个通用概念,而uboot是具体的实现。换句话说,uboot是Bootloader的一个子集,其核心作用是启动操作系统内核,同时具备更强的扩展性和功能性。
举例来说。PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的 OSBootLoader(比如,LILO和GRUB 等)一起组成。BIOS在完成硬件检测和资源分配后将硬盘 MBR中的BootLoader 读到系统的RAM中,然后将控制权交给 OS BootLoader。BootLoader的主要运行任务就是将内核映象从硬盘上读到RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。具体来说是这样的:
其中①②步都是BIOS干的活。第③步的os bootloader干的活。
三、
参考博客:
https://developer.aliyun.com/article/1411165?scm=20140722.ID_community%40%40article%40%401411165._.ID_community%40%40article%40%401411165-OR_rec-PAR1_210bc22217689809585761280d0b1a-V_1-RL_community%40%40article%40%401411168