嵌入式 Linux 系统:启动配置、内存布局与硬件支持
1. 库加载与系统启动概述
在系统运行中,像文件系统这样的库通常只在系统内存(RAM)中加载一次,并且被所有使用该库的应用程序共享。不过,在嵌入式系统中,有时静态链接会比动态链接更受青睐。静态链接是指将库作为应用程序二进制文件的一部分,当一两个应用程序只使用库的部分功能时,静态链接可以避免在嵌入式系统的存储设备上存储整个库。此外,当将专有应用程序与某些仅受严格 GPL 许可证而非 LGPL 许可证保护的库进行链接时,许可问题会使情况变得更加复杂。
系统启动主要涉及三个软件组件:引导加载程序(bootloader)、内核(kernel)和初始化进程(init process)。引导加载程序是系统启动时运行的第一个软件,它高度依赖目标硬件。引导加载程序完成底层硬件初始化后,会跳转到内核的启动代码。
内核早期启动代码在不同架构之间差异很大,在为 C 代码运行设置合适的环境之前,它会进行自身的初始化。完成这些后,内核会跳转到与架构无关的 start_kernel() 函数,该函数会初始化高级内核功能、挂载根文件系统并启动初始化进程。在高级内核初始化过程中,会调用特定平台的代码,这些代码因支持的架构而异。例如,一些 PowerPC 系统会利用这个机会设置特殊的内存映射和串行诊断功能的最小版本,这主要用于调试。
系统启动的其余部分由根文件系统上的初始化程序在用户空间中完成。
2. 引导配置类型
系统选择的引导配置类型会极大地影响引导加载程序的选择、配置以及主机中的软件和硬件类型。在设计系统时,首先需要确定开发和最终产品中可能使用的引导配置,然后
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



