最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

QNX和Linux嵌入式發(fā)展史

2022-03-12 09:21 作者:Elektrobit  | 我要投稿

本文原作者寫于5年前,期間可能有些技術的小變化,但作為對嵌入式Linux和QNX的入門了解還是不錯的。
?

介紹

上個世紀90年代末期,Web設備被吹捧為下一個劃時代的“大事件”,一種新型設備會產生一個新興市場從而會產生下一代消費IT巨頭。在拉斯維加斯的消費電子展上和QNX 2000國際技術會議上,大大小小的生產商展示了許多對未來的構想。


英特爾基于Linux構建了Web設備,微軟的合作方基于一個閹割版的Windows CE開發(fā)Web設備。其他公司,比如3Com和Netpliance iOpener則是基于QNX。當時Web設備看起來很大可能是消費電子的未來。相比個人電腦,他們提供更少的功能。那個時候, Ken Kalinoski(Netpliance的發(fā)展副總裁)能想到的最好的方式是一個富客戶端連接到一個專門的服務器上。百思買和沃爾瑪貨架上后面Web設備的減少說明消費者并不買賬。他們不想要一個設備只能瀏覽網頁和處理簡單的郵件,但是不能處理文本或存儲數據。并且,消費者也不喜歡被指定的服務供應商綁定。

?

Linux和QNX因為作為Web設備上的操作系統(tǒng)和巨大的平臺開發(fā)能力聲名鵲起。Linux過去作為服務器操作系統(tǒng)使用最多,而QNX主要用于工業(yè)級的嵌入式實時操作系統(tǒng)。為了挖掘新的市場,許多開發(fā)者開始開發(fā)Linux和QNX在更小,更便攜式設備上的能力。

?

事后看來,Web設備是一個技術超前的想法。即使有軟件和工程天才們生產這些設備,但是硬件和基礎設施的局限性不能讓Web設備滿足一個電子必需品的功能,比如多功能性和便攜性。移動電話和PDA技術的提高,數碼攝像機的進步,更低電量的需求,內存的增長,嵌入式或移動CPU速度的巨大提升,以及802.11b和802.11g WIFI無線網絡協(xié)議,這些所有的因素促使Web設備成為一個多功能設備。這個設備集合了電腦,辦公軟件,手機,攝像機(包括電影),傳呼機,音樂播放器,當然也包括Web 瀏覽和郵件系統(tǒng)。這些所有的功能集成在一個可以放進口袋的無線設備上。

?

四年之后,我們處在一個新的“下一個大事件”的邊緣。在已經具有龐大的PDA和Internet功能的手機市場上,硬件以及就地無線和服務基礎設施的進步,對能夠提供更多功能,更緊湊且電池壽命更長的設備產生了巨大的需求。這個重新激發(fā)了人們對嵌入式開發(fā)平臺的興趣,保證將來能在數十億美元的市場中競爭。

?

設計相似之處就在這里結束。Linus Torvalds 使用宏內核架構設計了Linux作為一個通用的操作系統(tǒng)運行在個人電腦上。內核幾乎包含了操作系統(tǒng)需要的所有功能。相反,QNX的設計則更加模塊化和可擴展。QNX是一個基于微內核的實時操作系統(tǒng),能足夠小的嵌入到芯片提供運行工作站或大型網絡服務器的能力。

?

Linux的嵌入式發(fā)展

由于Linux自身的健壯性,相對緊湊,通用,低成本和開源的license模式這些優(yōu)點,嵌入式系統(tǒng)的設計者很長時間都在使用Linux。Linux可以讓設計軟件充分利用大量的開發(fā)人員,永遠豐富的代碼遺產和行業(yè)標準的便攜式操作系統(tǒng)接口(POSIX)API。

?

標準的Linux內核沒有嵌入式系統(tǒng)要求的實時能力(可預測的應答時間和毫秒級的延遲通常被認為是確定的事件)例如電傳操縱,ABS制動系統(tǒng),連續(xù)介質和醫(yī)療設備。但是,Linux可以直接用于不受確定性問題影響的消費類設備中。為了滿足當前正在開發(fā)的嵌入式設備的需求,出現了幾種Linux產品,可以滿足更加可預測的速度和定時行為。

