《嵌入式 Linux应用程序开发标准教程(第2版)》——1.1 嵌入式Linux基础

1.1 嵌入式Linux基础

嵌入式 Linux应用程序开发标准教程(第2版)
自由开源软件在嵌入式应用上受到青睐,Linux日益成为主流的嵌入式操作系统之一。随着MOTOROLA手机A760、IBM智能型手表WatchPad、SharpPDA Zaurus等一款款高性能“智能数码产品”的出现,以及Motorola、Samsung、MontaVista、Philips、Nokia、IBM、SUN等众多国际顶级巨头的加入,嵌入式Linux的队伍越来越庞大了。目前,国外不少大学、研究机构和知名公司都加入了嵌入式Linux的开发工作,成熟的嵌入式Linux产品不断涌现。

2004年全球嵌入式Linux市场规模已达9150万美元,2005年有1.336亿美元,2006年有1.653亿美元,2007年达到2.011亿美元,每年平均增长30%。

究竟是什么原因让嵌入式Linux系统发展如此迅速。业界归纳为三大原因:第一,Linux在嵌入式系统所需的实时性、电源管理等核心技术方面不断发展;第二,国际标准组织(如OSDL、CELF等)持续建立嵌入式Linux相关标准,有效解决版本分歧与兼容性问题;第三,业界主导组织、开发厂商等不断推出嵌入式Linux相关开发工具、维护系统。

嵌入式Linux以年费订阅方式为主,与其他的以产品利润为收入方式的嵌入式系统不同,弹性的捆绑销售策略,助其成功地逐年提高市场占有率,从2004年的46.8%扩大到2007年的56.4%。

国际有名的嵌入式Linux操作系统提供商MontaVista,收购了PalmSource的爱可信和奇趣科技等,加强了对中国市场的投入,并在整个嵌入式操作系统市场中,占据了重要地位。而嵌入式操作系统的领先厂商,也改变了原来的单一产品路线,开始推出自己的Linux软件产品,实现“两条腿走路”。国内的嵌入式软件厂商也以Linux为突破口,纷纷开发各种基于Linux的操作系统产品。这些嵌入式Linux厂商已经形成了一个不容忽视的群体。

以下就从Linux开始,一层层揭开嵌入式Linux的面纱。

1.1.1 Linux发展概述

简单地说,Linux是指一套免费使用和自由传播的类UNIX操作系统。人们通常所说的Linux是Linus Torvalds所写的Linux操作系统内核。

当时的Linus还是芬兰赫尔辛基大学的一名学生,他主修的课程中有一门课是操作系统,而且这门课是专门研究程序的设计和执行。最后这门课程提供了一种称为Minix的初期UNIX系统。Minix是一款仅为教学而设计的操作系统,而且功能有限。因此,和Minix的众多使用者一样,Linus也希望能给它添加一些功能。

在之后的几个月里,Linus根据实际的需要编写了磁盘驱动程序以便下载访问新闻组的文件,又编写了个文件系统以便能够阅读Minix文件系统中的文件。这样,“当你有了任务切换,有了文件系统和设备驱动程序后,这就是UNIX,或者至少是其内核。”于是,0.0.1版本的Linux就诞生了。

Linus从一开始就决定自由传播Linux,他把源代码发布在网上,于是,众多的爱好者和程序员也都通过互联网加入到Linux的内核开发工作中。这个思想与FSF(Free Software Foundation)资助发起的GNU(GNU’s Not UNIX)的自由软件精神不谋而合。

GNU是为了推广自由软件的精神以实现一个自由的操作系统,然后从应用程序开始,实现其内核。而当时Linux的优良性能备受GNU的赏识,于是GNU就决定采用Linus及其开发者的内核。在他们的共同努力下,Linux这个完整的操作系统诞生了。其中的程序开发共同遵守General Public License(GPL)协议,这是最开放也是最严格的许可协议方式,这个协议规定了源码必须可以无偿地获取并且修改。因此,从严格意义上说,Linux应该叫做GNU/Linux,其中许多重要的工具如gcc、gdb、make、emacs等都是GNU贡献的。

