日本亚洲一区二区三区,国产一区二区三区丶四区,99国产精品一区二区http://www.bjzhda.cnzh-cn曙海教育集團(tuán)論壇http://www.bjzhda.cnRss Generator By Dvbbs.Net[email protected]images/logo.gif曙海教育集團(tuán)論壇Linux下RPM軟件包的安裝及卸載http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1692&Page=1wangxinxin2010-11-23 14:06:30  RPM 安裝操作

  命令:

  rpm -i 需要安裝的包文件名

  舉例如下:

  rpm -i example.rpm 安裝 example.rpm 包;

  rpm -iv example.rpm 安裝 example.rpm 包并在安裝過(guò)程中顯示正在安裝的文件信息;

  rpm -ivh example.rpm 安裝 example.rpm 包并在安裝過(guò)程中顯示正在安裝的文件信息及安裝進(jìn)度;

  RPM 查詢操作

  命令:

  rpm -q …

  附加查詢命令:

  a 查詢所有已經(jīng)安裝的包以下兩個(gè)附加命令用于查詢安裝包的信息;

  i 顯示安裝包的信息;

  l 顯示安裝包中的所有文件被安裝到哪些目錄下;

  s 顯示安裝版中的所有文件狀態(tài)及被安裝到哪些目錄下;以下兩個(gè)附加命令用于指定需要查詢的是安裝包還是已安裝后的文件;

  p 查詢的是安裝包的信息;

  f 查詢的是已安裝的某文件信息;

  舉例如下:

  rpm -qa | grep tomcat4 查看 tomcat4 是否被安裝;

  rpm -qip example.rpm 查看 example.rpm 安裝包的信息;

  rpm -qif /bin/df 查看/bin/df 文件所在安裝包的信息;

  rpm -qlf /bin/df 查看/bin/df 文件所在安裝包中的各個(gè)文件分別被安裝到哪個(gè)目錄下;

  RPM 卸載操作

  命令:

  rpm -e 需要卸載的安裝包

  在卸載之前,通常需要使用rpm -q …命令查出需要卸載的安裝包名稱。

  舉例如下:

  rpm -e tomcat4 卸載 tomcat4 軟件包

  RPM 升級(jí)操作

  命令:

  rpm -U 需要升級(jí)的包

  舉例如下:

  rpm -Uvh example.rpm 升級(jí) example.rpm 軟件包

  RPM 驗(yàn)證操作

  命令:

  rpm -V 需要驗(yàn)證的包

  舉例如下:

  rpm -Vf /etc/tomcat4/tomcat4.conf

  輸出信息類似如下:

  S.5....T c /etc/tomcat4/tomcat4.conf

  其中,S 表示文件大小修改過(guò),T 表示文件日期修改過(guò)。限于篇幅,更多的驗(yàn)證信息請(qǐng)您參考rpm 幫助文件:man rpm

  RPM 的其他附加命令

  --force 強(qiáng)制操作 如強(qiáng)制安裝刪除等;

  --requires 顯示該包的依賴關(guān)系;

  --nodeps 忽略依賴關(guān)系并繼續(xù)操作

]]>
安防監(jiān)控系統(tǒng)的新秀LINUX平臺(tái)DVR視頻卡http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1691&Page=1wangxinxin2010-11-23 14:03:21
  視頻監(jiān)控系統(tǒng)一直是監(jiān)控領(lǐng)域中的熱點(diǎn),它以直觀、方便、信息內(nèi)容豐富而在各個(gè)行業(yè)得到廣泛應(yīng)用,如:交通、電力、通信、石油、碼頭、倉(cāng)庫(kù)、金融、政府機(jī)關(guān)企事業(yè)單位辦事窗口,和軍隊(duì)、公安、監(jiān)獄、水利/水廠、民航等要害部門。 

      二、從微軟掌管操作系統(tǒng)至今,多數(shù)人認(rèn)為操作系統(tǒng)即是Windows95/98/2000/XP,甚至有很多人并不了解什么是操作系統(tǒng),更遑論是使用Linux了。近來(lái)由于多家國(guó)際計(jì)算機(jī)業(yè)龍頭紛紛表態(tài)支持Linux,使得Linux 頓時(shí)成為計(jì)算機(jī)界的熱點(diǎn),許多人相繼投入Linux。最近在許多的信息媒體上可以看到“Linux”的報(bào)導(dǎo),Linux也不再是資深計(jì)算機(jī)人才知道的操作系統(tǒng),有越來(lái)越多的人對(duì)Linux好奇,越來(lái)越多使用者愿意嘗試這個(gè)操作系統(tǒng)。到現(xiàn)在包括IBM等許多大型廠商都公開宣布旗下產(chǎn)品支持Linux,連最近相當(dāng)熱門的IA(信息家電)也都陸續(xù)宣布將采用Linux作為系統(tǒng)核心,監(jiān)控產(chǎn)業(yè)也已有廠商開始投入研發(fā)資金以Linux為作業(yè)平臺(tái)的監(jiān)控產(chǎn)品,Linux儼然形成的當(dāng)前唯一能對(duì)抗微軟的操作系統(tǒng)。 

  前面已很多次提到了Linux這個(gè)名詞,那Linux到底是什么?簡(jiǎn)單地說(shuō),Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),這個(gè)系統(tǒng)是由世界各地的成千上萬(wàn)的程序員設(shè)計(jì)和實(shí)現(xiàn)的。其目的是建立不受任何商品化軟件的版權(quán)制約的、全世界都能自由使用的Unix兼容產(chǎn)品。 

  Linux所具備的特性∶ 

  1. Linux提供多人使用(Multi-user)、多工(Multitask)的完整作業(yè)環(huán)境,只要很少的硬件支援,便能在多種不同電腦設(shè)備(或是單晶片)上運(yùn)作。 

  2. Linux具備高解析度與優(yōu)秀的圖形界面(GUI),大幅提升數(shù)字監(jiān)控系統(tǒng)應(yīng)用的親和力。 

  3. Linux完全免費(fèi),可任意在網(wǎng)路上下載、復(fù)制、使用,同時(shí)它的程式碼也完全公開,可以任意開發(fā)、更改。這樣的特點(diǎn)使得全世界已超過(guò)千萬(wàn)人使用Linux,更由于許多廠商投入開發(fā)核心程式、發(fā)展相關(guān)軟體以及硬體周邊驅(qū)動(dòng)程式,使Linux功能和完整性日益壯大。 

  4. Linux本身開放性的架構(gòu)與彈性(Scalable)設(shè)計(jì),可針對(duì)數(shù)位影像監(jiān)控應(yīng)用量身訂作,去除與監(jiān)控?zé)o關(guān)的多余功能,在提升系統(tǒng)效能的同時(shí),也減少了出問(wèn)題的機(jī)率。 

  5. Linux從頭到尾即針對(duì)網(wǎng)絡(luò)應(yīng)用而設(shè)計(jì),可支持TCP/IP、WWW等多項(xiàng)國(guó)際標(biāo)準(zhǔn),能迎合新一代DVR產(chǎn)品網(wǎng)際網(wǎng)絡(luò)/通信網(wǎng)絡(luò)連結(jié)的所有需求。 

  由于數(shù)字錄像監(jiān)控系統(tǒng)是比較專業(yè)的領(lǐng)域,其中又牽涉到大量I/O作業(yè)的錄像擷取/儲(chǔ)存以及CPU運(yùn)算的錄像壓縮/解壓縮,因此,為能滿足每天24小時(shí)、每周7天的線上服務(wù)需求,以及有效減少整體作業(yè)營(yíng)運(yùn)的成本,除了對(duì)功能方面的考慮外,操作系統(tǒng)平臺(tái)的選擇亦十分重要。 

      三、Linux在DVR系統(tǒng)中的應(yīng)用 

  DVR 已成為全球熱門產(chǎn)品,在未來(lái)網(wǎng)絡(luò)時(shí)代,其重要性更是不容小覷,使用者的需求增加,使得全球知名監(jiān)控業(yè)大廠愈來(lái)愈積極在 DVR產(chǎn)品的研發(fā)與改良上。監(jiān)控行業(yè)的商家更是結(jié)合了圖象處理技術(shù)、數(shù)字管理技術(shù)、通訊傳輸技術(shù)、自動(dòng)化集成界面技術(shù)及操控軟件技術(shù)于一體發(fā)展出數(shù)字硬盤錄像遠(yuǎn)程監(jiān)控產(chǎn)品,加上簡(jiǎn)單易用的人性化圖形使用界面(GUI)使一般人可輕易地使用監(jiān)控系統(tǒng)。 

  Linux操作系統(tǒng)搭配實(shí)時(shí)視頻采集卡與攝影機(jī),進(jìn)行視訊即時(shí)壓縮、錄像、儲(chǔ)存等工作,除了可以開發(fā)操作簡(jiǎn)單、功能簡(jiǎn)易、價(jià)格大眾化的數(shù)字錄像監(jiān)控系統(tǒng)外,亦可有效整合互聯(lián)網(wǎng)絡(luò)、電話網(wǎng)路、安全防盜設(shè)備,作為自主性保全的安全監(jiān)控設(shè)備。 

  有別于其他視訊的應(yīng)用,DVR由于必須儲(chǔ)存大量的安全監(jiān)視錄像資料,因此具備高容納資料的儲(chǔ)存空間以及資料備份功能,是其選擇操作系統(tǒng)的重要條件。 

  Linux除了支持大容量的硬盤供資料儲(chǔ)存外,并可透過(guò)加裝硬盤及具有資料鏡映像功能的磁盤陣列來(lái)增加儲(chǔ)存容量;此外,其備份周邊支持豐富,可將資料有效備份在CD-RW以及結(jié)合網(wǎng)絡(luò)技術(shù)的NAS網(wǎng)絡(luò)存儲(chǔ)設(shè)備。 

  Linux操作系統(tǒng)具備分散式、無(wú)人操作、大量集中管理、設(shè)定、監(jiān)控、告警處理等所需的穩(wěn)定性與完整的網(wǎng)絡(luò)功能;多臺(tái)Linux base的數(shù)字硬盤錄像監(jiān)控系統(tǒng)可有效透過(guò)網(wǎng)絡(luò)予以結(jié)合,配合中央監(jiān)控系統(tǒng)與遠(yuǎn)端數(shù)字硬盤錄像監(jiān)控主機(jī)解決方案,不僅能滿足此一需求,并具備未來(lái)擴(kuò)充的彈性。在未來(lái)的網(wǎng)際網(wǎng)絡(luò)時(shí)代,使用者須要的是具有強(qiáng)大網(wǎng)絡(luò)功能的遠(yuǎn)端監(jiān)控系統(tǒng),整合數(shù)字錄像監(jiān)控、門禁防盜、消防受信等安全設(shè)備,藉由模組化的智能型中央監(jiān)控系統(tǒng)的圖形控制界面,讓使用者可透過(guò)網(wǎng)際網(wǎng)絡(luò)瀏覽器或是其他終端設(shè)備,隨時(shí)隨地有效地進(jìn)行遠(yuǎn)端多點(diǎn)即時(shí)影像監(jiān)看與相關(guān)設(shè)備的控制;透過(guò)Linux操作系統(tǒng)提供所需的穩(wěn)定性與效能,此系統(tǒng)將可有效協(xié)助企業(yè)、工廠、社區(qū)建立內(nèi)部控管中樞,控管分散在各地的分支機(jī)構(gòu)。 

      四、Linux DVR優(yōu)越的應(yīng)用前景 

  經(jīng)過(guò)幾年的發(fā)展,Linux技術(shù)和產(chǎn)品日趨成熟,有越來(lái)越多的公司了解Linux的優(yōu)點(diǎn),而選用Linux作為主要的操作系統(tǒng)和應(yīng)用平臺(tái),安防監(jiān)控應(yīng)用亦不例外。Linux以其獨(dú)特的特性,已經(jīng)深入數(shù)字錄像監(jiān)控市場(chǎng)多時(shí);其可針對(duì)不同硬件設(shè)備(PC或單晶片)與數(shù)字錄像監(jiān)控應(yīng)用需求而量身訂制,不僅可免去制式系統(tǒng)的復(fù)雜度,并可有效減少對(duì)硬體資源的需求;為了有效降低數(shù)字錄像監(jiān)控、安全管理系統(tǒng)的整體運(yùn)作成本,Linux操作系統(tǒng)應(yīng)是最適當(dāng)?shù)倪x擇。 

  Linux操作系統(tǒng)的穩(wěn)定性、安全性、可靠性已經(jīng)得到業(yè)界認(rèn)可,目前多數(shù)嵌入式系統(tǒng)皆傾向于采用Linux作業(yè)系統(tǒng),相關(guān)的開發(fā)工具、瀏覽器、GUI、應(yīng)用軟體技術(shù)基本上已相當(dāng)成熟,商業(yè)化的Linux系統(tǒng)應(yīng)用已經(jīng)切入的市場(chǎng)包括工業(yè)控制、網(wǎng)絡(luò)設(shè)備、機(jī)頂盒、網(wǎng)路電腦...等,數(shù)字硬盤錄像監(jiān)視系統(tǒng)亦是其中最具商業(yè)前景的Linux應(yīng)用之一,可見,Linux在IT界已經(jīng)走過(guò)泡沫概念期,進(jìn)入實(shí)用市場(chǎng),已在豪威人的努力下開花結(jié)果。 

    豪威歷經(jīng)多年開發(fā)研究,將LINUX平臺(tái)與軟壓縮視頻技術(shù)進(jìn)行完美的融合,誕生了—紅色風(fēng)暴1號(hào)

1.國(guó)內(nèi)第一款基于LINUX平臺(tái)自主研發(fā)的軟壓縮視頻采集卡
2.堅(jiān)固不可侵入的LINUX系統(tǒng),體系結(jié)構(gòu)對(duì)病毒具有先天免疫能力, 徹底無(wú)病毒,無(wú)黑客,無(wú)死機(jī);
3.1+4+8路三款組合模式,使用便捷靈活;
4.軟件一裝到底,無(wú)需繁雜的WINDOWS平臺(tái)軟件安裝;讓您的商務(wù)人員都成為安裝工程師;
5.硬件視頻前向通道防雷擊設(shè)計(jì)、強(qiáng)脈沖以及靜電防護(hù)設(shè)計(jì);
6.無(wú)需購(gòu)買昂貴的操作系統(tǒng),遺棄使用盜版軟件的尷尬]]>
體驗(yàn)Linux新技術(shù)http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1690&Page=1wangxinxin2010-11-23 14:02:28

有很多人都說(shuō)Ubuntu和Fedora有很多相似之處,但就發(fā)布日期來(lái)說(shuō)就非常接近。這兩個(gè)版本的發(fā)布周期大致相同,六個(gè)月發(fā)布一次,都在春季和秋季發(fā)布主要版本。這不10月10日Ubuntu 10.10的發(fā)布似乎還近在眼前呢,我們又迎來(lái)了Fedora 14的閃亮登場(chǎng)。

圖片點(diǎn)擊可在新窗口打開查看

代號(hào)“Laughlin”的Fedora 14在11月2日如期發(fā)布。Fedora 14使用Linux 2.6.35版核心與KDE 4.5.2、GNOME 2.32桌面環(huán)境,把RedHat的虛擬桌面架構(gòu)(VDI,virtual desktop infrastructure) Spice完整加入,該功能讓Fedora可以主控虛擬桌面,讓遠(yuǎn)端用戶自網(wǎng)路登入使用。 Spice具有2D加速、處理音訊播放與錄制、加密連線等特性。

這次的正式版添加了之前的測(cè)試版沒有的新功能,那就是系統(tǒng)工具鏈升級(jí)及D語(yǔ)言支持。不過(guò),F(xiàn)edora 14的桌面設(shè)置還是搶先吸引了用戶的眼球。Fedora 14的桌面是GNOME的最新發(fā)布版本GNOME2.32。相比較Ubuntu最近才開始使用GNOME,F(xiàn)edora 14則一直堅(jiān)持使用GNOME。這個(gè)完整的發(fā)行版還包括最新版本的桌面KDE4.5.2。

從最新的試用體驗(yàn)來(lái)看,F(xiàn)edora 14以藍(lán)色為主題的GNOME桌面使用起來(lái)很有樂(lè)趣。在它上面你可以找到平時(shí)使用的Linux桌面程序。這些程序包括網(wǎng)頁(yè)瀏覽Firefox;即時(shí)通訊的Empathy;電子郵件和群組軟件Evolution;以及辦公軟件Openoffice。展望未來(lái),F(xiàn)edora的團(tuán)隊(duì)還沒有承諾轉(zhuǎn)換到 OpenOffice fork,LibreOffice,看來(lái)或許會(huì)和Ubuntu的下一個(gè)版本步調(diào)一致吧!

圖片點(diǎn)擊可在新窗口打開查看

Fedora 14的另一個(gè)亮點(diǎn)則是納入了使用環(huán)境MeeGO 1.0,趕上熱門的平板電腦話題。這個(gè)由Intel及Nokia合作推廣的技術(shù)搭配Sugar CRM展示版、開發(fā)工具使用,展現(xiàn)平板電腦在商務(wù)上的應(yīng)用,與一般平板電腦所強(qiáng)調(diào)的多媒體休閑走向大異其趣。

圖片點(diǎn)擊可在新窗口打開查看

另一方面,在Fedora中有一些非常靈巧的新功能,使之能很好的工作。我不得不說(shuō)相比于那些使用Fedora系統(tǒng)開發(fā)者和管理者,這些新功能更加適合于Fedora家庭用戶。

但最重要的是獨(dú)立計(jì)算機(jī)環(huán)境的簡(jiǎn)單協(xié)議(SPICE)的到來(lái)。這是一個(gè)桌面介紹的服務(wù)協(xié)議,如微軟的RDP(遠(yuǎn)程桌面協(xié)議)和Citrix的ICA(獨(dú)立計(jì)算架構(gòu)),你用來(lái)運(yùn)行精簡(jiǎn)電腦的桌面。

圖片點(diǎn)擊可在新窗口打開查看

還有一個(gè)很有意思的特點(diǎn)是你不需要在你自己的桌面或服務(wù)器上自己運(yùn)行Fedora。你現(xiàn)在就可以在亞馬遜靈活計(jì)算機(jī)云(EC2)的服務(wù)器上運(yùn)行Fedora。

該測(cè)試版原來(lái)還有個(gè)隱藏性功能Systemmd,可以快速啟動(dòng)整個(gè)系統(tǒng),并自動(dòng)裝、卸各項(xiàng)服務(wù),亦可制作系統(tǒng)狀態(tài)快照或追蹤系統(tǒng)、服務(wù)及附加套件等各種程序。但是在版本開發(fā)的最后階段被推遲了,計(jì)劃將在Fedora 15中和大家見面。那么到底是什么原因?qū)е耂ystemmd功能最終被擱置呢?本次專輯我們將帶給大家官方的相關(guān)解答,有興趣的朋友可別錯(cuò)過(guò)了。

開篇我們就提到,有很多人都說(shuō)Ubuntu和Fedora有很多相似之處,但是Ubuntu10.10和Fedora 14注重的側(cè)重點(diǎn)還是大不相同的。Ubuntu主要關(guān)注于10.04版本的完善,而Fedora 14則重點(diǎn)關(guān)注于系統(tǒng)基礎(chǔ)設(shè)施的完善。那么這兩個(gè)版本究竟都更新了哪些部分呢?又有什么不同呢?有心要比較的朋友,不妨通過(guò)本次專輯先來(lái)品評(píng)一翻吧!

圖片點(diǎn)擊可在新窗口打開查看

既然Ubuntu和Fedora非常相似,那么作為用戶來(lái)說(shuō)卻面臨了選擇的難題。在Red Hat的支持下,F(xiàn)edora一直領(lǐng)跑社區(qū)版linux系統(tǒng)。但隨著Canonical公司支持一些開源軟件開發(fā)者,2004年,在Debian的基礎(chǔ)上推出了Ubuntu,情況就有所改變,時(shí)至今日,可以說(shuō)Ubuntu是穩(wěn)穩(wěn)地占據(jù)著Linux排行榜的寶座。

這兩款操作系統(tǒng)毫無(wú)疑問(wèn)都給人留下深刻印象,所以,很多初嘗linux操作系統(tǒng)的人,也時(shí)常糾結(jié)一個(gè)問(wèn)題:選擇誰(shuí)作為你第一個(gè)學(xué)習(xí)的linux操作系統(tǒng)?這里編者通過(guò)整理資料呈現(xiàn)兩者的微妙差別,試圖為你選擇一款適合自己學(xué)習(xí)的linux系統(tǒng)作為依據(jù)。Linux的新人們不妨通過(guò)本次專輯來(lái)做一下自己的選擇吧!

Ubuntu 10.10已經(jīng)于十月登場(chǎng)了,如今Fedora 14帶著最新的開源技術(shù)全面來(lái)襲,那么哪個(gè)更合用戶的胃口呢?大家還是先去試試Fedora 14,再下定論吧!

]]>
mips linux技術(shù)經(jīng)驗(yàn)總結(jié)http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1689&Page=1wangxinxin2010-11-23 14:00:31