?

嵌入式系統(tǒng)中使用Linux

盡管一開始Linux設計是為了個人電腦使用,但是Linux也可以成為一個可靠的嵌入式操作系統(tǒng)。一個具有所有功能的Linux內核的縮小的Linux包,僅占用約1M的內存。純的Linux內核(虛擬內存和所有核心操作系統(tǒng)功能)僅占用大約100K。加上網絡棧和基本的使用,一個完整的Linux運行時大約占用500K內存。所需要的總的內存由運行的應用程序來運行,但是Linux系統(tǒng)僅需要256K ROM和512K RAM就可以工作。這對嵌入式市場來說是一個輕量級的操作系統(tǒng)。

?

使用開源的Linux系統(tǒng)另一個好處是,相比較傳統(tǒng)的實時操作系統(tǒng),Linux開發(fā)社區(qū)會更快的支持新的協(xié)議以及比實時操作系統(tǒng)供應商支持更多的設備驅動。

?

Linux操作系統(tǒng)的核心是一個相對簡單的微內核架構。網絡和文件系統(tǒng)以模塊化的方式位于宏內核之上。驅動和其他功能可以編譯進內核,也可以在運行時加載。這提供了一種高度模塊化的構建塊方法來構建定制的嵌入式系統(tǒng),該方法通常使用定制驅動程序和應用程序的組合來提供附加功能。

?

為了避免重新發(fā)明輪子,嵌入式系統(tǒng)通常需要使用現成的程序和驅動程序構建通用功能。許多程序和驅動程序用于外圍設備和應用程序。Linux可運行在大多數需要有大量外設的微處理器上,并且有大量的現場的應用。

?

Linux能夠很好的適配嵌入式網絡設備,因為它支持多處理器系統(tǒng),擁有擴展性。這讓設計者多了一個選項,可以在雙處理器系統(tǒng)上運行一個實時的應用程序,從而提高總的處理能力。所以你可以在一個處理器上運行Linux,而同時在另一個處理器上運行GUI。

?

在嵌入式系統(tǒng)上運行Linux的一個缺陷是,Linux架構不能以一個標準的形式提供實時能力。比如標準的Linux是根據公平算法來進行任務調度,也就是給每個任務相同的處理器時間。解決方案是通過額外的實時變化修改Linux讓它以確定的方式運行。

  • 第一個解決方案是在內核空間增加額外的軟件模塊。加在操作系統(tǒng)實現調度策略,硬件中斷和程序執(zhí)行的部分。由于這些實時的軟件模塊運行在內核空間,操作系統(tǒng)由于代碼錯誤崩潰會影響整個操作系統(tǒng)的可靠性。

  • 第二個解決方案,如圖1所示,以雙內核的方式為實時任務提供實時環(huán)境。這種方式需要開發(fā)者開發(fā)新的驅動和系統(tǒng)服務,盡管對等的服務已經在標準的Linux內核中存在了。這種實時操作系統(tǒng)方案會延長加載時間并且增加操作系統(tǒng)占用的空間。

  • 第三種方案是其他Linux生廠商重寫部分代碼來實現實時功能,比如調度來保證行為確定。

圖1:擁有雙標準和實時操作系統(tǒng)內核的Linux

?

嵌入式Linux的標準化

Linux有超過200多個的發(fā)行版本和很多嵌入式版本。由于嵌入式Linux要沒有存在的標準,一個統(tǒng)一的平臺規(guī)范讓Linux的使用具有一個更經濟,專注的環(huán)境,Linux幾乎就是無用的。

?

為了保證嵌入式Linux版本的兼容性,嵌入式Linux聯(lián)盟(ELC)成立了。ELC是一個非盈利性行業(yè)協(xié)會,致力于在整個嵌入式計算市場中改進,促進和標準化Linux。成員們?yōu)榱讼硎軜藴驶瘞淼暮锰帲獏⑴c管理、促進,實現和平臺規(guī)范工作組。

