0

我试图非常详细地了解计算机是如何启动的。

我遇到了两件让我更加好奇的事情,
1. RAM 被放置在 ROM 的底部,以避免像 Z80 处理器中那样的内存孔。
2. 使用复位向量,它将处理器带到 ROM 中的内存位置,其内容指向处理器实际开始执行指令(POST 指令)的实际位置(还是 ROM)。为什么这样?

如果你还是看不懂我,这个链接给你简单解释一下, http: //lateblt.tripod.com/bit68.txt

4

2 回答 2

1

处理器逻辑通常是刚性和固定的,因此称为硬件。软件是可以改变、塑造等的东西,因此称为软件。

硬件需要启动一些how,两种基本方法,

1)读取处理器内存空间中逻辑硬编码的地址,该值是开始执行代码的地址

2)在逻辑中硬编码的地址是处理器开始执行代码的地方

当处理器本身与其他硬件集成时,任何东西都可以映射到任何地址空间。您可以将 ram 放在地址 0x1000 或 0x40000000 或两者中。您可以将外围设备映射到 0x1000 或 0x4000 或 0xF0000000 或以上所有位置。这是系统设计师的选择,或者是工程师团队的组合。一个重要的因素是一旦重置被释放,系统将如何启动。由于其架构,处理器的启动是众所周知的。设计师经常选择两条路:

1)根据处理器的引导方法,在包含复位向量或入口点的内存空间中放置一个 ROM(无论哪种架构,都有一个第一个地址或第一个地址块被读取,并且它们的内容驱动引导处理器)。该软件将代码或向量表或两者都放置在此 rom 中,以便处理器启动并运行。

2)将ram放入内存空间,这样一些主机可以将程序下载到该ram中,然后在处理器上释放reset。然后处理器遵循其硬编码的引导程序并执行软件。

第一个是最常见的,第二个出现在一些外围设备、鼠标和网卡之类的东西中(例如 /usr/lib/firmware/ 中的一些固件用于此)。

但底线是处理器通常设计有一种引导方法,一种固定方法,因此为该处理器编写的所有软件都可以符合该一种方法,而不必不断更改。此外,处理器在设计时并不知道它的目标应用程序,因此它需要一个通用的解决方案。目标应用程序通常定义内存映射、处理器内存空间的位置,以及该分配中的任务之一是该产品将如何启动。从那里编译和放置软件,使其符合处理器规则和产品硬件规则。

于 2013-02-23T16:45:22.617 回答
0

它完全因架构而异。不过,核心可能想要这样做有几个原因。嵌入式内核(想想 ARM 和 Microblaze 的思路)倾向于在具有单一地址空间的片上系统机器中使用。这样的架构可以有多个内存,并且往往只规定内存的底部区域(即 0x00)包含中断向量。然后允许程序员轻松指定从哪里启动。在 Microblaze 上,您可以在 XPS 中随心所欲地附加内存。

此外,它还可用于轻松支持引导加载程序。这些通常用作小程序进行一些初始化,然后从无法简单访问的介质(例如 USB 或以太网)中获取更大的程序。在这些情况下,引导加载程序通常会将自身复制到高端内存,在其下方获取,然后跳转到那里。复位向量只是允许程序员绕过第一步。

于 2013-02-22T19:08:44.023 回答