国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

Linux用作嵌入式操作系統(tǒng)

2024-07-21 02:37:02
字體:
供稿:網(wǎng)友

  linux as an Embedded Operating System Linux有用作嵌入式操作系統(tǒng)的潛力嗎?本文討論了Linux的特點(diǎn)、健壯 性、局限以及最重要的一點(diǎn),它的實(shí)時特性。 近年來,PC硬件使用的增加是高端嵌入式系統(tǒng)最重要的發(fā)展之一。 這種 趨勢造成高端系統(tǒng)硬件造價的大大跌落,從而使那些以前由于使用非P C結(jié)構(gòu)的嵌入式硬件價格過高而不能做的項(xiàng)目成為可行的。但是嵌入式 PC平臺上可選擇的軟件并不像硬件那樣有誘惑力。你可以選擇DOS,有 眾所周知的局限性;微軟Windows,缺乏實(shí)時性能;或者某種高端實(shí)時 操作系統(tǒng),昂貴、專用,大多是不可移植的。Linux操作系統(tǒng)提供了另 外的有吸引力的選擇,并且沒有上面那些缺陷。Linux先前只是狂熱的 Unix迷們閑時專門在臺式電腦上使用,后來發(fā)展成為必須認(rèn)真對待的高 級的、穩(wěn)定的操作系統(tǒng)。最近的發(fā)展之一是引入了實(shí)時性能,從而使L inux完成了重要的轉(zhuǎn)變,即從愛好者的玩具成為適合嵌入式系統(tǒng)設(shè)計者 的有價值的工具。當(dāng)然,其實(shí)時性能還沒有那些高端RTOS那么高級,并 且Linux永遠(yuǎn)不會適合需要最小化RAM和ROM的系統(tǒng)。但是,對很多應(yīng)用 來說,Linux的優(yōu)勢勝過了不足。
  
   現(xiàn)在,大家都知道在嵌入式系統(tǒng)中使用PC硬件的好處。與很多專為嵌入 式市場設(shè)計的硬件比較,PC硬件是大規(guī)模生產(chǎn)的、輕易獲得并且便宜。 為VME總線設(shè)計的接口板價格是PC總線的兩倍多,比如模擬和數(shù)字I/O板 、網(wǎng)絡(luò)接口、圖像采集與處理板等。隨著高性能PCI總線應(yīng)用的增加, 吞吐量不再是影響使用PC平臺的問題。
  
   但是操作系統(tǒng)功能上已經(jīng)發(fā)生革命性的變化。在要求硬件價格降低的同 時,高端嵌入式系統(tǒng)要求更多高級的功能,如圖形用戶界面和網(wǎng)絡(luò)支持 。很多高端RTOS供給商已經(jīng)提供了這些功能,一般是作為花更高價錢才 能得到的可選件。微軟Windows也有這些功能,卻不具備大多數(shù)嵌入式 系統(tǒng)要求的實(shí)時性能。也許有人想以DOS為基礎(chǔ)用單獨(dú)的第三方工具拼 湊一個系統(tǒng),但這種努力將是白費(fèi)并且不存在對這種系統(tǒng)的技術(shù)支持。 現(xiàn)在需要的是一個便宜、成熟并且提供高端嵌入式系統(tǒng)所必須特性的操 作系統(tǒng)。
  
   因此,Linux操作系統(tǒng)近來開始吸引大家的注重。許多臺式PC用戶被它 的特點(diǎn)和健壯性所吸引,并且獲得它只需支付通過FTP下載的網(wǎng)絡(luò)費(fèi)用 。Linux帶有Unix用戶熟悉的完善的開發(fā)工具,幾乎所有的Unix系統(tǒng)和 應(yīng)用軟件都已移植到了Linux上。Linux還提供了TCP/ip網(wǎng)絡(luò)協(xié)議以及I nternet客戶和服務(wù)器軟件,還有可選擇多種窗口治理器的X Windows。 C、C++、java和其他語言的編譯器也可得到。用戶會發(fā)現(xiàn)這些比Windo ws提供的更成熟、更完善、更易于使用。許多公司至少會有一位Linux 的熱衷者,當(dāng)出現(xiàn)用Windows解決不了的問題時(比如設(shè)置一臺PC為撥 號服務(wù)器)會說:“瞧,我們要是用Linux...”
  
   現(xiàn)在,討論Bill Gates是否有所擔(dān)心是有些雜志的一個話題。重要的是 不屬于任何一家公司的Linux開始被臺式電腦用戶接受,其中許多人并 不能被認(rèn)為是電腦迷。這一方面是因?yàn)長inux的成熟,另一方面也因?yàn)?這幾年Internet的盛行。Linux用戶碰到問題時可以通過Internet新聞 組和郵件列表向網(wǎng)上成千上萬的在線用戶請教。你碰到的問題別人以前 肯定碰到過,一般他們都樂于幫忙。根據(jù)我的經(jīng)驗(yàn),通常使用網(wǎng)絡(luò)資源 能比依靠RTOS技術(shù)支持部門更快地解決問題。你可能需要從十幾條新聞 組其他成員回答的相關(guān)信息中搜尋,但至少有一個回答應(yīng)該是有用的。 相比較而言,你從技術(shù)支持部門僅得到一個回答,假如是錯的,你不得 不重新開始整個過程。另外,致力于提供Linux支持的公司也已經(jīng)出現(xiàn) ,給那些覺得傳統(tǒng)的技術(shù)支持手段更舒適的用戶一個選擇。并且所有L inux是提供源代碼的,這使最困難的問題也有辦法解決。
  
   某些嵌入式系統(tǒng)設(shè)計者會發(fā)現(xiàn)Linux本來的樣子就很有用。對于沒有實(shí) 時要求的應(yīng)用,或者有實(shí)時要求但可以用一定的硬件或協(xié)處理器滿足的 應(yīng)用,Linux提供了Windows和DOS之外的選擇。但是那樣的應(yīng)用幾乎沒 有。因此,用Linux實(shí)現(xiàn)一個實(shí)時操作系統(tǒng)才是真正需要的,并且為了 用它實(shí)現(xiàn)高端嵌入式應(yīng)用已經(jīng)做了充分的工作。總的來說,有兩條途徑 來實(shí)現(xiàn)實(shí)時Linux,在此稱之為POSIX路線和低層路線。
  
   POSIX和Linux POSIX是標(biāo)準(zhǔn)化類Unix操作系統(tǒng)必須具有的特征和接口的運(yùn)動。POSIX的 思想是為了促進(jìn)為Unix編寫的軟件的可移植性,使Unix程序員的工作更 輕易。有些實(shí)時性的擴(kuò)展,象POSIX.1b或IEEE 1003.1b已經(jīng)加入到標(biāo)準(zhǔn) 中。這些擴(kuò)展中包括一些工具,比如信號燈、內(nèi)存鎖定、時鐘和計數(shù)器 、消息隊列以及優(yōu)先級搶先調(diào)度。
  
   以POSIX為基礎(chǔ)來標(biāo)準(zhǔn)化實(shí)時操作系統(tǒng)已經(jīng)受到指責(zé)。