?

ELC的使命是:“…..讓Linux成為嵌入式系統(tǒng)開發(fā)者的首選“。Inder Singh博士,ELC的主席和Lynuxworks的CEO評價說:“Linux已經開算成長為消費類電子產品的操作系統(tǒng)的主要選擇之一,越來越多的嵌入式軟件使用Linux”。

?

Karen Chupka,消費電子協(xié)會活動和會議副總裁表明,“操作系統(tǒng)軟件是消費類電子產品快速增長列表中一個關鍵的考慮點,Linux有望在2004年增長……”

?

現在超過75家公司加入了由索尼和松下成立的消費電子Linux論壇,來促進基于Linux的數字消費電子產品。2003年6月,一些其他的消費電子產品公司也加入了該論壇。這些公司是EC, Hitachi, Royal Philips, Samsung, Sharp and Toshiba.

?

三個嵌入式Linux 版本

?

松下消費電子版本3.0

松下為它的消費電子設備引入了嵌入式Linux。松下“消費電子版本3.0”(CEE)是嵌入式操作系統(tǒng)。它的目標是手機,數字電視,機頂盒和汽車遠程信息處理的應用程序。CEE設計用于高度受限的移動設備,這些設備的特點是低功耗,內存大小受限以及啟動和恢復時間端。?據稱它是第一個專門為消費電子市場設計的商業(yè)嵌入式Linux發(fā)行版。

?

CEE支持動態(tài)電量管理功能,文件系統(tǒng)加強和測量性能,系統(tǒng)時間,內存大小的工具,文件支持流媒體優(yōu)化。

?

CEE的功能包括:

  • 免稅版的嵌入式Linux OS和開發(fā)環(huán)境

  • 消費級別的可靠性

  • 搶占式內核技術和實時調度

  • 動態(tài)電源管理優(yōu)化了電量使用,延長了電池壽命

  • 內核快速啟動時間

  • 文件系統(tǒng)加強,包括對流媒體支持的優(yōu)化

  • eXecute In Place(XIP)提供快速啟動,待機和恢復功能

  • 可擴展的內存占用空間可容納各種消費類產品

  • “金標準”網絡可實現高性能的互聯(lián)應用

  • 圖形化的MontaVista系統(tǒng)測量工具可促進消費者級的性能調整

  • 預集成Java*和圖形開發(fā)以及運行時產品,可選

  • 支持各種商業(yè)和開源應用程序和中間件

LynxOS

嵌入式軟件公司LynuxWorks構建了兩個嵌入式Linux版本。如圖2所示,LynxOS是一個硬實時嵌入式系統(tǒng)。LynxOS是一個Linux實時操作系統(tǒng),前融Linus ABI和POSIX。由于是微內核設計,內核占用非常小,僅有28KB大小。

圖2


小型內核提供包括調度,終端分配和同步等必要的服務。其他服務由內核輕量級服務模塊提供。這些模塊被稱為內核插件(Kernel Plug-Ins, KPIs)。新的KPIs可以被加到內核中用來支持I/O, 文件系統(tǒng),TCP/IP,流和Socket。KPIs是多線程的,意味著每個KPI可以根據要求創(chuàng)建多個線程。

?

向KPI發(fā)送消息時沒有上下文切換。比如當給文件系統(tǒng)KPI發(fā)送服務請求消息(RFS)時,不需要上下文切換從而減少運行時的開銷。KPI之間的通信只依靠很少的指令,因而開銷很低。

?

應用程序通過系統(tǒng)調用向I/O系統(tǒng)發(fā)出I/O請求。內核將I/O請求定向到設備驅動程序。?每個設備驅動程序都有一個中斷處理程序和內核線程。?中斷處理程序執(zhí)行中斷處理的第一步。?如果未完成處理,則會設置為內核異步陷阱。稍后,當內核可以響應軟件中斷時,它會調度內核線程的實例完成中斷處理。

?

藍貓

