- 嵌入式Linux系統(tǒng)實用開發(fā)
- 何永琪主編
- 2742字
- 2018-12-28 14:40:34
1.2 Linux操作系統(tǒng)
Linux操作系統(tǒng)對很多讀者來說已經不再陌生了,這是一種已經得到廣泛應用的計算機操作系統(tǒng)。它是由計算機業(yè)界大名鼎鼎的芬蘭人林納斯·托瓦茲(Linus Torvalds)最早開發(fā)的。從1991 年的Linux 0.01 版本到1994 年的Linux 1.0 版本發(fā)展至今,本書交稿時內核版本是Linux 2.6.30。
在實際中,人們提到“Linux”一詞時其實并不是單純地指操作系統(tǒng),而是泛指以下三個部分的總體概念。
◆ 一種類UNIX、名為“Linux”的計算機操作系統(tǒng)。
◆ Linux操作系統(tǒng)環(huán)境下的開發(fā)工具和開發(fā)環(huán)境。
◆ Linux操作系統(tǒng)環(huán)境下的各種應用軟件和工具軟件。
在詳細介紹Linux操作系統(tǒng)之前,有必要簡單介紹一下目前已經與Linux密不可分的GNU計劃(GNU Project),首先強調兩點。
◆ Linux內核開發(fā)不是GNU計劃的一部分。
◆ Linux誕生之時(1991年),GNU計劃已運作多年,大部分基本工具軟件已開發(fā)出來。
GNU是理查德·斯托曼(Richard Stallman)在1984 年創(chuàng)立的,其目標是發(fā)展一個完全免費的自由軟件——一個UNIX類計算機操作系統(tǒng)以及運行在其上的軟件開發(fā)工具和各種應用程序。具體實施是由自由軟件基金會(Free Software Foundation,F(xiàn)SF)來負責的。但在實際發(fā)展中,GNU自己的操作系統(tǒng)內核并沒有真正開發(fā)出來并得到應用,反倒是大量GNU軟件(包括開發(fā)工具、調試工具和各種各樣的應用軟件等)與Linux操作系統(tǒng)及其開發(fā)和應用完美地融合在一起了—GNU軟件運行在Linux內核之上,整個Linux內核基于GNU通用公共許可,甚至與各種各樣的Linux版本一同發(fā)行和使用。
Linux發(fā)展至今,其應用已十分廣泛。在傳統(tǒng)計算機領域,大型計算機(以及超級計算機)、工作站和服務器市場的主流操作系統(tǒng)是Linux,有消息稱,2008 年11 月全球最快的超級計算機前500 名中,使用Linux操作系統(tǒng)的有439 個,即Linux操作系統(tǒng)在當今超級計算機市場的占有率接近90%,這是計算機發(fā)展史上前所未有的。而在臺式機用戶中,使用Linux操作系統(tǒng)的也越來越多,特別是國內外很多計算機高手和黑客都以使用Linux為驕傲。在筆記本電腦這一Windows傳統(tǒng)市場中,也有越來越多公司開始在自己的產品上預裝Linux系統(tǒng)。但是,當今的傳統(tǒng)計算機行業(yè)卻不是Linux最大的市場——若以裝備產品的種類和數(shù)量以及市場銷售額而言,嵌入式系統(tǒng)無疑是Linux現(xiàn)在和今后最大的市場。目前幾乎所有種類的嵌入式產品都有使用Linux的,例如Linux在智能手機領域中已經與Symbian,Windows Mobile(Windows CE)形成三足鼎立之勢,在數(shù)字機頂盒、家庭路由器、行業(yè)應用終端等諸多領域也已穩(wěn)固占據(jù)主流地位。
目前有很多公司提供各種各樣的Linux發(fā)行版,主要是臺式機桌面系統(tǒng)版本,部分也提供服務器系統(tǒng)版本,Debian 5.0 還提供ARM平臺版本。其中絕大多數(shù)公司同時提供32 位版本和64位版本。國內常見的Linux發(fā)行版主要有:
◆ Debian
◆ Ubuntu
◆ Fedora
◆ Red Hat
◆ Slackware
◆ Mandriva
◆ SUSE
◆ Knoppix
◆ CentOS
◆ TeamLastOS
大多數(shù)發(fā)行版一般都會包含以下內容:
◆ Linux內核
◆ GNU函數(shù)庫和開發(fā)工具軟件
◆ 圖形化應用開發(fā)環(huán)境(Qt)

