linux启动过程分析及dns服务器毕业论文(编辑修改稿)内容摘要:
Bootloader 是嵌入式系统的引导加载程序,它是系统上电后运行的 第一段程序,其作用类似于 PC 机上的 BIOS。 在完成对系统的初始化任务之后,它会将非易失性存储器(通常是 Flash 或 DOC 等)中的 Linux 内核拷贝到 RAM 中去,然后跳转到内核的第一条指令处继续执行,从而启动 Linux 内核。 由此可见, bootloader 和 Linux 内核有着密不可分的联系,要想清楚的了解 Linux 内核的启动过程,我们必须先得认识 bootloader 的执行过程,这样才能对嵌入式系统的整个启过程有清晰的掌握。 Bootloader 的执行过程 不同的处理器上 电或复位后执行的第一条指令地址并不相同,对于 ARM 处理器来说,该地址为 0x00000000。 对于一般的嵌入式系统,通常把 Flash 等非易失性存储器映射到这个地址处,而 bootloader就位于该存储器的最前端,所以系统上电或复位后执行的第一段程序便是 bootloader。 而因为存 储 bootloader 的存储器不 同,bootloader的执行过程也并不相同。 bootloader 必须具备的功能 1) 初始化 RAM 因为 Linux 内核一般都会在 RAM 中运行,所以在调用 Linux 内核Linux 启动过程分析 之前 bootloader 必须设置和初始化 RAM,为调用 Linux 内核做好准备。 初始化 RAM 的任务包括设置 CPU 的控制寄存器参数,以便能正常使用 RAM 以及检测 RAM 大小等。 2) 初始化串口串口在 Linux 的启动过程中有着非常重要的作用,它是 Linux 内核和用户交互的方式之一。 Linux 在启动过程中可以将信息通过串口输出,这样便可清楚的了解 Linux 的启动过程。 虽然它并不是 bootloader 必须要完成的工作,但是通过串口输出信息是调试 bootloader 和 Linux 内核的强有力的工具,所以一般的 bootloader 都会在执行过程中初始化一个串口做为调试端口。 3) 检测处理器类型 Bootloader 在调用 Linux 内核前必须检测系统的处理器类型,并将其保存到某个常量中提供给 Linux 内核。 Linux 内核在启动过程中会根据该处理器类型调用相应的初始化程序。 4) 设置 Linux 启动参数 Bootloader 在执行过程中必须设置和初始化 Linux 的内核启动参数。 目前 传递 启动 参数 主 要采 用两 种方 式: 即通 过 struct param_struct 和 struct tag(标记列表, tagged list)两种结构传递。 5) 调用 Linux 内核映像 Bootloader 完成的最后一项工作便是调用 Linux 内核。 如果 Linux 内核存放在 Flash 中,并且可直接在上面运行(这里的 Flash 指 Nor Flash),那么可直接跳转到内核中去执行。 但由于在 Flash Linux 启动过程分析 中执行代码会有 种种限制,而且速度也远不及 RAM 快,所以一般的嵌入式系统都是将 Linux 内核拷贝到 RAM 中,然后跳转到 RAM 中去执行。 不论哪种情况,在跳到 Linux 内核执行之前 CUP 的寄存器必须满足以下条件: r0= 0, r1=处理器类型, r2=标记列表在 RAM中的地址。 Linux 启动过程分析 第三章 Linux 内核的启动过程 Linux 内核入口 Linux 非压缩内核的入口位于文件 /arch/arm/kernel/ 中的 stext 段。 该段的基地址就是压缩内 核解压后的跳转地址。 如果系统中加载的内核是非压缩的 Image,那么 bootloader 将内核从 Flash中拷贝到 RAM 后将直接跳到该地址处,从而启动 Linux 内核。 不同体系结构的 Linux 系统的入口文件是不同的,而且因为该文件与具体体系结构有关,所以一般均用汇编语言编写 [3]。 对基于 ARM 处理的 Linux 系统来说,该文件就是。 该程序通过查找处理器内核类型和处理器类型调用相应的初始化函数,再建立页表,最后跳转到 start_kernel()函数开始内核的初始化工作。 start_kernel 函数 start_kernel是所有 Linux 平台进入系统内核初始化后的入口函数,它主要完成剩余的与硬件平台相关的初始化工作,在进行一系列与内核相关的初始化后,调用第一个用户进程- init 进程并等待用户进程的执行,这样整个 Linux 内核便启动完毕。 结论 Linux 内核是一个非常庞大的工程,经过十多年的发展,它已从从最初的几百 KB 大小发展到现在的几百兆。 清晰的了解它执行的每一个Linux 启动过程分析 过程是件非常困难的事。 但是在嵌入式开发过程中,我们并不需要十分清楚 li。linux启动过程分析及dns服务器毕业论文(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。