藍貓是LynuxWorks公司構建的第一個Linux版本。藍貓不是一個實時操作系統(tǒng),但是與LynxOS二進制兼容,因此嵌入式應用程序可以輕松地移植到RTOS。藍貓主要是為了對實時性沒要求的嵌入式系統(tǒng)。

?

QNX

QNX是一個基于POSIX為嵌入式系統(tǒng)特別設計的實時操作系統(tǒng)。它不僅能夠讓Linux開發(fā)者保持他們的編程習慣,而且還保留了Linux開源模型的關鍵特性。帶來的好處是,這種方式能夠讓嵌入式開發(fā)者無論是在標準的Linux還是實時的擴展Linux都可以享受OS的服務。圖3說明了QNX的架構。

圖3:QNX架構


QNX是QNX Software Systems Ltd. (www.qnx.com*), Kanata, Ont.公司的商用產品。和Linux一樣,QNX也是基于1970由貝爾實驗室開發(fā)的UNIX。QNX和Linux都遵循LINUX POSIX標準。

?

QNX Neutrino微內核為實時和非實時的應用提供了一個統(tǒng)一的環(huán)境。QNX基于實時,微內核的架構(見圖3)提供POSIX兼容的API。Neutrino微內核只包含最基礎的操作系統(tǒng)服務。所有其他的服務都可以通過可選的,內存保護的進程來提供,可以動態(tài)的啟動和停止。為了實現模塊化,QNX Neutrino使用消息傳遞作為整個系統(tǒng)IPC最基本的方式。

?

和Linux不同,QNX沒有把POSIX作為附加層來實現。QNX微內核從一開始設計時就支持POSIX實時性,包括線程。ELC規(guī)范是基于現存的POSIX 1003.1標準。這個標準QNX也支持。因此,QNX能夠天然支持嵌入式Linux應用。

?

QNX,和Linux一樣,提供開源模式的好處。通過代碼,開發(fā)者能夠分析操作系統(tǒng)的架構以便更好地集成他們的代碼,適配操作系統(tǒng)組件來滿足應用特定的需求,并節(jié)省問題定位的思考時間。QNX通過兩種方式來提供上面的好處。

  • 通過使用高度擴展的微內核架構

  • 給客戶提供驅動,庫和BSP(Board support package)的源碼,包括為各種標準設備提供驅動開發(fā)套件

作為微內核操作系統(tǒng),QNX Neutrino從根本上對定制開發(fā)。這是因為大部分操作系統(tǒng)層面的服務驅動,文件系統(tǒng)和協(xié)議棧存在于內核外的用戶空間,只有少量的核心服務(比如調度,定時器,中斷處理)存在內核中。因此,開發(fā)自定義驅動程序和應用程序特定的OS擴展不需要特殊的內核調試器或內核專家。事實上,作為用戶空間的程序,開發(fā)OS擴展和開發(fā)標準的應用程序一樣簡單,因為它們可以用大家熟識的標準的源碼級別的工具調試。

?

QNX Neutrino允許應用程序通過稱之為同步消息傳遞這種統(tǒng)一的IPC方式來訪問所有的驅動程序和操作系統(tǒng)服務。這種方式有幾個好處。比如,由于QNX的消息傳遞是同步的,從而能夠自動協(xié)調通信程序的執(zhí)行,因此無需在每個進程中手動編碼和調試復雜的同步服務(見圖3)。消息傳遞本質上簡化了復雜操作系統(tǒng),將其劃分為明確定義的可以單獨開發(fā),測試和維護的基礎構建模塊。通過任何提供服務的程序在路徑名空間注冊路徑名將其廣而告之給其他程序來實現。任何程序都能夠通過在路徑名上調用比如open(), read(), write(), 或者lseek()來訪問其他服務。

?

舉個例子。QNX串口驅動通常注冊路徑名/dev/ser1表示第一個串口。任何想訪問這個端口的應用程序可以通過調用在/dev/se1上的open()函數來實現。對于應用程序而言,open()函數和標準的POSIX接口一樣。

?

