命令:
rpm -i 需要安裝的包文件名
舉例如下:
rpm -i example.rpm 安裝 example.rpm 包;
rpm -iv example.rpm 安裝 example.rpm 包并在安裝過程中顯示正在安裝的文件信息;
rpm -ivh example.rpm 安裝 example.rpm 包并在安裝過程中顯示正在安裝的文件信息及安裝進度;
RPM 查詢操作
命令:
rpm -q …
附加查詢命令:
a 查詢所有已經安裝的包以下兩個附加命令用于查詢安裝包的信息;
i 顯示安裝包的信息;
l 顯示安裝包中的所有文件被安裝到哪些目錄下;
s 顯示安裝版中的所有文件狀態及被安裝到哪些目錄下;以下兩個附加命令用于指定需要查詢的是安裝包還是已安裝后的文件;
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 文件所在安裝包中的各個文件分別被安裝到哪個目錄下;
RPM 卸載操作
命令:
rpm -e 需要卸載的安裝包
在卸載之前,通常需要使用rpm -q …命令查出需要卸載的安裝包名稱。
舉例如下:
rpm -e tomcat4 卸載 tomcat4 軟件包
RPM 升級操作
命令:
rpm -U 需要升級的包
舉例如下:
rpm -Uvh example.rpm 升級 example.rpm 軟件包
RPM 驗證操作
命令:
rpm -V 需要驗證的包
舉例如下:
rpm -Vf /etc/tomcat4/tomcat4.conf
輸出信息類似如下:
S.5....T c /etc/tomcat4/tomcat4.conf
其中,S 表示文件大小修改過,T 表示文件日期修改過。限于篇幅,更多的驗證信息請您參考rpm 幫助文件:man rpm
RPM 的其他附加命令
--force 強制操作 如強制安裝刪除等;
--requires 顯示該包的依賴關系;
--nodeps 忽略依賴關系并繼續操作
]]>有很多人都說Ubuntu和Fedora有很多相似之處,但就發布日期來說就非常接近。這兩個版本的發布周期大致相同,六個月發布一次,都在春季和秋季發布主要版本。這不10月10日Ubuntu 10.10的發布似乎還近在眼前呢,我們又迎來了Fedora 14的閃亮登場。
代號“Laughlin”的Fedora 14在11月2日如期發布。Fedora 14使用Linux 2.6.35版核心與KDE 4.5.2、GNOME 2.32桌面環境,把RedHat的虛擬桌面架構(VDI,virtual desktop infrastructure) Spice完整加入,該功能讓Fedora可以主控虛擬桌面,讓遠端用戶自網路登入使用。 Spice具有2D加速、處理音訊播放與錄制、加密連線等特性。
這次的正式版添加了之前的測試版沒有的新功能,那就是系統工具鏈升級及D語言支持。不過,Fedora 14的桌面設置還是搶先吸引了用戶的眼球。Fedora 14的桌面是GNOME的最新發布版本GNOME2.32。相比較Ubuntu最近才開始使用GNOME,Fedora 14則一直堅持使用GNOME。這個完整的發行版還包括最新版本的桌面KDE4.5.2。
從最新的試用體驗來看,Fedora 14以藍色為主題的GNOME桌面使用起來很有樂趣。在它上面你可以找到平時使用的Linux桌面程序。這些程序包括網頁瀏覽Firefox;即時通訊的Empathy;電子郵件和群組軟件Evolution;以及辦公軟件Openoffice。展望未來,Fedora的團隊還沒有承諾轉換到 OpenOffice fork,LibreOffice,看來或許會和Ubuntu的下一個版本步調一致吧!
Fedora 14的另一個亮點則是納入了使用環境MeeGO 1.0,趕上熱門的平板電腦話題。這個由Intel及Nokia合作推廣的技術搭配Sugar CRM展示版、開發工具使用,展現平板電腦在商務上的應用,與一般平板電腦所強調的多媒體休閑走向大異其趣。
另一方面,在Fedora中有一些非常靈巧的新功能,使之能很好的工作。我不得不說相比于那些使用Fedora系統開發者和管理者,這些新功能更加適合于Fedora家庭用戶。
但最重要的是獨立計算機環境的簡單協議(SPICE)的到來。這是一個桌面介紹的服務協議,如微軟的RDP(遠程桌面協議)和Citrix的ICA(獨立計算架構),你用來運行精簡電腦的桌面。
還有一個很有意思的特點是你不需要在你自己的桌面或服務器上自己運行Fedora。你現在就可以在亞馬遜靈活計算機云(EC2)的服務器上運行Fedora。
該測試版原來還有個隱藏性功能Systemmd,可以快速啟動整個系統,并自動裝、卸各項服務,亦可制作系統狀態快照或追蹤系統、服務及附加套件等各種程序。但是在版本開發的最后階段被推遲了,計劃將在Fedora 15中和大家見面。那么到底是什么原因導致Systemmd功能最終被擱置呢?本次專輯我們將帶給大家官方的相關解答,有興趣的朋友可別錯過了。
開篇我們就提到,有很多人都說Ubuntu和Fedora有很多相似之處,但是Ubuntu10.10和Fedora 14注重的側重點還是大不相同的。Ubuntu主要關注于10.04版本的完善,而Fedora 14則重點關注于系統基礎設施的完善。那么這兩個版本究竟都更新了哪些部分呢?又有什么不同呢?有心要比較的朋友,不妨通過本次專輯先來品評一翻吧!
既然Ubuntu和Fedora非常相似,那么作為用戶來說卻面臨了選擇的難題。在Red Hat的支持下,Fedora一直領跑社區版linux系統。但隨著Canonical公司支持一些開源軟件開發者,2004年,在Debian的基礎上推出了Ubuntu,情況就有所改變,時至今日,可以說Ubuntu是穩穩地占據著Linux排行榜的寶座。
這兩款操作系統毫無疑問都給人留下深刻印象,所以,很多初嘗linux操作系統的人,也時常糾結一個問題:選擇誰作為你第一個學習的linux操作系統?這里編者通過整理資料呈現兩者的微妙差別,試圖為你選擇一款適合自己學習的linux系統作為依據。Linux的新人們不妨通過本次專輯來做一下自己的選擇吧!
Ubuntu 10.10已經于十月登場了,如今Fedora 14帶著最新的開源技術全面來襲,那么哪個更合用戶的胃口呢?大家還是先去試試Fedora 14,再下定論吧!
]]>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'
應該使用下面的命令
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參數解釋轉義字符
-n do not output the trailing newline
-e enable interpretation of the backslash-escaped characters listed
below
3:
sed /^$/d 刪除文件中的空行
全速運行、待機和睡眠等宏觀行為利用CPU的固有能力通過降低工作電壓或時鐘頻率來節省功耗。除了全面地改變系統狀態外,大多數設備用戶察覺不到的是,實際的電源管理也能夠逐漸地改變系統狀態,這種情況在一秒之內可以發生數百次。
任何動態電源管理策略的基礎都是調整便攜式設備中一個或多個處理器內核的工作電壓和頻率,此外,在高集成度的PowerPC、ARM和基于x86的系統中經常包含一個DSP或智能基帶處理器。的確,諸如英特爾的StrongARM和XScale處理器、TI的OMAP處理器系列以及IBM最近發布的PowerPC 405LP和Transmeta Crusoe等CPU都提供內核電壓和頻率的動態調節功能。不過,現代的嵌入式處理器具有非常高的電源效率,以至于CPU并不總是最主要的耗能器件,其它高耗能的器件包括高性能存儲器、彩色顯示器和射頻接口等。因此,如果動態電源管理系統只能調節處理器內核的電壓和頻率,那么它的用途將有限。
一個真正有用的動態電源管理方案應該可以采用與CPU內核運行相協調或相獨立的方式,???持對一系列電壓和時鐘的快速調節。
DPM架構
兩個現有的電源管理方案分別來自于PC和筆記本電腦領域:一個是傳統的高級電源管理(APM)方案,它目前仍然使用在許多基于Linux的便攜設備中,但在基于微軟操作系統的筆記本電腦和手持設備中已經被逐步淘汰;另一個是高級配置和電源接口(ACPI)方案,它是英特爾、東芝和其他一些公司???持的現行標準。在PC、筆記本電腦、服務器、甚至刀片式通信設備等商業硬件中,類似ACPI的系統是人們的首選,但它強烈依賴于流行的x86/IA-32 BIOS 架構。
嵌入式系統通常沒有類似于PC中的BIOS,而且通常不具備那么高的機器抽象水平,能夠把操作系統與低層次的設備和電源管理活動隔離開來。與其它瞄準電池供電應用的操作系統類似,在嵌入式Linux中,電源管理活動需要對操作系統內核和設備驅動程序進行特殊的干預。不過,需要重點強調的是,雖然低層次的動態電源管理是駐留在操作系統內核中,但電源管理策略和機制是來源于中間件和用戶應用代碼。
接口和API
理想的電源管理系統應盡可能對更多軟件堆棧層達到幾乎完全透明的程度。事實上,這是Transmeta公司在其Crusoe架構中所遵循的路線,而且已經成為基于BIOS的現有電源管理方案追求的目標。然而,具備手持設備設計經驗的開發人員證實,系統內部各部分之間需要某種程度的直接合作,具體描述如下:
內核接口
在面向Linux的DPM架構中,內核中的DPM子系統負責維持整個系統的電源狀態,并把DPM系統的不同電源管理模塊聯系在一起。如果內核的任何其它部分需要與DPM直接對話(盡管這種情況相對較少),那么最好把DPM看成是為驅動程序、中間件和應用程序提供服務的元素。
驅動程序接口
???持DPM功能的設備驅動程序比默認的驅動程序更了解系統狀態:它們在外部事件的驅使下通過設定不同的狀態來反映或遵循那些操作機制,或者通過來自內核DPM子系統的調用來反映或遵循那些操作機制。為了實現更精確的機制決策,驅動程序API也允許驅動程序注冊與它們接口或由它們管理的那些設備的基礎操作特征。
應用程序API
應用程序可以分為三類:
*電源管理知會型(PM-aware)應用程序
*在電源管理知會“包裹器”中的傳統應用程序
*不帶有電源管理的傳統應用程序
電源管理知會型應用程序能夠利用機制管理器提供的API,建立其基本的約束條件,并強迫電源管理機制發生與其執行需求相匹配的變化。不直接帶有電源管理能力的傳統應用程序能夠被“包裹”在代碼或補丁中,以達到較高的效率,但它們也能夠根據更大范圍的默認機制管理,按默認的行為運行。
在嵌入式Linux DPM下的實際機制包括以下API,如dpm_set_os()(內核)、assert_constraint()、remove_constraint()和set_operating_state()(內核和驅動程序)、set_policy()和set_task_state()(經系統的用戶級調用)以及/proc接口。
對實時性能的影響
迄今為止,調整CPU電壓和頻率對系統的實時性能而言依然是一個重大挑戰。任何參數的改變都將導致系統不穩定,重新鎖定鎖相環和其它動態時鐘機制也需要相應的時間,這兩個因素將使系統的響應出現長延時(有時達到數十毫秒),在此期間,CPU既不能執行計算操作,也不能對外部事件(中斷)做出響應。
TI的OMAP、英特爾的Xscale和IBM的PowerLP等嵌入式處理器能夠在十幾毫秒的延時內調整頻率,在數十毫秒的延時內改變電壓,而且所有這些動作都不會中斷系統的操作,從而允許實現更大膽和更精確的節電機制。例如,在處理MPEG視頻幀或IP語音包的過程中可以降低電壓和頻率。
實時性能面臨的一個更普遍的挑戰是,如何在睡眠模式期間對中斷做出響應。雖然通過編程,大多數片上外圍元件在收到中斷之后都可以喚醒系統,但開發者必須謹慎地定義用于喚醒設備的機制,并把整個系統的延時和存儲器類別考慮在內,以確保處理中斷的執行時間和用戶空間對事件的響應(優先延時)。
向嵌入式Linux發展的趨勢
理想情況下,用戶既無需知道也無需關心???撐其手持設備的底層操作系統。現在,設備制造商對操作系統有了更多的選擇余地。雖然微軟一直非常重視品牌,但Windows系列操作系統進入手持設備市場(如蜂窩電話)的規模卻落后于Symbian和Brew,也落后于嵌入式Linux。設備制造商轉向Linux的原因之一是可以利用標準的電源管理技術替代專有技術,這樣既能達到更快的上市時間,同時又能滿足終端用戶和運營商的技術需求。
]]>以下內容含腳本,或可能導致頁面不正常的代碼 |
---|
說明:上面顯示的是代碼內容。您可以先檢查過代碼沒問題,或修改之后再運行. |
Linux是自由的操作系統,它的開放源碼使用戶獲得了最大的自由度。Linux上的軟件
資源十分豐富,每一種通用程序在Linux上都可以找到。
2.功能強大的內核,性能高效、穩定,多任務
Linux的內核非常穩定,它的高效和穩定性已經在各個領域,尤其在網絡服務器領域,得到了事實的驗證。Linux內核小巧靈活,易于裁減,這使得它很適合嵌入式系統的應用。
3.支持多種體系結構,如X86、ARM、MIPS、ALPHA、SPARC等
目前,Linux已經被移植到數十種硬件平臺上,幾乎支持所有流行的CPU。
4.完善的網絡通訊、圖形、文件管理機制
Linux自產生之日起就與網絡密不可分,網絡是Linux的強項。另外,Linux還支持多種文件和圖形系統。
5.支持大量的周邊硬件設備
Linux上的驅動已經非常豐富了,它們支持各種主流硬件設備和最新硬件技術。
6.大小、功能都可定制
Linux秉承Unix的優秀設計思想,非常靈活,各部分的可定制性都很強。
7.良好的開發環境,不斷發展的開發工具集
Linux有著非常優秀的完整開發工具鏈,有十幾種集成開發環境,其中很多是免費的,大大降低了開發費用。
8.軟件開發者的廣泛支持
Linux的自由精神吸引了成千上萬的程序員投入到Linux的開發和測試中來,這使得Linux在短時間內就成為一個功能強大的操作系統。
9.價格低廉
有效降低產品成本,對成本敏感的嵌入式系統來說至關重要,Linux恰好具有這一特性。
由此,我們有理由相信,在國內外眾多Linux廠商的推動下,嵌入式Linux一定會成為Internet時代嵌入式操作系統
]]>Linux具有豐富的網絡功能,完善的內置網絡是Linux的一大特點。嵌入式Linux專用于微控制器,同樣具有優秀的網絡功能。Linux是一種可移植的操作系統,能夠在從微型計算機到大型計算機的任何環境中和任何平臺上運行。可移植性為運行Linux的不同計算機平臺與其他任何機器進行準確而有效的通訊提供了手段,不需要另外增加特殊的,昂貴的通訊接口。
該文在構建基于嵌入式Linux和MPC852T無線網關平臺的基礎上,編程實現了無線網關平臺與無線終端之間的無線通信,并給出了無線網關平臺與無線終端之間通信的測試結果。
2 Linux下的socket編程
2.1 Socket編程
socket有3種類型:流式套接字、數據報套接字及原始套接字。流式套接字定義了一種可靠的面向連接的服務,實現了無差錯的數據傳輸。數據報套接字定義了一種無連接的服務,數據通過相互獨立的報文進行傳輸,是無序的,并且不保證可靠。原始套接字允許對低層協議如IP或ICMP直接訪問,主要用于新的網絡協議實現的測試等。
無連接服務器一般都是面向事務處理的,一個請求和一個應答就完成客戶程序與服務程序之間的相互作用。
面向連接服務器處理的請求比較復雜,往往是并發服務器。工作過程如下:服務進程首先調用socket( )創建一個字節流套接字,并調用bind( )將服務器地址捆扎在該套接字上,接著調用listen( )監聽連接請求,隨后調用accept( )做好與客戶進程建立連接的準備,無連接請求時,服務進程被阻塞。當連接請求到來后,服務器進程被喚醒,建立一個新的Socket,并用新套接字同客戶進程的套接字建立連接,而服務進程最早生成的套接字則繼續用于監聽網絡上的服務請求。客戶進程調用socket( )創建字節流套接字,然后調用connect( )向服務進程發出連接請求。服務進程和客戶進程通過調用read( )/recv( )和Write( )/send( )交換數據。
2.2 Linux下的socket函數庫
socket是面向用戶的,針對客戶和服務器程序提供不同的socket系統調用。客戶隨機申請一個socket,系統為之分配一個socket號,服務器擁有全局公認的socket,任何客戶都可以向它發出一個連接請求和信息請求。無論socket的內部機制如何,它提供給程序員的最終是一組系統調用,即socket的庫函數。Linux這些庫函數同樣適用于嵌入式linux。下面是編制程序常用的庫函數:
1) socket( ):建立Socket,此函數用來建立Socket描述字,并為此Socket建立資源(為一個Socket數據結構分配存儲空間)。應用程序在使用socket之前,首先必須擁有一個socket。socket( )向應用程序提供創建socket的手段。socket( )函數原形為int socket(int domain,int type,int protoco1);函數中的domain是參數指定通信中使用的協議簇,也就是網絡的類型,通常為PF_INET,表示互聯網協議族(TCP/IP協議族);type參數指定socket的類型:SOCK_STREAM或SOCK_DGRAM,Socket接口還定義了原始Socket(SOCK_RAW),允許程序使用低層協議;protocol是參數指定通信中使用的協議。
函數在正常時返回socket描述符;否則返回l,錯誤狀態在全局變量error里。
2) bind( ):綁定本地地址,即將一個本地地址與一個SOCKET描述字連接在一起。此函數在服務程序上使用,是調用監聽函數listen()必須要調用的函數。
Bind函數原型為:
int bind(int sockfd, struct sockaddr *my_addr, int addrlen)。bind()函數給已經打開的socket指定本地地址。函數中的sockfd是調用socket函數返回的socket描述符;addrlen是my-addr結構的長度,常被設置為sizeof(struct sockaddr);my-addr是用于偵聽連接請求的本地地址。
函數在正常時返回0,否則返回l,同時error是系統錯誤碼。
3) listen( ):準備接收連接請求。在用bind()給一個socket設定本地地址之后,就可以將這個socket用于接受連接請求,即listen()。函數原形為int listen(int s,int backlog);函數中的s是socket描述符;backlong是連接請求暫存隊列長度。
函數正常時返回0,否則返回1,同時error是系統錯誤碼。
4) accept( ):服務端應用程序調用此函數來接受客戶端socket連接請求。在系統調用listen( )之后,系統就在socket的連接請求暫存隊列里存放每一個向該socket建立的連接請求,accept()的作用是從該暫存隊列中取出一個連接請求,用該socket的數據,創建一個新的socket用來在服務端和客戶端之間傳遞接收信息,而原來socket仍然可以接收其他客戶端的連接要求。
函數正常創建了一個新的連接,那么返回非負的整數,即新連接的socket描述符,否則返回l,error是系統錯誤碼。
5) connect( ):建立連接。bind( ),listen( )和accept( )都是用于被動地等待對方建立連接時需要使用的,connect( )函數是在主動地向對方建立連接時使用的。函數原形為int connect(int sockfd,struct sockaddr*srvaddr,int addrlen);函數中的sockfd是socket描述符;srvaddr是通信目的方地址;addrlen是目的地址長度。
函數在正常建立連接時返回0,否則返回l,系統錯誤碼在error中。
6) close( ):此函數是用來關閉某一socket。socket和文件描述符的關閉操作都使用這個函數。函數原形為int close(int fd);參數fd是socket描述符。函數在正常時返回0,返回1表示出錯。
7) send( )/recv( ):用于socket的發送和接收數據。在連接建立完成后,通信雙方就可以使用以上這些函數來進行數據的發送和接收操作。
3 無線網關平臺的構建
為了將無線終端設備接入控制網絡實現遠程監控,根據條件構建了基于MPC852T和嵌入式Linux的無線網關平臺。MPC852T是Motorola推出的面向低端的一款通信處理器,具有通信和網絡處理能力強、可靠性高、功耗低、功能集成度高等優點,并且有眾多的操作系統支持,這使得它在各種嵌入式系統,尤其是在網絡通信以及數據采集和傳輸等系統中的應用較為廣泛。
無線網關的硬件設計方案采用中心控制方案,中央處理器選用MPC852T,在MPC852T外圍配置一個RS-232串口、一個10M以太網口、一個100M以太網接口、SDRAM同步動態隨機存儲器等構成無線網關的硬件平臺,無線網關的硬件系統結構圖如圖1所示。
4 無線網關與無線終端通信的實現
嵌入式Linux具有完善的TCP/IP協議棧,為滿足工業控制過程中傳輸數據量小、可靠性高、速度快等要求,這里使用socket編程來實現網絡通信。無線終端通過無線網卡與無線網關自動建立鏈接,無線終端完成數據的采集,并將采集的數據以無線的方式發送給網關,無線網關把收到的數據上傳給上位機進行分析、處理,最后計算出數據發送的速率。
將編寫好的服務器端和終端程序進行交叉編譯,將編譯得到的二進制可執行文件添加到RAMDISK中,壓縮新生成的ramdisk.image文件系統映像文件,重新編譯Linux內核,生成Linux內核映像文件,然后將內核映像文件燒寫到無線網關平臺的FLASH中。無線網關平臺(服務器端)的主程序代碼如下:
#define PORT 3000 /*設定服務器監聽端口*/
………………
int main(int argc,char* argv[ ])
{
int second;
int sockfd,new_fd; /* sockfd為監聽用描述符*/
struct sockaddr_in srvaddr; /*定義服務器sock地址*/
struct sockaddr_in cliaddr; /*定義客戶的sock地址*/
………………
if(bind(sockfd,(struct sockaddr *)&srvaddr,sizeof(struct sockaddr))==-1) /*綁定*/
………………
if(listen(sockfd, QUEUE_SIZE) == -1) /*監聽端口是否有請求*/
………………
for(;;){ /*開始服務器循環*/
/*等待連接*/
sin_size=sizeof(struct sockaddr_in);
new_fd=accept(sockfd,(struct sockaddr*) &cliaddr,&sin_size); /*接收連接請求*/
printf("Server:Got connection from %s \n",
inet_ntoa(cliaddr.sin_addr));
if(read(new_fd,&second,4)==-1) /*接收連接請求*/
………………
close(new_fd); /*父進程不再需要該socket*/
………………;
close(sockfd);
return 0;
}
}
5 測試結果
在上位機開啟通信終端,設置好串口參數,進入超級終端。無線網關平臺上運行服務器端程序,同時在終端上運行客戶端程序,即可進行測試,測試結果如圖2所示。
圖2 無線網關與無線終端測試結果圖
6 結 語
目前基于TCP/IP協議的工業以太網的在組網時仍需要布線,但在工業現場,布線時常會受到限制,電纜的連接也限制了現場設備的移動和網絡結構的重組,還有一些高速旋轉設備根本無法通過電纜來傳輸數據。將802.11b無線通信技術應用于工業控制網絡,工控網絡就兼有了無線通信的優點:現場設備無需電纜即可與控制網絡連接,實現現場數據的無線采集和傳輸,對于在一些不可預知的環境,尤其是不適于布線的強腐蝕惡劣環境。本文作者創新點:通過Linux下的socket編程實現了無線網關與無線終端的通信,可以使用無線通信來完成對現場設備的控制。
]]>在華清遠見的嵌入式培訓課程中,Qt是嵌入式學院<嵌入式工程師職業培訓班>二期課程中嵌入式linux應用開發方面的重要內容。不少學員對QT方面的內容比較關注,所以在這里我們先對QT做一下簡單介紹。
QT
Qt是一個多平臺的C++圖形用戶界面應用程序框架,由挪威 TrollTech 公司出品。它提供給應用程序開發者建立藝術級的圖形用戶界面所需的所用功能。Qt是完全面向對象的很容易擴展,并且允許真正地組件編程。
自1996年Qt進入商業領域開始,它已經成為全世界范圍內數千種成功的應用程序的基礎。Qt也是流行的Linux桌面環境KDE 的基礎,KDE是所有主要的Linux發行版的一個標準組件。
基本上,Qt 同 X Window (X Window是一種用于UNIX系統的標準圖形化用戶界面)上的 Motif、Openwin、GTK 等圖形界面庫和 Windows 平臺上的 MFC、OWL、VCL、ATL是同類型的東西,但是Qt 具有下列優點:
● 優良的跨平臺特性
Qt支持Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等操作系統, Qt的跨平臺特性,是選擇Qt的一個非常重要的原因。對于相同功能的軟件,我們無須針對不同的操作系統編寫不同程序,只需將相同的代碼針對不同的環境編譯即可;
● 面向對象
Qt 的良好封裝機制使得 Qt 的模塊化程度非常高,可重用性較好,對于用戶開發來說是非常方便的。Qt 提供了一種稱為 signals/slots(信號/槽) 的安全類型來替代 callback(回調函數),這使得各個元件之間的協同工作變得十分簡單;
● 豐富的API
● Qt 包括多達400個以上的 C++ 類,同時不斷擴展。
● 支持 2D/3D 圖形渲染,支持 OpenGL;
● XML 支持;
● 開放源碼
開放源優勢包括一個活動的開放源開發員社團。由于Qt的不間斷開發,以及完整的代碼透明性,以允許Qt開發員進行徹底深入地查看,進行自定義并擴展Qt來滿足其獨特的需求。
Qt/Embedded
Qt/Embedded是Qt的嵌入式版本,它在原始Qt的基礎上,做了許多出色的調整以適合嵌入式環境。同Qt/X11相比,Qt/Embedded很節省內存,因為它不需要X server或是Xlib庫,它在底層摒棄了Xlib,采用framebuffer作為底層圖形接口。Qt/Embedded的應用程序可以直接寫內核幀緩沖,因此它在嵌入式linux系統上的應用非常廣泛。
最后再了解下Qtopia
在Qt/Embedded版本4之前,Qt/Embedded和Qtopia是兩套不同的程序,Qt/Embedded是基礎類庫,Qtopia是構建于Qt/Embedded之上的一系列應用程序。但從版本4開始,Trolltech將Qt/Embedded并入了Qtopia,并推出了新的Qtopia4。在該版中,原來的Qt/Embedded被稱為Qtopia Core,作為嵌入式版本的核心,既可以與Qtopia配合,也可以獨立使用。原來的Qtopia則被分成幾層,核心的應用框架和插件系統被稱為 Qtopia Platform,上層的應用程序則按照不同的目標用戶分為不同的包,如Qtopai PDA,Qtopia Phone等。
于Qt方面的內容,除了Qt、基于 Framebuffer(幀緩沖) 的 Qt /Embedded外,還有快速開發工具 Qt Designer以及國際化工具 Qt Linguist 等
(1) 指令系統
RISC設計者把主要精力放在那些經常使用的指令上,盡量使它們具有簡單高效的特色。對不常用的功能,則通過組合指令來完成。因此,在RISC機器上實現特殊功能時,效率可能較低。但可以利用流水技術和超標量技術加以改進和彌補。而CISC計算機的指令系統比較豐富,有專用指令來完成特定的功能。因此,處理特殊任務時的效率較高。
(2) 存儲器操作
RISC對存儲器操作有限制,使控制簡單化;而CISC機器的存儲器操作指令多,操作 直接。
(3) 程序
RISC匯編語言程序一般需要較大的內存空間,實現特殊功能的程序復雜,不易設計;而CISC匯編語言程序編程相對簡單,科學計算及復雜操作的程序設計相對容易,效率較高。
(4) 中斷
RISC機器在一條指令執行的適當地方可以響應中斷;而CISC機器是在一條指令執行結束后才響應中斷。
(5) CPU
RISC CPU包含較少的單元電路,因而面積小、功耗低;而CISC CPU包含豐富的電路單元,因而功能強、面積大、功耗大。
(6) 設計周期
RISC微處理器結構簡單,布局緊湊,設計周期短,且易于采用最新技術;CISC微處理器結構復雜,設計周期長。
(7) 用戶使用
RISC微處理器結構簡單,指令規整,性能容易把握,易學易用;CISC微處理器結構復雜,功能強大,容易實現特殊功能。
(8) 應用范圍
由于RISC指令系統的確定與特定的應用領域有關,故RISC機器更適合于專用機;而CISC機器則更適合于通用機。
2. 嵌入式微控制器
嵌入式微控制器(Microcontroller Unit,MCU)又稱單片機,顧名思義,就是將整個計算機系統集成到一塊芯片中。嵌入式微控制器一般以某一種微處理器內核為核心,芯片內部集成ROM/EPROM、RAM、Flash、總線、總線邏輯、定時/計數器、WatchDog、I/O、串行口、脈寬調制輸出、A/D、D/A等各種必要的功能模塊。為適應不同的應用需求,一般一個系列的單片機具有多種衍生產品,每種衍生產品的處理器內核都是一樣的,不同之處在于存儲器和外設的配置及封裝。這樣可以使單片機最大限度地同應用需求相匹配,從而減少功耗和成本。
與嵌入式微處理器相比,微控制器的最大特點是單片化,體積大大減小,從而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系統工業的主流。微控制器的片上資源一般比較豐富,適合于控制,因此稱為微控制器。
嵌入式微控制器目前的品種和數量最多,比較有代表性的通用系列包括8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16和68300等。另外還有許多半通用系列,如支持USB接口的MCU 8XC930/931、C540和C541。目前MCU占嵌入式系統約70%的市場份額。
特別值得注意的是,近年來提供x86微處理器的著名廠商AMD公司將AM186CC /CH/CU等嵌入式處理器稱之為Microcontroller,Motorola公司把以Power PC為基礎的PPC505和PPC555亦列入單片機行列。TI公司亦將其TMS320C2XXX系列DSP做為MCU進行 推廣。
3. 嵌入式DSP處理器
DSP處理器對系統結構和指令進行了特殊設計,使其適合于執行DSP算法,編譯效率較高,指令執行速度也較高。在數字濾波、FFT和譜分析等方面,DSP算法正在大量進入嵌入式領域,DSP應用正從在通用單片機中以普通指令實現DSP功能過渡到采用嵌入式DSP處理器。嵌入式DSP處理器有兩個發展來源,一是DSP處理器經過單片化、EMC改造和增加片上外設成為嵌入式DSP處理器,TI的TMS320C2000/C5000等屬于此范疇;二是在通用單片機或片上系統(SOC)中增加DSP協處理器,例如Intel的MCS-296。
推動嵌入式DSP處理器(Embedded Digital Signal Processor,EDSP)發展的一個重要因素是嵌入式系統的智能化,例如各種帶有智能邏輯的消費類產品,生物信息識別終端,帶有加解密算法的鍵盤,ADSL接入,實時語音壓解系統,虛擬現實顯示等。這類智能化算法一般都是運算量較大,特別是向量運算、指針線性尋址等較多,而這些正是DSP處理器的長處 所在。
嵌入式DSP處理器比較有代表性的產品是Texas Instruments的TMS320系列和Motorola的DSP56000系列。TMS320系列處理器包括用于控制的C2000系列,移動通信的C5000系列,以及性能更高的C6000和C8000系列。DSP56000目前已經發展成為DSP56000、DSP56100、DSP56200和DSP56300等幾個不同系列的處理器。
DSP的設計者們把重點放在了處理連續的數據流上。在嵌入式應用中,如果強調對連續的數據流的處理及高精度復雜運算,則應該選用DSP器件。
4. 嵌入式片上系統
隨著VLSI設計的普及化及半導體工藝的迅速發展,可以在一塊硅片上實現一個更為復雜的系統,這就是System On Chip(SOC)。各種通用處理器內核將作為SOC設計公司的標準庫,和許多其他嵌入式系統外設一樣,成為VLSI設計中一種標準的器件,用標準的VHDL等語言描述,存儲在器件庫中。用戶只需定義出整個應用系統,仿真通過后就可以將設計圖交給半導體工廠制作樣品。這樣除個別無法集成的器件以外,整個嵌入式系統大部分均可集成到一塊或幾塊芯片中去,應用系統電路板將變得很簡潔,對于減小體積和功耗、提高可靠性非常有利。
SOC可以分為通用和專用兩類。通用系列包括Motorola的M-Core,某些ARM系列器件,Echelon和Motorola聯合研制的Neuron芯片等。專用SOC一般專用于某個或某類系統中,不為一般用戶所知。一個有代表性的產品是Philips的SmartXA,它將XA單片機內核和支持超過2048位復雜RSA算法的CCU單元制作在一塊硅片上,形成一個可加載Java或C語言的專用的SOC,可用于公眾互聯網(如Internet安全)方面。
1.1.2 嵌入式處理器的選擇
針對各種嵌入式設備的需求,各個半導體芯片廠商都投入了很大的精力研發和生產適用于這些設備的CPU及協處理器芯片。用于嵌入式設備的處理器必須高度緊湊、低功耗和低成本。針對每一類應用來說,開發者對處理器的選擇都是多種多樣的,掌上電腦就是一例,如表1.1所示。與全球PC市場不同的是,沒有一種微處理器和微處理器公司可以主導嵌入式系統,僅以32位的CPU而言,就有100種以上的嵌入式微處理器。由于嵌入式系統設計的差異性極大,因此選擇是多樣化的。設計者在選擇處理器時要考慮的主要因素有如下幾個 方面。
表1.1 部分掌上電腦處理器一覽
廠家/型號 |
處理器 |
速 度 |
卡西歐Cassiopeia E-100系列 |
MIPS-based NEC VR4121 |
131MHz |
康柏Aero 2100系列 |
MIPS-based NEC VR4111 |
70MHz |
菲利浦Nino 500系列 |
MIPS-based Toshiba PR31700 |
75MHz |
惠普Jornada 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) 調查市場上已有的CPU供應商
有些公司(如Motorola、Intel、AMD)很有名氣,而有一些小的公司(如QED)雖然名氣很小,但也能生產很優秀的微處理器。另外,有一些公司,如ARM、MIPS等,只設計但并不生產CPU,他們把生產權授予世界各地的半導體制造商。ARM是另外一種近年來在嵌入式系統中有影響力的微處理器制造商,ARM的設計非常適合于小的電源供電系統。Apple在Newton手持計算機中使用ARM,另外有幾款數字無線電話也在使用ARM。
(2) 處理器的處理速度
一個處理器的性能取決于多個方面的因素:時鐘頻率,內部寄存器的大小,指令是否對等處理所有的寄存器等。對于許多需用處理器的嵌入式系統設計來說,目標不是在于挑選速度最快的處理器,而是在于選取能夠完成作業的處理器和I/O子系統。如果你的設計是面向高性能的應用,那么建議你考慮某些新的處理器,其價格極為低廉,如IBM和Motorola的Power PC。以前Intel的i960是銷售極好的RISC高性能芯片,但是最近幾年卻遇到強勁的對手,讓位于MIPS、SH以及后起之秀ARM。
(3) 技術指標
當前,許多嵌入式處理器都集成了外圍設備的功能,從而減少了芯片的數量,進而降低了整個系統的開發費用。開發人員首先考慮的是,系統所要求的一些硬件能否無需過多的膠合邏輯(Glue Logic)就可以連接到處理器上。其次是考慮該處理器的一些支持芯片,如DMA控制器、內存管理器、中斷控制器、串行設備、時鐘等的配套。
(4) 處理器的低功耗
嵌入式微處理器最大并且增長最快的市場是手持設備、電子記事本、PDA、手機、GPS導航器、智能家電等消費類電子產品,這些產品中選購的微處理器典型的特點是要求高性能、低功耗。許多CPU生產廠家已經進入了這個領域。
(5) 處理器的軟件支持
若僅有一個處理器,沒有較好的軟件開發工具的支持,也是不行的,因此選擇合適的軟件開發工具對系統的實現會起到很好的作用。
成數據的訪問和刷新,即以同一個周期、相同的速度同步地工作,因而可以與系統總線以同頻率工作,可大大提高數據傳
]]>什么是開放源代碼?
開放源代碼軟件是現代計算環境的寶貴資源。本質上,開放源代碼軟件使得源代碼對使用軟件的任何人可用,即不對最終用戶隱藏任何內容。開放源代碼軟件不一定是免費的,雖然大多數都是免費的。許可證協議決定了軟件的使用方式;最流行的許可證是 GNU 公共許可證(GNU Public License,GPL)。
開放源代碼軟件是由許多不同的發起者所開發的,包括選擇與其他人共享其工作成果的技術愛好者所開發的項目。商業性的公司,比如 IBM,也在為開放源代碼出力,以便在社區中提供優秀的技術,同時確保他們的專有硬件和軟件得到開放工具的支持。能夠編程、編寫文檔或執行其他一些軟件開發相關任務的任何人,都能夠幫助創建開放源代碼軟件 —— 并且他們正是這樣做的!
![]() ![]() |
![]()
|
為什么要使用開放源代碼工具?
許多人選擇開放源代碼工具是因為它們便宜(開放源代碼軟件經常是免費的,這當然非常便宜)。開放源代碼軟件還傾向于非常可靠。由于有技術興趣的任何人都能夠查看源代碼,因而可能會有數千個質量控制機構在評估代碼。程序員能夠無隔閡地直接接觸用戶,因此問題和 bug 通常是大家都知道的,從而迅速得到糾正。此外,由于沒有對用戶隱藏任何東西,這樣有利于更好的技術脫穎而出。
對于擔心安全問題的用戶,開放源代碼軟件能夠給他們帶來心靈的平靜。如果懷疑應用程序隱藏有“后門(back door)”,您可以獲得源代碼,自己檢查它,或讓您信任的人檢查它。然后您可以自己編譯該代碼,確保它和您預期的完全一樣。當發現與安全相關的缺陷時,社區會立即采取行動,并且通常會在幾小時內提供建議使用的補丁。正式的項目解決辦法可能要花稍長一點的時間,但是通常不會超出幾小時或幾天。開放源代碼軟件使您能夠在必要時對您的資源采取動作。
開放源代碼軟件還有助于確保技術不會被忽略。由于開發過程對感興趣的任何人都是開放的,您通常會找到人們為不常見的硬件開發的驅動程序。此外,您還能找到由那些利用不常見協議的小社區為此類協議提供的支持。Linux 之所以在廣泛的 IBM 硬件上可用,正是由于采用了這種開放方法。這有助于保持您的硬件的生命力,同時幫助保護您避免失去對某種關鍵技術的軟件支持。如果某個項目不再提供官方支持了,您總是能夠選擇自己提供該支持!
![]() ![]() |
![]()
|
獲得開放源代碼工具
獲得開放源代碼軟件是很容易的;Linux 內核本身就是開關放源代碼的。當您安裝 Linux 時,就開始使用開放源代碼了。除了內核外,Linux 發行套件中還包含其他許多開放源代碼包,其中包括開發工具、庫和應用程序。對于所有這些包,它們的源代碼都是可用的,您可以編譯任何包以優化或為特定用途而自定義它。
除了發行套件中包含的包外,Internet 上還有其他開放源代碼軟件可供使用。有些是專用的項目或正處于首次開發中的新技術,而其他則是與 Linux 發行套件中包含的包相競爭的方法。這是一個思想的自由市場。成功的開放源代碼軟件通常最終會作為輔助包或公共包被接納到發行套件中。有些項目甚至被接納為 Linux 內核的一部分,此時這個單獨的項目將解散,而它的開發將作為標準內核維護的一部分繼續進行。
SourceForge
SourceForge.net(請參閱 參考資料)是一個很受歡迎的針對開放源代碼項目的知識庫。它通過易于使用的 Web 界面來組織項目,該界面具有搜索功能以幫助您查找項目。每個 SourceForge 項目都有版本歷史記錄、bug 列表、討論組、文檔,當然還包括源代碼。如果擁有自己的開放源代碼項目,您也可以利用 SourceForge。
RPM 與源代碼
無論何時只要可能,預編譯的二進制 RPM 都是在 Linux POWER 環境中使用開放源代碼軟件的最簡單方式。軟件的所有部分都以二進制的形式準備好了,只需直接安裝即可。安裝通常只需幾秒鐘就能完成,軟件馬上就可供使用了。
由于 RPM 的工作方式,系統將自動接受依賴關系和兼容性檢查,在軟件開始安裝之前,您會接到關于缺少某個組件的通知。此外,升級、管理和刪除 RPM 包也很簡單。無論何時只要可能,采用 RPM 都是可取的。
針對 RPM 的一個優秀知識庫是 Rpmfind.net(請參閱 參考資料)。它具有一個來自許多發行套件的可搜索索引,以及大多數主要發行套件和升級的鏡像。為 PPC 列出的任何包都應該與 POWER 系統兼容。您既可以搜索包的名稱,也可以搜索某個包中包含的單獨文件。得到的搜索結果將跨越廣泛的 Linux 發行套件,包括非常罕見的發行套件。所列出的每個包通常還指向對應項目的主頁,因此如果在查找某個項目資源時遇到問題, rpmfind
可能會提供幫助。對于 POWER 體系結構,作為 PPC 包列出的所有 RPM 或許都能工作。在安裝新的包時務必細心一點。RPM 將會幫助保護您避免意外地完全摧毀系統,不過強烈建議您使用常規的預防措施,比如制作備份以及在非生產系統上執行測試。
![]() ![]() |
![]()
|
使用源代碼
由于 POWER 體系結構上的 Linux 還比較新,并非所有開放源代碼項目擁有者都曾想到過它。因此可能還沒有對那些包可用的 RPM 包。在這種情況下,您必須自己編譯源代碼。這對于諸如 Samba 這樣成熟的項目來說通常不是一件難事,但是對于不太常見的項目來說,可能需要做更多的工作。應該對在生產系統上編譯源代碼保持謹慎,因為這樣可能導致問題,或者失去對正在該系統上運行的商業軟件的支持。
Linux 本質上在不同的體系結構上都是相同的;因此,許多項目的源代碼無需多少經驗就能成功地編譯。源代碼通常作為壓縮的 tar 文件來提供。Gzip 是最常用的壓縮方式,不過 bzip2 正在變得流行起來,因為它創建的壓縮文件更小一些。
首先,您必須展開壓縮包。讓我們使用 Gimp 作為一個例子。Gimp 是一個照片編輯包,它處理各種各樣的圖像格式,并且包括昂貴的商業產品中具有的功能。
圖 1. Gimp 實際應用
要下載 Gimp 源代碼,請參閱本文后面 參考資料中指向 Gimp Web 站點的鏈接。要展開源代碼,請使用 tar -xvjf gimp-1.2.4.tar.bz2
命令。
文件將解壓縮到當前目錄。標準的方法是將源代碼包含在一個與產品名稱相同的目錄中。在此例中,文件包含在一個名為 gimp-1.2.4 的目錄中。
切換到該目錄就會看到源代碼、一些文檔、配置腳本,以及 README 文件。大多數源代碼包都有一個名為 INSTALL 和一個名為 README 的文件。在編譯軟件之前應該閱讀這些文件。通過閱讀這些文件,您可以在產生問題之前識別它們,并且獲得正確的編譯和安裝步驟,從而省去一些麻煩。我在編譯源代碼時遇到的大多數問題,都只是因為我沒有遵循那些文件中的指示。
最常見的下一個步驟是運行 configure
腳本。 Configure
是 autoconf 包的一部分,這個包包含在 Linux 發行套件的開發工具中。下面引用 Autoconf 的包描述:
“GNU 的 Autoconf 是一個用于配置源代碼和 Makefile 的工具。使用 Autoconf,程序員能夠創建可移植和可配置的包,因為生成包的人能夠指定各種配置選項。”
這個配置腳本在系統上運行一系列測試,以確定針對您的發行套件和體系結構編譯包的最佳方式。然后它為您的系統創建一個自定義的 Makefile。如果在系統上執行編譯時遇到問題, configure
將會告訴您。 Configure
通常允許您定制要包括到編譯包中的特性,或者允許您提供關于庫或其他必需文件的位置參數,以便該包能夠成功編譯。要不帶參數執行 configure
腳本,請使用如下命令:
./configure
它將在系統用上執行多個測試并成功地結束。要生成程序,請使用如下命令:
make
如果編譯出錯,您需要確定問題并修復它們。這些問題也許比較棘手,可能需要關于您的環境和總體編程的大量知識。如果一切順利,下一步通常是使用如下命令來安裝軟件:
make install
這個命令將把文件復制到系統中的適當位置,更新文件權限,復制配置文件,并把文檔添加到手冊頁。
這種方案存在許多可能的變化形式。這其中包括對 configure
腳本使用開關來調整將要編譯到程序中的特性,使用 Makefile 中的不同命令來調整編譯方式,等等。
如果程序在安裝后無法工作,大多數 Makefile 都包含一個 uninstall 參數來刪除該程序。
make uninstall
務必記住,使用原始源代碼不會向 RPM 數據庫輸入任何內容。以這種方式安裝的軟件是非托管的(unmanaged),因此應該小心進行。
![]() ![]() |
![]()
|
創建自定義 RPM
如果打算使用大量純源代碼,您應該了解更多關于創建自己的 RPM 的信息。創建 RPM 并不是特別困難,雖然這個主題超出了本文的討論范圍。從您自己的代碼創建 RPM 要比從陌生人編寫的代碼創建 RPM 容易得多。要創建良好的 RPM 包,您需要足夠了解某個軟件部分中的所有組件。本質上,這個過程就是創建一個名為 SPEC 的配置文件,它識別 RPM 數據庫所必需的所有信息。關于依賴關系的信息、生成該文件的步驟,以及安裝后的操作連同該包中所有文件的列表,都包括在這個 SPEC 文件中。RPM 使用這個 SPEC 文件來編譯代碼和創建二進制包。請查看您的源包,以確定是否已經創建了一個示例 SPEC 文件。包括 SPEC 文件已經成了一個普遍習慣,這樣還可能允許您只需做很少工作或不需要做工作就能創建一個自定義的 RPM。
源 RPM
在創建 RPM 時,存在一個叫做源 RPM(Source RPM,SRPM)的工件(artifact)。這是一個與源代碼組合后的 SPEC 文件,設計用于構建一個或多個體系結構。這對兩個世界來說都是最好的!使用源 RPM,您能夠在系統上自定義編譯軟件,但是完成后的產品將是可安裝的 RPM 而不只是原始的二進制。作為預編譯 RPM 可用的大多數包也作為 SRPM 可用。這可能是在 Linux 中跨平臺移動軟件的一種簡單方式。當您在一個不同的平臺上成功地重新編譯時,可考慮與社區共享完成后的 RPM。
]]>
圖1
開發者必須精確地考慮到這些工具的松散集合能提供什么樣的功能,以及需要付出多大的努力才能形成完整的解決方案。"
在Linux應用程序和庫的除錯方面,GNU Debugger (GDB)作為一種標準已有幾年的歷史。它是一種命令行程序,由多個不同的圖形用戶接口前端予以支持,每個前端都能以多種方式提供除錯控制功能。盡管GDB不是一個完美的方案,但它足夠應對各種除錯任務,而且已經得到開放原始程序代碼團體的廣泛支持。
Linux核心或設備驅動程序的除錯要比應用程序的除錯繁瑣得多。
在做調查時,以下方面應特別注意:
什么除錯方法支持要開發產品的硬件?
需要什么核心支持程序?
還需要其它什么支持程序?
除錯接口怎么樣,如何使用?
該工具需要除錯核心模塊及處理虛擬地址轉換嗎?
還需要其它什么工具才能提供完整的方案?
經過進一步的調查,開發者往往發現工具A和工具B并沒有提供完全一致的功能,因為它們是在彼此獨立的情況下開發的。結果,開發者必須精確地考慮到這些工具的松散集合能提供什么樣的功能,還需要付出多大的努力才能形成完整的解決方案。
如果不同處理器類型間的整合、可用性、互通作業性和移植性很關鍵的話,開發者應考慮購買商用開發工具。這主要是因為將開發一個'免費'方案所付出的努力考慮進去,商用開發工具并不算貴。
Linux BSP
Linux系統有兩大主要部份:帶設備驅動程序的Linux核心;以及根文件系統,包括系統所需的全部支持應用程序、服務和庫。
除了駐留在目標板上的OS組件外,還需要制作一個由GNU Compiler Collection構成的交叉編譯環境,為庫和二進制程式(binutils)提供支持。
雖然幾乎每一個組件都可在網上找到,但在硬件或設備驅動程序支持、整合測試信息、交叉編譯指南或軟件兼容性方面卻很難收集到太多信息。盡管開發者可從網上免費下載各種組件以配置嵌入式Linux操作系統,但每個組件在版本、支持、穩定性和測試等方面的狀態則需要開發者自己決定。然后,開發者還要完成最后的OS整合和測試,以及為所開發產品提供終身Linux OS維護。
另一方面,嵌入式Linux供貨商所提供的商用Linux板支持工具套件一般都是經過預先安裝和測試的,而且提供支持和維護。其它須考慮的因素包括Linux桌面主機將會添加不同的庫和核心功能,以及由于組織內的開發者變動而引起的長期維護問題。
品質保證部門一般會執行一系列嚴格的驗證和性能測試,其中包括內存泄漏檢測/糾正、程序代碼最佳化和任務追蹤等。那些想利用開放原始程序代碼工具開發針對非X86平臺的嵌入式Linux產品開發者將會發現這一任務甚至要比選擇開放原始程序代碼除錯方案難得多。Linux Trace Toolkit、Valgrind工具及其它內存分析程序可完成部份測試和驗證任務。但總的來說,它們缺乏關鍵特性、整合功能及廣泛的硬件支持。這些開放原始程序代碼分析工具的評估過程與評估除錯方案的過程基本相同。
最后的分析就是,一個設計得恰到好處的開發環境應能夠供貨商用和開放原始程序代碼兩個世界所具有的最好特性:
·完整的開發能力;
·易于使用和整合;
·大型工程組織的協調控制;
·品質和支持保證;
·持續性;
·按照自己的判斷力使用開放原始程序代碼的能力。 本信息來源:CAD教育網 www.cadedu.com