第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命令集、各种可执行脚本等。