Neutrino C函數庫將這個調用轉成io_open消息并把這個消息轉發(fā)給串口驅動。如果應用程序接下來要想串口寫一個字符,調用序列如下:客戶端調用write()函數,C函數庫會構建一個io_write消息。這個消息會被轉發(fā)給驅動。

?

這樣帶來的另一個好處是只要該服務支持某特定的功能,確切的消息就可以從任何客戶端發(fā)送給任何服務。比如,向一個串口或磁盤文件寫一個字符串,應用程序在這兩種情況可以調用相同的write()函數,唯一的區(qū)別是消息要發(fā)送的地方。這意味著應用程序和它依賴的服務是解耦的。這種解耦可以使開發(fā)簡單化,因為應用程序和系統(tǒng)服務之間所有的交互可以用一個簡單的基于POSIX的編程模型來實現。

?

這樣簡化了代碼移植到其他平臺因為應用程序不包含任何硬件或協(xié)議特定的代碼。

?

通過給客戶提供比如庫,驅動和BSP的源碼,QNX Neutrino進一步簡化了問題定位和OS的定制化開發(fā)。開發(fā)者可以免費下載設備驅動包(Device Drive Kits, DDKs)。DDKs包含文檔和一個軟件框架。這個軟件框架實現了庫中更高級別的獨立設備的代碼。

?

在涵蓋大多數Linux源代碼的GPL中未提供QNX源代碼。然而,QNX軟件系統(tǒng)基于它們自己的License協(xié)議提供源碼。不像GPL,可以讓開發(fā)人員自由創(chuàng)作衍生作品,而不必放棄知識產權(IP)。

?

作為宏操作系統(tǒng),Linux將大部分的驅動,文件系統(tǒng)和協(xié)議中都綁進了內核中。因此這些模塊中任何一個單一的編程錯誤就有可能導致致命的內核錯誤。在QNX Neutrino中,這些模塊都運行在獨立的、內存保護的地址空間中,內核崩潰很難發(fā)生。因此QNX Neutrino為實時應用程序提供了一個比Linux更健壯的環(huán)境。并且也肯定比雙內核方法中使用的不受保護的實時內核強得多。

?

QNX附加值:

  • QNX Neutrino提供了QNX微網絡服務,允許消息在處理器邊界之間透明地流動。這意味著任何進程都可以訪問任何資源任何網絡節(jié)點就好像它們在本地一樣。如果驅動的路徑名在本地,QNX微內核可以直接路由這個消息。如果這個驅動在遠程節(jié)點上,QNX微網絡會透明的將這個消息轉發(fā)給對應節(jié)點。

  • 網絡流量可以在所有可用鏈路上實現負載均衡,從而提高吞吐量。該服務是內置的,應用程序不需要任何特殊的網絡代碼。

  • QNX微內核體系結構的細粒度可擴展性使得運行時環(huán)境比Linux小得多。

  • Photon microGUI也使用微內核的架構。因此,設計人員可以輕松地“拔出”內存受限設備不需要的GUI服務。

  • QNX支持TCP/IP, NFS和Linux文件系統(tǒng)。因此使用QNX和Linux混合工作站的開發(fā)商店可以在這兩種環(huán)境中分享資源。簡而言之,Linux和QNX Neutrino不僅可以共存,還可以做更多的事情。相反,跟其他實時或通用的操作系統(tǒng)相比,它們?yōu)殚_發(fā)人員提供了更廣泛的在應用程序中使用相同的API,源代碼和技能點的機會。

  • QNX 支持 MIPS, PowerPC, SH4, StrongArm, xScale, and x86硬件架構。它可以從受約束的嵌入式平臺擴展到多處理器平臺。該體系結構提供多任務處理,優(yōu)先級驅動的搶先式調度,同步和TCP/IP協(xié)議。同時還提供了包括PPP,DHCP,NFS,RPC和SNMP的實用程序。

  • QNX具有稱為Qnet的基于消息的本機網絡。

  • Photon microGUI桌面系統(tǒng)是一個內存占用很小的GUI。

  • 對于GUI應用程序,QNX有一個叫Photon Application Builder(PhAB)的集成開發(fā)環(huán)境。不像Visual Basic,它沒有拖拽控制。

  • 自我托管功能簡化了開發(fā)

  • QNX使用GNU GCC編譯器

  • QNX RTP支持GCC-2.95 C和C++。而且QCC作為一個GCC前端的抽象層屏蔽了不同編譯器(GNU GCC, Watcom和Metrowerks)之間的差異。還有一個CC端用來屏蔽可用編譯器之間的差異。該前端還可以基于文件擴展名調用對應的編譯器(C或C ++)。目前它調用GCC/G++。對于項目代碼管理,QNX的發(fā)行版本中包含了make, CVS和RCS這些工具。

  • 支持GCC編譯器的交叉編譯版本,允許開發(fā)者在Windows平臺上開發(fā)Neutrino應用程序。