这个“婴儿版”的操作系统以平均两星期更新一次的速度迅速成长,如今的Linux已经有超过250种发行版本,且可以支持所有体系结构的处理器,如X86、PowerPC、ARM、Xscale等,也可以支持带MMU或不带MMU的处理器。到目前为止,它的内核版本也已经从原先的0.0.1发展到现在的2.6.xx。

1.1.2 Linux作为嵌入式操作系统的优势

从Linux系统的发展过程可以看出,Linux从最开始就是一个开放的系统,并且它始终遵循着源代码开放的原则,它是一个成熟而稳定的网络操作系统,作为嵌入式操作系统有如下优势。

1.低成本开发系统
Linux的源码开放性允许任何人获取并修改Linux的源码。这样一方面大大降低了开发的成本,另一方面又可以提高开发产品的效率。并且还可以在Linux社区中获得支持,用户只需向邮件列表发一封邮件,即可获得作者的支持。

2.可应用于多种硬件平台
Linux可支持X86、PowerPC、ARM、Xscale、MIPS、SH、68K、Alpha、Sparc等多种体系结构,并且已经被移植到多种硬件平台。这对于经费、时间受限制的研究与开发项目是很有吸引力的。Linux采用一个统一的框架对硬件进行管理,同时从一个硬件平台到另一个硬件平台的改动与上层应用无关。

3.可定制的内核
Linux具有独特的内核模块机制,它可以根据用户的需要,实时地将某些模块插入到内核中或者从内核中移走,并能根据嵌入式设备的个性需要量体裁衣。经裁减的Linux内核最小可达到150KB以下,尤其适合嵌入式领域中资源受限的实际情况。当前的2.6内核加入了许多嵌入式友好特性。

4.性能优异
Linux系统内核精简、高效并且稳定,能够充分发挥硬件的功能,因此它比其他操作系统的运行效率更高。在个人计算机上使用Linux,可以将它作为工作站。它也非常适合在嵌入式领域中应用,对比其他操作系统,它占用的资源更少,运行更稳定,速度更快。

5.良好的网络支持
Linux是首先实现TCP/IP协议栈的操作系统,它的内核结构在网络方面是非常完整的,并提供了对包括十兆位、百兆位及千兆位的以太网,还有无线网络、Token ring(令牌环)和光纤甚至卫星的支持,这对现在依赖于网络的嵌入式设备来说无疑是很好的选择。

1.1.3 Linux发行版本

由于Linux属于GNU系统,而这个系统采用GPL协议,并保证了源代码的公开,于是众多组织或公司在Linux内核源代码的基础上进行了一些必要的修改加工,然后再开发一些配套的软件,并把它整合成一个自己的发布版Linux。除去非商业组织Debian开发的Debian GNU/Linux外,美国的Red Hat公司发行了Red Hat Linux,法国的Mandrake公司发行了Mandrake Linux,德国的SUSE公司发行了SUSE Linux,我国众多公司也发行了中文版的Linux,如著名的红旗Linux。Linux目前已经有超过250个发行版本。

下面仅对Red Hat、Debian、Mandrake等具有代表性的Linux发行版本进行介绍。

1.Red Hat
全世界的Linux用户最熟悉的发行版想必就是Red Hat了。Red Hat最早是由Bob Young和Marc Ewing在1995年创建的。目前Red Hat分为两个系列:由Red Hat公司提供收费技术支持和更新的Red Hat Enterprise Linux(RHEL,Red Hat的企业版),以及由社区开发的免费的桌面版Fedora Core。

Red Hat企业版有3个版本——AS、ES和WS。AS是其中功能最为强大和完善的版本。而正统的桌面版Red Hat版本更新早已停止,最后一版是Red Hat 9.0。本书就以稳定性高的RHEL AS作为安装实例进行讲解。

2.Debian
之所以把Debian单独列出,是因为Debian GNU/Linux是一个非常特殊的版本。在1993年,伊恩·默多克(Ian Murdock)发起Debian计划,它的开发模式和 Linux 及其他开放性源代码操作系统的精神一样,都是由超过800位志愿者通过互联网合作开发而成的。一直以来,Debian GNU/Linux被认为是最正宗的Linux发行版本,而且它是一个完全免费、高质量的且与UNIX兼容的操作系统。

