第1章 嵌入式Linux基础
1.1 嵌入式Linux概述
嵌入式系统是以应用为中心,以计算机技术为基础,软硬件均可裁剪的专用计算机系统,适用于对功能、可靠性、成本、体积和功耗要求严格的场合。
嵌入式Linux是指将标准Linux系统进行裁剪、修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式Linux 继承了Internet 上无限开放的源代码资源,同时还具有嵌入式操作系统的特性,因此得到越来越多公司的支持,现在很多芯片公司提供的嵌入式解决方案都支持Linux操作系统。
嵌入式Linux的系统架构如图1.1所示,下面将对架构图中的各层组织予以简单介绍。
图1.1 嵌入式Linux系统架构
硬件平台要么自己开发,要么采用成熟的方案,最主要的是CPU体系结构,常用的有ARM、MIPS、SH、PowerPC等。
以下是一个版本为2.6.x的Linux内核源代码目录结构。
arch:包含和硬件体系结构相关的代码,每种平台占一个对应的目录。有的公司在相应的硬件架构(比如ARM)目录下单独用一个目录存放它们提供的平台相关代码。
block:部分块设备驱动程序。
crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法。
Documentation:关于内核各部分的通用解释和注释。
drivers:设备驱动程序,每个不同的驱动占用一个子目录。
fs:各种支持的文件系统,如ext、fat、ntfs等。
include:头文件,其中和系统相关的头文件被放置在linux子目录下。
init:内核初始化代码(注意不是系统引导代码),这是内核工作开始的起点。
ipc:进程间通信代码。
kernel:内核的最核心部分,包括进程调度、定时器等,和平台相关的一部分代码放在arch/*/kernel目录下,其中*表示某一特定的硬件平台,如MIPS或者PPC等。
lib:库文件代码。
mm:内存管理代码,和平台相关的一部分代码放在 arch/*/mm目录下,其中*表示某一特定的硬件平台,如MIPS等。
net:网络相关代码,实现了各种常见的网络协议。
scripts:用于配置内核文件的脚本文件。
security:主要是一个SELinux的模块。
sound:常用音频设备的驱动程序等。
usr:实现了一个CPIO。CPIO是Linux下的一种新的内核启动镜像所附带的虚拟磁盘格式,它与传统的Image格式比较有一些改进,主要体现在打包速度和启动引导方式上。
shared libraries的架构在APP层的下面,与应用程序有着密不可分的关系,shared libraries最直接影响到应用程序。shared libraries的核心成员为C Library,除此之外,也包括其他的库文件,如C++标准库、POSIX(Portable Operating System for UNIX)线程库以及其他的动态库等。
APP包括交叉编译的应用程序、Linux命令集、各种可执行脚本等。