結論

在QNX中,實時和非實時環(huán)境是一樣的。實時應用程序可以充分使用POSIX API和訪問系統(tǒng)服務。POSIX/Linux應用程序可以立刻獲得確定的行為。由于實時和非實時應用程序運行在相同的基于消息的環(huán)境中,進程之間的通信就非常簡單了。減少重復工作。像之前討論的,雙內核方式會逼迫開發(fā)者使用不熟悉的API開發(fā)定制驅動。在大部分的操作系統(tǒng)環(huán)境中,開發(fā)這些驅動要求內核調試工具(非常難用),內核重新編譯(非常耗時)和內核編程(成本高)。QNX Neutrino通過幾種方式解決了這個問題。首先,像任何已具有大量用戶群的OS一樣,QNX支持各種用于標準硬件的現成驅動程序。并且,就像我們看到的,QNX在用戶空間運行驅動,因此可以使用標準的代碼級別的工具和技術。QNX DDKs讓開發(fā)變得更簡單了。DDK提供文檔,庫文件,頭文件和可定制的各種驅動程序源。除了微內核的功能,由于微內核實時操作系統(tǒng)的設計是為了滿足嵌入式系統(tǒng)的要求,QNX Neutrino還為Linux開發(fā)人員提供標準Linux或實時Linux擴展均不具備的功能。

?

與QNX相比,Linux有更大的開發(fā)人員社區(qū),軟件社區(qū)和真正的開源代碼,以及更大的平臺社區(qū)。ELC和CELF正在使嵌入式Linux標準化。?嵌入式Linux的最新版本要求具有完全POSIX兼容性的硬RTOS。



原文作者:Thomas W. Burger

本文譯者:王紅燕 -?Elektrobit中國團隊的專家



相關產品:

Elektrobit提供車規(guī)級高性能操作系統(tǒng)產品——EB corbos Linux。EB corbos Linux是面向汽車工業(yè)的基于容器的Linux分發(fā)版。容器概念解決了“不同應用程序之間的依賴性管理”這一主要難題,為客戶擴展提供了可變性,并能夠實現有效的維護。為了滿足較高的安全性和可靠性要求,EB corbos Linux可配備一個硬化Linux內核和根文件系統(tǒng),用來確保所有階段的系統(tǒng)完整性。此外,EB corbos Linux還可為各種CPU供應商集成板級支持包和特定補丁。訪問官網獲得更多產品技術詳情:https://www.elektrobit.cn/products/ecu/eb-corbos/linux/


QNX和Linux嵌入式發(fā)展史的評論 (共 條)

分享到微博請遵守國家法律
永平县| 麻江县| 阜平县| 仲巴县| 团风县| 土默特右旗| 临湘市| 炎陵县| 渝北区| 桐城市| 永胜县| 临颍县| 瓦房店市| 涪陵区| 莆田市| 临泉县| 庆元县| 成武县| 黎川县| 邳州市| 察哈| 贡觉县| 塔河县| 乌拉特后旗| 柘城县| 盘山县| 天长市| 隆尧县| 怀宁县| 双江| 兴仁县| 阜城县| 河北省| 丰宁| 虎林市| 和田市| 安溪县| 横山县| 册亨县| 安康市| 紫云|