這個標(biāo)準(zhǔn)又大又 笨,包含了許多適合臺式Unix工作站但無助于嵌入式系統(tǒng)的特征,因而 顯得很臃腫。標(biāo)準(zhǔn)制定群體被工作站制造商控制,他們不愿對RTOS供給 商和用戶讓步。還有,POSIX系統(tǒng)調(diào)用反映了Unix系統(tǒng)調(diào)用的復(fù)雜和笨 重,在VxWorks或pSOS+中僅需一兩個調(diào)用即可完成的操作可能需要十幾 個POSIX調(diào)用。Unix程序員已經(jīng)習(xí)慣了這種麻煩事,但是嵌入式系統(tǒng)程 序員卻覺得很難受。
  
   許多Linux開發(fā)者正在為了在Linux中實(shí)現(xiàn)POSIX.1b的特征工作。這個活 動已經(jīng)初見成效并且仍在繼續(xù)。POSIX內(nèi)存鎖定工具和決定調(diào)度算法的 函數(shù)已經(jīng)實(shí)現(xiàn)。另外,計數(shù)器函數(shù)和POSIX.1b信號仍未完成。也許最糟 糕的是,對任何真正的RTOS都至關(guān)重要的信號燈和消息隊列也未實(shí)現(xiàn)。
  
   定義于POSIX.1c(或IEEE 1003.1C)中的POSIX線程保證會為POSIX路線 的Linux開發(fā)實(shí)現(xiàn)。一個進(jìn)程內(nèi)可以有多個線程,共享相同的地址空間 。這很符合我們熟悉的嵌入式系統(tǒng)中任務(wù)的概念。Linux已經(jīng)部分實(shí)現(xiàn) 了POSIX線程。
  
   雖然POSIX路線對實(shí)現(xiàn)一個實(shí)時Linux做了保證,當(dāng)前和可預(yù)見的將來只 有“軟”實(shí)時的應(yīng)用能用POSIX.1b函數(shù)來實(shí)現(xiàn)。移植POSIX.1b函數(shù)到L inux上時要面對的根本問題是Linux的內(nèi)核是不可搶先的。因此,要想 不對內(nèi)核大動干戈而實(shí)現(xiàn)“硬”實(shí)時特性恐怕是不可能的。 通向?qū)崟rLinux的低層路線 Low-level ApPRoach to Real-time Linux
  
   比POSIX路線更有意思的是實(shí)現(xiàn)硬實(shí)時Linux的努力,其中最有前途的要 數(shù)新墨西哥技術(shù)學(xué)院的實(shí)時Linux(RT-Linux)項(xiàng)目。注重到Linux是一 個為臺式電腦用戶設(shè)計的操作系統(tǒng),研究者們斷定,要想把實(shí)時功能移 植到為分時設(shè)計的OS上是不會有好結(jié)果的。取而代之的是,他們在操作 系統(tǒng)的下面實(shí)現(xiàn)了一個簡單的實(shí)時內(nèi)核,而Linux本身也僅作為那個內(nèi) 核上的一個任務(wù)來運(yùn)行。Linux運(yùn)行的優(yōu)先級最低,隨時可以被更高優(yōu) 先級的任務(wù)搶先。
  
   RT-Linux的設(shè)計理念是,對Linux作最小的改動,僅提供為了實(shí)現(xiàn)實(shí)時 應(yīng)用必不可少的東西。這樣就使RT-Linux比較輕易移植到新版本的Lin ux上。同時,RT-Linux依靠于Linux來提供所需的幾乎所有服務(wù),而RT -Linux僅提供低層任務(wù)創(chuàng)建、安裝中斷服務(wù)例程、并為低層任務(wù)、ISR 和Linux進(jìn)程之間的通信排隊。
  
   這種設(shè)計的結(jié)果之一是,一個RT-Linux應(yīng)用可以看作有兩個域:實(shí)時和 非實(shí)時。放在實(shí)時域的函數(shù)能滿足其實(shí)時要求,但是它們必須比較簡單 ,因?yàn)榭捎觅Y源很受限制。另一方面,非實(shí)時功能可以利用整個Linux 資源,但不能有任何實(shí)時要求。兩個域之間的通信工具已提供。但是使 用RT-Linux之前,嵌入式系統(tǒng)設(shè)計者必須確保所有需要實(shí)現(xiàn)的功能適合 兩個域之一。使用RT-Linux并不能變戲法似的使已經(jīng)存在的Linux功能 具有實(shí)時性。例如,假設(shè)設(shè)計者有一個串口的Linux驅(qū)動程序,當(dāng)串口 接收一個字節(jié)序列之后,在一個固定時間內(nèi),由實(shí)時任務(wù)打開并口輸出 一行。這個驅(qū)動程序不能用,因?yàn)樵诜菍?shí)時域內(nèi)你不知道什么時候串口 驅(qū)動程序會喚醒實(shí)時任務(wù)驅(qū)動并口完成工作。因此,串口和并口驅(qū)動都 必須在實(shí)時域內(nèi),這就要求重新設(shè)計串口驅(qū)動程序。
  
   RT-Linux的任務(wù)處理工具是基本的。rt_task_init()用來創(chuàng)建并開始一 個任務(wù),能指定堆棧的大小和優(yōu)先級。Linux本身以一個最低優(yōu)先級的 實(shí)時任務(wù)運(yùn)行。rt_task_make_periodic()以一定間隔周期性地設(shè)置任 務(wù)運(yùn)行。rt_task_wait()阻塞任務(wù)。使用簡單的搶先調(diào)度運(yùn)行任務(wù)。 實(shí)時任務(wù)與Linux進(jìn)程之間通信的主要方法是FIFO。rtf_create()創(chuàng)建 一個一定大小的FIFO。用rtf_put()將數(shù)據(jù)送入FIFO,假如FIFO滿則返 回一個錯誤。類似地,rtf_get()從FIFO中取出數(shù)據(jù),假如FIFO空則返 回一個錯誤。
  
   FIFO最顯著的應(yīng)用是數(shù)據(jù)流。例如,在一個數(shù)據(jù)采集應(yīng)用中,可以用r t_task_init()和rt_task_make_periodic()設(shè)置實(shí)時任務(wù)使其以固定的 間隔從I/O板采樣。這個任務(wù)用rtf_put()將數(shù)據(jù)發(fā)送到Linux進(jìn)程。該 Linux進(jìn)程應(yīng)該是一個循環(huán),不斷從FIFO讀出數(shù)據(jù),也許還要寫數(shù)據(jù)到 磁盤、或者通過網(wǎng)絡(luò)發(fā)送、或者顯示在一個X窗口中。FIFO象一個緩沖 ,因此Linux進(jìn)程不必非有實(shí)時性不可。 實(shí)現(xiàn)數(shù)據(jù)流系統(tǒng)看起來成為RT-Linux設(shè)計者的主要動機(jī)。但是FIFO機(jī)制 提供了一個實(shí)現(xiàn)信號燈的很好方法。兩態(tài)信號燈可以通過創(chuàng)建一個大小 為1的FIFO來實(shí)現(xiàn),V操作即為rtf_put(),數(shù)據(jù)內(nèi)容無所謂,同時忽略 返回的錯誤。P操作為rtf_get()。計數(shù)信號燈可以通過創(chuàng)建大小足夠容 納所期望V操作個數(shù)的FIFO簡單地實(shí)現(xiàn)。由此可見,F(xiàn)IFO機(jī)制提供了實(shí) 時應(yīng)用中任務(wù)同步所需的大部分功能。當(dāng)前的實(shí)現(xiàn)在RTOS用戶習(xí)慣的某 些功能上仍有欠缺,比如優(yōu)先級禁止(防止優(yōu)先級反轉(zhuǎn))和任務(wù)安全刪 除。但是仔細(xì)設(shè)計幾乎總能避免這些問題。此外,雖然FIFO操作可以在 沒有數(shù)據(jù)(讀FIFO)或沒有空間(寫FIFO)時阻塞,語法卻相當(dāng)復(fù)雜, 阻塞能力看來不是設(shè)計的重點(diǎn)。然而,至少有一個提供FIFO阻塞操作簡 單語法的努力正在進(jìn)行,同時還實(shí)現(xiàn)了阻塞超時,這是許多嵌入式應(yīng)用 的重要特征。RT-Linux簡單、開放的設(shè)計答應(yīng)用戶相當(dāng)輕易地實(shí)現(xiàn)類似 的附加功能。
  
   RT-Linux的一個有趣的方面是設(shè)計者使Linux內(nèi)核

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 仁怀市| 余干县| 马边| 安徽省| 呈贡县| 德格县| 吴旗县| 永宁县| 正定县| 江油市| 固安县| 霍城县| 宁蒗| 南木林县| 万年县| 泽库县| 通城县| 莆田市| 镇康县| 浦江县| 云龙县| 民权县| 祁阳县| 修文县| 唐山市| 镇赉县| 临邑县| 龙山县| 瑞昌市| 安丘市| 招远市| 湾仔区| 吴川市| 抚顺县| 安远县| 静安区| 丹巴县| 万州区| 陈巴尔虎旗| 永济市| 威海市|