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

首頁 > 開發 > 綜合 > 正文

Linux在嵌入式系統中的應用

2024-07-21 02:37:01
字體:
來源:轉載
供稿:網友

  摘要:linux系統不僅能夠運行于PC平臺;然而在嵌入式系統中Linux仍然可以大放光線。本文描述了嵌入式系統的特色,和如何在嵌入式系統中應用Linux。
  
   計算機用于嵌入式控制設備領域的歷史和計算機本身的歷史一樣久遠。最初的用于控制機電式電話交換器的通訊設備中“固態控制程序”就是嵌入式程序。“計算機系統”在當時并不普遍;所以固態程序存放在內存中控制相應的設備。在那種時代,運行控制程序是很先進的思想,而且當時也只能如此而已。
  
   那時的計算機是專為特定的用戶設計,非凡的應用程序指令、I/O設備和主要的計算設備集成在一起。微處理器的產生改變了這種局面,價格低廉、結構小巧的CPU和外設連接在總線上形成了比較大的系統。這種硬件架構很穩定,于是在這個基礎上,這建立起了通用的軟件開發環境和編程模式,且簡化了編程,。
  
   軟件也在隨著硬件的發展而發展;開始只有簡單的工具用于編程和調試,而且每一個軟件都必須從頭編寫。程序大都采用宏匯編語言,匯編程序還不很完善,調試是一件很麻煩的事。因此一直到70年代的中期,模塊化編寫程序和標準化的運行庫才逐漸流行起來。 在70年代的后期,出現了嵌入式系統的操作系統。它們采用匯編語言編寫,而且只能運行在相應的非凡處理器上;處理器過時,則這個操作系統就沒有用處了,對新的處理器必須重新編寫操作系統的所有代碼。C語言出現以來,采用C語言操作系統更有效率了,操作系統的編寫有了很大的改觀。C語言有很好的穩定性和可移植性,所以今天的許多操作系統都使用C來編寫。 于是在80年代末,出現了好幾個商業的嵌入式操作系統。而且它們已經演化成為今天的主流嵌入式操作系統。比如很有名的、使用者眾多的操作系統:Vxwork、pSOS、Neculeus和Windowss CE。
  
   不過很多的嵌入式系統還沒有使用操作系統,它們僅僅包含一些控制流程而已。在嵌入式系統相對簡單的情況下,這些控制流足以應付。但是,當嵌入式系統的功能復雜后,簡單控制邏輯就不夠用了,這時你必須使用操作系統。假如不使用操作系統將會使得控制系統邏輯結構復雜混亂,很輕易出錯。再者,有些嵌入式系統需要接入網絡系統,比如賓館的門鎖控制已經需要接入網絡,因此就更需要嵌入式的操作系統來支持應用軟件。
  
   除了商業化的操作系統外,還有其他的有版權要求的非商業化嵌入式操作系統可以使用。然而今天的Linux系統有著嵌入式操作系統需要的很多特色、突出的優勢:適應于多種CPU和多種硬件平臺,性能穩定,裁剪性很好,開發和使用都很輕易。因此,我們決定在嵌入式系統中使用Linux操作系統。
   1.它具有很好的工具,可以跨越ICE等屏障
  
   原來開發嵌入式系統的要害是需要一套好用的開發和調試工具;而且在開發所不同階段還需要不同的工具。就比如工匠,只有好的工具才能夠使工作完成得又好又快。
  
   傳統的開發調試工具就是ICE-在線仿真器;它取代目標板的微處理器,給目標程序提供仿真環境,同時可以連接監視器;答應開發者調試和監視程序的運行。盡管這種運行方式會引起一些希奇的問題,但是它總能夠讓你明了程序在目標板的工作狀態,免除了對底層的軟硬件接口的猜測。但是,這種設備價格非常貴。過去,甚至在整個開發期內,開發嵌入式系統主要依靠這些調試工具。 可是,我們發現,一旦軟硬件能夠正常支持串口的運行時,我們可以使用其他的調試辦法。現代的嵌入式系統采用相當成熟的微處理器。因此很輕易使得串口工作。串口連接成功,可以進行很多的開發調試。所以我們不用ICE也可以很好地開始開發和調試工作了,同時還降低開發費用。
  
   Linux利用GNU項目的C編譯器來編譯程序,使用gdb源程序級調試器來調試程序。它們提供了合適的手段來使你能夠開發嵌入式的Linux系統。為了開發基于Linux的嵌入式系統,可以按以下方法進行:
  
   向串口輸出提示字符串,例如“hello Word ”或“Waston, come here I need you!”等, 然后通過串口,指揮gdb開始工作。以這種方式和另外一臺運行gdb程序的Linux主機系統“交談”,通過串口,你可以很方便地讓gdb調試目標程序。通過串口和gdb通訊,可以進行C源程序級的調試。甚至你還可以以串口把其他的程序下裝到RAM或Flash存儲器。通過串口,使用gdb可以使得軟硬件的初始化代碼繼續運行到核心全部啟動。
  
   一旦核心在運行了,你就可以使用其他的更好的調試工具,象Kgdb等,假如連接了網絡,你也可以讓網絡工作起來。同時你就可以用GUI的xgdb來調試應用程序。
  
   2.滿足實時性時要求
  
   細細分析起來,大多數系統并不需要嚴格的實時性。而嵌入式系統也經常被誤解為就是實時性系統。其實,多數嵌入式系統并不需要實時性,而且實時性本身是個相對的概念絕對的實時性是指對需要的服務以限定的方式和在限定時間內提供,比如在微秒級內響應。
