大多数嵌入式设备都是为在通常资源受限或低规格设备上执行特定任务而构建的。因此,大多数嵌入式开发人员需要去除不必要的库和模块,并为他们的特定设备和用例创建自定义分发。我们先来了解一下嵌入式Linux系统有哪些组成部分。引导加载程序在技术上处于系统之外,并且与首先运行BIOS的台式机或服务器系统的运行方式不同。在嵌入式系统上,硬件引导负责内核引导加载程序的基本初始化和执行。在嵌入式系统上,这可以通过以下方式处理:GRUB、LILO或DasU-Boot。后者专门用于嵌入式设备。Linux内核包含进程和内存管理、网络堆栈、设备驱动程序,并为任何用户空间应用程序提供服务。引导加载程序将内核加载到内存中并运行它。内核首先寻找一个“init”程序来运行。“Init”程序负责启动其他服务,如硬件驱动程序、文件系统驱动程序、文件系统挂载、服务和其他应用程序。内核只知道init程序,如果找不到,就会“kernelpanic”。嵌入式系统上的内核与大型系统(如台式机)中的内核相同。主要区别在于嵌入式Linux内核是专门为在不同的CPU架构上运行而构建的。根文件系统根文件系统包含C库和Linux服务/命令,以及其他必要的脚本。在嵌入式开发中,文件系统是内核和用户空间应用程序之间的接口。在初始化时,内核将每个程序加载到内存中,并希望将它们组织成文件和目录。这是根文件系统,应该在内核启动“init”之前预先创建并挂载到“/”。用户空间用户空间是任何自定义应用程序或服务所在的地方。init程序还负责将这些加载到内存中。大多数嵌入式系统都是执行特定功能的单一用途应用程序,因此嵌入式系统上的应用程序往往是精简和最小的。在目标嵌入式处理器上运行Linux需要至少8MB的RAM,而大多数应用程序至少需要32MB的RAM。实际RAM要求取决于嵌入式应用程序的大小。除了RAM之外,至少还需要4MB的存储内存。它可以是以下类型之一:NAND或NOR闪存、SD或MMC卡。主板支持包主板支持包包含与您正在运行的特定硬件和操作系统接口的驱动程序和其他软件。对于Linux系统,每种板卡类型都有自己的一组BSP。在嵌入式开发的某些情况下,如果您需要硬件来执行默认BSP中未包含的特定功能,您可能需要自定义这些并编写自己的驱动程序以支持您的特定应用程序。
