Embedded 嵌入式系统中的引导加载程序和启动代码是什么?

Embedded 嵌入式系统中的引导加载程序和启动代码是什么?,embedded,Embedded,引导加载程序和启动代码在嵌入式系统中的基本意义是什么?有什么区别 这些放在哪里??以及从上电重置到应用程序启动的流程概述。一般来说,考虑任何平台 所有处理器都有特定于处理器的启动方式。通常在处理器地址空间中有一些地址,例如0xFFFF0000,处理器在其中读取该内存。它找到的值用作编码地址,并在该地址开始执行代码 芯片或电路板的硬件设计者要做的是确保闪存或其他形式的非易失性存储器(ROM)映射到该地址空间,以便处理器的启动代码和该地址映射到该特殊地址的启动代码,当打开电源并释放重置时,处理器将在

引导加载程序和启动代码在嵌入式系统中的基本意义是什么?有什么区别


这些放在哪里??以及从上电重置到应用程序启动的流程概述。一般来说,考虑任何平台

所有处理器都有特定于处理器的启动方式。通常在处理器地址空间中有一些地址,例如0xFFFF0000,处理器在其中读取该内存。它找到的值用作编码地址,并在该地址开始执行代码

芯片或电路板的硬件设计者要做的是确保闪存或其他形式的非易失性存储器(ROM)映射到该地址空间,以便处理器的启动代码和该地址映射到该特殊地址的启动代码,当打开电源并释放重置时,处理器将在那里读取数据(RAM是易失性的,关闭电源会丢失数据,重新打开电源会得到一些随机数据,直到RAM写入其他数据)

因此,处理器运行的第一个代码通常称为引导加载器,有些人可能会争论,加载器的后半部分意味着该代码既可以“引导”操作系统或任何要运行的应用程序,也可以作为第二个功能为开发人员提供“加载器”功能。如果您曾经使用过或甚至使用过许多其他引导加载程序,您可能会理解,如果您不触摸任何东西,它将引导默认的嵌入式应用程序或操作系统

但是,如果您中断引导过程,并且中断该过程对于平台和软件来说非常特殊,有时您必须按下按钮或将两个引脚短接在一起,或者在串行/端口上发送转义或其他字符,等等。,然后它进入加载程序模式,您可以更改引导内容和/或代替引导加载程序从flash/ROM加载默认程序,它可以让您使用或或或以太网端口和协议将测试程序加载到RAM中,然后让您运行该程序而不是默认程序

有些人将引导软件称为引导加载程序,即使它不允许您中断该过程并加载一些备用程序,因为该引导代码可能正在将应用程序从非活动存储“加载”到RAM中

并非所有引导加载程序都需要将应用程序从非易失性存储器(闪存/ROM、硬盘、CD-ROM等)复制到RAM。一些系统和一些应用程序通过闪存/ROM运行。例如,PC中真正的引导加载程序是BIOS,它是一个存在于闪存/ROM中并从闪存/ROM运行的程序。对于类似PC的系统,无论如何都必须启动DRAM系统。要配置硬件以使DRAM正常工作,需要编写大量代码。有时,当PC启动时,您可以在显示器上看到这种情况。如果您的系统中有,那么它可能也需要一些初始化,但通常没有DRAM那么复杂,而且通常它会立即启动并准备好使用,几乎不需要配置,不同的处理器和不同的系统……是不同的

因此,处理器没有复位,以某种方式在处理器硬件中硬编码。它已找到启动代码的入口点并开始执行该代码。这些代码通常需要启动外围设备和RAM并运行,然后运行主应用程序。或者至少在启动该应用程序之前需要同样多的硬件

在嵌入式系统中加载Linux可以很简单,比如启动RAM,将内核从ROM复制到RAM,可能准备一些寄存器,可能填充内核查看的一些内存位置,例如内存大小和备用命令行,然后分支到内核的开始。您不必在某些系统上复制内核;你可以直接转到它所在的ROM。然后Linux将启动系统的其余部分。在PC机上,BIOS会做很多事情,比如调出视频、DRAM、枚举(e)总线外围设备、调出硬盘或其他类似文件系统的设备,然后使用用户在BIOS硬盘或类似外围设备(USB拇指驱动器或CD-ROM等)中定义的。文件系统的开头将包含一些如何根据BIOS代码规则引导操作系统的内容。这可能是另一个引导加载程序(GRUB、U-Boot等),它最终将内核或操作系统启动代码复制到RAM,然后分支到RAM

术语引导加载程序和启动代码可以互换使用。有些人可能会对它们的不同或细微差异吹毛求疵,但这通常与复杂性有关,像U-Boot这样有以太网驱动程序和文件系统驱动程序等的引导加载程序在某种程度上本身就是一个操作系统,无论哪种方式,U-Boot都非常复杂

例如,微控制器的启动代码可能非常简单,只需几行代码,设置堆栈指针,然后分支到main。启动代码/引导加载程序可以是介于两者之间的任何复杂程度。如前所述,一些嵌入式系统从ROM启动并运行其应用程序,因此不需要复制并运行。其他的则需要复制并运行主应用程序

有时会涉及硬件或其他方案。例如,许多基于硬件的解决方案都是可能的,硬件在通电时从ROM读取内容并进行复制。然后,当处理器或其他逻辑被释放时,您的程序或其他数据神奇地存在于RAM中,随时可以使用。即使当电源关闭时,它仍然存在于一个ROM中,您通常不会触摸它。世界银行还有另一个解决方案。该芯片有两个处理器,一个是ARM,另一个是图形处理器,完全不同的指令集,用于数学运算等。som中有