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

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



