当前位置: 首页 > 面试题库 >

为什么在嵌入式设备中需要引导加载程序?

巢德华
2023-03-14
问题内容

我正在ARM Cortex-A8上使用ELinux内核。

我知道引导加载程序的工作方式以及正在执行的工作。但是我有一个问题-为什么我们需要引导加载程序, 为什么引导加载程序诞生了

为什么在没有引导加载程序的情况下不能直接从闪存将内核加载到RAM?如果我们加载它,将会发生什么?实际上,处理器将不支持它,但是为什么要遵循该程序?


问题答案:

引导加载程序是一种计算机程序,可以在自检完成后为计算机加载主操作系统或运行时环境。

^ 从维基百科文章

因此,基本上,引导加载程序正在执行您想要的操作-将数据从闪存复制到操作内存。真的就是这么简单。

如果您想了解有关增强操作系统的更多信息,强烈建议您阅读链接的文章。引导阶段除了测试外,还包括检查外围设备和其他一些事情。跳过它们仅在非常简单的嵌入式设备上才有意义,这就是为什么它们的引导程序更加简单的原因:

某些嵌入式系统不需要明显的启动顺序即可开始运行,并且在打开时可以仅运行存储在ROM中的可运行程序。

相同的来源



 类似资料:
  • 我洛基,在“开始”之后,我遵循https://getbootstrap.com/docs/4.3/layout/overview/的指示(我猜在那个例子中缺少了一些东西) 我说: 链接到头标签中的css文件 但是它不起作用,类“hid-ph-flex”总是在“代码”显示中:无“代码”,火狐调试器警告说:“未知规则或错误读取规则在“包括” 我想我忘了一份文件,有什么帮助吗???

  • 我正在阅读本教程,它的底部写道: 由于如果不加选择地使用隐式转换,隐式转换可能会产生陷阱,因此编译器会在编译隐式转换定义时发出警告。要关闭警告,请执行以下任一操作:将 scala.language.implicitConversions 导入到隐式转换定义的作用域中... 如果使用隐式 val 而不是隐式 def,则不会引发警告。为什么? 换句话说,如果我执行以下操作,我不需要导入: 但是,如果我

  • 但代码不起作用。我是否需要将launchActivity定义为一个规则,或者是否存在我需要在Gradle中导入的库? 这些是我已经有的进口品

  • 我和同事一起创建了一个Angular 5应用程序。我为我的所有界面创建了一个文件夹,并按功能进行分组。然而,我没有在它们上包含任何导出符号,并且在使用它们时,我从不需要导入它们……它们只存在,不会产生任何编译错误。我喜欢这种方式,因为它使代码更干净,但我只是在利用一些bug吗?我的同事以“正确”的方式完成了它,并且需要在任何时候导入他想要使用的界面。有什么想法吗?您应该如何创建存在于单独文件中的接

  • 任何数据库都需要备份,备份数据是维护数据库必不可少的操作。 在学习如何备份数据之前,我们先了解一下数据库备份是为了应对哪些场景?为什么数据库需要备份? 备份就是为了防止原数据丢失,保证数据的安全。当数据库因为某些原因造成部分或者全部数据丢失后,备份文件可以帮我们找回丢失的数据。因此,数据备份是很重要的工作。 常见数据库备份的应用场景如下。 数据丢失应用场景: 人为操作失误造成某些数据被误操作 软件

  • 问题内容: 假设我有一个名为的类,并且我想使用装饰器设计模式。如果我错了,请纠正我,但是要使其正常工作,我们需要创建一个装饰器类,例如,该类将保留对实例的引用,所有其他装饰器将对其进行扩展以添加功能。 我不明白为什么我们必须创建装饰器类而不是使用实例? 问题答案: 装饰器模式用于动态地(即在运行时)向对象添加功能。通常,在编写类时,对象将具有固定的功能。但是重要的一点是,对象的功能以对对象的客户端