Debian系统分为3个版本,分别为稳定版(Stable)、测试版(Testing)和不稳定版(Unstable)。每次发布的版本都是稳定版,而测试版在经过一段时间的测试证明没有问题后会成为新的稳定版。Debian拥有超过8710种不同的软件,每一种软件都是自由的,而且有非常方便的升级安装指令,基本囊括了用户的所有需要。Debian也是最受欢迎的嵌入式Linux之一。

3.我国的发行版本及其他
目前国内的红旗、新华等都发行了自己的Linux版本。

除了前面所提到的这些版本外,业界还存在着诸如gentoo、LFS等适合专业人士使用的版本。在此不做介绍,有兴趣的读者可以自行查找相关的资料做进一步的了解。

1.1.4 如何学习Linux

正如人们常说的“实践出真知”,学习Linux的过程也一样。只有通过大量的动手实践才能真正地领会Linux的精髓,才能迅速掌握在Linux上的应用开发,相信有编程语言经验的读者一定会认同这一点。因此,在本书中笔者安排了大量的实验环节和课后实践环节,希望读者尽可能多参与。

另外要指出的是,互联网也是一个很好的学习工具,一定要充分地加以利用。正如编程一样,实践的过程中总会出现多种多样的问题,笔者在写作的过程当中会尽可能地考虑可能出现的问题,但限于篇幅和读者的实际情况,不可能考虑到所有可能出现的问题,所以希望读者能充分利用互联网这一共享的天空,在其中寻找答案。

时间: 2024-11-16 03:25:27

《嵌入式 Linux应用程序开发标准教程(第2版)》——1.1 嵌入式Linux基础的相关文章

《嵌入式 Linux应用程序开发标准教程(第2版)》——导读

前 言 嵌入式 Linux应用程序开发标准教程(第2版) 第2版说明 本书第1版<嵌入式Linux应用程序开发详解>自2006年7月出版以来,受到了广大读者的一致好评,已经多次印刷,累计销量18000册.许多高等院校.职业学校和培训机构也将本书作为嵌入式专业的教材.许多读者提出了宝贵的意见和中肯的建议. 第2版图书在第1版基础上做了以下修订. 增加PPT教学课件:本书第2版增加了PPT教学课件,方便老师教学使用. 赠送嵌入式专家授课视频:本书第2版免费赠送超值的嵌入式教学视频,所讲内容均为嵌入

《嵌入式 Linux应用程序开发标准教程(第2版)》——2.2 Linux启动过程详解

2.2 Linux启动过程详解 嵌入式 Linux应用程序开发标准教程(第2版) 在了解了Linux的常见命令之后,下面详细讲解Linux的启动过程.Linux的启动过程包含了Linux工作原理的精髓,而且在嵌入式开发过程中非常需要这方面的知识. 2.2.1 概述 用户开机启动Linux过程如下: (1)当用户打开PC(intel CPU)的电源时,CPU将自动进入实模式,并从地址0xFFFF0000开始自动执行程序代码,这个地址通常是ROM-BIOS中的地址.这时BIOS进行开机自检,并按BI

《嵌入式 Linux应用程序开发标准教程(第2版)》——1.3 Linux文件及文件系统

1.3 Linux文件及文件系统 嵌入式 Linux应用程序开发标准教程(第2版) 在安装完Linux之后,下面先对Linux中一些非常重要的概念做一些介绍,以便进一步学习使用Linux. 1.3.1 文件类型及文件属性 1.文件类型 Linux中的文件类型与Windows有显著的区别,其中最显著的区别在于Linux对目录和设备都当作文件来进行处理,这样就简化了对各种不同类型设备的处理,提高了效率.Linux中主要的文件类型分为4种:普通文件.目录文件.链接文件和设备文件. (1)普通文件. 普

《嵌入式 Linux应用程序开发标准教程(第2版)》——1.4 实验内容——安装Linux操作系统

