308得票4回答
如何在没有操作系统的情况下运行程序?

如何在没有操作系统运行的情况下单独运行程序?您可以创建汇编程序,使计算机能够在启动时加载和运行它们,例如从闪存驱动器引导计算机并运行CPU上的程序吗?

68得票3回答
ARM的启动过程是什么?

众所周知,对于X86架构:按下电源按钮后,机器开始执行位于0xFFFFFFF0的代码,然后它开始执行BIOS中的代码以进行硬件初始化。在BIOS执行完毕后,它使用引导加载程序将操作系统映像加载到内存中。最后,操作系统代码开始运行。 那么,在ARM架构中,在用户按下电源按钮后,启动过程是什么样子...

43得票5回答
为什么通用程序通常从0x8000开始?

我对引导程序和系统软件并不陌生,但是我不知道一般程序为什么要从地址0x8000开始运行。我已经知道在普通的C/C++程序中地址0x8000被用作起始地址。 引导程序对于一般程序的最小大小是否需要占用0x8000?或者引导程序应该分配到32KB的最小ROM块大小?或者有其他的原因吗? 我想从...

32得票2回答
ARM系统中Bootrom和bootloader有什么区别?

我的主要背景是x86系统,在这些系统中,BIOS(固件)负责从PowerON加载引导程序(如GRUB),然后加载操作系统。我现在一直在阅读关于ARM系统中等价的引导序列,似乎有一些文章提到了两个术语:bootrom和bootloader。 一些文章提到,从PowerON开始,引导程序(如u-...

30得票2回答
Arduino Bootloader

请问有人能够解释一下Arduino bootloader是如何工作的吗?我不是在寻找高层次的答案,我已经阅读了代码并基本理解了它。在Arduino IDE和引导加载程序代码之间会发生很多协议交互,最终将通过串行接口传输的程序用一些内联汇编指令进行自我编程,存储到闪存中。 但我不清楚的是在第2...

28得票2回答
引导程序 - 切换处理器到保护模式

我很难理解一个简单的引导程序是如何工作的。我所说的引导程序来自MIT课程《操作系统工程》。 首先,让我展示一段BIOS执行的汇编代码: [f000:fec3] 0xffec3: lidtw %cs:0x7908 [f000:fec9] 0xffec9: lgdtw %cs:...

26得票6回答
为什么嵌入式设备需要引导加载程序?

我正在使用ARM Cortex-A8上的ELinux内核。 我知道引导加载程序是如何工作以及它的作用,但我有一个问题-为什么我们需要引导加载程序,引导加载程序的出现背景是什么? 如果我们不使用引导加载程序,为什么不能直接从闪存中将内核加载到RAM中?如果我们这样做,会发生什么?实际上,处理...

23得票5回答
C语言编写的引导程序无法编译

我是一个新手,在编写引导程序方面还不熟练。我已经用汇编语言编写了一个helloworld的引导程序,现在正在尝试使用C语言编写一个。我已经用C语言编写了一个helloworld的引导程序,但是无法编译。 这是我的代码。我做错了什么?为什么它不能编译?void print_char(); in...

23得票5回答
UEFI是如何工作的?

我在学习关于引导程序时,恰好遇到了UEFI这个术语。我了解一些关于UEFI的知识。但是,使用UEFI启动系统是在哪种模式(Real,Protected,Long)下进行的?如果普通的启动加载程序无法与UEFI配合工作,那么在处理UEFI时有什么替代的启动加载程序呢?除了汇编之外,我是否需要其他...

22得票4回答
0000:7c00内存地址在引导过程中的意义是什么?

为什么bios会在0000:7c00读取分区的引导记录?那个地址有什么特别之处?在引用地址时,冒号有什么作用?