如何创建,编译和链接引导程序?

问题描述 投票:0回答:1

我正在制作一个小型操作系统,并为它编写了一个工作内核。但是我将如何创建一个引导加载程序来调用内核并编译和链接内核和引导程序。我正在使用gcc和yasm。如果需要,我也可以使用nasm。

compilation linker operating-system kernel bootloader
1个回答
0
投票

基本上,在引导期间有两个步骤(高度简化)(特别是与基于ARM的嵌入式Linux板相关):

  1. 当供电时,处理器唤醒并执行其ROM代码。该代码硬编码到制造商提供的芯片中。执行基本的harware准备和完整性检查后,此ROM代码调用引导加载程序。您需要查看文档,了解此初始代码在哪里(哪个地址)查找引导加载程序。如果找到引导加载程序,它将放弃其控制权并将控制权传递给引导加载程序。
  2. 引导加载程序再次查找内核二进制文件(编译图像)的几个预先指定的内存位置。它(bootloader)然后放弃它的控制并将控制传递给内核(具有少量参数,有时还有设备树的内存位置)。

AFAIK,内核和引导程序通常不会“编译/链接”在一起。这是一个阶段完全放弃自己并将控制权传递给另一个阶段的过程(如上面两个步骤所述)。

© www.soinside.com 2019 - 2024. All rights reserved.