這種硬實時性功能只是針對非凡的設備而言 ,例如數字信號處理等。而這些要求使用非凡的硬件 如FIFO、DMA 和其他非凡設計的硬件 也可以滿足 。
  
   有些設計者不能夠準確地分析出系統真正實時需求,很多情況下對實時的需求在1-5 毫秒內響應 就可以;大部分情況下,軟實時響應足以滿足要求:WINDOWSS 的98Crashed_Yet 在98% 的時間內可 以在4 每秒內響應 ,假如時間是20 秒,則總會響應。那些軟實時性輕易滿足。需要考慮的因素包括:上下文轉換時間、中斷延遲、任務的優先級和任務調度方式。上下文轉換時間曾經是實時性分析的重點,但是因為CPU速度大幅度提高,它不再是要害問題。
  
   現在,嚴格要求的實時性任務的決定因素是中斷例程本身和內核中的其他驅動程序有關;而響應延 遲時間主要受中斷的優先級和其他進程會暫時地關閉中斷響應的影響。因此治理和驅動中斷的機制必須 保證實時要求。
  
   對于Intel x86處理器,實時擴充可以在Linux 系統中很輕易進行,RT-Linux 就是很好的例子(見http://www.rtlinux.org/)。 它主要是把Linux 的任務作為自己的一個任務,因此實時性要 求很高的任務不受非實時的Linux 的干擾,可以得到滿足。另外還提供了實時任務和Linux 的基本核 心和其他任務間的接口,這些接口是不需要很強的實時性。這種架構為其他的嵌入式系統提供了一個參 考。要害因素就是實時性的代碼和非實時代碼分開設計,而且實時應用程序的處理方式和其他程序的處 理方式差不多。
  
   3. 適合嵌入式系統的Linux 有一種觀點認為 :
  
   用戶不必直接干預機器的運行,即沒有用戶接口的應用系統是嵌入式系統。其他的比如電梯控制 系統應該是嵌入式系統,但是它需要人為控制 。連接網絡需要監視和控制網絡系統運行的系統 ,仍 然是嵌入式系統;因此應該根據系統的主要目的和功能來判定是否是嵌入式系統。
  
   最小的嵌入式Linux 系統必須包括以下主要的要素:
  
   1.啟動程序 ;
  
   2.融合了內存治理、進程治理和時間分批服務的核心;
  
   3.初始化程序。為了達到要求,而且為了保持最小系統,需要添加以下要素:
  
  硬件的驅動程序;
  必須的應用程序。 根據其他需要, 你可能增加以下功能:
   1. 文件治理系統( 在ROM 或RAM中);
   2. TCP/ip 通訊協議;
   3. 磁盤。
   4.選擇合適的硬件平臺選擇硬件平臺是一件很麻煩的事,受很多因素影響,比如公司的指導原則、個人偏見、過去產品的影響和消息不靈通等。費用是考慮的主要因素。提醒你考慮價格時不要只注 意CPU 的價錢,要對整個系統進行考慮。但是假如你是系統設計師,你必須把軟件的實時性和硬件結合起來考慮。首先考慮需要多快的CPU,然后把選擇三倍化的結果;因為在實際中應用程序會使用一些cache( 緩 沖),所以理論上速度很快的CPU的實際速度會降低。其次考慮選擇多快的BUS( 總線); 假如可以包括其他的總線,比如PCI,就加上它。因為有時即使使用DMA方式傳輸,也會使快速CPU 變得象蝸牛一般。選用集成外設的CPU比較好,而且還可選用現成的外設驅動程序 ,大大減少調試工作,實際上有些芯片集成的功能并不是我們所需要的,所以也不要認為凡是集成的都是好東西。
  
   5.壓縮制作 Linux 系統對Linux 的通常感覺是大,似乎不適合于嵌入式系統。事實并非如此。 因為典型的發行Linux 集成了很多桌面PC 機需要而嵌入式系統并不需要的功能。首先 ,我們可以把 核心(kernel) 從其他任務中分離出來。標準的Linux 核心總是貯留在內存中;當需要應用程序時, 它把需要的程序從磁盤調入內存運行。程序運行完畢,內存清空,卸載程序。在嵌入式系統中 ,經常 沒有磁盤 。 目前有兩種辦法來處理沒有磁盤的情況。對于比較簡單的系統,核心(kernel)和應用 程序同時貯留在內存 ,當系統啟動時,就啟動應用程序。這種方式和以前的嵌入式系統一樣工作。Linux 系統也支持這種方式。 第二種方式是,考慮到Linux 有load ( 裝 載)和unload( 卸 載)程序的能力,嵌入式系統也可以使用這一特點,來節約內存。假如有一個典型的嵌入式系統:包 括8 到16 M 的Flash Memory 和8 到16 M 的RAM ;可以在Flash Memory上建立文件系統,使用Flash 的驅動程序來驅動Flash Memory上文件系統工作。 另外,也可以使用Flash Didsk, 其中有 一個例子是M-system 的DiskOnChip, 它可以支持達160 M 的Flash Disk。 把使用的應用程序文 件存放在Flash 文件系統上, 根據需要調入程序。 這種動態裝入方法有很多優點:
   (1) 因為在Linux 中有一些應用程序只是在初始化時使用一次,然后就沒有用處了,另外它們 運行方式是一個接一個, 順序進行的 。可以答應初始化

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 城固县| 永顺县| 水富县| 寿光市| 沙坪坝区| 运城市| 平昌县| 牟定县| 咸丰县| 本溪市| 东乡县| 宜黄县| 新民市| 监利县| 临沭县| 运城市| 古蔺县| 临武县| 辽阳市| 博白县| 沧源| 夏河县| 诏安县| 曲麻莱县| 富宁县| 博野县| 茌平县| 诸暨市| 双辽市| 肇东市| 浦城县| 凉城县| 且末县| 高碑店市| 齐河县| 海南省| 师宗县| 定远县| 荥阳市| 淮北市| 双辽市|