1:
mipsel-linux-gcc xxxx.o  -L/xxxx/lib -lixml -lthreadutil -lpthread -lupnp -o ushare -static
/xxxx/upnpapi.c:216: undefined reference to `pthread_rwlock_init'
應(yīng)該使用下面的命令
mipsel-linux-gcc -o ushare -static -Wall -Wl,--start-group xxxxxx.o    -L/xxxx/lib -lixml -lthreadutil -lpthread -lupnp -Wl,--end-group
原因未知
2:
echo -ne "string \n"   -ne參數(shù)解釋轉(zhuǎn)義字符
       -n     do not output the trailing newline
       -e     enable interpretation of the backslash-escaped characters listed
              below
3:
sed /^$/d 刪除文件中的空行
                
                
               

]]>
用于便攜式設(shè)備動(dòng)態(tài)電源管理的嵌入式Linux技術(shù)http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1688&Page=1wangxinxin2010-11-23 13:53:26任何擁有筆記本電腦的人都會(huì)察覺,當(dāng)依靠電池供電時(shí),其便攜設(shè)備的行為與使用交流主電源供電時(shí)不同——顯示屏變暗、處理器的時(shí)鐘變慢、系統(tǒng)只要有可能就會(huì)轉(zhuǎn)入待機(jī)或睡眠狀態(tài)。PDA用戶也發(fā)現(xiàn),在停止使用一段時(shí)間后顯示屏將變暗,設(shè)備甚至進(jìn)入睡眠狀態(tài)。蜂窩電話用戶也已經(jīng)注意到,背景光和按鍵照明在完成撥號(hào)之后會(huì)熄滅。事實(shí)上,這些可見行為的背后是軟硬件技術(shù)和節(jié)電機(jī)制在發(fā)揮作用。

全速運(yùn)行、待機(jī)和睡眠等宏觀行為利用CPU的固有能力通過(guò)降低工作電壓或時(shí)鐘頻率來(lái)節(jié)省功耗。除了全面地改變系統(tǒng)狀態(tài)外,大多數(shù)設(shè)備用戶察覺不到的是,實(shí)際的電源管理也能夠逐漸地改變系統(tǒng)狀態(tài),這種情況在一秒之內(nèi)可以發(fā)生數(shù)百次。

任何動(dòng)態(tài)電源管理策略的基礎(chǔ)都是調(diào)整便攜式設(shè)備中一個(gè)或多個(gè)處理器內(nèi)核的工作電壓和頻率,此外,在高集成度的PowerPC、ARM和基于x86的系統(tǒng)中經(jīng)常包含一個(gè)DSP或智能基帶處理器。的確,諸如英特爾的StrongARM和XScale處理器、TI的OMAP處理器系列以及IBM最近發(fā)布的PowerPC 405LP和Transmeta Crusoe等CPU都提供內(nèi)核電壓和頻率的動(dòng)態(tài)調(diào)節(jié)功能。不過(guò),現(xiàn)代的嵌入式處理器具有非常高的電源效率,以至于CPU并不總是最主要的耗能器件,其它高耗能的器件包括高性能存儲(chǔ)器、彩色顯示器和射頻接口等。因此,如果動(dòng)態(tài)電源管理系統(tǒng)只能調(diào)節(jié)處理器內(nèi)核的電壓和頻率,那么它的用途將有限。

一個(gè)真正有用的動(dòng)態(tài)電源管理方案應(yīng)該可以采用與CPU內(nèi)核運(yùn)行相協(xié)調(diào)或相獨(dú)立的方式,???持對(duì)一系列電壓和時(shí)鐘的快速調(diào)節(jié)。

DPM架構(gòu)圖1:電源管理和嵌入式Linux軟件堆棧。

兩個(gè)現(xiàn)有的電源管理方案分別來(lái)自于PC和筆記本電腦領(lǐng)域:一個(gè)是傳統(tǒng)的高級(jí)電源管理(APM)方案,它目前仍然使用在許多基于Linux的便攜設(shè)備中,但在基于微軟操作系統(tǒng)的筆記本電腦和手持設(shè)備中已經(jīng)被逐步淘汰;另一個(gè)是高級(jí)配置和電源接口(ACPI)方案,它是英特爾、東芝和其他一些公司???持的現(xiàn)行標(biāo)準(zhǔn)。在PC、筆記本電腦、服務(wù)器、甚至刀片式通信設(shè)備等商業(yè)硬件中,類似ACPI的系統(tǒng)是人們的首選,但它強(qiáng)烈依賴于流行的x86/IA-32 BIOS 架構(gòu)。

嵌入式系統(tǒng)通常沒有類似于PC中的BIOS,而且通常不具備那么高的機(jī)器抽象水平,能夠把操作系統(tǒng)與低層次的設(shè)備和電源管理活動(dòng)隔離開來(lái)。與其它瞄準(zhǔn)電池供電應(yīng)用的操作系統(tǒng)類似,在嵌入式Linux中,電源管理活動(dòng)需要對(duì)操作系統(tǒng)內(nèi)核和設(shè)備驅(qū)動(dòng)程序進(jìn)行特殊的干預(yù)。不過(guò),需要重點(diǎn)強(qiáng)調(diào)的是,雖然低層次的動(dòng)態(tài)電源管理是駐留在操作系統(tǒng)內(nèi)核中,但電源管理策略和機(jī)制是來(lái)源于中間件和用戶應(yīng)用代碼。

接口和API

理想的電源管理系統(tǒng)應(yīng)盡可能對(duì)更多軟件堆棧層達(dá)到幾乎完全透明的程度。事實(shí)上,這是Transmeta公司在其Crusoe架構(gòu)中所遵循的路線,而且已經(jīng)成為基于BIOS的現(xiàn)有電源管理方案追求的目標(biāo)。然而,具備手持設(shè)備設(shè)計(jì)經(jīng)驗(yàn)的開發(fā)人員證實(shí),系統(tǒng)內(nèi)部各部分之間需要某種程度的直接合作,具體描述如下:

內(nèi)核接口

在面向Linux的DPM架構(gòu)中,內(nèi)核中的DPM子系統(tǒng)負(fù)責(zé)維持整個(gè)系統(tǒng)的電源狀態(tài),并把DPM系統(tǒng)的不同電源管理模塊聯(lián)系在一起。如果內(nèi)核的任何其它部分需要與DPM直接對(duì)話(盡管這種情況相對(duì)較少),那么最好把DPM看成是為驅(qū)動(dòng)程序、中間件和應(yīng)用程序提供服務(wù)的元素。

驅(qū)動(dòng)程序接口

???持DPM功能的設(shè)備驅(qū)動(dòng)程序比默認(rèn)的驅(qū)動(dòng)程序更了解系統(tǒng)狀態(tài):它們?cè)谕獠渴录尿?qū)使下通過(guò)設(shè)定不同的狀態(tài)來(lái)反映或遵循那些操作機(jī)制,或者通過(guò)來(lái)自內(nèi)核DPM子系統(tǒng)的調(diào)用來(lái)反映或遵循那些操作機(jī)制。為了實(shí)現(xiàn)更精確的機(jī)制決策,驅(qū)動(dòng)程序API也允許驅(qū)動(dòng)程序注冊(cè)與它們接口或由它們管理的那些設(shè)備的基礎(chǔ)操作特征。

應(yīng)用程序API

應(yīng)用程序可以分為三類:


*電源管理知會(huì)型(PM-aware)應(yīng)用程序


*在電源管理知會(huì)“包裹器”中的傳統(tǒng)應(yīng)用程序


*不帶有電源管理的傳統(tǒng)應(yīng)用程序

電源管理知會(huì)型應(yīng)用程序能夠利用機(jī)制管理器提供的API,建立其基本的約束條件,并強(qiáng)迫電源管理機(jī)制發(fā)生與其執(zhí)行需求相匹配的變化。不直接帶有電源管理能力的傳統(tǒng)應(yīng)用程序能夠被“包裹”在代碼或補(bǔ)丁中,以達(dá)到較高的效率,但它們也能夠根據(jù)更大范圍的默認(rèn)機(jī)制管理,按默認(rèn)的行為運(yùn)行。

在嵌入式Linux圖2:時(shí)鐘變換過(guò)程的延時(shí)。 DPM下的實(shí)際機(jī)制包括以下API,如dpm_set_os()(內(nèi)核)、assert_constraint()、remove_constraint()和set_operating_state()(內(nèi)核和驅(qū)動(dòng)程序)、set_policy()和set_task_state()(經(jīng)系統(tǒng)的用戶級(jí)調(diào)用)以及/proc接口。

對(duì)實(shí)時(shí)性能的影響

迄今為止,調(diào)整CPU電壓和頻率對(duì)系統(tǒng)的實(shí)時(shí)性能而言依然是一個(gè)重大挑戰(zhàn)。任何參數(shù)的改變都將導(dǎo)致系統(tǒng)不穩(wěn)定,重新鎖定鎖相環(huán)和其它動(dòng)態(tài)時(shí)鐘機(jī)制也需要相應(yīng)的時(shí)間,這兩個(gè)因素將使系統(tǒng)的響應(yīng)出現(xiàn)長(zhǎng)延時(shí)(有時(shí)達(dá)到數(shù)十毫秒),在此期間,CPU既不能執(zhí)行計(jì)算操作,也不能對(duì)外部事件(中斷)做出響應(yīng)。

TI的OMAP、英特爾的Xscale和IBM的PowerLP等嵌入式處理器能夠在十幾毫秒的延時(shí)內(nèi)調(diào)整頻率,在數(shù)十毫秒的延時(shí)內(nèi)改變電壓,而且所有這些動(dòng)作都不會(huì)中斷系統(tǒng)的操作,從而允許實(shí)現(xiàn)更大膽和更精確的節(jié)電機(jī)制。例如,在處理MPEG視頻幀或IP語(yǔ)音包的過(guò)程中可以降低電壓和頻率。

實(shí)時(shí)性能面臨的一個(gè)更普遍的挑戰(zhàn)是,如何在睡眠模式期間對(duì)中斷做出響應(yīng)。雖然通過(guò)編程,大多數(shù)片上外圍元件在收到中斷之后都可以喚醒系統(tǒng),但開發(fā)者必須謹(jǐn)慎地定義用于喚醒設(shè)備的機(jī)制,并把整個(gè)系統(tǒng)的延時(shí)和存儲(chǔ)器類別考慮在內(nèi),以確保處理中斷的執(zhí)行時(shí)間和用戶空間對(duì)事件的響應(yīng)(優(yōu)先延時(shí))。

向嵌入式Linux發(fā)展的趨勢(shì)

理想情況下,用戶既無(wú)需知道也無(wú)需關(guān)心???撐其手持設(shè)備的底層操作系統(tǒng)。現(xiàn)在,設(shè)備制造商對(duì)操作系統(tǒng)有了更多的選擇余地。雖然微軟一直非常重視品牌,但Windows系列操作系統(tǒng)進(jìn)入手持設(shè)備市場(chǎng)(如蜂窩電話)的規(guī)模卻落后于Symbian和Brew,也落后于嵌入式Linux。設(shè)備制造商轉(zhuǎn)向Linux的原因之一是可以利用標(biāo)準(zhǔn)的電源管理技術(shù)替代專有技術(shù),這樣既能達(dá)到更快的上市時(shí)間,同時(shí)又能滿足終端用戶和運(yùn)營(yíng)商的技術(shù)需求。

]]>
基于Linux的移動(dòng)電話開發(fā)技術(shù)及前景http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1687&Page=1wangxinxin2010-11-23 13:50:57技術(shù)上的挑戰(zhàn)。  特別的是oem們必須保證電話具有電源管理,快速引導(dǎo),集成的無(wú)線接口,先進(jìn)的多媒體功能,吸引人的小尺寸gui以及各種的pim應(yīng)用-而且所有的這些全部集成和運(yùn)行在一個(gè)適度的手機(jī)儲(chǔ)存空間里面。這也是嵌入linux 開發(fā)者所面臨的挑戰(zhàn),不同于pc,電話設(shè)計(jì)并不是建立在一個(gè)標(biāo)準(zhǔn)的系統(tǒng)上面。文章詳細(xì)闡述了基于linux的移動(dòng)電話開發(fā)的各種技術(shù)問(wèn)題,涉及到關(guān)鍵的linux技術(shù)和支持電話開發(fā)開源項(xiàng)目的可用性和成熟性。另外,文章還討論了移動(dòng)運(yùn)營(yíng)商提出的技術(shù)和經(jīng)濟(jì)層面的問(wèn)題。   全球移動(dòng)電話的市場(chǎng)正在爆炸性的增長(zhǎng),分析機(jī)構(gòu) idc 2005年q2的報(bào)告中指出,手機(jī)市場(chǎng)增長(zhǎng)了近34%,全球語(yǔ)音和數(shù)據(jù)網(wǎng)絡(luò)中,近7億部手機(jī)正在oem工廠設(shè)計(jì)和生產(chǎn)很快將進(jìn)入百姓的手中,分析公司gartner 預(yù)測(cè)到2009年,全球移動(dòng)電話的安裝數(shù)量將達(dá)到26億部。對(duì)于以linux為中心的it工業(yè)而言,這些數(shù)字相對(duì)于linux的發(fā)貨和服務(wù)器的安裝,即使是全球的桌面市場(chǎng)的數(shù)量也是巨大的.這樣的移動(dòng) 電話市場(chǎng)即代表了一個(gè)爆炸性增長(zhǎng)的機(jī)會(huì)也表示了它在終端市場(chǎng)的占有率,而且它也是對(duì)于linux 已經(jīng)占領(lǐng)的基于電信,企業(yè)和嵌入式linux 的設(shè)備市場(chǎng)的一個(gè)很好的補(bǔ)充。   為什么是linux和無(wú)處不在的linux?   在過(guò)去3年linux 作為移動(dòng)電話的os平臺(tái)已經(jīng)取得了相當(dāng)大的收獲。oem 如lg、 摩托羅拉、 nec、 松下 和三星已經(jīng)銷售了20余款 linux 電話,另外還有中國(guó)品牌的大唐、e28(上海毅仁信息科技)、 海爾和 中興, 諾基亞 和其他的oem也已經(jīng)開始銷售基于linux 的無(wú)線voip 終端。無(wú)論是大型還是小型的oem都正在選擇linux 作為智能手機(jī)的策略平臺(tái),這里面即有技術(shù)原因也存在經(jīng)濟(jì)的因素。在技術(shù)層面,oem們選擇linux 是因?yàn)樗男阅?可靠性,標(biāo)準(zhǔn)的tcp/ip網(wǎng)絡(luò)和靈活性,在經(jīng)濟(jì)方面, linux 可以給oem 們更低的開發(fā)和布置成本,更多的供應(yīng)商或者自己開發(fā)的方案, linux還可以給oem 們一個(gè)廣泛開發(fā)的商業(yè)技術(shù)生態(tài)環(huán)境和一個(gè)可能的機(jī)會(huì) ——統(tǒng)一的產(chǎn)品線和工程投入以支持多層次的產(chǎn)品(包括智能手機(jī),功能手機(jī)和入門級(jí)手機(jī)),多種網(wǎng)絡(luò)制式(gsm, cdma, wcmda 和wi-fi)以及運(yùn)營(yíng)商日益變化的需要。   因?yàn)檫@些技術(shù)和經(jīng)濟(jì)上的利益, linux 電話的數(shù)量已經(jīng)達(dá)到市場(chǎng)總量的1-2% ,在智能手機(jī)這個(gè)快速增長(zhǎng)的領(lǐng)域里linux 正在占據(jù)著一個(gè)強(qiáng)有力的位置,智能手機(jī)的市場(chǎng)份額正以每年85%增長(zhǎng),而linux 有25%的市場(chǎng)份額(gartner2005年的數(shù)據(jù)),遠(yuǎn)遠(yuǎn)領(lǐng)先windows mobile ,只比symbian os 落后一個(gè)百分點(diǎn)。   電話的分類   劃分電話的類型不是一個(gè)精確的科學(xué)過(guò)程,甚至也不是一個(gè)準(zhǔn)確的市場(chǎng)活動(dòng)。某些功能電話的顯著特點(diǎn)(如email,圖像處理)已經(jīng)是今天各種價(jià)格的電話的基本功能了。即使今天智能手機(jī)所具有的特性也許是6個(gè)月后所有手機(jī)都有的功能,今天你以為物有所值的功能手機(jī),在假期結(jié)束以后已經(jīng)淪為可以作為禮品的入門手機(jī)了,而且它們可能只有從春天到夏天的一個(gè)季節(jié)生命周期。   智能手機(jī)的陷阱   比較起把開源的os放在一個(gè)低端手機(jī)上,發(fā)布一款智能手機(jī)是相對(duì)容易多了。因?yàn)橹悄苁謾C(jī)的售價(jià)和利潤(rùn)都高,它可以有允許更多的bom(材料成本)和軟硬件空間實(shí)現(xiàn)多媒體、顯示和射頻基帶(rf)等電話關(guān)鍵功能。一般情況下智能手機(jī)的應(yīng)用os(linux, windowsmobile, 等)是運(yùn)行在一個(gè)專門的應(yīng)用處理器上,同時(shí)另外的一個(gè)cpu 和dsp處理語(yǔ)音,多媒體和rf功能。智能手機(jī)的購(gòu)買者是典型的成熟用戶,他們熱衷于新技術(shù),并且對(duì)于由于新的技術(shù)和功能代來(lái)的電池消耗等問(wèn)題更有相當(dāng)?shù)膶捜荻取?  然而到目前為止智能手機(jī)只占有整個(gè)手機(jī)市場(chǎng)的6%,如果linux開發(fā)者真正希望進(jìn)入廣闊的手機(jī)市場(chǎng),linux 手機(jī)平臺(tái)必須支持中端手機(jī)或者“功能手機(jī)”的技術(shù)和經(jīng)濟(jì)層面的要求。這些手機(jī)在技術(shù)方面無(wú)法和智能手機(jī)賽跑,硬件方面也無(wú)法和智能手機(jī)相比,一個(gè)低成本的bom 意味著運(yùn)行在應(yīng)用處理器上的linux 不得不面對(duì)所有的語(yǔ)音,數(shù)據(jù),rf和圖形任務(wù)。一個(gè)運(yùn)行在0-200mhz的單芯片cpu 的linux電話需要電源管理和合適的儲(chǔ)存空間以匹配linux 的運(yùn)行和成本的控制要求。   社會(huì)團(tuán)體和各國(guó)政府正在幫助縮小全球數(shù)字化的鴻溝,我們可以大膽的想象這是一款針對(duì)發(fā)展中國(guó)家的低收入人群開發(fā)的電話(可以認(rèn)為是個(gè)瘦ubuntu:一種時(shí)下流行開源的linux),就好像是目前難以讓人琢磨的$100 電腦一樣,下一個(gè)也許是“免費(fèi)的” linux 電話了。   隨著時(shí)間的流失,中端甚至低端電話的硬件都可以滿足linux 的要求,但是同時(shí)這些手機(jī)的利潤(rùn)也變得越來(lái)越薄。過(guò)去10余年電池技術(shù)不能以一個(gè)適度的速度提升,這就意味著應(yīng)用不能和時(shí)鐘的提速相匹配。所以如果linux電話要跳出智能手機(jī)的桎梏,它必須采用新的功能并改進(jìn)和合并許多現(xiàn)有的功能以應(yīng)對(duì)面臨的挑戰(zhàn)。  技術(shù)挑戰(zhàn)   開放軟件開發(fā)試驗(yàn)室(osdl.org)最近發(fā)起了新的行動(dòng)計(jì)劃-mli(mobile linux initiative),目的是培養(yǎng)和支持linux 在移動(dòng)電話手機(jī)的應(yīng)用。mli目前的首要任務(wù)是使linux 成為更適合手機(jī)的os 平臺(tái)。下面列舉的一些問(wèn)題來(lái)自mli的參與者和有興趣的合作伙伴,特別是手機(jī)制造商和芯片供應(yīng)商?   電源管理   今天,如果便攜式設(shè)備制造商想要提供一個(gè)基于linux和有電源管理的設(shè)備,他們將面對(duì)各種方案而不知所措。   oem可以參考以筆記本為代表的桌面系統(tǒng)的電源管理,如acpi和apm,在內(nèi)核的郵件列表中關(guān)于桌面電源管理的討論確實(shí)也是最多的,非x86/ia-32 結(jié)構(gòu)的筆記本硬件,oem可以使用針對(duì)蘋果powerpc 的pmu。 嵌入式的oem如果是使用arm授權(quán)的芯片可以借助arm公司的lem框架,或者使用10余家arm授權(quán)芯片公司也有自己的電源管理方案(如freescale, intel, nec, samsung, ti等)。   mips和mips授權(quán)芯片公司,freexscale,ibm power 框架 , renesas 和 hitachi產(chǎn)品線也有自己的更加獨(dú)特的能源管理協(xié)議和方法。oem當(dāng)然可以選擇像montavista 的 dpm和其他嵌入式linux供應(yīng)商的方案。選擇當(dāng)然是一件好的事情,但是太多的選擇會(huì)導(dǎo)致方案支離破碎的狀況和應(yīng)用缺少可再用性。應(yīng)對(duì)電源管理的問(wèn)題,osdl mli的成員和工業(yè)界已經(jīng)表達(dá)了一種愿望,即一個(gè)統(tǒng)一的,跨處理器平臺(tái)的電源管理途徑,或者一個(gè)主流的,更高層次的,可以覆蓋嵌入式,桌面和刀片服務(wù)器能源管理的體系結(jié)構(gòu)。   無(wú)線電接口   今天的linux智能手機(jī)中,gprs接口是被集成在一個(gè)調(diào)制解調(diào)器里面,它包含一個(gè)cpu核,dsp和支持無(wú)線通訊的 rf硬件。很像一個(gè)調(diào)制解調(diào)器——許多智能手機(jī)和這些嵌入式處理器是通過(guò)一個(gè)串口上的at命令進(jìn)行通訊的。這種靠卸載無(wú)線電功能來(lái)簡(jiǎn)化智能手機(jī)設(shè)計(jì)的方法是可行的,但是這將會(huì)進(jìn)一步增加整個(gè)手機(jī)的成本。今天,一些富有經(jīng)驗(yàn)的設(shè)計(jì)已經(jīng)去掉了調(diào)制解調(diào)器,把基帶接口開放給了應(yīng)用處理器(像目前中低端的手機(jī)使用nucleus這種情況),但是這樣會(huì)給即使是最新linux的實(shí)時(shí)性技術(shù)(搶占和開源的實(shí)時(shí)補(bǔ)丁-下面還會(huì)提到)帶來(lái)相當(dāng)?shù)膲毫Αsm或者cmda無(wú)線協(xié)議信令幀大約是800-900微秒的時(shí)間,如果你們是x86/ia-32 或者是powerpc處理器一般都是500 mhz 到1.5 ghz cpu 時(shí)鐘, 一個(gè)毫秒以內(nèi)的最壞情況的響應(yīng)是很容易到達(dá)的,但是如果是處理器時(shí)鐘在0-200 mhz,的arm cpu,基于linux的硬實(shí)時(shí)的中端響應(yīng)和搶占延遲仍然是具有挑戰(zhàn)的。另外的一個(gè)挑戰(zhàn)的領(lǐng)域是把已經(jīng)非常成熟的電話協(xié)議棧移植到linux上.,這種軟件是基于傳統(tǒng)的rtos開發(fā)和優(yōu)化的,像nucleus 和 rex。這些多層協(xié)議是用每一層特有的線程切換技術(shù)實(shí)現(xiàn)的,如果移植到linux可能會(huì)在層和層之間增加20-30微秒切換延遲,這樣只是穿越一個(gè)單包的協(xié)議棧就消耗了計(jì)算時(shí)間的很大的部分,留給其他任務(wù)的cpu時(shí)間就很少了。所以,如果linux要想進(jìn)入中低端手機(jī)的設(shè)計(jì)領(lǐng)域,它必須要解決低延遲的任務(wù)切換和cdma/gsm協(xié)議棧的移植這兩個(gè)重要的問(wèn)題。   實(shí)時(shí)性   在過(guò)去的5年中,linux已經(jīng)在向自身實(shí)時(shí)性改善的方向發(fā)展并取得了長(zhǎng)足的進(jìn)步。今天linux已經(jīng)具備了本身的實(shí)時(shí)性選擇,包括搶占內(nèi)核,0(1) 調(diào)度,futexes 和最近的開源的實(shí)時(shí)linux項(xiàng)目-現(xiàn)在已經(jīng)合并到由ingo molnar維護(hù)的搶占補(bǔ)丁里面了。同時(shí)還有雙內(nèi)核和虛擬計(jì)算的技術(shù),像rtlinux, rtai,adeos和未公開的jaluna osware。實(shí)現(xiàn)把一個(gè)嵌入式的rtos虛擬到linux里面,另外還有一些目前還屬于研究階段的實(shí)時(shí)項(xiàng)目和技術(shù),如l4 micokernel 和l4 linux 等。osdl mli 的成員和社區(qū)更愿意接受和喜歡linux本身的實(shí)時(shí)性改善的實(shí)時(shí)方案,為了支持linux直接面對(duì)rf處理器,多媒體和語(yǔ)音處理,多數(shù)人認(rèn)為linux應(yīng)該繼續(xù)在本身像rtos 一樣在實(shí)時(shí)響應(yīng)方面發(fā)展。在移動(dòng)電話的設(shè)計(jì)中,為了減少電池消耗,系統(tǒng)時(shí)鐘可能從200mhz降低到40 mhz (甚至0 mhz)后再回升回去以響應(yīng)系統(tǒng)的策略和外設(shè)輸入的要求,這些動(dòng)作產(chǎn)生的切換要求linux必須有足夠的響應(yīng)能力和時(shí)限保證。  小尺寸   今天智能手機(jī)出廠的時(shí)候已經(jīng)有了128mb的flash 和64mb的ram,然而作為一個(gè)電話的os需要為在有限的存儲(chǔ)器里尋找節(jié)省每個(gè)字節(jié)而努力。os和中間件占掉的每個(gè)字節(jié)都不能為oem增值而服務(wù)。在原理上嵌入式 linux 可以以大約1mb的容量布置,但是實(shí)際電話的配置中卻大的多。嵌入式系統(tǒng)開發(fā)人員,平臺(tái)提供商和linux 內(nèi)核的維護(hù)者都提供了一系列配置工具以壓縮linux平臺(tái)的尺寸。   運(yùn)營(yíng)商的新需求   電話制造商雖然希望按照自己的想象進(jìn)行創(chuàng)新,但是已經(jīng)意識(shí)到他們不能完全按照自己想法去設(shè)計(jì)和生產(chǎn)一個(gè)電話,取而待之的是他們必須遵循他們的用戶-移動(dòng)運(yùn)營(yíng)商(像cingular, 沃達(dá)豐,中國(guó)移動(dòng)等)的要求和規(guī)范去做事,這些無(wú)線網(wǎng)絡(luò)運(yùn)營(yíng)企業(yè)公司,他們多數(shù)是本國(guó)政府嚴(yán)格控制的或者大型的跨國(guó)企業(yè),他們要代表政府和行業(yè)去管理和規(guī)范市場(chǎng),移動(dòng)電話是這個(gè)系統(tǒng)中的一個(gè)重要組成部分和單元。   每個(gè)國(guó)家的政府,尤 其是美國(guó)政府對(duì)無(wú)線電頻譜都進(jìn)行嚴(yán)格的管理和控制,美國(guó)的聯(lián)邦通訊委員會(huì)(fcc)拍賣和發(fā)放無(wú)線頻譜和管理帶寬,信號(hào)強(qiáng)度,安全和內(nèi)容。雖然個(gè)別國(guó)家和地區(qū)協(xié)會(huì)趨向于開放和免費(fèi)使用無(wú)線頻率。   負(fù)責(zé)政策和規(guī)則制定的移動(dòng)運(yùn)營(yíng)商完全可以體會(huì)到開放的設(shè)備結(jié)構(gòu)帶來(lái)的問(wèn)題,運(yùn)營(yíng)商并不是完全反對(duì)開放, 只是會(huì)更多的考慮到如何安全的布置增值服務(wù)和管理問(wèn)題。協(xié)調(diào)在技術(shù)層面建立一個(gè)完善開放環(huán)境和一個(gè)有限制的api 接口,當(dāng)然還有著更多的政策和法規(guī)的討論,設(shè)備制造商,電話的開發(fā)者和行業(yè)主管已經(jīng)打開了原來(lái)是完全封閉的手機(jī)一點(diǎn)點(diǎn)口子,比如在過(guò)去5年里面用戶和行業(yè)觀察家看到j(luò)ava 和 brew電話, 更令人振奮的是最近幾年的symbianos 和 windows mobile 5.0.上的本機(jī)應(yīng)用軟件層出不窮?   基于linux的電話展示了未來(lái)一個(gè)在用戶空間可以編程的安全開放環(huán)境;而且它擁有一個(gè)具有優(yōu)秀的開發(fā)人員的完善的社區(qū)團(tuán)隊(duì)。相信未來(lái)基于linux的電話將是一個(gè)完全的開放平臺(tái),但是目前的情況還不近人意,現(xiàn)在發(fā)行的linux電話是基于一個(gè)內(nèi)核和許多os的組件(像某個(gè)版本的qt),它們不是一個(gè)開放的設(shè)備。黑客不能(或者說(shuō)非常不容易)自己構(gòu)造一個(gè)內(nèi)核,os和應(yīng)用部件替代原來(lái)的系統(tǒng)(像大家以前做過(guò)的linux pda一樣),甚至即使是在電話應(yīng)用上面增加一點(diǎn)功能。這些設(shè)備不能注冊(cè)登陸和讓用戶自己刷新,現(xiàn)在開啟這些linux 電話大門只是java。市場(chǎng)上有開放的linux手機(jī)資源,一個(gè)項(xiàng)目是harald welte的 open-ezx (www.open-ezx.org)。這個(gè)項(xiàng)目還處在一個(gè)早期階段,項(xiàng)目努力在構(gòu)造一個(gè)100%開放的電話軟件支持像a780和e680的motorola電話。項(xiàng)目的wiki (wiki.openezx.org)里面充滿如果使用open-ezx可能不能正確的引導(dǎo)和失去正常功能的各種警告信息,但是這個(gè)項(xiàng)目的確包含了如何構(gòu)造和生成一個(gè)‘shell’,以及交叉編譯這些有用的信息(因?yàn)閍780和e680是基于intel xscale 框架的 pxa 處理器)。   motorola的首席電話框架師絕對(duì)是不支持這樣的努力, 原因是什么?主要是責(zé)任問(wèn)題。電話用戶會(huì)擔(dān)心他們的電話網(wǎng)絡(luò)的完整性,安全性。當(dāng)然motorola還擔(dān)心要支持?jǐn)?shù)百萬(wàn)部電話以及他們可能的各種open-ezx 軟件的分支版本, 這樣你就知道為什么叫“open-ezx”了,因?yàn)橄駇otorola這樣的設(shè)備制造商是希望鼓勵(lì)社區(qū)的開發(fā)者在他們的平臺(tái)上作些擴(kuò)展,他們只是希望這種擴(kuò)展的道路未來(lái)開放策略發(fā)展的軌跡。今天這個(gè)“open-ezx”最可能有意義的是為isv提供了一個(gè)sdk的開發(fā)環(huán)境。   希望不久的將來(lái),通過(guò)教育和堅(jiān)持不懈的努力,小心謹(jǐn)慎的網(wǎng)絡(luò)運(yùn)營(yíng)商和行業(yè)規(guī)劃者們將意識(shí)到移動(dòng)電話是個(gè)計(jì)算平臺(tái),而不只是個(gè)單功能的無(wú)線電設(shè)備。   結(jié)束語(yǔ)   linux 的電話正在走進(jìn)千家萬(wàn)戶,2006年中 motorola中國(guó)公司繼a760,a780,e680后一款叫‘明’的linux手機(jī)以她亮麗的外觀,穩(wěn)定的平臺(tái)和軟件,新穎的功能為智能手機(jī)銷售歷史贏的了新的記錄和突破,更多本土和海外手機(jī)制造商和手機(jī)設(shè)計(jì)所 正在努力嘗試著linux手機(jī)的設(shè)計(jì),zte的e2,海爾的n60 ,e28的hawk3等就是他們當(dāng)中的姣姣者。日本ntt docomo電話公司最近宣布發(fā)表了最新的基于arm11 n903i ,這是繼成功的n900i, n901i,n902i后的又一款針對(duì)日本市場(chǎng)的3g手機(jī)。無(wú)疑,亞洲是linux 電話的重要舞臺(tái)和市場(chǎng)。osdl mli 的第一次成員會(huì)議選擇了中國(guó)召開,包括了motorola、montavista、windriver、intel數(shù)十家成員和觀察員的osdl大家庭聚會(huì)在2005年金秋的北京,筆者也看到包括大唐,華為,zte,龍旗在內(nèi)的中國(guó)手機(jī)制造和設(shè)計(jì)企業(yè)表現(xiàn)了極大的熱情和關(guān)注。osdl mli 通過(guò)會(huì)議的討論樹立了通過(guò)技術(shù)和經(jīng)濟(jì)層面的努力加快linux 在電話領(lǐng)域發(fā)展的奮斗目標(biāo)。雖然linux正在和將要面臨移動(dòng)電話設(shè)計(jì)中的更多的技術(shù)和商業(yè)方面的挑戰(zhàn),包括某些領(lǐng)先的手機(jī)設(shè)備制造商也懷疑linux的成熟性,但是堅(jiān)信依托l(wèi)inux在電信服務(wù)器,通用的嵌入式系統(tǒng)的成功經(jīng)驗(yàn),豐富開源社區(qū)技術(shù)和商業(yè)人才,手機(jī)芯片公司,國(guó)際性的標(biāo)準(zhǔn)組織和電信運(yùn)營(yíng)商以及世界和亞洲政府鼎立支持和推動(dòng),linux必將在移動(dòng)電話領(lǐng)域發(fā)揮一個(gè)主導(dǎo)的作用]]>Linux-VPN技術(shù)http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1686&Page=1wangxinxin2010-11-23 13:47:40
以下內(nèi)容含腳本,或可能導(dǎo)致頁(yè)面不正常的代碼
說(shuō)明:上面顯示的是代碼內(nèi)容。您可以先檢查過(guò)代碼沒問(wèn)題,或修改之后再運(yùn)行.
]]>
Linux:前途與錢途http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1685&Page=1wangxinxin2010-11-23 13:46:14
]]>
Linux Ready Gohttp://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1684&Page=1wangxinxin2010-11-23 13:44:17
1、 目標(biāo)
了解Linux 的基礎(chǔ)知識(shí),這些包含了用戶管理、群組的概念、權(quán)限的觀念等;
? 掌握至少50個(gè)以上的常用命令;
? 掌握.tgz、.rpm等軟件包的常用安裝方法
? 學(xué)習(xí)添加外設(shè),安裝設(shè)備驅(qū)動(dòng)程序(比如網(wǎng)卡)
? 熟悉Linux文件系統(tǒng) 和目錄結(jié)構(gòu)。
? 掌握vi,gcc,gdb等常用編輯器,編譯器,調(diào)試器 。
? 理解shell別名、管道、I/O重定向、輸入和輸出以及shell腳本編程。
? 網(wǎng)絡(luò)的基礎(chǔ)包括: 掌握路由概念、OSI七層網(wǎng)絡(luò)模型、TCP/IP模型及相關(guān)服務(wù)對(duì)應(yīng)的層次對(duì)于Linux學(xué)習(xí)非常重要的。然后學(xué)習(xí)Linux環(huán)境下的組網(wǎng)


2、    學(xué)習(xí)方法
2.1、  從命令行開始從基礎(chǔ)開始
2.2、  選擇一本好的Linux書籍
2.3、  養(yǎng)成在命令行下工作
2.4、  養(yǎng)成在命令行下工作
2.5、  學(xué)習(xí)Shell
shell是用戶輸入命令與系統(tǒng)解釋命令之間的中介。最直觀的說(shuō)法,一種Shell有一套自己的命令。舉一個(gè)容易理解的例子,Linux的標(biāo)準(zhǔn)Shel是Bash Shel;Solaris的shell是B shell;Linux的Shell是以命令行的方式表現(xiàn)出來(lái)的

2.6、   勤于實(shí)踐
2.7、   學(xué)會(huì)使用文檔
安裝一個(gè)新的軟件時(shí)先看README,再看INSTALL然后看FAQ,最后才動(dòng)手安裝,這樣遇到問(wèn)題就知道為什么。如果說(shuō)明文檔不看,結(jié)果出了問(wèn)題再去論壇來(lái)找答案反而浪費(fèi)時(shí)間。


——————————Linux視頻教程學(xué)習(xí)——————————————————
課程大綱:
1、 安裝篇
2、 基本命令篇
3、 應(yīng)用篇
4、 娛樂(lè)篇
5、 配置篇
6、 服務(wù)器篇



————————————Win7下安裝Linux————————————————————————————
1、 虛擬機(jī)品牌選擇:VMWare, WBOX(Sun收購(gòu)的產(chǎn)品,現(xiàn)在的Oracle), VPC(微軟產(chǎn)品),      XENSERVER(思杰產(chǎn)品)
  問(wèn)題:Win7下用什么虛擬機(jī)軟件好?

      虛擬機(jī) For Win7 付費(fèi)情況 最新版本 裝置包大小 特性

比較:Virtual PC XP Mode 不花錢 - 548M(含XP) 與Windows結(jié)合嚴(yán)密
      VMware Workstation 付費(fèi) 7.0 497M 周邊產(chǎn)品眾多,功用多到用不到
      VirtualBox 不花錢 3.0.10 69M 輕盈,普通使用足夠
     

——先下載個(gè)虛擬機(jī)軟件,比如vmware或者virtualbox之類的。這兩個(gè)里面我推薦后面一個(gè),因?yàn)榍懊婺莻(gè)體積比較大,而且聯(lián)網(wǎng)那塊兒特別不好整,我原來(lái)用的時(shí)候整了好久都不行。而且桌面快捷圖標(biāo)好像在win7里面需要以管理員身份執(zhí)行才能打開虛擬機(jī),不然有個(gè)服務(wù)沒有打開,就不行。最后聽別人建議換成了virtualbox后安好就可以上網(wǎng)了。后面那個(gè)體積小,只有70-80M。雖然功能沒有vmware那么強(qiáng),但是夠用了。
安裝好了后,直接就可以新建一個(gè)虛擬機(jī)了。


2、 Linux系統(tǒng)的發(fā)型版本
      Linux, Ubutun、 debian、redhat(并購(gòu)了jboss)等等, 國(guó)產(chǎn)的有紅旗、 雨木林風(fēng)等等
      LInux是內(nèi)核

     redHat的目標(biāo)就是服務(wù)器, Ub的目標(biāo)是桌面應(yīng)用(當(dāng)然Linux的服務(wù)器應(yīng)用都不會(huì)弱)

     Linux= 內(nèi)核 + 發(fā)行版


3、 觀看WIN7下使用vmware安裝雨木林風(fēng)操作系統(tǒng)

4、 redhat不適合初學(xué)者, ubutun比較好, 而且網(wǎng)上資料也多
    雨木淋風(fēng)也是使用的這個(gè)版本, 如果要和winli裝雨木淋風(fēng)

5、 vbox安裝ubuntu

  a、 fatal no bootable, system halted(異常)
      原因:沒有安裝好操作系統(tǒng), 虛擬機(jī)也是需要操作系統(tǒng)的
虛擬機(jī)使用的是虛擬硬盤,這個(gè)虛擬硬盤實(shí)際上就是一個(gè)文件,在VirtualBox中這個(gè)文件是.vdi文件

b、 原來(lái)是下載的iso文件有問(wèn)題, 690M的卻只有32kb


6、 關(guān)于iso文件的再認(rèn)識(shí)
ISO一般都是將光盤文件做成一個(gè)文件,而有一些光盤軟件設(shè)定只能從光驅(qū)進(jìn)行安裝,那么直接解壓后還是不能使用,需要用到虛擬光驅(qū)軟件

現(xiàn)在網(wǎng)絡(luò)上有不少軟件是以ISO文件類型發(fā)布的。ISO是一種鏡像文件,它是將多個(gè)文件目錄或者是整個(gè)光盤文件壓縮成一個(gè)文件,這樣便于軟件的發(fā)布。對(duì)于ISO文件,是無(wú)法直接使用的,需要用到一些軟件將其解開才能使]]>
嵌入式Linux的開發(fā)和應(yīng)用優(yōu)勢(shì)http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1683&Page=1wangxinxin2010-11-23 13:34:24  1.開放的源碼,豐富的軟件資源

  Linux是自由的操作系統(tǒng),它的開放源碼使用戶獲得了最大的自由度。Linux上的軟件 
資源十分豐富,每一種通用程序在Linux上都可以找到。

  2.功能強(qiáng)大的內(nèi)核,性能高效、穩(wěn)定,多任務(wù)

  Linux的內(nèi)核非常穩(wěn)定,它的高效和穩(wěn)定性已經(jīng)在各個(gè)領(lǐng)域,尤其在網(wǎng)絡(luò)服務(wù)器領(lǐng)域,得到了事實(shí)的驗(yàn)證。Linux內(nèi)核小巧靈活,易于裁減,這使得它很適合嵌入式系統(tǒng)的應(yīng)用。

  3.支持多種體系結(jié)構(gòu),如X86、ARM、MIPS、ALPHA、SPARC等

  目前,Linux已經(jīng)被移植到數(shù)十種硬件平臺(tái)上,幾乎支持所有流行的CPU。

  4.完善的網(wǎng)絡(luò)通訊、圖形、文件管理機(jī)制

  Linux自產(chǎn)生之日起就與網(wǎng)絡(luò)密不可分,網(wǎng)絡(luò)是Linux的強(qiáng)項(xiàng)。另外,Linux還支持多種文件和圖形系統(tǒng)。

  5.支持大量的周邊硬件設(shè)備

  Linux上的驅(qū)動(dòng)已經(jīng)非常豐富了,它們支持各種主流硬件設(shè)備和最新硬件技術(shù)。

  6.大小、功能都可定制

  Linux秉承Unix的優(yōu)秀設(shè)計(jì)思想,非常靈活,各部分的可定制性都很強(qiáng)。

  7.良好的開發(fā)環(huán)境,不斷發(fā)展的開發(fā)工具集

  Linux有著非常優(yōu)秀的完整開發(fā)工具鏈,有十幾種集成開發(fā)環(huán)境,其中很多是免費(fèi)的,大大降低了開發(fā)費(fèi)用。

  8.軟件開發(fā)者的廣泛支持

  Linux的自由精神吸引了成千上萬(wàn)的程序員投入到Linux的開發(fā)和測(cè)試中來(lái),這使得Linux在短時(shí)間內(nèi)就成為一個(gè)功能強(qiáng)大的操作系統(tǒng)。

  9.價(jià)格低廉

  有效降低產(chǎn)品成本,對(duì)成本敏感的嵌入式系統(tǒng)來(lái)說(shuō)至關(guān)重要,Linux恰好具有這一特性。

  由此,我們有理由相信,在國(guó)內(nèi)外眾多Linux廠商的推動(dòng)下,嵌入式Linux一定會(huì)成為Internet時(shí)代嵌入式操作系統(tǒng)

]]>
linux 基礎(chǔ)復(fù)習(xí)(7)串口應(yīng)用開發(fā) - 技術(shù)文檔 - 新手入門 Linux時(shí)http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1682&Page=1wangxinxin2010-11-23 13:26:07· 并行通信是指利用多條數(shù)據(jù)傳輸線將一個(gè)資料的各位同時(shí)傳送。它的特點(diǎn)是傳輸速度
快,適用于短距離通信,但要求傳輸速度較高的應(yīng)用場(chǎng)合。
· 串行通信是指利用一條傳輸線將資料一位位地順序傳送。特點(diǎn)是通信線路簡(jiǎn)單,利用
簡(jiǎn)單的線纜就可實(shí)現(xiàn)通信,降低成本,適用于遠(yuǎn)距離通信,但傳輸速度慢的應(yīng)用場(chǎng)合。
串口設(shè)置詳解
本節(jié)主要講解設(shè)置串口的主要方法。
如前所述,設(shè)置串口中最基本的包括波特率設(shè)置,校驗(yàn)位和停止位設(shè)置。串口的設(shè)置主
要是設(shè)置struct termios結(jié)構(gòu)體的各成員值,如下所示:
#include
struct termio
{      
unsigned short c_iflag; /* 輸入模式標(biāo)志 */
unsigned short c_oflag; /* 輸出模式標(biāo)志 */
unsigned short c_cflag; /* 控制模式標(biāo)志*/
unsigned short c_lflag; /*本地模式標(biāo)志 */
unsigned char c_line; /* line discipline */
unsigned char c_cc[NCC]; /* control characters */
};
在這個(gè)結(jié)構(gòu)中最為重要的是c_cflag,通過(guò)對(duì)它的賦值,用戶可以設(shè)置波特率、字符大小、
數(shù)據(jù)位、停止位、奇偶校驗(yàn)位和硬件流控等。另外c_iflag 和c_cc 也是比較常用的標(biāo)志。在
此主要對(duì)這3 個(gè)成員進(jìn)行詳細(xì)說(shuō)明。
c_cflag支持的常量名稱
CBAUD        波特率的位掩碼
B0           0波特率(放棄DTR)
B1800        1800波特率
B2400        2400波特率
B4800        4800波特率
B9600        9600波特率
B19200       19200波特率
B38400       38400波特率
B57600       57600波特率
B115200      115200波特率
EXTA         外部時(shí)鐘率
EXTB         外部時(shí)鐘率
CSIZE        數(shù)據(jù)位的位掩碼
CS5          5個(gè)數(shù)據(jù)位
CS6          6個(gè)數(shù)據(jù)位
CS7          7個(gè)數(shù)據(jù)位
CS8          8個(gè)數(shù)據(jù)位
CSTOPB       2個(gè)停止位(不設(shè)則是1個(gè)停止位)
CREAD        接收使能
PARENB       校驗(yàn)位使能
PARODD       使用奇校驗(yàn)而不使用偶校驗(yàn)
HUPCL        最后關(guān)閉時(shí)掛線(放棄DTR)
CLOCAL       本地連接(不改變端口所有者)
LOBLK        塊作業(yè)控制輸出
CNET_CTSRTS  硬件流控制使能

c_iflag支持的常量名稱
INPCK        奇偶校驗(yàn)使能
IGNPAR       忽略奇偶校驗(yàn)錯(cuò)誤
PARMRK       奇偶校驗(yàn)錯(cuò)誤掩碼
ISTRIP       除去奇偶校驗(yàn)位
IXON         啟動(dòng)出口硬件流控
IXOFF        啟動(dòng)入口軟件流控
IXANY        允許字符重新啟動(dòng)流控
IGNBRK       忽略中斷情況
BRKINT       當(dāng)發(fā)生中斷時(shí)發(fā)送SIGINT信號(hào)
INLCR        將NL映射到CR
IGNCR        忽略CR
ICRNL        將CR映射到NL
IUCLC        將高位情況映射到低位情況
IMAXBEL      當(dāng)輸入太長(zhǎng)時(shí)回復(fù)ECHO
c_cc 支持的常量名稱
VINTR     中斷控制,對(duì)應(yīng)鍵為CTRL+C
VQUIT     退出操作,對(duì)應(yīng)鍵為CRTL+Z
VERASE    刪除操作,對(duì)應(yīng)鍵為Backspace(BS)
VKILL     刪除行,對(duì)應(yīng)鍵為CTRL+U
VEOF      位于文件結(jié)尾,對(duì)應(yīng)鍵為CTRL+D
VEOL      位于行尾,對(duì)應(yīng)鍵為Carriage return(CR)
VEOL2     位于第二行尾,對(duì)應(yīng)鍵為L(zhǎng)ine feed(LF)
VMIN      指定了最少讀取的字符數(shù)
VTIME     指定了讀取每個(gè)字符的等待時(shí)間

串口控制函數(shù)
Tcgetattr         取屬性(termios結(jié)構(gòu))
Tcsetattr         設(shè)置屬性(termios結(jié)構(gòu))
cfgetispeed     得到輸入速度
Cfgetospeed           得到輸出速度
Cfsetispeed            設(shè)置輸入速度
Cfsetospeed           設(shè)置輸出速度
Tcdrain           等待所有輸出都被傳輸
tcflow           掛起傳輸或接收
tcflush           刷清未決輸入和/或輸出
Tcsendbreak           送BREAK字符
tcgetpgrp              得到前臺(tái)進(jìn)程組ID
tcsetpgrp               設(shè)置前臺(tái)進(jìn)程組ID

完整的串口配置模板,實(shí)用!把常用的選項(xiàng)在函數(shù)里面列出,可大大方便用戶的調(diào)試使用

int set_opt(int fd,int nSpeed, int nBits, char nEvent, int nStop)
{
struct termios newtio,oldtio;
/*保存測(cè)試現(xiàn)有串口參數(shù)設(shè)置,在這里如果串口號(hào)等出錯(cuò),會(huì)有相關(guān)的出錯(cuò)信息*/
if ( tcgetattr( fd,&oldtio) != 0)
{
perror("SetupSerial 1");
return -1;
}
bzero( &newtio, sizeof( newtio ) );
/*步驟一,設(shè)置字符大小*/
newtio.c_cflag |= CLOCAL | CREAD;
newtio.c_cflag &= ~CSIZE;
/*設(shè)置停止位*/
switch( nBits )
{
case 7:
newtio.c_cflag |= CS7;
break;
case 8:
newtio.c_cflag |= CS8;
break;
}
/*設(shè)置奇偶校驗(yàn)位*/
switch( nEvent )
{
case \"O\": //奇數(shù)
newtio.c_cflag |= PARENB;
newtio.c_cflag |= PARODD;
newtio.c_iflag |= (INPCK | ISTRIP);
break;
case \"E\": //偶數(shù)
newtio.c_iflag |= (INPCK | ISTRIP);
newtio.c_cflag |= PARENB;
newtio.c_cflag &= ~PARODD;
break;
case \"N\": //無(wú)奇偶校驗(yàn)位
newtio.c_cflag &= ~PARENB;
break;
}
/*設(shè)置波特率*/
switch( nSpeed )
{
case 2400:
cfsetispeed(&newtio, B2400);
cfsetospeed(&newtio, B2400);
break;
case 4800:
cfsetispeed(&newtio, B4800);
cfsetospeed(&newtio, B4800);
break;
case 9600:
cfsetispeed(&newtio, B9600);
cfsetospeed(&newtio, B9600);
break;
case 115200:
cfsetispeed(&newtio, B115200);
cfsetospeed(&newtio, B115200);
break;
case 460800:
cfsetispeed(&newtio, B460800);
cfsetospeed(&newtio, B460800);
break;
default:
cfsetispeed(&newtio, B9600);
cfsetospeed(&newtio, B9600);
break;
}
/*設(shè)置停止位*/
if( nStop == 1 )
newtio.c_cflag &= ~CSTOPB;
else if ( nStop == 2 )
newtio.c_cflag |= CSTOPB;
/*設(shè)置等待時(shí)間和最小接收字符*/
newtio.c_cc[VTIME] = 0;
newtio.c_cc[VMIN] = 0;
/*處理未接收字符*/
tcflush(fd,TCIFLUSH);
/*激活新配置*/
if((tcsetattr(fd,TCSANOW,&newtio))!=0)
{
perror("com set error");
return -1;
}
printf("set done!\n");
return 0;
}






串口使用詳解
在配置完串口的相關(guān)屬性后,就可對(duì)串口進(jìn)行打開,讀寫操作了。其使用方式與文件操作一樣,區(qū)別在于串口是一個(gè)終端設(shè)備。

打開串口
fd = open( "/dev/ttyS0", O_RDWR|O_NOCTTY|O_NDELAY);

Open函數(shù)中除普通參數(shù)外,另有兩個(gè)參數(shù)O_NOCTTY和O_NDELAY。
O_NOCTTY: 通知linix系統(tǒng),這個(gè)程序不會(huì)成為這個(gè)端口的控制終端。
O_NDELAY: 通知linux系統(tǒng)不關(guān)心DCD信號(hào)線所處的狀態(tài)(端口的另一端是否激活或者停止)。
然后,恢復(fù)串口的狀態(tài)為阻塞狀態(tài),用于等待串口數(shù)據(jù)的讀入。用fcntl函數(shù):
fcntl(fd, F_SETFL, 0);

接著,測(cè)試打開的文件描述府是否引用一個(gè)終端設(shè)備,以進(jìn)一步確認(rèn)串口是否正確打開。
isatty(STDIN_FILENO);
串口的讀寫與普通文件一樣,使用read,write函數(shù)。
read(fd,buff,8);
write(fd,buff,8);
實(shí)例


#include stdio.h>
#include string.h>
#include sys/types.h>
#include errno.h>
#include sys/stat.h>
#include fcntl.h>
#include unistd.h>
#include termios.h>
#include stdlib.h>
int set_opt(int fd,int nSpeed, int nBits, char nEvent, int nStop)
{
struct termios newtio,oldtio;
if ( tcgetattr( fd,&oldtio) != 0) {
perror("SetupSerial 1");
return -1;
}
bzero( &newtio, sizeof( newtio ) );
newtio.c_cflag |= CLOCAL | CREAD;
newtio.c_cflag &= ~CSIZE;
switch( nBits )
{
case 7:
newtio.c_cflag |= CS7;
break;
case 8:
newtio.c_cflag |= CS8;
break;
}
switch( nEvent )
{
case \"O\":
newtio.c_cflag |= PARENB;
newtio.c_cflag |= PARODD;
newtio.c_iflag |= (INPCK | ISTRIP);
break;
case \"E\":
newtio.c_iflag |= (INPCK | ISTRIP);
newtio.c_cflag |= PARENB;
newtio.c_cflag &= ~PARODD;
break;
case \"N\":
newtio.c_cflag &= ~PARENB;
break;
}
switch( nSpeed )
{
case 2400:
cfsetispeed(&newtio, B2400);
cfsetospeed(&newtio, B2400);
break;
case 4800:
cfsetispeed(&newtio, B4800);
cfsetospeed(&newtio, B4800);
break;
case 9600:
cfsetispeed(&newtio, B9600);
cfsetospeed(&newtio, B9600);
break;
case 115200:
cfsetispeed(&newtio, B115200);
cfsetospeed(&newtio, B115200);
break;
default:
cfsetispeed(&newtio, B9600);
cfsetospeed(&newtio, B9600);
break;
}
if( nStop == 1 )
newtio.c_cflag &= ~CSTOPB;
else if ( nStop == 2 )
newtio.c_cflag |= CSTOPB;
newtio.c_cc[VTIME] = 0;
newtio.c_cc[VMIN] = 0;
tcflush(fd,TCIFLUSH);
if((tcsetattr(fd,TCSANOW,&newtio))!=0)
{
perror("com set error");
return -1;
}
printf("set done!\n");
return 0;
}
int open_port(int fd,int comport)
{
char *dev[]={"/dev/ttyS0","/dev/ttyS1","/dev/ttyS2"};
long vdisable;
if (comport==1)
{    fd = open( "/dev/ttyS0", O_RDWR|O_NOCTTY|O_NDELAY);
if (-1 == fd){
perror("Can\"t Open Serial Port");
return(-1);
}
else
printf("open ttyS0 .....\n");
}
else if(comport==2)
{    fd = open( "/dev/ttyS1", O_RDWR|O_NOCTTY|O_NDELAY);
if (-1 == fd){
perror("Can\"t Open Serial Port");
return(-1);
}
else
printf("open ttyS1 .....\n");
}
else if (comport==3)
{
fd = open( "/dev/ttyS2", O_RDWR|O_NOCTTY|O_NDELAY);
if (-1 == fd){
perror("Can\"t Open Serial Port");
return(-1);
}
else
printf("open ttyS2 .....\n");
}
if(fcntl(fd, F_SETFL, 0)0)
printf("fcntl failed!\n");
else
printf("fcntl=%d\n",fcntl(fd, F_SETFL,0));
if(isatty(STDIN_FILENO)==0)
printf("standard input is not a terminal device\n");
else
printf("isatty success!\n");
printf("fd-open=%d\n",fd);
return fd;
}
int main(void)
{
int fd;
int nread,i;
char buff[]="Hello\n";
if((fd=open_port(fd,1))0){
perror("open_port error");
return;
}
if((i=set_opt(fd,115200,8,\"N\",1))0){
perror("set_opt error");
return;
}
printf("fd=%d\n",fd);
//    fd=3;
nread=read(fd,buff,8);
printf("nread=%d,%s\n",nread,buff);
close(fd);
return;
}

]]>
Linux Socket編程及其在無(wú)線網(wǎng)關(guān)中的應(yīng)用http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1681&Page=1wangxinxin2010-11-23 13:22:06l  引言

Linux具有豐富的網(wǎng)絡(luò)功能,完善的內(nèi)置網(wǎng)絡(luò)是Linux的一大特點(diǎn)。嵌入式Linux專用于微控制器,同樣具有優(yōu)秀的網(wǎng)絡(luò)功能。Linux是一種可移植的操作系統(tǒng),能夠在從微型計(jì)算機(jī)到大型計(jì)算機(jī)的任何環(huán)境中和任何平臺(tái)上運(yùn)行。可移植性為運(yùn)行Linux的不同計(jì)算機(jī)平臺(tái)與其他任何機(jī)器進(jìn)行準(zhǔn)確而有效的通訊提供了手段,不需要另外增加特殊的,昂貴的通訊接口。

該文在構(gòu)建基于嵌入式Linux和MPC852T無(wú)線網(wǎng)關(guān)平臺(tái)的基礎(chǔ)上,編程實(shí)現(xiàn)了無(wú)線網(wǎng)關(guān)平臺(tái)與無(wú)線終端之間的無(wú)線通信,并給出了無(wú)線網(wǎng)關(guān)平臺(tái)與無(wú)線終端之間通信的測(cè)試結(jié)果。

2  Linux下的socket編程

2.1 Socket編程

socket有3種類型:流式套接字、數(shù)據(jù)報(bào)套接字及原始套接字。流式套接字定義了一種可靠的面向連接的服務(wù),實(shí)現(xiàn)了無(wú)差錯(cuò)的數(shù)據(jù)傳輸。數(shù)據(jù)報(bào)套接字定義了一種無(wú)連接的服務(wù),數(shù)據(jù)通過(guò)相互獨(dú)立的報(bào)文進(jìn)行傳輸,是無(wú)序的,并且不保證可靠。原始套接字允許對(duì)低層協(xié)議如IP或ICMP直接訪問(wèn),主要用于新的網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)的測(cè)試等。

無(wú)連接服務(wù)器一般都是面向事務(wù)處理的,一個(gè)請(qǐng)求和一個(gè)應(yīng)答就完成客戶程序與服務(wù)程序之間的相互作用。

面向連接服務(wù)器處理的請(qǐng)求比較復(fù)雜,往往是并發(fā)服務(wù)器。工作過(guò)程如下:服務(wù)進(jìn)程首先調(diào)用socket( )創(chuàng)建一個(gè)字節(jié)流套接字,并調(diào)用bind( )將服務(wù)器地址捆扎在該套接字上,接著調(diào)用listen( )監(jiān)聽連接請(qǐng)求,隨后調(diào)用accept( )做好與客戶進(jìn)程建立連接的準(zhǔn)備,無(wú)連接請(qǐng)求時(shí),服務(wù)進(jìn)程被阻塞。當(dāng)連接請(qǐng)求到來(lái)后,服務(wù)器進(jìn)程被喚醒,建立一個(gè)新的Socket,并用新套接字同客戶進(jìn)程的套接字建立連接,而服務(wù)進(jìn)程最早生成的套接字則繼續(xù)用于監(jiān)聽網(wǎng)絡(luò)上的服務(wù)請(qǐng)求。客戶進(jìn)程調(diào)用socket( )創(chuàng)建字節(jié)流套接字,然后調(diào)用connect( )向服務(wù)進(jìn)程發(fā)出連接請(qǐng)求。服務(wù)進(jìn)程和客戶進(jìn)程通過(guò)調(diào)用read( )/recv( )和Write( )/send( )交換數(shù)據(jù)。

2.2 Linux下的socket函數(shù)庫(kù)

socket是面向用戶的,針對(duì)客戶和服務(wù)器程序提供不同的socket系統(tǒng)調(diào)用。客戶隨機(jī)申請(qǐng)一個(gè)socket,系統(tǒng)為之分配一個(gè)socket號(hào),服務(wù)器擁有全局公認(rèn)的socket,任何客戶都可以向它發(fā)出一個(gè)連接請(qǐng)求和信息請(qǐng)求。無(wú)論socket的內(nèi)部機(jī)制如何,它提供給程序員的最終是一組系統(tǒng)調(diào)用,即socket的庫(kù)函數(shù)。Linux這些庫(kù)函數(shù)同樣適用于嵌入式linux。下面是編制程序常用的庫(kù)函數(shù):

1) socket( ):建立Socket,此函數(shù)用來(lái)建立Socket描述字,并為此Socket建立資源(為一個(gè)Socket數(shù)據(jù)結(jié)構(gòu)分配存儲(chǔ)空間)。應(yīng)用程序在使用socket之前,首先必須擁有一個(gè)socket。socket( )向應(yīng)用程序提供創(chuàng)建socket的手段。socket( )函數(shù)原形為int socket(int domain,int type,int protoco1);函數(shù)中的domain是參數(shù)指定通信中使用的協(xié)議簇,也就是網(wǎng)絡(luò)的類型,通常為PF_INET,表示互聯(lián)網(wǎng)協(xié)議族(TCP/IP協(xié)議族);type參數(shù)指定socket的類型:SOCK_STREAM或SOCK_DGRAM,Socket接口還定義了原始Socket(SOCK_RAW),允許程序使用低層協(xié)議;protocol是參數(shù)指定通信中使用的協(xié)議。

函數(shù)在正常時(shí)返回socket描述符;否則返回l,錯(cuò)誤狀態(tài)在全局變量error里。

2) bind( ):綁定本地地址,即將一個(gè)本地地址與一個(gè)SOCKET描述字連接在一起。此函數(shù)在服務(wù)程序上使用,是調(diào)用監(jiān)聽函數(shù)listen()必須要調(diào)用的函數(shù)。

Bind函數(shù)原型為:

int bind(int sockfd, struct sockaddr *my_addr, int addrlen)。bind()函數(shù)給已經(jīng)打開的socket指定本地地址。函數(shù)中的sockfd是調(diào)用socket函數(shù)返回的socket描述符;addrlen是my-addr結(jié)構(gòu)的長(zhǎng)度,常被設(shè)置為sizeof(struct sockaddr);my-addr是用于偵聽連接請(qǐng)求的本地地址。

函數(shù)在正常時(shí)返回0,否則返回l,同時(shí)error是系統(tǒng)錯(cuò)誤碼。

3) listen( ):準(zhǔn)備接收連接請(qǐng)求。在用bind()給一個(gè)socket設(shè)定本地地址之后,就可以將這個(gè)socket用于接受連接請(qǐng)求,即listen()。函數(shù)原形為int listen(int s,int backlog);函數(shù)中的s是socket描述符;backlong是連接請(qǐng)求暫存隊(duì)列長(zhǎng)度。

函數(shù)正常時(shí)返回0,否則返回1,同時(shí)error是系統(tǒng)錯(cuò)誤碼。

4) accept( ):服務(wù)端應(yīng)用程序調(diào)用此函數(shù)來(lái)接受客戶端socket連接請(qǐng)求。在系統(tǒng)調(diào)用listen( )之后,系統(tǒng)就在socket的連接請(qǐng)求暫存隊(duì)列里存放每一個(gè)向該socket建立的連接請(qǐng)求,accept()的作用是從該暫存隊(duì)列中取出一個(gè)連接請(qǐng)求,用該socket的數(shù)據(jù),創(chuàng)建一個(gè)新的socket用來(lái)在服務(wù)端和客戶端之間傳遞接收信息,而原來(lái)socket仍然可以接收其他客戶端的連接要求。

函數(shù)正常創(chuàng)建了一個(gè)新的連接,那么返回非負(fù)的整數(shù),即新連接的socket描述符,否則返回l,error是系統(tǒng)錯(cuò)誤碼。

5) connect( ):建立連接。bind( ),listen( )和accept( )都是用于被動(dòng)地等待對(duì)方建立連接時(shí)需要使用的,connect( )函數(shù)是在主動(dòng)地向?qū)Ψ浇⑦B接時(shí)使用的。函數(shù)原形為int connect(int sockfd,struct sockaddr*srvaddr,int addrlen);函數(shù)中的sockfd是socket描述符;srvaddr是通信目的方地址;addrlen是目的地址長(zhǎng)度。

函數(shù)在正常建立連接時(shí)返回0,否則返回l,系統(tǒng)錯(cuò)誤碼在error中。

6) close( ):此函數(shù)是用來(lái)關(guān)閉某一socket。socket和文件描述符的關(guān)閉操作都使用這個(gè)函數(shù)。函數(shù)原形為int close(int fd);參數(shù)fd是socket描述符。函數(shù)在正常時(shí)返回0,返回1表示出錯(cuò)。

7) send( )/recv( ):用于socket的發(fā)送和接收數(shù)據(jù)。在連接建立完成后,通信雙方就可以使用以上這些函數(shù)來(lái)進(jìn)行數(shù)據(jù)的發(fā)送和接收操作。

3 無(wú)線網(wǎng)關(guān)平臺(tái)的構(gòu)建

為了將無(wú)線終端設(shè)備接入控制網(wǎng)絡(luò)實(shí)現(xiàn)遠(yuǎn)程監(jiān)控,根據(jù)條件構(gòu)建了基于MPC852T和嵌入式Linux的無(wú)線網(wǎng)關(guān)平臺(tái)。MPC852T是Motorola推出的面向低端的一款通信處理器,具有通信和網(wǎng)絡(luò)處理能力強(qiáng)、可靠性高、功耗低、功能集成度高等優(yōu)點(diǎn),并且有眾多的操作系統(tǒng)支持,這使得它在各種嵌入式系統(tǒng),尤其是在網(wǎng)絡(luò)通信以及數(shù)據(jù)采集和傳輸?shù)认到y(tǒng)中的應(yīng)用較為廣泛。

無(wú)線網(wǎng)關(guān)的硬件設(shè)計(jì)方案采用中心控制方案,中央處理器選用MPC852T,在MPC852T外圍配置一個(gè)RS-232串口、一個(gè)10M以太網(wǎng)口、一個(gè)100M以太網(wǎng)接口、SDRAM同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器等構(gòu)成無(wú)線網(wǎng)關(guān)的硬件平臺(tái),無(wú)線網(wǎng)關(guān)的硬件系統(tǒng)結(jié)構(gòu)圖如圖1所示。

無(wú)線網(wǎng)關(guān)與無(wú)線終端通信的實(shí)現(xiàn)

嵌入式Linux具有完善的TCP/IP協(xié)議棧,為滿足工業(yè)控制過(guò)程中傳輸數(shù)據(jù)量小、可靠性高、速度快等要求,這里使用socket編程來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)通信。無(wú)線終端通過(guò)無(wú)線網(wǎng)卡與無(wú)線網(wǎng)關(guān)自動(dòng)建立鏈接,無(wú)線終端完成數(shù)據(jù)的采集,并將采集的數(shù)據(jù)以無(wú)線的方式發(fā)送給網(wǎng)關(guān),無(wú)線網(wǎng)關(guān)把收到的數(shù)據(jù)上傳給上位機(jī)進(jìn)行分析、處理,最后計(jì)算出數(shù)據(jù)發(fā)送的速率。

圖片點(diǎn)擊可在新窗口打開查看

將編寫好的服務(wù)器端和終端程序進(jìn)行交叉編譯,將編譯得到的二進(jìn)制可執(zhí)行文件添加到RAMDISK中,壓縮新生成的ramdisk.image文件系統(tǒng)映像文件,重新編譯Linux內(nèi)核,生成Linux內(nèi)核映像文件,然后將內(nèi)核映像文件燒寫到無(wú)線網(wǎng)關(guān)平臺(tái)的FLASH中。無(wú)線網(wǎng)關(guān)平臺(tái)(服務(wù)器端)的主程序代碼如下:

#define PORT 3000       /*設(shè)定服務(wù)器監(jiān)聽端口*/

………………

int main(int argc,char* argv[ ])

{

int second;

int sockfd,new_fd;           /* sockfd為監(jiān)聽用描述符*/

struct sockaddr_in srvaddr;    /*定義服務(wù)器sock地址*/

struct sockaddr_in cliaddr;    /*定義客戶的sock地址*/

………………

if(bind(sockfd,(struct sockaddr *)&srvaddr,sizeof(struct sockaddr))==-1)    /*綁定*/

………………

if(listen(sockfd, QUEUE_SIZE) == -1)        /*監(jiān)聽端口是否有請(qǐng)求*/

………………

for(;;){          /*開始服務(wù)器循環(huán)*/

/*等待連接*/

sin_size=sizeof(struct sockaddr_in);

new_fd=accept(sockfd,(struct sockaddr*) &cliaddr,&sin_size);      /*接收連接請(qǐng)求*/

printf("Server:Got connection from %s \n",

inet_ntoa(cliaddr.sin_addr));

if(read(new_fd,&second,4)==-1)      /*接收連接請(qǐng)求*/

………………

close(new_fd);        /*父進(jìn)程不再需要該socket*/

………………;       

close(sockfd);

return 0;

}

}

測(cè)試結(jié)果

在上位機(jī)開啟通信終端,設(shè)置好串口參數(shù),進(jìn)入超級(jí)終端。無(wú)線網(wǎng)關(guān)平臺(tái)上運(yùn)行服務(wù)器端程序,同時(shí)在終端上運(yùn)行客戶端程序,即可進(jìn)行測(cè)試,測(cè)試結(jié)果如圖2所示。

圖片點(diǎn)擊可在新窗口打開查看

圖2  無(wú)線網(wǎng)關(guān)與無(wú)線終端測(cè)試結(jié)果圖

6  結(jié) 語(yǔ)

目前基于TCP/IP協(xié)議的工業(yè)以太網(wǎng)的在組網(wǎng)時(shí)仍需要布線,但在工業(yè)現(xiàn)場(chǎng),布線時(shí)常會(huì)受到限制,電纜的連接也限制了現(xiàn)場(chǎng)設(shè)備的移動(dòng)和網(wǎng)絡(luò)結(jié)構(gòu)的重組,還有一些高速旋轉(zhuǎn)設(shè)備根本無(wú)法通過(guò)電纜來(lái)傳輸數(shù)據(jù)。將802.11b無(wú)線通信技術(shù)應(yīng)用于工業(yè)控制網(wǎng)絡(luò),工控網(wǎng)絡(luò)就兼有了無(wú)線通信的優(yōu)點(diǎn):現(xiàn)場(chǎng)設(shè)備無(wú)需電纜即可與控制網(wǎng)絡(luò)連接,實(shí)現(xiàn)現(xiàn)場(chǎng)數(shù)據(jù)的無(wú)線采集和傳輸,對(duì)于在一些不可預(yù)知的環(huán)境,尤其是不適于布線的強(qiáng)腐蝕惡劣環(huán)境。本文作者創(chuàng)新點(diǎn):通過(guò)Linux下的socket編程實(shí)現(xiàn)了無(wú)線網(wǎng)關(guān)與無(wú)線終端的通信,可以使用無(wú)線通信來(lái)完成對(duì)現(xiàn)場(chǎng)設(shè)備的控制。

]]>
嵌入式linux操作系統(tǒng)應(yīng)用開發(fā)之:初識(shí)Qthttp://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1680&Page=1wangxinxin2010-11-23 13:20:23  隨著linux系統(tǒng)及基于linux系統(tǒng)的嵌入式產(chǎn)品的蓬勃發(fā)展,Qt、Qt/Embedded、Qtopia的字樣越來(lái)頻繁的出現(xiàn)在我們面前。

        在華清遠(yuǎn)見的嵌入式培訓(xùn)課程中,Qt是嵌入式學(xué)院<嵌入式工程師職業(yè)培訓(xùn)班>二期課程中嵌入式linux應(yīng)用開發(fā)方面的重要內(nèi)容。不少學(xué)員對(duì)QT方面的內(nèi)容比較關(guān)注,所以在這里我們先對(duì)QT做一下簡(jiǎn)單介紹。

        QT

        Qt是一個(gè)多平臺(tái)的C++圖形用戶界面應(yīng)用程序框架,由挪威 TrollTech 公司出品。它提供給應(yīng)用程序開發(fā)者建立藝術(shù)級(jí)的圖形用戶界面所需的所用功能。Qt是完全面向?qū)ο蟮暮苋菀讛U(kuò)展,并且允許真正地組件編程。

        自1996年Qt進(jìn)入商業(yè)領(lǐng)域開始,它已經(jīng)成為全世界范圍內(nèi)數(shù)千種成功的應(yīng)用程序的基礎(chǔ)。Qt也是流行的Linux桌面環(huán)境KDE 的基礎(chǔ),KDE是所有主要的Linux發(fā)行版的一個(gè)標(biāo)準(zhǔn)組件。

        基本上,Qt 同 X Window (X Window是一種用于UNIX系統(tǒng)的標(biāo)準(zhǔn)圖形化用戶界面)上的 Motif、Openwin、GTK 等圖形界面庫(kù)和 Windows 平臺(tái)上的 MFC、OWL、VCL、ATL是同類型的東西,但是Qt 具有下列優(yōu)點(diǎn):

        ●  優(yōu)良的跨平臺(tái)特性

        Qt支持Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等操作系統(tǒng), Qt的跨平臺(tái)特性,是選擇Qt的一個(gè)非常重要的原因。對(duì)于相同功能的軟件,我們無(wú)須針對(duì)不同的操作系統(tǒng)編寫不同程序,只需將相同的代碼針對(duì)不同的環(huán)境編譯即可;

      ● 面向?qū)ο?

      Qt 的良好封裝機(jī)制使得 Qt 的模塊化程度非常高,可重用性較好,對(duì)于用戶開發(fā)來(lái)說(shuō)是非常方便的。Qt 提供了一種稱為 signals/slots(信號(hào)/槽) 的安全類型來(lái)替代 callback(回調(diào)函數(shù)),這使得各個(gè)元件之間的協(xié)同工作變得十分簡(jiǎn)單;

        ● 豐富的API

        ● Qt 包括多達(dá)400個(gè)以上的 C++ 類,同時(shí)不斷擴(kuò)展。

        ● 支持 2D/3D 圖形渲染,支持 OpenGL;

        ● XML 支持;

        ● 開放源碼

       開放源優(yōu)勢(shì)包括一個(gè)活動(dòng)的開放源開發(fā)員社團(tuán)。由于Qt的不間斷開發(fā),以及完整的代碼透明性,以允許Qt開發(fā)員進(jìn)行徹底深入地查看,進(jìn)行自定義并擴(kuò)展Qt來(lái)滿足其獨(dú)特的需求。

       Qt/Embedded

       Qt/Embedded是Qt的嵌入式版本,它在原始Qt的基礎(chǔ)上,做了許多出色的調(diào)整以適合嵌入式環(huán)境。同Qt/X11相比,Qt/Embedded很節(jié)省內(nèi)存,因?yàn)樗恍枰猉 server或是Xlib庫(kù),它在底層摒棄了Xlib,采用framebuffer作為底層圖形接口。Qt/Embedded的應(yīng)用程序可以直接寫內(nèi)核幀緩沖,因此它在嵌入式linux系統(tǒng)上的應(yīng)用非常廣泛。

       最后再了解下Qtopia

       在Qt/Embedded版本4之前,Qt/Embedded和Qtopia是兩套不同的程序,Qt/Embedded是基礎(chǔ)類庫(kù),Qtopia是構(gòu)建于Qt/Embedded之上的一系列應(yīng)用程序。但從版本4開始,Trolltech將Qt/Embedded并入了Qtopia,并推出了新的Qtopia4。在該版中,原來(lái)的Qt/Embedded被稱為Qtopia Core,作為嵌入式版本的核心,既可以與Qtopia配合,也可以獨(dú)立使用。原來(lái)的Qtopia則被分成幾層,核心的應(yīng)用框架和插件系統(tǒng)被稱為 Qtopia Platform,上層的應(yīng)用程序則按照不同的目標(biāo)用戶分為不同的包,如Qtopai PDA,Qtopia Phone等。

       于Qt方面的內(nèi)容,除了Qt、基于 Framebuffer(幀緩沖) 的 Qt /Embedded外,還有快速開發(fā)工具 Qt Designer以及國(guó)際化工具 Qt Linguist 等


]]>
基于ARM嵌入式Linux應(yīng)用開發(fā)與實(shí)例教程http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1679&Page=1wangxinxin2010-11-23 13:18:10RISC和CISC是目前設(shè)計(jì)制造微處理器的兩種典型技術(shù),雖然它們都試圖在體系結(jié)構(gòu)、操作運(yùn)行、軟件硬件、編譯時(shí)間和運(yùn)行時(shí)間等諸多因素中做出某種平衡,以求達(dá)到高效的目的,但采用的方法不同,因此,在很多方面差異較大,主要表現(xiàn)在以下幾個(gè)方面。

(1)   指令系統(tǒng)

RISC設(shè)計(jì)者把主要精力放在那些經(jīng)常使用的指令上,盡量使它們具有簡(jiǎn)單高效的特色。對(duì)不常用的功能,則通過(guò)組合指令來(lái)完成。因此,在RISC機(jī)器上實(shí)現(xiàn)特殊功能時(shí),效率可能較低。但可以利用流水技術(shù)和超標(biāo)量技術(shù)加以改進(jìn)和彌補(bǔ)。而CISC計(jì)算機(jī)的指令系統(tǒng)比較豐富,有專用指令來(lái)完成特定的功能。因此,處理特殊任務(wù)時(shí)的效率較高。

(2)   存儲(chǔ)器操作

RISC對(duì)存儲(chǔ)器操作有限制,使控制簡(jiǎn)單化;而CISC機(jī)器的存儲(chǔ)器操作指令多,操作  直接。

(3)   程序

RISC匯編語(yǔ)言程序一般需要較大的內(nèi)存空間,實(shí)現(xiàn)特殊功能的程序復(fù)雜,不易設(shè)計(jì);而CISC匯編語(yǔ)言程序編程相對(duì)簡(jiǎn)單,科學(xué)計(jì)算及復(fù)雜操作的程序設(shè)計(jì)相對(duì)容易,效率較高。

(4)   中斷

RISC機(jī)器在一條指令執(zhí)行的適當(dāng)?shù)胤娇梢皂憫?yīng)中斷;而CISC機(jī)器是在一條指令執(zhí)行結(jié)束后才響應(yīng)中斷。

(5)   CPU

RISC CPU包含較少的單元電路,因而面積小、功耗低;而CISC CPU包含豐富的電路單元,因而功能強(qiáng)、面積大、功耗大。

(6)   設(shè)計(jì)周期

RISC微處理器結(jié)構(gòu)簡(jiǎn)單,布局緊湊,設(shè)計(jì)周期短,且易于采用最新技術(shù);CISC微處理器結(jié)構(gòu)復(fù)雜,設(shè)計(jì)周期長(zhǎng)。

(7)   用戶使用

RISC微處理器結(jié)構(gòu)簡(jiǎn)單,指令規(guī)整,性能容易把握,易學(xué)易用;CISC微處理器結(jié)構(gòu)復(fù)雜,功能強(qiáng)大,容易實(shí)現(xiàn)特殊功能。

(8)   應(yīng)用范圍

由于RISC指令系統(tǒng)的確定與特定的應(yīng)用領(lǐng)域有關(guān),故RISC機(jī)器更適合于專用機(jī);而CISC機(jī)器則更適合于通用機(jī)。

2. 嵌入式微控制器

嵌入式微控制器(Microcontroller Unit,MCU)又稱單片機(jī),顧名思義,就是將整個(gè)計(jì)算機(jī)系統(tǒng)集成到一塊芯片中。嵌入式微控制器一般以某一種微處理器內(nèi)核為核心,芯片內(nèi)部集成ROM/EPROM、RAM、Flash、總線、總線邏輯、定時(shí)/計(jì)數(shù)器、WatchDog、I/O、串行口、脈寬調(diào)制輸出、A/D、D/A等各種必要的功能模塊。為適應(yīng)不同的應(yīng)用需求,一般一個(gè)系列的單片機(jī)具有多種衍生產(chǎn)品,每種衍生產(chǎn)品的處理器內(nèi)核都是一樣的,不同之處在于存儲(chǔ)器和外設(shè)的配置及封裝。這樣可以使單片機(jī)最大限度地同應(yīng)用需求相匹配,從而減少功耗和成本。

與嵌入式微處理器相比,微控制器的最大特點(diǎn)是單片化,體積大大減小,從而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系統(tǒng)工業(yè)的主流。微控制器的片上資源一般比較豐富,適合于控制,因此稱為微控制器。

嵌入式微控制器目前的品種和數(shù)量最多,比較有代表性的通用系列包括8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16和68300等。另外還有許多半通用系列,如支持USB接口的MCU 8XC930/931、C540和C541。目前MCU占嵌入式系統(tǒng)約70%的市場(chǎng)份額。

特別值得注意的是,近年來(lái)提供x86微處理器的著名廠商AMD公司將AM186CC /CH/CU等嵌入式處理器稱之為Microcontroller,Motorola公司把以Power PC為基礎(chǔ)的PPC505和PPC555亦列入單片機(jī)行列。TI公司亦將其TMS320C2XXX系列DSP做為MCU進(jìn)行      推廣。

3. 嵌入式DSP處理器

DSP處理器對(duì)系統(tǒng)結(jié)構(gòu)和指令進(jìn)行了特殊設(shè)計(jì),使其適合于執(zhí)行DSP算法,編譯效率較高,指令執(zhí)行速度也較高。在數(shù)字濾波、FFT和譜分析等方面,DSP算法正在大量進(jìn)入嵌入式領(lǐng)域,DSP應(yīng)用正從在通用單片機(jī)中以普通指令實(shí)現(xiàn)DSP功能過(guò)渡到采用嵌入式DSP處理器。嵌入式DSP處理器有兩個(gè)發(fā)展來(lái)源,一是DSP處理器經(jīng)過(guò)單片化、EMC改造和增加片上外設(shè)成為嵌入式DSP處理器,TI的TMS320C2000/C5000等屬于此范疇;二是在通用單片機(jī)或片上系統(tǒng)(SOC)中增加DSP協(xié)處理器,例如Intel的MCS-296。

推動(dòng)嵌入式DSP處理器(Embedded Digital Signal Processor,EDSP)發(fā)展的一個(gè)重要因素是嵌入式系統(tǒng)的智能化,例如各種帶有智能邏輯的消費(fèi)類產(chǎn)品,生物信息識(shí)別終端,帶有加解密算法的鍵盤,ADSL接入,實(shí)時(shí)語(yǔ)音壓解系統(tǒng),虛擬現(xiàn)實(shí)顯示等。這類智能化算法一般都是運(yùn)算量較大,特別是向量運(yùn)算、指針線性尋址等較多,而這些正是DSP處理器的長(zhǎng)處   所在。

嵌入式DSP處理器比較有代表性的產(chǎn)品是Texas Instruments的TMS320系列和Motorola的DSP56000系列。TMS320系列處理器包括用于控制的C2000系列,移動(dòng)通信的C5000系列,以及性能更高的C6000和C8000系列。DSP56000目前已經(jīng)發(fā)展成為DSP56000、DSP56100、DSP56200和DSP56300等幾個(gè)不同系列的處理器。

DSP的設(shè)計(jì)者們把重點(diǎn)放在了處理連續(xù)的數(shù)據(jù)流上。在嵌入式應(yīng)用中,如果強(qiáng)調(diào)對(duì)連續(xù)的數(shù)據(jù)流的處理及高精度復(fù)雜運(yùn)算,則應(yīng)該選用DSP器件。

4. 嵌入式片上系統(tǒng)

隨著VLSI設(shè)計(jì)的普及化及半導(dǎo)體工藝的迅速發(fā)展,可以在一塊硅片上實(shí)現(xiàn)一個(gè)更為復(fù)雜的系統(tǒng),這就是System On Chip(SOC)。各種通用處理器內(nèi)核將作為SOC設(shè)計(jì)公司的標(biāo)準(zhǔn)庫(kù),和許多其他嵌入式系統(tǒng)外設(shè)一樣,成為VLSI設(shè)計(jì)中一種標(biāo)準(zhǔn)的器件,用標(biāo)準(zhǔn)的VHDL等語(yǔ)言描述,存儲(chǔ)在器件庫(kù)中。用戶只需定義出整個(gè)應(yīng)用系統(tǒng),仿真通過(guò)后就可以將設(shè)計(jì)圖交給半導(dǎo)體工廠制作樣品。這樣除個(gè)別無(wú)法集成的器件以外,整個(gè)嵌入式系統(tǒng)大部分均可集成到一塊或幾塊芯片中去,應(yīng)用系統(tǒng)電路板將變得很簡(jiǎn)潔,對(duì)于減小體積和功耗、提高可靠性非常有利。

SOC可以分為通用和專用兩類。通用系列包括Motorola的M-Core,某些ARM系列器件,Echelon和Motorola聯(lián)合研制的Neuron芯片等。專用SOC一般專用于某個(gè)或某類系統(tǒng)中,不為一般用戶所知。一個(gè)有代表性的產(chǎn)品是Philips的SmartXA,它將XA單片機(jī)內(nèi)核和支持超過(guò)2048位復(fù)雜RSA算法的CCU單元制作在一塊硅片上,形成一個(gè)可加載Java或C語(yǔ)言的專用的SOC,可用于公眾互聯(lián)網(wǎng)(如Internet安全)方面。

1.1.2  嵌入式處理器的選擇

針對(duì)各種嵌入式設(shè)備的需求,各個(gè)半導(dǎo)體芯片廠商都投入了很大的精力研發(fā)和生產(chǎn)適用于這些設(shè)備的CPU及協(xié)處理器芯片。用于嵌入式設(shè)備的處理器必須高度緊湊、低功耗和低成本。針對(duì)每一類應(yīng)用來(lái)說(shuō),開發(fā)者對(duì)處理器的選擇都是多種多樣的,掌上電腦就是一例,如表1.1所示。與全球PC市場(chǎng)不同的是,沒有一種微處理器和微處理器公司可以主導(dǎo)嵌入式系統(tǒng),僅以32位的CPU而言,就有100種以上的嵌入式微處理器。由于嵌入式系統(tǒng)設(shè)計(jì)的差異性極大,因此選擇是多樣化的。設(shè)計(jì)者在選擇處理器時(shí)要考慮的主要因素有如下幾個(gè)    方面。

表1.1  部分掌上電腦處理器一覽

廠家/型號(hào)

處理器

速  度

卡西歐Cassiopeia E-100系列

MIPS-based NEC VR4121

131MHz

康柏Aero 2100系列

MIPS-based NEC VR4111

70MHz

菲利浦Nino 500系列

MIPS-based Toshiba PR31700

75MHz

惠普J(rèn)ornada 400系列

Hitachi SH-3 7709a

100MHz/133MHz

3Com PalmPilotTM系列

Motorola DragonBall

68VZ328

33MHz

蘋果MessagePad 2000/2100 Intel

Intel StrongARM SA-110

160MHz

康柏iPAQ H3650Intel

Intel StrongARM SA-1110

206MHz

(1)   調(diào)查市場(chǎng)上已有的CPU供應(yīng)商

有些公司(如Motorola、Intel、AMD)很有名氣,而有一些小的公司(如QED)雖然名氣很小,但也能生產(chǎn)很優(yōu)秀的微處理器。另外,有一些公司,如ARM、MIPS等,只設(shè)計(jì)但并不生產(chǎn)CPU,他們把生產(chǎn)權(quán)授予世界各地的半導(dǎo)體制造商。ARM是另外一種近年來(lái)在嵌入式系統(tǒng)中有影響力的微處理器制造商,ARM的設(shè)計(jì)非常適合于小的電源供電系統(tǒng)。Apple在Newton手持計(jì)算機(jī)中使用ARM,另外有幾款數(shù)字無(wú)線電話也在使用ARM。

(2)   處理器的處理速度

一個(gè)處理器的性能取決于多個(gè)方面的因素:時(shí)鐘頻率,內(nèi)部寄存器的大小,指令是否對(duì)等處理所有的寄存器等。對(duì)于許多需用處理器的嵌入式系統(tǒng)設(shè)計(jì)來(lái)說(shuō),目標(biāo)不是在于挑選速度最快的處理器,而是在于選取能夠完成作業(yè)的處理器和I/O子系統(tǒng)。如果你的設(shè)計(jì)是面向高性能的應(yīng)用,那么建議你考慮某些新的處理器,其價(jià)格極為低廉,如IBM和Motorola的Power PC。以前Intel的i960是銷售極好的RISC高性能芯片,但是最近幾年卻遇到強(qiáng)勁的對(duì)手,讓位于MIPS、SH以及后起之秀ARM。

(3)   技術(shù)指標(biāo)

當(dāng)前,許多嵌入式處理器都集成了外圍設(shè)備的功能,從而減少了芯片的數(shù)量,進(jìn)而降低了整個(gè)系統(tǒng)的開發(fā)費(fèi)用。開發(fā)人員首先考慮的是,系統(tǒng)所要求的一些硬件能否無(wú)需過(guò)多的膠合邏輯(Glue Logic)就可以連接到處理器上。其次是考慮該處理器的一些支持芯片,如DMA控制器、內(nèi)存管理器、中斷控制器、串行設(shè)備、時(shí)鐘等的配套。

(4)   處理器的低功耗

嵌入式微處理器最大并且增長(zhǎng)最快的市場(chǎng)是手持設(shè)備、電子記事本、PDA、手機(jī)、GPS導(dǎo)航器、智能家電等消費(fèi)類電子產(chǎn)品,這些產(chǎn)品中選購(gòu)的微處理器典型的特點(diǎn)是要求高性能、低功耗。許多CPU生產(chǎn)廠家已經(jīng)進(jìn)入了這個(gè)領(lǐng)域。

(5)   處理器的軟件支持

若僅有一個(gè)處理器,沒有較好的軟件開發(fā)工具的支持,也是不行的,因此選擇合適的軟件開發(fā)工具對(duì)系統(tǒng)的實(shí)現(xiàn)會(huì)起到很好的作用。

成數(shù)據(jù)的訪問(wèn)和刷新,即以同一個(gè)周期、相同的速度同步地工作,因而可以與系統(tǒng)總線以同頻率工作,可大大提高數(shù)據(jù)傳

]]>
在 Power 上使用 Linux 開放源代碼工具http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1678&Page=1wangxinxin2010-11-23 13:14:44本文主要介紹用于 POWER 微處理器體系結(jié)構(gòu)上的 Linux 的開放源代碼工具,不過(guò)其中討論的問(wèn)題對(duì)開放源代碼軟件在 Linux 中的使用都是共同的。本文中提及的所有項(xiàng)目都對(duì)(但不限于)POWER 上的 Linux 可用。

什么是開放源代碼?

開放源代碼軟件是現(xiàn)代計(jì)算環(huán)境的寶貴資源。本質(zhì)上,開放源代碼軟件使得源代碼對(duì)使用軟件的任何人可用,即不對(duì)最終用戶隱藏任何內(nèi)容。開放源代碼軟件不一定是免費(fèi)的,雖然大多數(shù)都是免費(fèi)的。許可證協(xié)議決定了軟件的使用方式;最流行的許可證是 GNU 公共許可證(GNU Public License,GPL)。

開放源代碼軟件是由許多不同的發(fā)起者所開發(fā)的,包括選擇與其他人共享其工作成果的技術(shù)愛好者所開發(fā)的項(xiàng)目。商業(yè)性的公司,比如 IBM,也在為開放源代碼出力,以便在社區(qū)中提供優(yōu)秀的技術(shù),同時(shí)確保他們的專有硬件和軟件得到開放工具的支持。能夠編程、編寫文檔或執(zhí)行其他一些軟件開發(fā)相關(guān)任務(wù)的任何人,都能夠幫助創(chuàng)建開放源代碼軟件 —— 并且他們正是這樣做的!


圖片點(diǎn)擊可在新窗口打開查看
圖片點(diǎn)擊可在新窗口打開查看
圖片點(diǎn)擊可在新窗口打開查看
圖片點(diǎn)擊可在新窗口打開查看


為什么要使用開放源代碼工具?

許多人選擇開放源代碼工具是因?yàn)樗鼈儽阋耍ㄩ_放源代碼軟件經(jīng)常是免費(fèi)的,這當(dāng)然非常便宜)。開放源代碼軟件還傾向于非常可靠。由于有技術(shù)興趣的任何人都能夠查看源代碼,因而可能會(huì)有數(shù)千個(gè)質(zhì)量控制機(jī)構(gòu)在評(píng)估代碼。程序員能夠無(wú)隔閡地直接接觸用戶,因此問(wèn)題和 bug 通常是大家都知道的,從而迅速得到糾正。此外,由于沒有對(duì)用戶隱藏任何東西,這樣有利于更好的技術(shù)脫穎而出。

對(duì)于擔(dān)心安全問(wèn)題的用戶,開放源代碼軟件能夠給他們帶來(lái)心靈的平靜。如果懷疑應(yīng)用程序隱藏有“后門(back door)”,您可以獲得源代碼,自己檢查它,或讓您信任的人檢查它。然后您可以自己編譯該代碼,確保它和您預(yù)期的完全一樣。當(dāng)發(fā)現(xiàn)與安全相關(guān)的缺陷時(shí),社區(qū)會(huì)立即采取行動(dòng),并且通常會(huì)在幾小時(shí)內(nèi)提供建議使用的補(bǔ)丁。正式的項(xiàng)目解決辦法可能要花稍長(zhǎng)一點(diǎn)的時(shí)間,但是通常不會(huì)超出幾小時(shí)或幾天。開放源代碼軟件使您能夠在必要時(shí)對(duì)您的資源采取動(dòng)作。

開放源代碼軟件還有助于確保技術(shù)不會(huì)被忽略。由于開發(fā)過(guò)程對(duì)感興趣的任何人都是開放的,您通常會(huì)找到人們?yōu)椴怀R姷挠布_發(fā)的驅(qū)動(dòng)程序。此外,您還能找到由那些利用不常見協(xié)議的小社區(qū)為此類協(xié)議提供的支持。Linux 之所以在廣泛的 IBM 硬件上可用,正是由于采用了這種開放方法。這有助于保持您的硬件的生命力,同時(shí)幫助保護(hù)您避免失去對(duì)某種關(guān)鍵技術(shù)的軟件支持。如果某個(gè)項(xiàng)目不再提供官方支持了,您總是能夠選擇自己提供該支持!


圖片點(diǎn)擊可在新窗口打開查看
圖片點(diǎn)擊可在新窗口打開查看
圖片點(diǎn)擊可在新窗口打開查看
圖片點(diǎn)擊可在新窗口打開查看


獲得開放源代碼工具

獲得開放源代碼軟件是很容易的;Linux 內(nèi)核本身就是開關(guān)放源代碼的。當(dāng)您安裝 Linux 時(shí),就開始使用開放源代碼了。除了內(nèi)核外,Linux 發(fā)行套件中還包含其他許多開放源代碼包,其中包括開發(fā)工具、庫(kù)和應(yīng)用程序。對(duì)于所有這些包,它們的源代碼都是可用的,您可以編譯任何包以優(yōu)化或?yàn)樘囟ㄓ猛径远x它。

除了發(fā)行套件中包含的包外,Internet 上還有其他開放源代碼軟件可供使用。有些是專用的項(xiàng)目或正處于首次開發(fā)中的新技術(shù),而其他則是與 Linux 發(fā)行套件中包含的包相競(jìng)爭(zhēng)的方法。這是一個(gè)思想的自由市場(chǎng)。成功的開放源代碼軟件通常最終會(huì)作為輔助包或公共包被接納到發(fā)行套件中。有些項(xiàng)目甚至被接納為 Linux 內(nèi)核的一部分,此時(shí)這個(gè)單獨(dú)的項(xiàng)目將解散,而它的開發(fā)將作為標(biāo)準(zhǔn)內(nèi)核維護(hù)的一部分繼續(xù)進(jìn)行。

SourceForge

SourceForge.net(請(qǐng)參閱 參考資料)是一個(gè)很受歡迎的針對(duì)開放源代碼項(xiàng)目的知識(shí)庫(kù)。它通過(guò)易于使用的 Web 界面來(lái)組織項(xiàng)目,該界面具有搜索功能以幫助您查找項(xiàng)目。每個(gè) SourceForge 項(xiàng)目都有版本歷史記錄、bug 列表、討論組、文檔,當(dāng)然還包括源代碼。如果擁有自己的開放源代碼項(xiàng)目,您也可以利用 SourceForge。

RPM 與源代碼

無(wú)論何時(shí)只要可能,預(yù)編譯的二進(jìn)制 RPM 都是在 Linux POWER 環(huán)境中使用開放源代碼軟件的最簡(jiǎn)單方式。軟件的所有部分都以二進(jìn)制的形式準(zhǔn)備好了,只需直接安裝即可。安裝通常只需幾秒鐘就能完成,軟件馬上就可供使用了。

由于 RPM 的工作方式,系統(tǒng)將自動(dòng)接受依賴關(guān)系和兼容性檢查,在軟件開始安裝之前,您會(huì)接到關(guān)于缺少某個(gè)組件的通知。此外,升級(jí)、管理和刪除 RPM 包也很簡(jiǎn)單。無(wú)論何時(shí)只要可能,采用 RPM 都是可取的。

針對(duì) RPM 的一個(gè)優(yōu)秀知識(shí)庫(kù)是 Rpmfind.net(請(qǐng)參閱 參考資料)。它具有一個(gè)來(lái)自許多發(fā)行套件的可搜索索引,以及大多數(shù)主要發(fā)行套件和升級(jí)的鏡像。為 PPC 列出的任何包都應(yīng)該與 POWER 系統(tǒng)兼容。您既可以搜索包的名稱,也可以搜索某個(gè)包中包含的單獨(dú)文件。得到的搜索結(jié)果將跨越廣泛的 Linux 發(fā)行套件,包括非常罕見的發(fā)行套件。所列出的每個(gè)包通常還指向?qū)?yīng)項(xiàng)目的主頁(yè),因此如果在查找某個(gè)項(xiàng)目資源時(shí)遇到問(wèn)題, rpmfind 可能會(huì)提供幫助。對(duì)于 POWER 體系結(jié)構(gòu),作為 PPC 包列出的所有 RPM 或許都能工作。在安裝新的包時(shí)務(wù)必細(xì)心一點(diǎn)。RPM 將會(huì)幫助保護(hù)您避免意外地完全摧毀系統(tǒng),不過(guò)強(qiáng)烈建議您使用常規(guī)的預(yù)防措施,比如制作備份以及在非生產(chǎn)系統(tǒng)上執(zhí)行測(cè)試。


圖片點(diǎn)擊可在新窗口打開查看
圖片點(diǎn)擊可在新窗口打開查看
圖片點(diǎn)擊可在新窗口打開查看
圖片點(diǎn)擊可在新窗口打開查看


使用源代碼

由于 POWER 體系結(jié)構(gòu)上的 Linux 還比較新,并非所有開放源代碼項(xiàng)目擁有者都曾想到過(guò)它。因此可能還沒有對(duì)那些包可用的 RPM 包。在這種情況下,您必須自己編譯源代碼。這對(duì)于諸如 Samba 這樣成熟的項(xiàng)目來(lái)說(shuō)通常不是一件難事,但是對(duì)于不太常見的項(xiàng)目來(lái)說(shuō),可能需要做更多的工作。應(yīng)該對(duì)在生產(chǎn)系統(tǒng)上編譯源代碼保持謹(jǐn)慎,因?yàn)檫@樣可能導(dǎo)致問(wèn)題,或者失去對(duì)正在該系統(tǒng)上運(yùn)行的商業(yè)軟件的支持。

Linux 本質(zhì)上在不同的體系結(jié)構(gòu)上都是相同的;因此,許多項(xiàng)目的源代碼無(wú)需多少經(jīng)驗(yàn)就能成功地編譯。源代碼通常作為壓縮的 tar 文件來(lái)提供。Gzip 是最常用的壓縮方式,不過(guò) bzip2 正在變得流行起來(lái),因?yàn)樗鼊?chuàng)建的壓縮文件更小一些。

首先,您必須展開壓縮包。讓我們使用 Gimp 作為一個(gè)例子。Gimp 是一個(gè)照片編輯包,它處理各種各樣的圖像格式,并且包括昂貴的商業(yè)產(chǎn)品中具有的功能。

圖 1. Gimp 實(shí)際應(yīng)用
圖片點(diǎn)擊可在新窗口打開查看

要下載 Gimp 源代碼,請(qǐng)參閱本文后面 參考資料中指向 Gimp Web 站點(diǎn)的鏈接。要展開源代碼,請(qǐng)使用 tar -xvjf gimp-1.2.4.tar.bz2 命令。

文件將解壓縮到當(dāng)前目錄。標(biāo)準(zhǔn)的方法是將源代碼包含在一個(gè)與產(chǎn)品名稱相同的目錄中。在此例中,文件包含在一個(gè)名為 gimp-1.2.4 的目錄中。

切換到該目錄就會(huì)看到源代碼、一些文檔、配置腳本,以及 README 文件。大多數(shù)源代碼包都有一個(gè)名為 INSTALL 和一個(gè)名為 README 的文件。在編譯軟件之前應(yīng)該閱讀這些文件。通過(guò)閱讀這些文件,您可以在產(chǎn)生問(wèn)題之前識(shí)別它們,并且獲得正確的編譯和安裝步驟,從而省去一些麻煩。我在編譯源代碼時(shí)遇到的大多數(shù)問(wèn)題,都只是因?yàn)槲覜]有遵循那些文件中的指示。

最常見的下一個(gè)步驟是運(yùn)行 configure 腳本。 Configure 是 autoconf 包的一部分,這個(gè)包包含在 Linux 發(fā)行套件的開發(fā)工具中。下面引用 Autoconf 的包描述:

“GNU 的 Autoconf 是一個(gè)用于配置源代碼和 Makefile 的工具。使用 Autoconf,程序員能夠創(chuàng)建可移植和可配置的包,因?yàn)樯砂娜四軌蛑付ǜ鞣N配置選項(xiàng)。”

這個(gè)配置腳本在系統(tǒng)上運(yùn)行一系列測(cè)試,以確定針對(duì)您的發(fā)行套件和體系結(jié)構(gòu)編譯包的最佳方式。然后它為您的系統(tǒng)創(chuàng)建一個(gè)自定義的 Makefile。如果在系統(tǒng)上執(zhí)行編譯時(shí)遇到問(wèn)題, configure 將會(huì)告訴您。 Configure 通常允許您定制要包括到編譯包中的特性,或者允許您提供關(guān)于庫(kù)或其他必需文件的位置參數(shù),以便該包能夠成功編譯。要不帶參數(shù)執(zhí)行 configure 腳本,請(qǐng)使用如下命令:

./configure

它將在系統(tǒng)用上執(zhí)行多個(gè)測(cè)試并成功地結(jié)束。要生成程序,請(qǐng)使用如下命令:

make

如果編譯出錯(cuò),您需要確定問(wèn)題并修復(fù)它們。這些問(wèn)題也許比較棘手,可能需要關(guān)于您的環(huán)境和總體編程的大量知識(shí)。如果一切順利,下一步通常是使用如下命令來(lái)安裝軟件:

make install

這個(gè)命令將把文件復(fù)制到系統(tǒng)中的適當(dāng)位置,更新文件權(quán)限,復(fù)制配置文件,并把文檔添加到手冊(cè)頁(yè)。

這種方案存在許多可能的變化形式。這其中包括對(duì) configure 腳本使用開關(guān)來(lái)調(diào)整將要編譯到程序中的特性,使用 Makefile 中的不同命令來(lái)調(diào)整編譯方式,等等。

如果程序在安裝后無(wú)法工作,大多數(shù) Makefile 都包含一個(gè) uninstall 參數(shù)來(lái)刪除該程序。

make uninstall

務(wù)必記住,使用原始源代碼不會(huì)向 RPM 數(shù)據(jù)庫(kù)輸入任何內(nèi)容。以這種方式安裝的軟件是非托管的(unmanaged),因此應(yīng)該小心進(jìn)行。


圖片點(diǎn)擊可在新窗口打開查看
圖片點(diǎn)擊可在新窗口打開查看
圖片點(diǎn)擊可在新窗口打開查看
圖片點(diǎn)擊可在新窗口打開查看


創(chuàng)建自定義 RPM

如果打算使用大量純?cè)创a,您應(yīng)該了解更多關(guān)于創(chuàng)建自己的 RPM 的信息。創(chuàng)建 RPM 并不是特別困難,雖然這個(gè)主題超出了本文的討論范圍。從您自己的代碼創(chuàng)建 RPM 要比從陌生人編寫的代碼創(chuàng)建 RPM 容易得多。要?jiǎng)?chuàng)建良好的 RPM 包,您需要足夠了解某個(gè)軟件部分中的所有組件。本質(zhì)上,這個(gè)過(guò)程就是創(chuàng)建一個(gè)名為 SPEC 的配置文件,它識(shí)別 RPM 數(shù)據(jù)庫(kù)所必需的所有信息。關(guān)于依賴關(guān)系的信息、生成該文件的步驟,以及安裝后的操作連同該包中所有文件的列表,都包括在這個(gè) SPEC 文件中。RPM 使用這個(gè) SPEC 文件來(lái)編譯代碼和創(chuàng)建二進(jìn)制包。請(qǐng)查看您的源包,以確定是否已經(jīng)創(chuàng)建了一個(gè)示例 SPEC 文件。包括 SPEC 文件已經(jīng)成了一個(gè)普遍習(xí)慣,這樣還可能允許您只需做很少工作或不需要做工作就能創(chuàng)建一個(gè)自定義的 RPM。

源 RPM

在創(chuàng)建 RPM 時(shí),存在一個(gè)叫做源 RPM(Source RPM,SRPM)的工件(artifact)。這是一個(gè)與源代碼組合后的 SPEC 文件,設(shè)計(jì)用于構(gòu)建一個(gè)或多個(gè)體系結(jié)構(gòu)。這對(duì)兩個(gè)世界來(lái)說(shuō)都是最好的!使用源 RPM,您能夠在系統(tǒng)上自定義編譯軟件,但是完成后的產(chǎn)品將是可安裝的 RPM 而不只是原始的二進(jìn)制。作為預(yù)編譯 RPM 可用的大多數(shù)包也作為 SRPM 可用。這可能是在 Linux 中跨平臺(tái)移動(dòng)軟件的一種簡(jiǎn)單方式。當(dāng)您在一個(gè)不同的平臺(tái)上成功地重新編譯時(shí),可考慮與社區(qū)共享完成后的 RPM。

 

]]>
linux與windows比有什么優(yōu)點(diǎn)與缺點(diǎn)http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1677&Page=1wangxinxin2010-11-23 13:12:26
安全性能是Windows常常遭受Linux支持者批評(píng)嘲笑之處。除了層出不窮的計(jì)算機(jī)病毒外,號(hào)稱Windows95以來(lái)最重要的版本的WindowsXP問(wèn)世不過(guò)數(shù)月就屢屢發(fā)現(xiàn)安全漏洞,而且導(dǎo)致聯(lián)邦調(diào)查局向用戶發(fā)布警告,這無(wú)疑加深了Windows不如Linux安全的看法。不過(guò)客觀的講,在以下兩方面Windows有些冤情可訴:

Windows的每一個(gè)漏洞的公開都會(huì)引起公眾和媒體的廣泛注意,這種樹大招風(fēng)的現(xiàn)象大大增加了Windows技術(shù)漏洞的可見性(Visibility)。而且Linux作為公開源代碼的系統(tǒng),它的漏洞的發(fā)現(xiàn)和修補(bǔ)往往被有意無(wú)意地視為是系統(tǒng)開發(fā)的一部分,好比是Microsoft在開發(fā)Windows期間由內(nèi)部程序員發(fā)現(xiàn)并修補(bǔ)漏洞。由于在很多人眼里L(fēng)inux永遠(yuǎn)處于開發(fā)狀態(tài)中,而Windows有明確的推出日期(不然沒法賺錢),因此在這一點(diǎn)上Windows處于非常不利的位置。

人們?cè)诒容^Windows和Linux的技術(shù)漏洞時(shí)常常實(shí)際上是在對(duì)Windows和Linux內(nèi)核(Kernel)作比較,這是不公平的。Windows除內(nèi)核外還包括用戶界面(UI)以及大量的應(yīng)用軟件,大多數(shù)Windows技術(shù)漏洞其實(shí)并不是Windows內(nèi)核的漏洞。以安全漏洞而言,大多數(shù)是屬于IIS和IE的,對(duì)應(yīng)于Linux系統(tǒng)中的Apache和Netscape或Konqueror等。較為合理的做法應(yīng)當(dāng)是將Windows和LinuxDistribution或者LinuxDistribution中與Windows功能平行的部分進(jìn)行比較。

盡管有以上這些辯護(hù),盡管Microsoft抱怨說(shuō)人們對(duì)攻擊Windows遠(yuǎn)比對(duì)攻擊Linux感興趣(因?yàn)楦菀壮擅?才使得Windows頻頻亮起安全紅燈,但我認(rèn)為現(xiàn)階段Linux在安全性能上確實(shí)要優(yōu)于Windows。起碼以病毒數(shù)量和危害性而言,Windows用戶所擔(dān)當(dāng)?shù)娘L(fēng)險(xiǎn)就要大得多。只是Windows的安全性也不象有些文章渲染的那樣糟糕。

說(shuō)到了安全性,順便提一下對(duì)于除美國(guó)以外的其他國(guó)家來(lái)說(shuō),由于Windows的技術(shù)完全被Microsoft所壟斷,因此使用Linux還具有國(guó)家安全上的優(yōu)勢(shì)。這也是近期中國(guó),法國(guó),韓國(guó)等國(guó)政府在采購(gòu)操作系統(tǒng)時(shí)均作出了有利于Linux的決定的原因之一。

穩(wěn)定性

穩(wěn)定性也是Windows常常遭批評(píng)的地方,這里必須首先要把Windows的9x系列(包括95/98/Me)和NT系列(包括NT/2000/XP)區(qū)分開來(lái)。兩者在穩(wěn)定性上有數(shù)量級(jí)之別。Windows穩(wěn)定性差的惡名主要是由9x系列而來(lái),自WindowsXP開始Microsoft已經(jīng)終止了這一系列的開發(fā)。其次需要分清的是應(yīng)用軟件的穩(wěn)定性與操作系統(tǒng)的穩(wěn)定性。如果一個(gè)軟件的崩潰不影響操作系統(tǒng)和其它軟件的運(yùn)行,那么這筆帳通常就不應(yīng)該記在操作系統(tǒng)的穩(wěn)定性上。如果一個(gè)軟件的崩潰造成整個(gè)操作系統(tǒng)的崩潰(即通常所說(shuō)的“死機(jī)”),那操作系統(tǒng)的穩(wěn)定性就要受到質(zhì)疑。

至于最新的WindowsXP與Linux究竟誰(shuí)更穩(wěn)定,說(shuō)實(shí)在目前還缺乏足夠的數(shù)據(jù)和可比性,因?yàn)閮烧咚\(yùn)行的軟件很不相同。網(wǎng)上雖有一些測(cè)試結(jié)果,不過(guò)這些測(cè)試的客觀性往往是值得懷疑的,這個(gè)有時(shí)間我將另文敘述。一般說(shuō)來(lái),由于Windows上運(yùn)行的軟件通常比較復(fù)雜(比如游戲,大型商業(yè)軟件等),從而有較大的幾率暴露操作系統(tǒng)的缺陷。從這點(diǎn)上講,對(duì)WindowsXP和Linux的表觀穩(wěn)定性進(jìn)行比較并不足以說(shuō)明兩者在運(yùn)行同等復(fù)雜的軟件時(shí)誰(shuí)更穩(wěn)定。另一方面和系統(tǒng)安全性的情行相似,人們說(shuō)到Linux的穩(wěn)定性時(shí)常常只是指內(nèi)核的穩(wěn)定性,而Windows的穩(wěn)定性卻涵蓋包括用戶界面在內(nèi)的許多別的部分。出現(xiàn)這樣的狀況也情有可原,因?yàn)閃indows和它的用戶界面是無(wú)法分開的,用戶界面死了,對(duì)用戶來(lái)說(shuō)就相當(dāng)于操作系統(tǒng)死了,而Linux則不同,用戶界面死了常常還可以用熱鍵退出,并重新啟動(dòng)用戶界面。這些差別的存在使得穩(wěn)定性對(duì)Windows來(lái)說(shuō)是一個(gè)更為困難的目標(biāo)。軟件支持

對(duì)軟件,尤其是大型商業(yè)軟件及多媒體軟件(包括游戲)的支持一直是Windows的強(qiáng)項(xiàng),無(wú)論是MacOS還是Linux在近期內(nèi)都很難憾動(dòng)Windows在這一領(lǐng)域的霸主地位。Windows龐大的應(yīng)用軟件支持是大多數(shù)用戶即使心懷不滿,也不得不繼續(xù)使用Windows的一個(gè)重要原因。Linux所擁有的軟件雖然為數(shù)也不少,而且有些軟件(比如GIMP,StarOffice等)的開發(fā)是以Windows下相應(yīng)的商業(yè)軟件為競(jìng)爭(zhēng)對(duì)象的,但是在功能上這些軟件要真正達(dá)到可以替代Windows軟件的程度還有相當(dāng)一段路要走。免費(fèi)和公開源代碼軟件是Linux的靈魂,也是很多人喜愛Linux的原因,但是缺乏足夠的高質(zhì)量商業(yè)軟件的支持已經(jīng)成為L(zhǎng)inux與Windows競(jìng)爭(zhēng)桌面操作系統(tǒng)市場(chǎng)時(shí)的重大障礙。在這方面Linux面臨一個(gè)兩難局面:一個(gè)操作系統(tǒng)要吸引商業(yè)軟件開發(fā)者就得要有足夠多的用戶(尤其是公司用戶)。原因很簡(jiǎn)單,有用戶才有利潤(rùn)。但另一方面,一個(gè)操作系統(tǒng)要想吸引足夠多的用戶(尤其是公司用戶),就得要有足夠多高質(zhì)量的軟件(包括商業(yè)軟件)。這是一個(gè)典型的先有雞還是先有蛋的問(wèn)題。從目前的形勢(shì)發(fā)展來(lái)看,打破局面的最可能途徑是軟件公司愿意做前瞻性的開發(fā),從而產(chǎn)生一個(gè)良性的推動(dòng)。

這里需要做一點(diǎn)補(bǔ)充說(shuō)明:對(duì)于相對(duì)小型的軟件的支持Linux并不遜色,一個(gè)完整安裝的LinuxDistribution不僅比Windows帶有品種遠(yuǎn)為齊全的軟件,而且各常用類型的軟件,諸如email,F(xiàn)TP,IRC,瀏覽器等均有四五種以上可供選擇(有時(shí)反而讓初用者手足無(wú)措)。

硬件支持

五年前Linux的安裝對(duì)于新手來(lái)說(shuō)還是一件望而生畏的事,這其中很大一個(gè)原因就是Linux對(duì)硬件支持的欠缺,三年前我在筆記本電腦上安裝Redhat6.0還被迫到網(wǎng)上自行搜尋config文件。但近幾年來(lái)Linux在這方面取得了長(zhǎng)足的進(jìn)展,今天,各主要Distribution對(duì)硬件的支持度正在迅速接近甚至超過(guò)Windows的水平。盡管硬件生產(chǎn)商對(duì)Windows驅(qū)動(dòng)文件(driver)的提供仍比對(duì)Linux的要普遍,但高手如云的Linux群體已經(jīng)做到了能幾乎同步地提供所有最新硬件驅(qū)動(dòng)文件的程度。另一方面,WindowsXP在硬件支持的普遍性上卻出現(xiàn)了較大的倒退(Microsoft或許把這叫做更新)。此消彼長(zhǎng),Linux在硬件支持上的欠缺已經(jīng)成為歷史。

雖然沒有明說(shuō),但上面談?wù)摰挠布际轻槍?duì)x86機(jī)器的,脫離了這個(gè)框架,Linux在硬件的支持上的廣泛程度是包括Windows在內(nèi)的任何其它操作系統(tǒng)都無(wú)法比擬的。

說(shuō)到硬件支持,還有一個(gè)需要考慮的方面就是系統(tǒng)配置。每一代的Windows都對(duì)系統(tǒng)配置提出了新的要求,WindowsXP苛刻的系統(tǒng)配置要求更是使得幾乎所有兩三年以上機(jī)齡的機(jī)器都必須經(jīng)過(guò)相當(dāng)程度的硬件改良才能安裝。而Linux雖然也同樣在逐步提高對(duì)硬件配置的要求,但由于其優(yōu)越的模塊結(jié)構(gòu),使得用戶有極大的自由度根據(jù)自己機(jī)器的配置調(diào)整自己所需安裝的模塊,從而突破對(duì)硬件配置的要求。

規(guī)范性

這里所說(shuō)的操作系統(tǒng)的規(guī)范性有兩層含義,一層含義是指操作系統(tǒng)對(duì)軟件界的各項(xiàng)技術(shù)規(guī)范的遵循程度。在這方面Linux基本上遵循了所有適用的規(guī)范,這和Linux的開發(fā)模式不無(wú)關(guān)系。除內(nèi)核外Linux沒有一個(gè)中心仲裁者,因此開發(fā)人員大都以軟件界已有的技術(shù)規(guī)范為準(zhǔn)則進(jìn)行系統(tǒng)開發(fā)。Windows在這方面的名聲則毀譽(yù)參半,一方面Microsoft本身是軟件界許多規(guī)范的制定和倡導(dǎo)者,但另一方面,Microsoft又常常按自己的喜好“修改”規(guī)范。由于Windows在桌面操作系統(tǒng)領(lǐng)域擁有壓倒多數(shù)的用戶群體,軟件界在相當(dāng)程度上被迫適應(yīng)Windows的要求,因而使得Windows的許多非規(guī)范的東西成為事實(shí)上的規(guī)范。

規(guī)范性的另一層含義是指操作系統(tǒng)本身的規(guī)范性,一個(gè)簡(jiǎn)單的衡量標(biāo)準(zhǔn)就是該操作系統(tǒng)的兩個(gè)用戶之間有多少共同語(yǔ)言。由于Windows是由單一公司開發(fā)的,因此在這方面不是由松散聯(lián)系的開發(fā)者為主力的Linux可以比擬的。以用戶界面而論,Windows自Windows95以來(lái)保持了相當(dāng)?shù)姆(wěn)定性,用過(guò)其中任何一個(gè)版本的用戶基本上可以不用額外學(xué)習(xí)就直接使用另一個(gè)版本的Windows界面。而Linux的用戶界面不下十種之多,最流行的也有KDE和Gnome兩種,明顯缺乏規(guī)范性。Linux在自身規(guī)范性上的欠缺還表現(xiàn)在各主要的Distribution使用不同的目錄結(jié)構(gòu),用不同的格式傳播軟件,用不同的方式安裝軟件,等等。凡此種種不僅給新手帶來(lái)極大的困惑,就是對(duì)有經(jīng)驗(yàn)的用戶甚至系統(tǒng)開發(fā)人員都是極大的不便。

所幸的是,Linux的不規(guī)范性已經(jīng)引起了越來(lái)越多人的重視,一個(gè)如同W3C(W3C是制定互聯(lián)網(wǎng)規(guī)范的組織)那樣的組織TheFreeStandardsGroup已經(jīng)成立,它的使命就是制定Linux和其它開放源代碼系統(tǒng)的規(guī)范。隨著這些規(guī)范的逐步推廣,Linux將會(huì)縮小在自身規(guī)范性方面與Windows的差距。

這里也需要補(bǔ)充一點(diǎn):Linux在用戶界面方面的不規(guī)范性有時(shí)候也不失為一個(gè)優(yōu)點(diǎn)。常常聽人抱怨說(shuō)自己花大價(jià)錢更新機(jī)器的努力很大一部分被操作系統(tǒng)本身所消耗掉了,這其中一個(gè)消耗資源的大戶就是用戶界面。Linux用戶在這種情況下就可以使用消耗系統(tǒng)資源較少的用戶界面。

總體上講,在對(duì)外部規(guī)范的遵循性上,Linux要優(yōu)于Windows,而在自身的規(guī)范性上,Windows要顯著優(yōu)于Linux,而且在近期內(nèi)這種優(yōu)勢(shì)不會(huì)喪失。

源代碼

Windows的源代碼是保密的,而Linux的源代碼是開放的。從字面上講這當(dāng)然是意味著原則上任何人都可以改進(jìn)Linux。但是需要指出的是,原則上可以做的事情并非實(shí)際上就一定能夠或者應(yīng)當(dāng)做。Linux源代碼的高度的開放性主要是針對(duì)系統(tǒng)開發(fā)人員的,源代碼的開放性使得Linux系統(tǒng)中的缺陷能夠很快地被來(lái)自世界各地的高手所發(fā)現(xiàn)和彌補(bǔ),這是十余年來(lái)Linux發(fā)展的關(guān)鍵。但對(duì)于普通用戶來(lái)說(shuō),修改自己賴以工作的Linux機(jī)器的源代碼卻是非常不明智的行為。Linux內(nèi)核多年來(lái)經(jīng)過(guò)無(wú)數(shù)高手的錘煉,一個(gè)普通用戶能夠改進(jìn)它的幾率是微乎其微的(破壞它的可能性倒是很大的)。因此在肯定源代碼開放性對(duì)操作系統(tǒng)本身乃至整個(gè)軟件業(yè)發(fā)展的深遠(yuǎn)意義的同時(shí)也不應(yīng)該夸大它對(duì)普通用戶的直接幫助,源代碼的開放性并不增加一個(gè)普通用戶對(duì)系統(tǒng)的掌控程度。

Linux源代碼的開發(fā)性使得各大學(xué)的操作系統(tǒng)課程和教材幾乎都是以Linux或其他類似的系統(tǒng)為藍(lán)本,因此使得受過(guò)正規(guī)計(jì)算機(jī)專業(yè)教育的幾乎所有學(xué)生以及幾乎所有對(duì)操作系統(tǒng)感興趣的人都對(duì)Linux有相當(dāng)程度的了解和喜愛。這對(duì)于Linux未來(lái)的發(fā)展有著十分正面的影響。

應(yīng)用程序界面(API)

一個(gè)操作系統(tǒng)的API(ApplicationProgramInterface)是操作系統(tǒng)提供的與應(yīng)用軟件的接口,對(duì)于軟件開發(fā)人員來(lái)說(shuō)十分重要。一般認(rèn)為L(zhǎng)inux的API要比Windows優(yōu)美。不過(guò)由于Windows下有諸如VisualStudio這樣的直接支持WindowsAPI的大型工具軟件,從而大大降低了Windows編程對(duì)于擁有并熟悉這些工具的人員的困難程度。

系統(tǒng)可調(diào)節(jié)性

Linux具有比Windows大得多的可調(diào)節(jié)性。許多早期的Windows骨灰級(jí)用戶在系統(tǒng)可調(diào)節(jié)性上有一種懷舊感,覺得在DOS和早期Windows時(shí)代他們?cè)?jīng)是機(jī)器的主人,隨著Windows的演化,后來(lái)他們只擁有Windows,不再直接擁有機(jī)器了(現(xiàn)在他們連Windows也不擁有了)。而Linux卻始終如一地保持著系統(tǒng)的高度可調(diào)節(jié)性。

Linux的源代碼的開放性也可以被視為終極意義上的可調(diào)節(jié)性,但是,前面說(shuō)了,對(duì)于普通用戶來(lái)說(shuō),這種可調(diào)節(jié)性實(shí)際上是幾乎不存在的。

另一方面,在各自可調(diào)節(jié)的范圍內(nèi),Windows要比Linux易于調(diào)節(jié)(這在很大程度上得益于Windows界面的規(guī)范性)。在早期,Linux的調(diào)節(jié)往往需要用戶直接修改參數(shù)文件,即使對(duì)于有一定經(jīng)驗(yàn)的用戶,這也是一件令人頭疼的事。近年來(lái)Linux在這方面做了很大的改進(jìn),開發(fā)了許多工具軟件,不過(guò)和Linux下的許多其它類別的軟件類似,Linux的工具軟件也呈現(xiàn)一種發(fā)散性,即有不止一種軟件可以做同一件事。這使得用戶在轉(zhuǎn)換機(jī)器和LinuxDistribution時(shí)往往因?yàn)椴煌h(huán)境下工具軟件的不同而需要學(xué)習(xí)新的工具或重新安裝舊的工具。

使用方便性

使用的方便性是桌面操作系統(tǒng)競(jìng)爭(zhēng)中最重要的決勝因素之一。這里所說(shuō)的使用的方便性是針對(duì)普通用戶的,這一點(diǎn)常常被Linux的支持者所忽視。現(xiàn)階段在桌面操作系統(tǒng)的用戶群體中,Linux用戶的平均計(jì)算機(jī)水平要大大高于Windows用戶,這種差異使得Linux群體常常低估了一個(gè)缺乏計(jì)算機(jī)系統(tǒng)知識(shí)的普通用戶適應(yīng)Linux的難度。“Windows是傻瓜也能用的”非但不應(yīng)該被用來(lái)嘲笑Windows,反而是Linux在競(jìng)爭(zhēng)桌面操作系統(tǒng)市場(chǎng)中必須借鑒的經(jīng)驗(yàn)。計(jì)算機(jī)二十年來(lái)的發(fā)展早已超越了專業(yè)的界限而成為幾乎所有現(xiàn)代人都可能會(huì)用到的工具。使用方便性是任何工具所應(yīng)該追求的品質(zhì)之一,計(jì)算機(jī)及其操作系統(tǒng)當(dāng)然也不例外。試問(wèn)這世上聰明人的比例能有多少?偏偏把聰明用在計(jì)算機(jī)上的聰明人比例又能有多少?今天Linux用戶群體的平均計(jì)算機(jī)水平高的一個(gè)不可忽視的原因是因?yàn)橹挥兴捷^高的人才能得心應(yīng)手地使用Linux,而這一事實(shí),很不幸的卻是Linux與Windows競(jìng)爭(zhēng)時(shí)的一大弱點(diǎn)。

版權(quán)限制和費(fèi)用

這方面沒什么可說(shuō)的,法庭上的勝負(fù)不論,無(wú)論對(duì)個(gè)人還是公司用戶來(lái)說(shuō)Windows利用其壟斷地位迫使用戶接受日益苛刻的版權(quán)要求已是不爭(zhēng)的事實(shí),可以蓋棺定論。使用WindowsXP的用戶相信對(duì)此尤有切身體會(huì)。每張WindowsXP光盤只能安裝在一臺(tái)電腦上,不僅如此,重裝操作系統(tǒng)或更換一定數(shù)量的硬件都會(huì)導(dǎo)致Windows反盜版機(jī)制的干預(yù),使得用戶必須向Microsoft索要新的序列號(hào)(可能還免不了要解釋一下自己何以又要給Microsoft“添麻煩”)。花錢買了的軟件竟然還要間或地向Microsoft請(qǐng)示匯報(bào),用戶心中的不平衡是不言而喻的。至于價(jià)格,WindowsXPHome和Pro的價(jià)格分別為9和9。相比較之下Linux不僅可以免費(fèi)下載,而且可以安裝在任意數(shù)目的機(jī)器上。對(duì)用戶具有的親和力是不言而喻。

可惜的是,對(duì)于個(gè)人用戶來(lái)說(shuō)Linux在價(jià)格上的優(yōu)勢(shì)在很大程度上被市場(chǎng)上大部分品牌機(jī)廠家不提供預(yù)裝Linux的機(jī)器(服務(wù)器除外)這一事實(shí)所抵銷了。由于品牌機(jī)廠家在市場(chǎng)上占有很大的份額,因此大部分用戶不論用不用Windows,都一樣付了Windows的錢。既然錢也付了,操作系統(tǒng)也有了,絕大多數(shù)人就不會(huì)再去費(fèi)心做調(diào)整。順便說(shuō)一下,這也是目前Linux用戶群體的計(jì)算機(jī)水平普遍較高的另一個(gè)重要原因,因?yàn)閷?duì)計(jì)算機(jī)或操作系統(tǒng)感興趣的人有較大的可能性在并不缺乏操作系統(tǒng)的情況下還去安裝一個(gè)新的操作系統(tǒng)。

不過(guò)對(duì)公司用戶來(lái)說(shuō),由于Linux不對(duì)用戶數(shù)量設(shè)置限制,與Windows的VolumnLicence相比其費(fèi)用方面的優(yōu)勢(shì)是十分明顯的。

說(shuō)到費(fèi)用,需要提到另外一個(gè)方面就是許多在Windows下要付費(fèi)的軟件在Linux下有功能相近,相同或更好的免費(fèi)軟件。雖然前面說(shuō)到Windows在對(duì)軟件的總體支持上優(yōu)于Linux,但是Windows占優(yōu)勢(shì)的那部分軟件對(duì)大多數(shù)普通個(gè)人用戶來(lái)說(shuō)并不是不可缺少的(也許游戲除外)。不過(guò)Linux在這方面的優(yōu)勢(shì)也在很大程度上受到一個(gè)因素的削弱:那就是許多Linux下優(yōu)秀的免費(fèi)軟件也有Windows版本。

技術(shù)支持

這里所說(shuō)的技術(shù)支持是一個(gè)比較含糊的概念,既包括由公司提供的技術(shù)服務(wù),也包括用戶可以自行找尋的信息。在公司提供的技術(shù)服務(wù)方面,盡管不時(shí)可以聽到有人抱怨和Microsoft技術(shù)服務(wù)人員打交道時(shí)的不愉快經(jīng)歷,但這顯然是和Windows的用戶數(shù)量有關(guān)的。總體上講Microsoft對(duì)用戶(尤其是公司用戶)提供的技術(shù)服務(wù)要優(yōu)于各Linux公司(當(dāng)然這種服務(wù)不是免費(fèi)的)。在用戶可以自行找尋的信息方面,Microsoft有一個(gè)規(guī)模龐大的KnowledgeBase,Linux則有LinuxDocumentationProject,而且Linux在互聯(lián)網(wǎng)上的BBS,F(xiàn)orum和Newsgroup等網(wǎng)站中常常可以看到頂尖的Linux開發(fā)者的身影,與Windows不同的是,Linux的開放性使得許多Linux高手對(duì)Linux的發(fā)展具有一種使命感,他們光顧這些網(wǎng)站就是為了了解用戶的反映,發(fā)現(xiàn)bug并為L(zhǎng)inux的發(fā)展積累經(jīng)驗(yàn)。我這么說(shuō)倒不是暗示Microsoft的人就不會(huì)以同樣目的光顧Windows網(wǎng)站,不過(guò)就我個(gè)人的體會(huì)來(lái)說(shuō)這方面Linux群體對(duì)用戶起到的幫助作用要好于Windows群體的相應(yīng)幫助。

需要說(shuō)明的是,對(duì)公司用戶來(lái)說(shuō),這后一種幫助在公司決策層面上起不到太大的作用。有一句半開玩笑的話很通俗地概括了許多公司(尤其是大公司)在選用軟件(包括操作系統(tǒng))時(shí)的態(tài)度,那就是“只選擇自己可以將之告上法庭的供應(yīng)商提供的軟件”。Linux群體以及許多Linux公司無(wú)法在足夠長(zhǎng)的服務(wù)期限內(nèi)提供規(guī)范的,有法律保障的服務(wù)是Linux在競(jìng)爭(zhēng)桌面操作系統(tǒng)的半壁江山-公司用戶-時(shí)的一大障礙。

結(jié)語(yǔ)

寫到這里應(yīng)該收筆了。通常這類文章都要預(yù)測(cè)一下Windows和Linux在桌面操作系統(tǒng)市場(chǎng)上的前景。前不久,RedhatLinux公司的總裁發(fā)表令人意外的評(píng)論說(shuō)Linux無(wú)法在桌面操作系統(tǒng)市場(chǎng)上擊敗Windows。當(dāng)然,Linux的熱心支持者們并不認(rèn)同這種看法。兩方面的意見在網(wǎng)上爭(zhēng)論得非常激烈。講到預(yù)測(cè),插上幾句離題的話。小時(shí)候聽說(shuō)有外國(guó)專家預(yù)測(cè)在中國(guó)本土不會(huì)找到很多石油,也有外國(guó)專家預(yù)測(cè)唐山在多少年內(nèi)將難以重建。這些預(yù)測(cè)都破產(chǎn)了。那時(shí)我就想何以外國(guó)專家都如此愚蠢,以至于我們做成的每件事情都可以拉上一兩個(gè)外國(guó)專家做反襯?后來(lái)看的預(yù)測(cè)多了漸漸明白了道理:不是外國(guó)專家太愚蠢,而是有太多的“專家”了,什么可能性都讓專家“預(yù)測(cè)”到了。我不是專家,不想也不敢貿(mào)然在這里作什么預(yù)測(cè)。Linux在桌面操作系統(tǒng)市場(chǎng)的前景取決于許多因素:比如各主要商業(yè)軟件公司會(huì)在何時(shí),以何種方式參與Linux軟件的開發(fā)?比如有多少計(jì)算機(jī)廠家會(huì)提供預(yù)裝Linux的機(jī)器?比如全球性的經(jīng)濟(jì)低迷會(huì)在多大程度上加速公司和個(gè)人為節(jié)省開支而使用Linux,比如Microsoft是否會(huì)在法庭上敗訴?如果敗訴受到的懲罰方案如何?等等。除此之外,還需要看到用戶群體的行為習(xí)慣具有極大的慣性。無(wú)論Linux如何改進(jìn),仍然有很多人說(shuō)Linux不方便。為什么?除了Linux本身的部分原因外還因?yàn)閃indows巨大的用戶群體已經(jīng)形成,Windows的一切已經(jīng)成為了事實(shí)上的標(biāo)準(zhǔn),任何對(duì)Windows的偏離都必然要改變用戶群體的習(xí)慣,這是所有Windows的競(jìng)爭(zhēng)者不得不背負(fù)的沉重包袱。

細(xì)致而盡可能準(zhǔn)確地分析所有這些因素不是一篇短短(盡管現(xiàn)在已經(jīng)不太短了)的文章所能勝任的。幸好計(jì)算機(jī)技術(shù)這二十年的發(fā)展始終沒有讓人們久等過(guò),看到這場(chǎng)操作系統(tǒng)大戰(zhàn)的階段性結(jié)果相信也不會(huì)對(duì)我們的耐心形成太大的挑戰(zhàn)。

本文的一個(gè)假設(shè)的情況是Linux和Windows爭(zhēng)奪桌面操作系統(tǒng)用戶,離開了這個(gè)前提,離開了這個(gè)評(píng)論的角度,關(guān)于兩個(gè)操作系統(tǒng)的比較當(dāng)然就會(huì)有不同的結(jié)果。至于Linux是否應(yīng)該和Windows來(lái)爭(zhēng)奪污濁的桌面操作系統(tǒng)市場(chǎng),這是一個(gè)不同的話題。有朋友提到Linux過(guò)分地向桌面發(fā)展會(huì)有損其穩(wěn)定性。Linuxkernel2.4在推出后很長(zhǎng)一段時(shí)間無(wú)法達(dá)到令人滿意的穩(wěn)定性使得有人一度在kernel-mailing-list上發(fā)出“Linusdoesnotscale”這樣的感慨和懷疑。不過(guò)我認(rèn)為,kernel2.4的問(wèn)題不是因?yàn)長(zhǎng)inux向桌面發(fā)展造成的,kernel2.4的發(fā)展最主要的受益者是server而不是桌面用戶。

我個(gè)人的想法是Linux由于其模塊結(jié)構(gòu),是有希望在reliable,stable,scalable的內(nèi)核和一個(gè)能被普通用戶接受的GUI兩方面同時(shí)取得成功的(至少在技術(shù)上是可以的,在商業(yè)社會(huì)模式下是否事實(shí)上可以當(dāng)然誰(shuí)也沒法保證,許多GPL軟件已經(jīng)開始偏離GPL了,這在多大程度上代表一種趨勢(shì)還有待觀察)。]]>
Linux開發(fā)GUI應(yīng)用程序概述http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1676&Page=1wangxinxin2010-11-23 13:10:40Linux歷史簡(jiǎn)介
1991年,芬蘭大學(xué)生Linus Torvalds編寫了一個(gè)小的操作系統(tǒng)內(nèi)核,這就是Linux的前身,Linus Torvalds也由此成為了Linux之父。Linus Torvalds將Linux系統(tǒng)的源代碼在Internet上公布,使Linux的發(fā)展受到了眾多計(jì)算機(jī)高手的鼎力相助,Linux從而不斷地增加新的 特性,不斷地提高穩(wěn)定性。現(xiàn)在,Linux已經(jīng)成為一個(gè)非常流行的操作系統(tǒng)。
Linux是遵從GPL協(xié)議。也就是說(shuō),只要遵從GPL協(xié)議,就可以免費(fèi)得到它的軟件和源代碼,并對(duì)它進(jìn)行自由地修改。但對(duì)一般用戶來(lái)說(shuō),對(duì)Linux的源代碼進(jìn)行編譯和安裝是難度很高的工作。
所以,一些公司介入Linux的業(yè)務(wù),它們將Linux操作系統(tǒng)及一些重要的應(yīng)用程序打包,并提供較方便的安裝界面。這些公司所提供的產(chǎn)品一般稱為L(zhǎng)inux的發(fā)布版本。
目前比較著名的Linux發(fā)布版本有以下幾種:
RedHat—最著名的Linux服務(wù)提供商。
SlackWare—?dú)v史比較悠久的發(fā)行版本。
SUSE—在歐洲知名度較大。
TurboLinux—在亞洲用戶較多。該公司漢化做得很出色。
Debain—完全由Linux社區(qū)的計(jì)算機(jī)高手維護(hù)的發(fā)布版本。
XteamLinux—北京沖浪平臺(tái)公司推出中國(guó)第一套漢化發(fā)布版本。
BluePoint—內(nèi)核漢化技術(shù)比較引人注目。
紅旗Linux—中科院軟件所和北大方正推出的發(fā)布版本。
Linux的優(yōu)點(diǎn)
Linux有眾多的優(yōu)點(diǎn),下面列出主要的幾個(gè):
* Linux是一個(gè)多任務(wù)、多線程、多用戶的操作系統(tǒng)。
* Linux性能穩(wěn)定,功能強(qiáng)大,可以與商用操作系統(tǒng)相提并論。
* Linux可以適應(yīng)很多的平臺(tái)。它可以在Intel公司的x86計(jì)算機(jī)及其兼容機(jī)、Alpha計(jì)算機(jī),以及蘋果等計(jì)算機(jī)上運(yùn)行。 Linux還可以在許多嵌入式設(shè)備上運(yùn)行。
* Linux之上的應(yīng)用程序正在逐漸增多。大多數(shù)為UNIX開發(fā)的應(yīng)用程序都能在Linux上運(yùn)行。
Linux還可以在仿真軟件的幫助下運(yùn)行許多DOS應(yīng)用程序和Windows應(yīng)用程序。
* 公開源代碼是Linux最大的優(yōu)越性,只要遵從GPL協(xié)議,就可以自由地對(duì)Linux進(jìn)行修改和剪裁,以適應(yīng)個(gè)人需要。
Linux的桌面環(huán)境
Linux有一套簡(jiǎn)便易學(xué)的圖形用戶接口(GUI),用戶使用鼠標(biāo)就可以完成大多數(shù)工作。在Linux中,GUI由窗口系統(tǒng),窗口管理器,工具包和風(fēng)格 等幾個(gè)部分組成。窗口系統(tǒng)用于組織顯示屏上的圖形輸出,窗口管理器用于對(duì)窗口的操作如最小化等,工具包是用于編程界面的庫(kù),風(fēng)格是應(yīng)用程序的用戶界面。
現(xiàn)在,Linux下的桌面環(huán)境主要包括KDE和Gnome兩種。
KDE(K Desktop Environment)桌面環(huán)境目的是提供一個(gè)開放源代碼的圖形用戶接口和開發(fā)環(huán)境。
KDE一度成為許多Linux發(fā)布版本的首選桌面環(huán)境。但是,KDE是基于QT庫(kù)的。Qt最初并不遵從GPL協(xié)議。所以,將KDE建立在QT之上是一件危險(xiǎn)的事,它將依賴于開發(fā)QT庫(kù)的公司。
所以,后來(lái)的Linux發(fā)行版本中加入了Gnome主面環(huán)境。Gnome是GNU Network Object Model Environment(GNU,網(wǎng)絡(luò)對(duì)象模型環(huán)境)的縮寫。Gnome的發(fā)展很快,已成為一個(gè)強(qiáng)勁的GUI應(yīng)用程序開發(fā)框架,可以在任何一種UNIX系 統(tǒng)下運(yùn)行。
Gnome使用的圖形庫(kù)是Gtk+構(gòu)件庫(kù),它是基于LGPL協(xié)議的。Gnome的界面與KDE的界面類似,熟悉KDE的用戶無(wú)需學(xué)習(xí)就能夠使用Gnome。所以,Gnome現(xiàn)在已經(jīng)成為大多數(shù)Linux發(fā)布版本的首選桌面環(huán)境。
Gnome是一個(gè)集成桌面環(huán)境,也是一個(gè)應(yīng)用程序開發(fā)框架,由很多的函數(shù)庫(kù)組成。即使用戶不運(yùn)行Gnome桌面環(huán)境,用Gnome編寫的應(yīng)用程序也可運(yùn) 行,但是這些應(yīng)用程序是可以很好地和Gnome桌面環(huán)境集成的。Gnome的開發(fā)結(jié)構(gòu)使我們可以開發(fā)一致和易用的應(yīng)用程序。
開發(fā)所使用的庫(kù)
Gtk+(GIMP ToolKit,GIMP工具包) Gtk+最初用于開發(fā)GIMP,是一個(gè)用于創(chuàng)造圖形用戶接口的圖形庫(kù)。Gtk+是基于LGPL授權(quán)的,因此可以用Gtk+開發(fā)開放源碼軟件的自由軟件或商業(yè)的非自由的軟件。
Gtk+是在Gdk(GIMP Drawing Kit,GIMP繪圖包)的基礎(chǔ)上創(chuàng)建的。Gdk是對(duì)Xlib函數(shù)的包裝。我們一般用GTK代表軟件包和共享庫(kù),用Gtk+代表GTK的圖形構(gòu)件集。
Gtk+圖形庫(kù)使用一些稱為“構(gòu)件”的對(duì)象來(lái)創(chuàng)建GUI應(yīng)用程序。它提供了窗口、按鈕、框架、列表框、組合框、樹、狀態(tài)條等很多構(gòu)件,可以構(gòu)造豐富的用戶界面。
在Gtk+圖形庫(kù)構(gòu)件基礎(chǔ)上,又開發(fā)了一些新構(gòu)件,這些構(gòu)件都是Gtk+構(gòu)件庫(kù)的補(bǔ)充,它們提供了許多Gtk+構(gòu)件沒有的功能。一般把這些構(gòu)件稱為Gnome構(gòu)件。使用Gnome構(gòu)件可以使開發(fā)界面一致的應(yīng)用程序變得更加容易。
Gnome的應(yīng)用程序開發(fā)結(jié)構(gòu)核心是一套庫(kù),是由C語(yǔ)言編寫的,對(duì)很多語(yǔ)言都提供了GnomeAPI接口,包括Ada、Scheme、Python、Perl、Tom、Eiffel、Dylan等。
Gnome的開發(fā)架構(gòu)包含以下一些內(nèi)容:
1. 非Gnome庫(kù)
Gnome繼承了自由軟件一些函數(shù)庫(kù)。其中一些庫(kù)Gnome應(yīng)用程序開發(fā)架構(gòu)的一部分,但是不屬于Gnome庫(kù)。可以在Gnome環(huán)境中使用這些庫(kù)函數(shù)。主要有以下幾種:
Glib庫(kù) —Glib是Gnome的基礎(chǔ),它是一個(gè)C工具庫(kù),提供了創(chuàng)建和操作常用數(shù)據(jù)結(jié)構(gòu)的實(shí)用函數(shù)。
Gtk+庫(kù)—Gtk+(GIMPToolkit的縮寫),是在Gnome應(yīng)用程序中使用的GUI工具包。Gnome在基本Gtk+構(gòu)件集合的基礎(chǔ)上添加了許多其他構(gòu)件。
ORBit庫(kù)—ORBit是一個(gè)用C開發(fā)的CORBA2.2ORB。和其他ORB相比,它短小精悍,但速度更快,同時(shí)還支持C語(yǔ)言映射。ORBit是以一整套庫(kù)函數(shù)的方式實(shí)現(xiàn)的。
Imlib庫(kù) Imlib(圖片庫(kù))提供一些例程,其中包括加載、存儲(chǔ)、顯示,以及定繪制各種流行的圖像格式(包括GIF、JPEG、PNG以及TIFF)的函數(shù)。
2. Gnome庫(kù)
Libgnome庫(kù)—Libgnome是一些與圖形用戶接口無(wú)關(guān)的函數(shù)集合,Gnome應(yīng)用程序可以調(diào)用其中的函數(shù)。
Libgnomeui庫(kù)—Libgnomeui包含了與GUI相關(guān)的Gnome代碼。它由為增強(qiáng)和擴(kuò)展Gtk+功能而設(shè)計(jì)的構(gòu)件組成。libgnomeui主要包含:
(1)GnomeApp構(gòu)件一般用來(lái)為應(yīng)用程序創(chuàng)建主窗口。
(2)GnomeCanvas構(gòu)件用來(lái)編寫定制構(gòu)件。
(3)Gnome內(nèi)置的pixmap用于創(chuàng)建和使用對(duì)話框的例程。
Libgnomeui中還有幾種其他構(gòu)件,如GnomeEntry、GnomeFilePicker等。
Libgnorba庫(kù)—libgnorba提供與CORBA相關(guān)的實(shí)用程序。
3.其他庫(kù)
這些庫(kù)一般使用在Gnome應(yīng)用程序中,但它不屬于Gnome-libs:
Gnome-print庫(kù)—Gnome-print提供一個(gè)虛擬輸出設(shè)備,一段代碼能輸出到一個(gè)打印預(yù)覽構(gòu)件或PostScript文件,還可以輸出到其他打印機(jī)格式。
Gnome-xml庫(kù)—Gnome-xml能按照樹狀結(jié)構(gòu)分析XML,也能按照XML輸出樹狀結(jié)構(gòu)。
Guile庫(kù) Guile是Scheme編程語(yǔ)言在一個(gè)庫(kù)中的實(shí)現(xiàn),它使任何應(yīng)用程序都能帶有一個(gè)嵌入式的Sheme解釋器。
Bonobo庫(kù)—Bonobo是一種對(duì)象嵌入式結(jié)構(gòu),類似于Microsoft的OLE。
編程語(yǔ)言和編程工具
在Linux下的常用開發(fā)語(yǔ)言是C語(yǔ)言,Linux上的很多應(yīng)用程序就是用C語(yǔ)言寫的。當(dāng)然,也可以使用其他語(yǔ)言。因?yàn)镚tk+和Gnome是用C語(yǔ)言編寫的,所以在開發(fā)Linux下的GUI程序時(shí)使用C語(yǔ)言是非常方便的。Gtk+也提供與許多其他語(yǔ)言的接口。
一般的Linux發(fā)布版本中都提供了C編譯器gcc或egcs。使用gcc或egcs可以編譯C和C++源代碼。各種C編譯器都要使用一些C語(yǔ)言實(shí)用函 數(shù)。為了保證程序的可移植性,gcc沒有使用通用的C函數(shù)庫(kù),而是使用一種稱為glib的函數(shù)庫(kù)。glib也是Gtk+的基礎(chǔ)。它包含一些標(biāo)準(zhǔn)函數(shù)的替代 函數(shù)和基本數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)。
還有許多使用工具可以提高Linux下的編程效率,如gdb是優(yōu)秀的C語(yǔ)言調(diào)試器,有非常豐富的調(diào)試指令。automake和autoconf用于由源代碼結(jié)構(gòu)配置編譯選項(xiàng),生成編譯所需的Makefile文件。
在Linux下開發(fā)GUI應(yīng)用程序,像Windows平臺(tái)上的可視化快速應(yīng)用程序開發(fā)工具還很少。有幾種正在開發(fā)的RAD(Rapid Application Development)工具,比如我們以后將要介紹的Glade—一種GUI生成器,可以快速生成創(chuàng)建界面的C源程序。
]]>
在Ubuntu里十個(gè)必裝的應(yīng)用程式http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1675&Page=1wangxinxin2010-11-23 11:07:18功能,可以算是Linux里的殺手級(jí)應(yīng)用程式了。

    SMPlayer -這是Linux里功能最強(qiáng)大的影片播放程式之一,它使用了mplayer的引擎,并含括DVD、DVD ISO image、Matroska影片檔等等,多種格式支持。你一定要用。

    KTorrent -對(duì)我來(lái)說(shuō),要選BitTorrent用戶端程式的話我會(huì)選擇它。它擁有我所需要的全部功能,包括可以只下載torrents里的某些檔案,這個(gè)功能是有些用戶端程式所缺乏的。

    XChat -我想沒有其它(圖形界面)的IRC用戶端程式作的比Xchat好了。或許KVirc算得上-但這僅止于scripting/plugins的部份,Xchat輕輕松松就勝出Konversation或Ksirc許多。其預(yù)設(shè)支援了Perl與Python的scripting,C的plugins與Tcl scripting的plugin也都能用-只是并非預(yù)設(shè)就有。它還能夠簡(jiǎn)單透過(guò)/set變數(shù)進(jìn)行客制化。

    BasKet - BasKet這套記錄用的軟件可以用來(lái)回顧之前的資料;它同時(shí)也是一套可以用來(lái)作出完整專案的好用程式,不只是簡(jiǎn)單的note,還可以將你的資料組織到層級(jí)式的籃子里。除了現(xiàn)今版本仍不支援列印外(當(dāng)然,你也可以把note輸出為HTML再印出來(lái)),它幾乎可以說(shuō)是全功能的了。我強(qiáng)烈推薦使用這套優(yōu)于其它同類型軟體的紀(jì)錄應(yīng)用程式。

    Wesnoth -這是一套turn-based的策略游戲、擁有良善的維護(hù)、強(qiáng)而有力的社群與出色的角色扮演,并具單一玩家模式與線上模式。我必須說(shuō),我真愛這套游戲,并由衷感謝所有建立與維護(hù)此游戲的社群所作的努力。

    K3b -無(wú)疑地,這是一套功能最完整的CD/DVD燒錄程式,還可以建立ISO image檔。 KDE 4現(xiàn)仍未支持,不過(guò)這看起來(lái)有點(diǎn)像是開發(fā)人員的托詞。

    Emacs -我覺得Emacs應(yīng)該是必備工具程式,同時(shí)也是功能最強(qiáng)大、最受歡迎的IDE。

    Yakuake -終端機(jī)應(yīng)用程式,用來(lái)當(dāng)成像FPS game里的console (例如Quake、ET、UT )。Yakuake可以使用F12鍵盤捷徑方式隱藏或顯示之。

    TVTime -這套程式對(duì)有TV卡的人來(lái)說(shuō)很有用。我之前試過(guò)kdetv,不過(guò)現(xiàn)在覺得沒有別的程式比得上TVTime!]]>
嵌入式Linux操作系統(tǒng)開發(fā)工具選擇和應(yīng)用分析http://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1674&Page=1wangxinxin2010-11-23 11:05:59概述
    嵌入式Linux具有穩(wěn)定、可擴(kuò)充性及開放原始程序代碼等特點(diǎn),可兼容多種處理器和主機(jī),廣泛適用于各種產(chǎn)品和應(yīng)用。但是,交叉編譯、設(shè)備驅(qū)動(dòng)程序開發(fā)/除錯(cuò),以及更小尺寸等要求對(duì)嵌入式Linux開發(fā)者來(lái)說(shuō)都是嚴(yán)峻的挑戰(zhàn)。為應(yīng)對(duì)這些挑戰(zhàn),針對(duì)嵌入式Linux開發(fā)的專用工具應(yīng)運(yùn)而生,而且發(fā)展十分迅速。
    但是,許多這類開發(fā)工具都不兼容非X86平臺(tái),而且也沒有很好地實(shí)現(xiàn)歸檔備案或整合。在其它開發(fā)環(huán)境下,組件間的高度整合并沒有完全兌現(xiàn)。因此,要想完全從這些免費(fèi)的軟件組件開始制作一個(gè)完整的跨平臺(tái)開發(fā)環(huán)境,開發(fā)者應(yīng)意識(shí)到這將需要大量的調(diào)查、實(shí)施、訓(xùn)練和維護(hù)方面的工作。
   Linux是少數(shù)既可以在嵌入式設(shè)備上執(zhí)行也可作為開發(fā)環(huán)境的操作系統(tǒng)之一。這一特性可讓開發(fā)者在轉(zhuǎn)向此開發(fā)系統(tǒng)之前于常用硬件(比如X86桌面系統(tǒng))之上開發(fā)、除錯(cuò)和測(cè)試應(yīng)用程序和庫(kù),因此可減少對(duì)標(biāo)準(zhǔn)參考平臺(tái)和指令集仿真器的依賴。這一技術(shù)僅適用于應(yīng)用程序和庫(kù),但不適用于設(shè)備驅(qū)動(dòng)程序,因?yàn)楹笳叩拈_發(fā)依賴于Linux架構(gòu)。
   開放原始程序代碼團(tuán)體及一些軟件供貨商可提供設(shè)備驅(qū)動(dòng)程序開發(fā)工具。由于設(shè)備驅(qū)動(dòng)程序比標(biāo)準(zhǔn)應(yīng)用程序距離硬件更近,因此它們的開發(fā)比較困難。所幸的是,Linux桌面系統(tǒng)可以利用一些Windows及其它操作系統(tǒng)所沒有的工具。有足夠經(jīng)驗(yàn)開發(fā)設(shè)備驅(qū)動(dòng)程序的開發(fā)人員可能已經(jīng)習(xí)慣用Linux開發(fā)系統(tǒng)了。
   Linux的快速發(fā)展及其桌面方案的不斷涌現(xiàn)突顯了一個(gè)重要問(wèn)題:所選擇的工具方案應(yīng)如何在不同的Linux分布式系統(tǒng)上執(zhí)行?它們依賴于主機(jī)平臺(tái)的軟件配置嗎?
    有些Linux工具提供獨(dú)立于主機(jī)平臺(tái)的開發(fā)環(huán)境,包括一系列可支持開發(fā)工具的應(yīng)用軟件、庫(kù)和實(shí)用程序。這一方法幾乎將開發(fā)環(huán)境與主機(jī)配置完全隔離開來(lái),因此主機(jī)可以是任何Linux分布式系統(tǒng),而且任何更新和修改都不會(huì)影響開發(fā)環(huán)境的功能。
    這種方法的主要缺點(diǎn)是對(duì)儲(chǔ)存空間的要求有所增加─約200MB,因?yàn)樗约簩?shí)際上相當(dāng)于一個(gè)微型Linux分布式系統(tǒng)。
    可用的工具
   一個(gè)嵌入式Linux產(chǎn)品的開發(fā)需要幾個(gè)階段,包括為目標(biāo)板配置和建構(gòu)基本Linux OS;除錯(cuò)應(yīng)用程序、庫(kù)、核心及設(shè)備驅(qū)動(dòng)程序/核心模塊;出貨前最終方案的最佳化、測(cè)試和驗(yàn)證。
    有數(shù)百種開放原始程序代碼開發(fā)工具可供選擇。只要開發(fā)者原意花時(shí)間和精力去調(diào)查、實(shí)施和維護(hù)一系列各不相同的工具,總能找出一個(gè)完整的解決方案,完成幾乎任何開發(fā)任務(wù)。
  

  圖1
    開發(fā)者必須精確地考慮到這些工具的松散集合能提供什么樣的功能,以及需要付出多大的努力才能形成完整的解決方案。"
  在Linux應(yīng)用程序和庫(kù)的除錯(cuò)方面,GNU Debugger (GDB)作為一種標(biāo)準(zhǔn)已有幾年的歷史。它是一種命令行程序,由多個(gè)不同的圖形用戶接口前端予以支持,每個(gè)前端都能以多種方式提供除錯(cuò)控制功能。盡管GDB不是一個(gè)完美的方案,但它足夠應(yīng)對(duì)各種除錯(cuò)任務(wù),而且已經(jīng)得到開放原始程序代碼團(tuán)體的廣泛支持。
  Linux核心或設(shè)備驅(qū)動(dòng)程序的除錯(cuò)要比應(yīng)用程序的除錯(cuò)繁瑣得多。
  在做調(diào)查時(shí),以下方面應(yīng)特別注意:
  什么除錯(cuò)方法支持要開發(fā)產(chǎn)品的硬件?
  需要什么核心支持程序?
  還需要其它什么支持程序?
  除錯(cuò)接口怎么樣,如何使用?
  該工具需要除錯(cuò)核心模塊及處理虛擬地址轉(zhuǎn)換嗎?
  還需要其它什么工具才能提供完整的方案?
  經(jīng)過(guò)進(jìn)一步的調(diào)查,開發(fā)者往往發(fā)現(xiàn)工具A和工具B并沒有提供完全一致的功能,因?yàn)樗鼈兪窃诒舜霜?dú)立的情況下開發(fā)的。結(jié)果,開發(fā)者必須精確地考慮到這些工具的松散集合能提供什么樣的功能,還需要付出多大的努力才能形成完整的解決方案。
  如果不同處理器類型間的整合、可用性、互通作業(yè)性和移植性很關(guān)鍵的話,開發(fā)者應(yīng)考慮購(gòu)買商用開發(fā)工具。這主要是因?yàn)閷㈤_發(fā)一個(gè)'免費(fèi)'方案所付出的努力考慮進(jìn)去,商用開發(fā)工具并不算貴。
  Linux BSP
  Linux系統(tǒng)有兩大主要部份:帶設(shè)備驅(qū)動(dòng)程序的Linux核心;以及根文件系統(tǒng),包括系統(tǒng)所需的全部支持應(yīng)用程序、服務(wù)和庫(kù)。
  除了駐留在目標(biāo)板上的OS組件外,還需要制作一個(gè)由GNU Compiler Collection構(gòu)成的交叉編譯環(huán)境,為庫(kù)和二進(jìn)制程式(binutils)提供支持。
  雖然幾乎每一個(gè)組件都可在網(wǎng)上找到,但在硬件或設(shè)備驅(qū)動(dòng)程序支持、整合測(cè)試信息、交叉編譯指南或軟件兼容性方面卻很難收集到太多信息。盡管開發(fā)者可從網(wǎng)上免費(fèi)下載各種組件以配置嵌入式Linux操作系統(tǒng),但每個(gè)組件在版本、支持、穩(wěn)定性和測(cè)試等方面的狀態(tài)則需要開發(fā)者自己決定。然后,開發(fā)者還要完成最后的OS整合和測(cè)試,以及為所開發(fā)產(chǎn)品提供終身Linux OS維護(hù)。
  另一方面,嵌入式Linux供貨商所提供的商用Linux板支持工具套件一般都是經(jīng)過(guò)預(yù)先安裝和測(cè)試的,而且提供支持和維護(hù)。其它須考慮的因素包括Linux桌面主機(jī)將會(huì)添加不同的庫(kù)和核心功能,以及由于組織內(nèi)的開發(fā)者變動(dòng)而引起的長(zhǎng)期維護(hù)問(wèn)題。
  品質(zhì)保證部門一般會(huì)執(zhí)行一系列嚴(yán)格的驗(yàn)證和性能測(cè)試,其中包括內(nèi)存泄漏檢測(cè)/糾正、程序代碼最佳化和任務(wù)追蹤等。那些想利用開放原始程序代碼工具開發(fā)針對(duì)非X86平臺(tái)的嵌入式Linux產(chǎn)品開發(fā)者將會(huì)發(fā)現(xiàn)這一任務(wù)甚至要比選擇開放原始程序代碼除錯(cuò)方案難得多。Linux Trace Toolkit、Valgrind工具及其它內(nèi)存分析程序可完成部份測(cè)試和驗(yàn)證任務(wù)。但總的來(lái)說(shuō),它們?nèi)狈﹃P(guān)鍵特性、整合功能及廣泛的硬件支持。這些開放原始程序代碼分析工具的評(píng)估過(guò)程與評(píng)估除錯(cuò)方案的過(guò)程基本相同。
  最后的分析就是,一個(gè)設(shè)計(jì)得恰到好處的開發(fā)環(huán)境應(yīng)能夠供貨商用和開放原始程序代碼兩個(gè)世界所具有的最好特性:
  ·完整的開發(fā)能力;
  ·易于使用和整合;
  ·大型工程組織的協(xié)調(diào)控制;
  ·品質(zhì)和支持保證;
  ·持續(xù)性;
  ·按照自己的判斷力使用開放原始程序代碼的能力。       本信息來(lái)源:CAD教育網(wǎng) www.cadedu.com

]]>
Oracle應(yīng)用Linux開發(fā)Chttp://www.xinguifushi.cn/bbs/dispbbs.asp?BoardID=32&ID=1673&Page=1wangxinxin2010-11-23 11:05:05數(shù)據(jù)庫(kù)產(chǎn)品和商業(yè)應(yīng)用都將支持Linux平臺(tái)。本文所述OCI for Linux的C語(yǔ)言庫(kù),正是Linux平臺(tái)上Oracle的C語(yǔ)言接口。
我們知道,在一個(gè)復(fù)雜的Oracle數(shù)據(jù)庫(kù)應(yīng)用中,C程序代碼由于其語(yǔ)言本身的靈活性、高效性,往往被加入到其商務(wù)邏輯的核心層模塊中。Oracle數(shù)據(jù)庫(kù)對(duì)C語(yǔ)言的接口就是OCI, Oracle 8.05int sqlo_init(int threaded_mode) 初始化程序庫(kù)接口,讀出環(huán)境變量,設(shè)置相應(yīng)的全局變量。當(dāng)前,threaded_mode設(shè)為0。
2)int sqlo_connect(int * dbh, char * connect_str) 連接數(shù)據(jù)庫(kù),dbh為數(shù)據(jù)庫(kù)連接描述符,connect_str為用戶名/口令字符串。
3)int sqlo_finish(int dbh) 斷開數(shù)據(jù)庫(kù)連接。
4)int sqlo_open(int dbh, char * stmt, int argc, char *argv[]) 打開由stmt確定的查詢語(yǔ)句所返回的游標(biāo)。Argc,argv為查詢的參數(shù),后面我們將用更清晰的方法傳遞參數(shù)。
5)int sqlo_close(int sth) 關(guān)閉由上一個(gè)函數(shù)打開的游標(biāo)。
6)int sqlo_fetch(int sth) 從打開的游標(biāo)中獲取一條記錄,并將之存入一個(gè)已分配內(nèi)存空間中。
7)const char **sqlo_values(int sth, int *numbalues, int dostrip) 從內(nèi)存中返回上一次sqlo_fetch取得的值,是以字符串形式返回的。
8)以下介紹另一種檢索方式,int sqlo_prepare(int dbh, char const *stmt),返回一個(gè)打開的游標(biāo)sth。
9)int sqlo_bind_by_name(int sth, const char * param_name, int param_type, const void * param_addr, unsigned int param_size, short * ind_arr, int is_array) 將查詢語(yǔ)句的傳入?yún)?shù),按照名字的形式與函數(shù)中的變量綁定。如果你使用數(shù)組,那么參數(shù)param_addr和ind_arr必須指向該數(shù)組。
int sqlo_bind_by_pos(int sth, int param_pos, int param_type, const void * param_addr, unsigned int param_size, short * ind_arr, int is_array) 將查詢語(yǔ)句的傳出值,按照位置順序與函數(shù)中的變量綁定。
10)int sqlo_execute(int sth, int iterations) 執(zhí)行查詢語(yǔ)句。“Iterations”可設(shè)為“1”。
11)在執(zhí)行完數(shù)據(jù)庫(kù)操作后,我們可用int sqlo_commit (int dbh)提交操作,或用int sqlo_rollback(int dbh)回滾操作。
12)Libsqlora8還有其他一些操作函數(shù),這里就不一一列出了。
下面舉幾個(gè)例子說(shuō)明這些函數(shù)如何使用。
cstr = "ocitest/ocitest"; //用戶名/口令
status = sqlo_init(0);
if (SQLO_SUCCESS != status)
{ printf ("sql_init failed. Exitingn");
exit(1);
}
status = sqlo_connect(&dbh, cstr); // int dbh
以上源代碼,顯示了如何連接數(shù)據(jù)庫(kù)
/* Select all and display */
char *select_stmt="SELECT cname, clength, colid FROM ocicolu";
if (0>(sd = sqlo_open(dbh, select_stmt, 0, NULL)))
{ printf("sqlo_open failed: %sn", sqlo_geterror(dbh));
return 0;
}
while (0 == sqlo_fetch(sd,1))
{ v = sqlo_values(sd, NULL, 1);
printf("Result: %sn",v);
}
if (0 > sqlo_close(sd))
{ printf("sqlo_open failed: %sn", sqlo_geterror(dbh));
return 0;
}
以上例子展示了第一種查詢方法,顯然,這種方法較簡(jiǎn)單,但不夠靈活。
char *update_stmt =
"UPDATE ocitest.upload_log SET upload_fresh = where log_name = :1";
if (0 <= (sth = sqlo_prepare(dbh, update_stmt)))
{ if (SQLO_SUCCESS !=
(sqlo_bind_by_name(sth, ":1", SQLOT_STR, packet_name, 64, NULL, 0)
))
{ printf("sqlo_bind_param failed failed: %sn", sqlo_geterror(dbh) );
return 0;
}
}
if (SQLO_SUCCESS != sqlo_execute(sth, 1))
{ printf("sqlo_execute failed: %sn", sqlo_geterror(dbh) );
return 0;
}
上面的代碼顯示了如何通過(guò)名字綁定變量,“:1”在Oracle SQL語(yǔ)句中表示為一個(gè)變量(名字隨意),在sqlo_bind_by_name函數(shù)中與packet_name變量綁定。在變量綁定完畢后,就可以調(diào)用sqlo_execute函數(shù)來(lái)執(zhí)行這個(gè)SQL語(yǔ)句。
好了,我們已經(jīng)向大家介紹了Libsqlora8的基本使用方法,如果希望了解更多內(nèi)容,Libsqlora8的程序包中帶有詳細(xì)的說(shuō)明和例子,大家不妨自己鉆研一下。有什么心得,歡迎和我聯(lián)系。E-mail:[email protected] /*-------------------------------------------------------------------------
* testlora.c
* Test programm for libsqlora8(Kai Poitschke)
* Assuming you installed the library with prefix=/usr/local, the command
* to compile this is:
* gcc -o sample sample.c -lsqlora8 -L$ORACLE_HOME/lib -lclntsh
*-----------------------------------------------------------------------*/
#include
#include
#include #include "sqlora.h" #define MAX_ITERS 10 #define MAX_LOOPS 1 /* how many time we run the tests */ #define CLOSE_CURSOR 1 /*-------------------------------------------------------------------------
* create our test table
*-----------------------------------------------------------------------*/
int create_table( int dbh )
{
int nkey;
char ckey;
double nv ]]>
主站蜘蛛池模板: 一级片美女 | 特黄a三级三级三级 | 久久99国产一区二区三区 | 免费观看欧美一级牲片一 | 久草在线网站 | 武松大战潘金莲三级在线 | 成人在线视频免费看 | 亚洲一区免费在线观看 | 自拍一区在线观看 | 97国内免费久久久久久久久久 | 日本高清毛片视频在线看 | 欧美特黄特色aaa大片免费看 | 99久久精品免费看国产一区二区三区 | 欧美一级第一免费高清 | 中文字幕一区二区三区免费视频 | 91久久精品青青草原伊人 | 国产呦精品系列在线 | 喷潮白浆直流在线播放 | 国产综合在线视频 | 中国女人毛茸茸免费视频 | 欧美成人伊人十综合色 | 婷婷的久久五月综合先锋影音 | 韩日黄色片 | 性做爰片免费视频毛片中文i | 中文字幕最新中文字幕中文字幕 | 欧洲免费无线码一二区 | 亚洲不卡在线 | 午夜成年女人毛片免费观看 | 国产视频三级 | 久久久久久一级毛片免费无遮挡 | 成人欧美一区二区三区 | www.99精品视频在线播放 | 国产欧美日韩精品第二区 | 精品一区二区三区免费毛片爱 | 农村寡妇特一级毛片 | 国产精品手机在线 | 国产精品久久久久久一级毛片 | 成人观看网站a | 天堂素人搭讪系列嫩模在线观看 | 欧美成人三级伦在线观看 | 亚洲欧美日韩精品高清 |