1.4 实验内容--安装Linux操作系统 嵌入式 Linux应用程序开发标准教程(第2版) 1.实验目的 读者通过亲自动手安装Linux操作系统,对Linux有个初步的认识,并且加深对Linux中的基本概念的理解,熟悉Linux文件系统目录结构. 2.实验内容 安装Linux(Red Hat Enterprise 4 AS版本)操作系统,查看Linux的目录结构. 3.实验步骤 (1)磁盘规划. 在这一步骤中,需要留出最好有5GB以上的空间来安装Linux系统. (2)下载Linux版本. 可

《嵌入式 Linux应用程序开发标准教程(第2版)》——1.5 本章小结

1.5 本章小结 嵌入式 Linux应用程序开发标准教程(第2版) 本章首先介绍了Linux的历史.嵌入式Linux操作系统的优势.Linux不同发行版本的区别以及如何学习Linux.在这里要着重掌握的是Linux内核与GNU的关系,了解Linux版本号的规律,同时还要了解Linux多硬件平台支持.低开发成本等优越性. 本章接着介绍了如何安装Linux,这里最关键的一步是分区.希望读者能很好地掌握主分区.扩展分区的概念.Linux文件系统与Windows文件系统的区别以及Linux中"挂载&qu

《嵌入式 Linux应用程序开发标准教程(第2版)》——1.6 思考与练习

1.6 思考与练习 嵌入式 Linux应用程序开发标准教程(第2版) 1.查找相关资料,查看GNU所规定的自由软件的具体协议是什么. 2.Linux下的文件系统和Windows下的文件系统有什么区别? 3.指出读者Linux系统中的磁盘划分情况(如主分区.扩展分区的对应情况). 4.如何安装Linux? 5.Linux中的文件有哪些类,这样分类有什么好处? 6.若有一个文件,其属性为"-rwxr-rw-",说出这代表什么? 7.请说出下列目录中放置的是哪些文件. /etc/ /etc/

《嵌入式 Linux应用程序开发标准教程(第2版)》——2.1 Linux常用命令

2.1 Linux常用命令 嵌入式 Linux应用程序开发标准教程(第2版) 在安装完Linux再次启动之后,就可以进入到与Windows类似的图形化界面了.这个界面就是Linux图形化界面X窗口系统(简称X)的一部分.要注意的是,X窗口系统仅仅是Linux上面的一个软件(或者也可称为服务),它不是Linux自身的一部分.虽然现在的X窗口系统已经与Linux整合得相当好了,但毕竟还不能保证绝对的可靠性.另外,X窗口系统是一个相当耗费系统资源的软件,它会大大地降低Linux的系统性能.因此,若是希

《嵌入式 Linux应用程序开发标准教程(第2版)》——2.4 实验内容

2.4 实验内容 嵌入式 Linux应用程序开发标准教程(第2版) 2.4.1 在Linux下解压常见软件 1.实验目的 在Linux下安装一个完整的软件(嵌入式Linux的必备工具--交叉编译工具),掌握Linux常见命令,学会设置环境变量,同时搭建起嵌入式Linux的交叉编译环境(关于交叉编译的具体概念在本书后面会详细讲解),为今后的实验打下良好的基础. 2.实验内容 在Linux中解压cross-3.3.2.tar.bz2,并添加到系统环境变量中去. 3.实验步骤 (1)将光盘中的cros

《嵌入式 Linux应用程序开发标准教程(第2版)》——1.2 Linux安装

1.2 Linux安装 有了一个初步的了解后,读者是否想亲自试一下?其实安装Linux是一件很容易的事情,不过在开始安装之前,还需要了解一下在Linux安装过程中可能遇到的一些基本知识以及它与Windows的区别. 1.2.1 基础概念 1.文件系统.分区和挂载 文件系统是指操作系统中与管理文件有关的软件和数据.Linux的文件系统和Windows中的文件系统有很大的区别,Windows文件系统是以驱动器的盘符为基础的,而且每一个目录与相应的分区对应,例如"E:\workplace"是