圖 1.1 HY2410A開發(fā)板外觀
◆ 圖形界面環(huán)境(如KDE或GNOME用戶應用環(huán)境)
◆ 基本應用軟件(如OpenOffice,F(xiàn)irefox等)
◆ 多國語言包及其輸入法
◆ 程序源代碼
除了這些Linux發(fā)行版外,很多公司原本用于Windows系統(tǒng)的很多商業(yè)軟件也開始提供Linux版本,例如數(shù)據(jù)庫軟件中的Oracle和DB2、EDA軟件中的Mentor Graphics PADS和Cadence Allegro、科學計算軟件中的MathWorks Matlab和Intel Fortran Compiler等。另外,根據(jù)GNU授權規(guī)則,任何人都可以采取收費或免費的方式來發(fā)行Linux操作系統(tǒng)下的軟件,并在符合該授權的規(guī)范下修改其他GNU軟件,因此就吸引了大量程序開發(fā)人員把原本運行在其他操作系統(tǒng)下的軟件免費程序移植到了Linux上。特別是互聯(lián)網(wǎng)的深入普及極大地方便了Linux軟件程序的獲取和發(fā)布,使得Linux下各種各樣的大小軟件數(shù)量種類極為龐大、功能五花八門。另外,隨著KDE和GNOME圖形環(huán)境的日臻完善,Linux操作系統(tǒng)在用戶圖形環(huán)境方面已經與Windows難分伯仲。即使在嵌入式領域中,Qt圖形開發(fā)套件的不斷成熟也使得越來越多的需要圖形化操作界面的嵌入式產品有了新的選擇。
從技術開發(fā)的角度看,Linux軟件開發(fā)與Windows軟件開發(fā)有很大的區(qū)別。本書的大部分讀者,可能更多地關心嵌入式Linux軟件開發(fā)。嵌入式Linux軟件開發(fā)所面臨的主要技術挑戰(zhàn)性是由Linux操作系統(tǒng)自身的一些特點和嵌入式系統(tǒng)的各種具體產品應用所決定的。從軟件開發(fā)者的角度看,Linux操作系統(tǒng)的基本特點可以簡單地總結為以下三條。
◆ 硬件體系支持廣泛。
◆ 軟件源代碼開放。
◆ 內核版本不完全考慮前向兼容。
就支持的硬件體系而言,迄今為止還沒有一種操作系統(tǒng)能夠與Linux相比,以Linux 2.6.30版本的內核為例,其所支持的CPU體系包括:
◆ Alpha AXC(DEC公司,全球首款64位CPU)
◆ AMD x86-64
◆ ARM
◆ AVR32(Atmel公司)
◆ BLACKFIN(ADI公司)
◆ H8/300(瑞薩科技)
◆ Intel IA64
◆ M32R(瑞薩科技)
◆ M68K(即ColdFire,飛思卡爾公司)
◆ MIPS
◆ PA-RISC(惠普公司)
◆ PowerPC
◆ IBM S/390
◆ SUN SPARC
◆ x86
◆ Xtensa(Tensilica公司)
◆ SuperH(日立公司)
上面提到這些CPU體系中大多數(shù)實際上并不為絕大多數(shù)開發(fā)人員所熟知,如果再看一看Linux內核文件系統(tǒng)中driver子目錄的內容,可以說Linux對各種接口、外設和總線等林林總總硬件的支持程度早已遠遠超出大多數(shù)技術人員的想象。顯然,如此完整的硬件支撐體系,一方面給設計開發(fā)人員提供了巨大的選擇余地和操作空間,使得“廣闊天地,大有作為”成為可能,另一方面也構成了一種技術挑戰(zhàn)——如何才能夠根據(jù)客戶的需要和自己的實際情況正確地選擇一個合理的、能夠持續(xù)開發(fā)應用的基本硬件平臺架構?這一點也是市場上同一類嵌入式產品各家公司實現(xiàn)方案迥異的根本原因之一。若單純考慮軟件方面的因素,開放源代碼的確給開發(fā)人員提供了極其豐富的代碼資源,為其代碼編寫和程序開發(fā)提供了相當多的幫助和便利,而如何結合客戶要求及自身開發(fā)能力與習慣、根據(jù)所選硬件體系結構,在浩瀚的代碼中選擇出適合自己產品開發(fā)和應用的軟件功能模塊并加以剪裁、組合、移植及優(yōu)化卻是一項既復雜而又需要仔細做的工作。當然Linux內核版本的更新導致不兼容舊版本這一令多數(shù)開發(fā)人員頗為不爽的慣例,還使得舊版本的開發(fā)經驗有時候不能在新版本的開發(fā)中提供直接有效的幫助,例如Linux 2.6.26內核中移去了應用極其廣泛的觸摸屏的驅動支持,就使得原來的相關開發(fā)工作和經驗很難得到借鑒。
根據(jù)本書幾位作者的個人經歷與感受,不得不說嵌入式Linux軟件開發(fā)非常富有技術挑戰(zhàn)性,樂趣無窮而又充滿痛苦。其實這種感受在嵌入式開發(fā)人員中頗為普遍,看一看網(wǎng)絡上很多開發(fā)人員寫的博客就會體會到,但是有時候開發(fā)中的郁悶、成功后的喜悅溢于言表。
當然,相對于其他嵌入式操作系統(tǒng)下的各種開發(fā),特別是Windows平臺上的嵌入式開發(fā)(主要是Windows CE/Windows Mobile開發(fā)),嵌入式Linux在技術和應用開發(fā)方面的優(yōu)勢還是非常明顯的。以Windows平臺上嵌入式開發(fā)為例,其存在的以下問題嚴重地制約了開發(fā)人員的工作開展。
◆ Windows Mobile支持的CPU平臺很少,目前支持x86、部分ARM內核版本、部分MIPS內核版本、部分SuperH SH4版本。Windows XP Embedded則只支持x86。
◆ 嵌入式系統(tǒng)中應用最多的是ARM體系,目前Windows Mobile只支持ARM的v4,v4T,Thumb,v5TE和Xscale,對ARM高版本的支持還有很多欠缺。
◆ 基本開發(fā)工作嚴重依賴微軟開發(fā)平臺(Visual Studio .NET和Windows CE/Windows Mobile PlatformBuilder)和芯片廠家的板級支持包(Board Supporting Package)——缺乏其中任何一個的支持,即使很簡單的功能都無法實現(xiàn)。
◆ 由于源代碼并不開放,所謂的軟件優(yōu)化基本無從談起。
- 大數(shù)據(jù)管理系統(tǒng)
- 錯覺:AI 如何通過數(shù)據(jù)挖掘誤導我們
- Learning Social Media Analytics with R
- 機器學習與大數(shù)據(jù)技術
- Google App Inventor
- ROS機器人編程與SLAM算法解析指南
- 單片機C語言應用100例
- 單片機C語言程序設計完全自學手冊
- 網(wǎng)絡服務搭建、配置與管理大全(Linux版)
- Machine Learning Algorithms(Second Edition)
- The DevOps 2.1 Toolkit:Docker Swarm
- Mastering DynamoDB
- Learning iOS 8 for Enterprise
- 從機器學習到無人駕駛
- 工廠電氣控制設備