導航:首頁 > 操作系統 > 風河linux

風河linux

發布時間:2023-08-12 02:49:38

1. linux能實現「硬」實時性能嗎

對Kevin Morgan來說,硬實時Linux工程是一件需要下決心的事。不在乎嵌入式工業界的
質疑,不在乎那些嘗試編寫硬實時Unix內核的努力都以失敗告終,Morgan僅把它視作一項
單純的挑戰。

「這不是火箭式的科學,」MontaVista軟體公司工程副總裁 Morgan表示,「它是一件類
似舉重的苦差。」

前不久,MontaVista發布了硬實時Linux內核的參考實現方案,並聲稱其遠遠超過現有各
種Linux版本的實時能力。在未來幾個月,這家開放源代碼軟體開發商將圍繞此項新技術
與Linux 團體展開合作。與此同時,MontaVista計劃在2005年初發布一款基於實時內核
的產品。

「我們將與開放源代碼團體合作,但在將這些技術推向市場以前,我們不會坐等用戶采
用它們,」Morgan說。

一旦得到採用,MontaVista的「開放源代碼實時Linux項目」將為Linux在移動手持設備
和電信交換設備中開辟一個新的市場空間。在這些領域,為了確保實時響應,設備必須
有一個單獨的實時操作系統(RTOS)。此外,該技術還能應用於其它行業,如工業自動化、
國防和航天等實時能力至關重要的領域。

「如果能提供一個硬實時內核的穩定版本,他們顯然將比其它公司具有優勢,」Gartner
Dataquest 公司高級分析師Daya Nadamuni表示,「擁有實時Linux將會加速深度嵌入式
領域對Linux的接受。」

「實時」的使命

在過去三十年,其它公司也曾嘗試為類似Unix的操作系統內核提供實時性能。早期的Unix
衍生產品,如Silicon Graphics的Irix、惠普的HP-UX以及Sun的Solaris,都曾試圖提高
響應特性和可確定性,但只獲得有限的成功。最近,開放源碼團體發布了Linux2.6版,它
可提供一些有限形式的實時性能。

然而,MontaVista計劃把Linux的實時性能提升到更高層面。該公司宣稱,它的努力將實
現兩到三個數量級的改進,提供響應時間為100微秒的硬實時性能。盡管沒有嚴格的定
義,「硬」實時性能一般是指系統每一次都可滿足規定的時序要

求的能力。大多數這樣的
系統提供幾毫妙或更短的響應時間。另一方面,「軟」實時系統能滿足大部分但不能滿足
全部的時序要求。

「這大大減少了延遲時間,從而獲得更好的響應特性。」MontaVista的移動和無線產品
經理Jacob Lehrbaum表示,「最終,我們的目標是讓其實時性能與專有RTOS一樣好。」

MontaVista設想該實時軟體將被應用在雙處理器智能手機和單處理器低端手機上。該公
司的工程師還預測它會被用在電信交換和基礎設施設備上,幫助降低這些設備的成本。

「我們已經看到通信市場對Linux具有強大的牽引力,因此這是我們將專注的領域。」
Lehrbaum說。

不過,實時Linux內核的影響將遠遠超出通信市場。實時操作系統在許多工業領域都是至
關重要的,包括工業自動化、機械設計、國防和航天等。另外,開發者都期待實時Linux
版本的出現。在今年上半年Venture Development公司的一份報告中,工程師們認為實時
限制是阻礙Linux得到廣泛應用的最重要因素。

MontaVista的工程師表示,盡管他們並沒有打算瞄準通信以外的實時Linux市場,但相信
改進的Linux內核能夠被應用在其它領域。「我們還沒有討論把Linux推入到智能炸彈或任
何傳統的超實時嵌入式應用中。」Lehrbaum說,「但這項技術能滿足其它工業的需要。」

迄今為止,Linux還從沒有被視為一種真正的硬RTOS。在過去,Linux一貫迴避需要以精
確的時序運行軟體或者總要求滿足規定截止時間的應用。

事實上,那些想要實時Linux的人有一個選擇:實時擴展。例如,FSMLabs公司的產品將
Linux作為一種實時操作系統的非實時線程來運行。自1996年開始,FSM就一直在成功開發
這種系統。業界的許多工程師都公開懷疑是否還能更進一步。「人們試圖使HP-UX和SGI
Irix實時化。但沒有人能夠創建一個通用Unix內核,完成RTOS能做的所有事。」 FSM公司
CEO Victor Yodaiken說。

然而,MontaVista宣稱它已經達到這種水平,並希望獲得Linux團體的支持。它的關鍵技
術是對Linux內核架構的兩方面改進:多任務和優先權。

該公司表示,它正在改進Linux的多任務能力,以便實時任務能夠在任意時間搶占其它任
何任務的優先權。「如果實時應用需要訪問內核中一個鎖定的關鍵區域,那麼在鎖定區域
的應用程序將更新優先順序,從而讓實時應用可以完成它的任務。」

Lehrbaum說。

MontaVista的工程師表示,他們還改進了優先權能力,使硬體任務不再能搶占其它任務。
這種新的方法允許系統按優先順序排列硬體事件,這樣硬體任務就不再能搶占更重要的實時
任務。

MontaVista預計明年推出基於該技術的產品。該公司還透露,它正在與客戶合作將這項新
技術應用到他們的嵌入式產品中。「我們的策略是向開放源碼社群推廣該技術,並鼓勵合
作和採用。」Lehrbaum說,「當你在內核OS級增加專有擴展時,這將導致與單家供應商捆
綁在一起。這與真正的開放源碼是不相同的。」

專家們承認,Linux最終能實現真正的實時性能,但這樣的性能需要重大的創新。

「許多熟悉Linux的人都決定走擴展路線,」Real Time Development 公司的總裁Nat
Frampton表示,「為了獲得硬實時性能,你不得不重寫大部分Linux。這是有可能的,但
絕不是一件小任務。」該公司專注於開發實時軟體系統。

競爭對手也對MontaVista的技術基礎頗有爭議,主要是因為Linux2.6版只能提供很粗略
的實時性能。FSMLabs 的Yodaiken表示,在使用該版本Linux的應用中,他們很容易導致
高達0.5秒的非實時延遲。他指出,這些延遲的原因是Linux在本質上仍然是非實時的。
「要設計一台具有靈活轉彎性能的混凝土攪拌機是很難的,」他解釋說,「你或者要跑
車,或者要混凝土攪拌機。他們不可能是相同的東西。」

競爭對手還質疑軟體開發商能否把新技術推廣到開放源碼團體。「技術上,我們正越來越
接近實時,」風河系統公司首席行銷官 John Bruggeman表示,「但即使技術是可行的,
要讓開放源碼團體接納和採用它卻是一件非常困難的事情。幾家供應商曾試圖在開放源碼
團體中推行該技術,但沒有得到擁護。」

然而,MontaVista的執行官們辯解說,在HP-UX、Irix 和Solaris方面的類似努力之所以
不成功是因為他們瞄準伺服器和工作站市場,而沒有考慮嵌入式市場的需求。此外,
MontaVista表示他們已經與開放源碼團體合作多年,知道它運作的方式。「我們利用過去
在這個領域的成果,並增加我們自己的關鍵技術。」MontaVista的Morgan表示,「我們從
開放源碼團體獲得力量。」

2. 考研想了解更多關於這個專業的東西,Linux與嵌入式系統

這篇文章指引了我,希望它也能指引你

近些年來,嵌入式系統的發展在國內可謂如火如荼,很多公司都急需嵌入式系統方面的開發人員。然而,在高校中,嵌入式系統的教學卻較為滯後,很多高年級的本科生和剛入學的研究生都苦於不知從何學起。在本文中,筆者將根據自己的嵌入式系統開發和教學經驗,簡要介紹嵌入式系統的學習方法,力求能幫助初學者找到一條入門之路。
什麼是嵌入式系統?
學習嵌入式系統,首先應該明確什麼是嵌入式系統,否則費力去學,卻不知所學為何物,豈不惘然?嵌入式系統的定義很多,這也是困擾嵌入式系統學習的一個因素。筆者根據自己開發和教學過程中的理解,以及對各種嵌入式系統的應用進行總結,提出了嵌入式系統的簡單定義:嵌入式系統是嵌入式計算機系統的簡稱,這個定義突出嵌入式計算機系統和普通計算機系統的共性。下表列出了嵌入式系統的一些典型的
應用:
智能機器人(S D R 4,火星登陸車)
娛樂和消費電子(Gameboy Advance,Sony PSP)
網路通信產品(Smartphone)
軍用設備(軍用PDA )
汽車(車載導航,自動駕駛,娛樂系統)
智能儀器(虛擬儀器)
安全防護(防火,防盜)
環境保護(探空氣球)
銀行和商業消費(ATM)
以火星登陸車為例來分析一下嵌入式系統的定義。火星登陸車雖然聽起來感覺在技術上有些高不可測,但是本質就是嵌入式計算機系統的應用,其核心就是一個計算機系統,而這個計算機系統的組成同傳統的計算機系統在本質上沒有什麼差別。兩者的顯著不同之處就在於,用於火星登陸車的計算機系統被安裝到了火星登陸車上。當然,一個計算機系統能夠被安裝在火星登陸車上,是需要進行很多特殊設計的。但是從本質上講,嵌入式系統的核心概念還在計算機系統。嵌入式系統學習的重點也在計算機系統上。一方面,學習者需要牢固掌握計
算機系統本身的概念,更重要的是學習嵌入系統的開發過程同傳統計算機系統開發過程的差別。這里需要指出的是,很多學習者本來就沒有從事過完整計算機系統的開發,高校的教學是以程序設計為中心的,計算機系統的構成,操作系統的原理,編程語言等課程都是為了能夠讓學生更好的使用計算機系統進行程序設計,在現有的計算平台上來設計實現各種應用,學生一般沒有機會學習一個完整的計算機系統是如何構建,並親身參與到構建的每一個過程。而對於嵌入式系統而言,從事平台開發的人就是要親自去開發出一個完整的計算機系統,這個過程包括
l 需求分析
2 硬體設計
3 驅動程序
4 Bootloader & BSP (板級支持包)
5 操作系統的移植
6 應用程序的開發
7 性能檢查
嵌入式系統教學的目的就是教會學生如何根據需求去建立滿足某種特殊行業需求的嵌入式計算機系統。讓學生學會如何構件硬體平台,進行硬體設計,選擇能夠滿足應用要求的最佳的嵌入式操作系統,並完成Bootloader,BSP 和驅動程序的編寫,移植,調試等過程。為了滿足行業需求,最終要在所建立的系統上編寫調試相應的應用程序,並進行性能的測試和檢查。
你是誰,你需要學習哪些東西?
如果你的工作只是需要在PC 機上編寫一個圖片瀏覽程序,那麼你就沒有必要去了解當系統收到一個ARP 請求包後應該如何回應。同樣的道理,嵌入式系統的學習也是有很多方面的。就嵌入式系統的設計和實現而言,基本上需要四種不同的工作:系統設計工作,硬體設計工作,驅動程序和操作系統移植工作和應用程序設計開發工作。
系統設計工作
在系統的設計階段,系統分析師將根據需求確定系統的硬體的基本構成,根據系統的需求選擇使用那種處理器,使用哪種操作系統,使用那些軟體開發工具。系統分析師往往是較為完整的參與過嵌入式系統設計的全過程,對於系統應用的行業較為了解,對於嵌入式系統
本身的開發流程十分清楚的人。
硬體設計工作
系統硬體設計人員需要根據系統分析師的設計結果,進行硬體原理圖的設計。通常需要硬體設計人員熟悉嵌入式系統的硬體構成。硬體設計人員需要了解常用的嵌入式系統處理器,存儲器(Flash,SDRAM),乙太網MAC晶元,音頻/ 視頻編解碼晶元,電源管理晶元,匯流排介面電路 (USB, PCI),液晶顯示模塊,可編程邏輯器件(FPGA/CPLD),無線網路通信模塊(Bluetooth, WLAN,GPRS)等硬體電路構成元素的基本工作原理,連接使用方法,使用注意事項,基本調試方法等內容。在網路上能找到很多公司的評估板的原理圖,對於這些原理圖要仔細研究,摸清處理器同存儲器,網卡,液晶模塊等器件的連接方法和原因。通過對這些電路的研究,能夠較快地了解整個嵌入式系統的構成,這些電路同實際產品中的電路雖有一定差別的,特別是對於手持設備,但這些差別不影響初學者學習嵌入式系統的硬體設計基本構成。
以上這些知識,往往需要較長時間的學習和積累,需要親自參與實踐的機會。對於剛剛接觸嵌入式系統硬體開發的學生來講,一般不可能全部了解這些知識,但也不會是通通一無所知。筆者結合自己開發和教學的經驗認為:首先應該選定一款主流且較為簡單的嵌入式系
統處理器,比如基於ARM7TDMI 內核的AT91M40800,S3C44B0 等嵌入式系統處理器,學習32 位RISC 處理器的編程模型,指令集。高校教學中,單片計算機課程一般以8051系列單片為核心講解,由於現代32位處理器的結構和開發方式同8 位單片機有著較大的差別,學習者還是需要花一點力氣來研究以下32 位處理器的。以ARM處理器為例,學習者就需要理解處理器的多種工作模式,備份寄存器,RISC 指令集的特點,MMU 和虛擬地址,中斷處理過程等內容。在學習指令集的過程中,最好能夠每學習幾條指令,就使用這幾條指令在模擬器上實驗以下,觀察處理器執行的結果。這個過程一方面是學習者對於指令本身的學習能夠取得一個比較好的效果,另外也是對開發工具本身的一種學習。接著,就可以開始學習片上資源的使用和配置方法。這時就需要一個方便使用的開發板,學習者能夠通過JTAG 模擬器將開發板同調試PC 機相連,進行程序的下載,調試。特別是要仔細研究系統的初始化過程和中斷處理的過程。在開發過程中如果遇到問題,應自己分析問題產生的原因,通過分析縮小問題可能產生的范圍,最終找到問題的所在。最重要的就是要保持一種解決問題的信心,面對困難如何處理,往往能夠決定最終系統是否能夠調試成功。然後,學習者可以開始仔細學習處理器同存儲器的連接,存儲空間的配置,各種外擴器件,如網卡,AC97音效卡的工作原理和使用方法。嵌入式系統硬體設計中往往需要使用可編程器件,學習者還需要一定的時間來學習使用常用的可編程器件(C P L D / F P G A ),常用的有Xilinx和Altera公司的產品。進行系統硬體原理圖設計,就需要使用原理圖設計的E D A 工具,常用的E D A 原理圖設計工具主要包括Cadence公司的Capture,Protel公司的Protel99 SE等。接下來就可以參照評估板的電路圖,根據系統的設計要求,開始進行原理圖的繪制了。在原理圖繪制過程中,一定要搞清評估板電路連接的原因,對於一時沒有搞清楚的問題切不可矇混過關。例如,有些處理器的地址線是以位元組位單位的,而另一些處理器的地址線則是以兩個位元組為單位的,當連接16 位的存儲器的時候,切不可想當然的把處理器的A 0 直接連接到存儲器的A 0 上面。另外,學生還應具有一定的P C B 板圖繪制能力,因為在現階段,很多公司還不能完全把原理圖的設計工作和PCB 的繪制工作分開,往往要求硬體設計人員既能進
行原理圖設計又能進行板圖設計。即使是PCB設計和原理圖設計分開的公司,也需要原理圖設計者能為PCB 的設計者對於不同的信號提出布板要求。
驅動程序和操作系統移植工作
現代嵌入式系統的開發同傳統8 位單片機系統的開發相比,一個顯著的區別就是嵌入式操作系統的廣泛使用。在拿到焊接完畢的電路板,並進行基本的測試後,就要進行驅動程序和操作系統的移植工作了。首先要進行的Bootloader的編寫和移植工作。Bootloaer相當於PC系統的BIOS。對於有些嵌入式操作系統,如uc/OSII 沒有bootloader同樣可以開發調試。但是對於Windows CE和嵌入式linux系統而言Bootloader就是必須的了。本文以
Windows CE 為例,做一個簡要的說明。
Windows CE 系統的移植工作主要就是BSP(板級支持包)的開發過程。B S P 將具體的硬體差異同操作系統的核心隔離開來,主要由Bootloaer ,OAL (OEMAbstraction
Layer)和設備驅動程序三部分組成。WindowsCE系統中Bootloader叫做Eboot。Eboot被寫入系統的引導Flash。系統啟動時運行 Eboot,完成通過網卡將調試PC 機中Windows CE 操作系統映像下載到目標系統的S D R A M 中並開始執行的功能。對於一個系統移植人員,首先需要閱讀文檔,了解Windows CE系統Bootloader和BSP的基本概念和開發過
程。(呵,還要做這工作啊,我還沒想到(初學^_^))Windows CE的開發系統Platform Builder提供了詳細的文檔和常式,開發人員需要仔細的閱讀文檔和常式。搞清楚各個函數之間的調用關系。在開發過程中的一個重要的步驟就是打通串口,使得目標板能夠通過PC 機串口向調試PC 機發送數據。由於A R M 系統的模擬器比較昂貴,而且操作系統的調試往往不使用JTAG 調試器進行單步調試。所以能從串口觀察程序的執行過程和結果對於調試就顯得十分重要了。串口打通之後一個比較棘手的問題就是網卡晶元的調試。剛剛接觸嵌入式系統開發的人往往沒有直接在寄存器級上使用網卡晶元的經驗,而網卡晶元的說明一般都較為簡短,這就要求開發者學習一些乙太網的基礎知識,對乙太網的 MAC 層有一個基本的認識。另外,各種網路調試(抓包)工具的使用也能大大降低系統調試的難度。系統的O A L 需要根據具體硬體的不同做出相應的修改,這個部分可次參照文檔進行,在調試過程中根據串口的信息分析出錯的地方。要充分發揮跨文件字元串搜索工具的功能,在浩如煙海的源文件中找到出錯的位置。當然,隨著開發者對系統文件目錄結構的熟悉和了解,錯誤定位的速度會不斷加快。Windows CE 的驅動程序相對而言是比較好寫的。程序結構較為簡單,學習者可參照 http://msdn.microsoft.com/library/default.asp MSDN Home > MSDN Library >Mobile and Embedded Development > Embedded Operating
System Development > Columns SPOT the Geek and WindowsCE Drivers 這篇文章。
應用程序的開發
嵌入式系統的應用程序開發同在PC 機上開發應用程序的區別不是很大。對於W i n d o w s C E 系統而言,Microsoft已經提供了較為完善的開發工具。特別是.NET Compact Framework 的使用,使得基於Windows CE.NET Compact Framework的應用程序有了跨平台性。開發人員可以使用Windows 的C# 語言直接在PC 上進行CE .NET應用程序的開發和模擬調試,也可將目標系統同PC 機相連,進行聯機調試。現在有很多系統支持J2ME(JAVA 的嵌入式系統版本) ,這使得JAVA 在嵌入式系統應用開發中佔有較大的
優勢。另外,作為專業的嵌入式系統軟體開發人員,還需要充分了解面向對象技術和設計模式等方面的知識,當然作為初學者可以先不深入研究這方面的內容。
常用嵌入式系統處理器和操作系統
處理器
常用嵌入式系統處理器主要包括A R M 處理器,Power PC 處理器,基於MIPS 內核的嵌入式處理器,軟核處理器(如Alter 的Nios和Xilinx的MicroBlaze等)和D S P(數字信號處理器)等。
A R M 處理器的主要特點是具有較高的性能功耗比。A R M 處理器被廣泛的應用在手機,P D A 等領域,其中較為著名的有Intel 公司生產的基於ARM 內核的XScale系列處理器。由於所有公司生產的基於ARM 內核的處理器具有相同的編程模型,在手持和電池供電的系統中,基於A R M 的嵌入式系統處理器往往被首先選用。PowerPC (簡稱PPC)處理器具有較強的運算性能和數據吞吐能力,在網路和數據通信領域基於PPC 的嵌入式系統處理器有著廣泛的應用。其中Motorola公司生產的MPC860/MPC8260 被大量地應用在嵌入式網路產品中。MIPS 處理器的特點表現在十分強大的處理能力上。作為高性能處理器,MIPS 處理器適用於網路、企業及高級消費類電子應用,特別是在機頂盒系統中,MIPS 處理器具有較高的市場佔有率。隨著可編程器件的規模不斷擴大,使得人們能夠根據需要定製處理器,並方便的將針對某種特殊應用定製的處理器方便的在可編程器件內部實現。除了處理器外,計算機系統還需要許多其他構成部分,比如在多通道媒體數據處理系統中,經常需要使用可編程器件來實現高速的數據處理功能,使用軟核DSP 來實現復雜的數字信號處理演算法,同時還需要處理器進行事務處理,軟核處理器將可編程器件,D S P 同處理器結合在一起,為系統級設計提供了極大的靈活性。D S P (數字信號處理器)有別於通用處理器,集中表現在其強大的數字信號處理能力上。在DSP 內部提供了硬體乘累加器,處理器在設計上對於特殊的定址方式做了優化,一些DSP 還支持零耗循環(Zero OverheadLoop)。為了方便嵌入式系統設計,主流DSP 一般也都提供了豐富的外設。特別值得一提的是A D I 公司的Blackfin 系列DSP 和TI 公司的DM64X 系列DSP,兩種處理器都提供了豐富的片上外設,非常適用嵌入式系統應用。
操作系統
Window CE.NET/5.0
作為Microsoft的產品,Window CE.NE/5.0提供了功能完備的平台開發工具Platform Builder和應用開發工具Embedded Visual C++/Visual Studio 2003。Windows CE由於擁有廣大使用者所熟悉的windows 界面,系統提供了眾多驅動程序,並且有完備的文檔支持。對於應用開發而言,熟悉Windows 系統開發的程序員很容易轉到WindowsCE 應用程序的開發。Windows CE將會是一個非常有前途的嵌入式操作系統。
VxWorks
VxWorks 是由Windriver(風河)公司出品的嵌入式實時操作系統,大名鼎鼎的火星登陸車就是使用了VxWorks。Windriver 為VxWorks 提供了集成開發環境tornado。
υC/OSII
υC/OS是由Jean Labrosse設計編寫的開放源代碼的嵌入式實時操作系統,筆者最早接觸的嵌入式操作系統就是它。閱讀並深入理解υ C/OS 的源代碼對於理解實時系統是大有裨益的。
ARM Linux
ARM linux是由Russell King和其他開發者開發移植的用於ARM 處理器的linux操作系統。 ARM Linux系統在GNU GPL下發布。有興趣的讀者可以參看
http://www.arm.linux.org.uk/docs/whatis.shtml的介紹。
υ CLinux
υ Clinux 是適用於沒有MMU 的嵌入式處理的LinuxOS 版本。υ Clinux 同樣在GNU GPL 下發布,有興趣的讀者可以參看
http://www.uclinux.org/index.html
嵌入式系統開發過程中的常見問題和解決方法
Bootloader如何寫入Flash ?
初學者一般都會遇到如何將程序寫入處理器的問題。對於不同的處理器,可以採用不同的方法。例如Intel的Xscale處理器可以使用Intel公司提供的JFlash工具燒寫。對於具有JTAG 調試工具軟體的處理器,可以使用如下思路:編寫一段程序,這段程序能將位於SDRAM/SRAM 固定地址中的數據寫入Flash 中。燒寫時,首先,將這段軟體下載到SDRAM 中,然後通過調試軟體將要寫入Flash的數據下載到S D R A M / S R A M 的某個固定地址開始的緩沖區,然後通過調試器開始執行程序,將數據寫入Flash。除此以外,網路上還提供了很多專用的寫Flash的工具,開發者可以根據自己的需要選用。(現在明白了我在學的那個BF533為什麼先下個flashProgramer.dxe先了)
什麼是arm-elf-gcc?
arm -elf-gcc是一個交叉C語言編譯器。我們在PC平台下編譯程序,編譯器運行的處理器同生成的代碼將要運行的處理器相同。但是,在PC 機上編譯ARM 程序時,編譯器運行的處理器同生成的代碼運行的處理器不同,這種編譯器叫做交叉編譯器。其中的elf是指編譯器生成的目標文件格式。(其實我們平時用的單片機編譯器如GCC—AVR等已是交叉編譯器了,我到現在才弄清楚什麼是交叉編譯器)
走了哪條編譯路徑?
系統程序和驅動程序往往包含很多的編譯選項,很多選項都是在編譯時通過命令行定義的,如果想知道編譯的是那一段程序可以使用如下的方法:
#ifdef PLAT_AAA
#error Code for Platform AAA
#else
#error Code NOT for Platform AAA
#endif
這樣在編譯的時候就知道,編譯的是哪一條路經了。對於支持#pragma message( 「I am here」)的編譯器也可使用#pragma message預編譯指令。
我怎麼知道那段代碼在那個文件中?
系統編程中經常需要使用在多個文件中搜索字元串,在windows平台下可以使用平台提供的多文件字元串搜索工具。在linux平台下,可以使用grep來搜索字元串。Grep 的搜索功能十分強大,支持正則表達式搜索,熟練使用grep對於閱讀系統和驅動程序代碼是很有
幫助的。
系統是從那個文件開始運行的?
對於W i n d o w s C E 系統,一般從
W I N C E 4 2 0 \PLATFORM\YourPlatform\KERNEL\HAL 目錄的某個匯編文件中。對於Linux 系統版本不同會存在一定差異,以arm處理器為例,一般會在linux2.4.x\arch\arm\kernel的head-armv.S中。
程序執行到了那裡?
可以在程序中插入如下代碼來實現
printf( 「I am here %s, %d\n」,__FILE__, __LINE__);
代碼將打出printf語句所在的文件名和行號。
推薦書目
Jean J.Labrosse MicroC/OS-II The Real-Time Kernel,Second Edition
這本書是筆者接觸嵌入式實時系統的入門書,在國內能夠買到中文版。這本書較為清楚地講述了實時系統的概念,各個組成部分的工作原理,特別是公開了實時系統內核的源代碼,仔細研究定會受益匪淺。有個小的提示,對於初學者,這本書可以先不看第一章,直接從
第二章看起。
Abraham Silberschatz, Peter Baer Galvin,Greg Gagne Operating System Concepts
筆者在教學過程中發現,無論是計算機還是電子工程專業都有很多學生對於操作系統的基本概念都沒有搞清,很少有學生有完整的系統編程經驗。Operating SystemConcepts這本書對操作系統的感念講述只能用經典來形容。對於嵌入式系統有興趣深入研究的同學,首先
要把基礎打好,這本書就成了必讀之物了。
Andrew S. Tanenbaum Computer Networks
提起Andrew S. Tanenbaum 學習計算機的同學一定都知道OPERATINGSYSTEMs:Design and Implementation這本書,筆者對於Tanenbaum 這樣的教授由衷佩服。網路協議棧是嵌入式系統中的支柱性組成部分。願意致力於網路深層技術研究的同學,這本書將你們建立一個堅實的網路基礎。
Karim Yaghmour Building Embedded Linux Systems
本書詳盡的介紹了嵌入式linux系統的組成,基本概念和如何去建立各個部分。全書篇幅較小,可謂短小精悍。即可以作為嵌入式linux 系統的入門讀物,又是開發過程各個部分的指南。
Advanced RISC Machines Ltd (ARM) ARM7 TDMI
Data Sheet
Advanced RISC Machines Ltd (ARM) ARM920T
Technical Reference Manual
學習嵌入式系統不了解當前應用最廣泛的嵌入式處理器怎麼行? ARM7 TDMI 的 data sheet是學習ARM編程模型,指令集的好東西。在嵌入式系統中,M M U (內存管理單元)是很重要的部分,又是較難理解和掌握的部分。ARM920T Technical Reference Manual 正好可以幫你講解這方面的內容。
Perter Van Der LinDen Expert C Programming
嵌入式系統級編程最常用的語言還是C 。很多同學都自認為自己的C 語言學的很好,那好,就看看這本書吧,找找自己和Experts差距。
註:這篇文章是我在2004年第12期的學習園地看到的。文章的作者是袁通
作者簡介
袁通,北京工業大學實驗學院嵌入式系統課程教師,曾於2 0 0 4 年以訪問學生身份工作於微軟亞洲研究院。
看完這篇文章後,我就迫不及待得貼出來,因為確實是寫的好啊。我搞嵌入式一年多了,從8051到ARM,學習過,彷徨過,高興過,郁悶過。。。近來甚至有放棄的想法,終歸到底是對嵌入式開發認識不全面造成的,一開始就一頭鑽到技術里,學習各種技術,最終迷失在自己一手造成的泥坑裡。這篇文章非常清晰的講述了嵌入式開發的方方面面,對我這樣迷惑的人起到了醍醐灌頂的作用。
嵌入式開發與桌面開發既有不同,又有非常大的聯系,而且十分注重實際操作能力。搞桌面開發的人在一開始接觸嵌入式的時候,通常轉換不過來,這主要體現在定位上。如文中所說,你是誰,你要做什麼?我對硬體的了解僅限於編程領域,PCB設計一竅不通,但並不能說你不懂硬體就不能從事嵌入式開發。一個系統的開發設計方方面面,在自己感興趣和熟悉的領域做出自己的貢獻才是最主要的。
1。硬體設計: 需要有硬體設計的經驗,對各種嵌入式器件有很好的了解。
2。系統移植:需要匯編經驗,操作系統原理以及底層驅動的了解
3。應用程序:需要桌面編程經驗

3. 怎麼學習VxWorks系統

VxWorks用的公司相對不是太多,並且如果學會Linux,再學VxWorks並不困難,反過來則有一定困難。VxWorks比Linux的優點是實時性好,在開發方面調試工具之類的比Linux好,但是國內你要找到一個很懂VxWorks的人不多,但懂Linux的就很多。入門的話,學好C語言,試著移植一些驅動到VxWorks里即可,VxWorks兼容POSIX規范,我想你開發的難度應該不是特別大。利益相關:用了5年的VxWorks,也開發了5年的VxWorks的代碼(從6.7至今)。用VxWorks久的人都會感覺它太小了,但它開發實在是太方便了,有調試器,有完整開發套件。在有開發環境的地方,幾分鍾就能建立一個工程,編譯一個image,甚至可以放到PC機上跑。不說實時性之類的技術問題,單說入門,就很快的,比重新編譯Linux內核之類的容易的多,我自己實驗過裁剪Linux內核,真是頭大的事情。VxWorks跨平台做的很好,自帶的BSP在發布的時候都經過比較嚴格的測試,比起Linux來說,各種莫名其妙的硬體錯誤很難遇到。有人講到VxWorks像Unix,我覺得不像,至少從我看到的代碼上看,幾乎沒有Unix的東西,只不過是兼容部分POSIX API而已。在VxWorks上做二次開發就需要了解它的具體技術細節了,相對而言,我覺得跟別的系統的驅動差不多,無非就是信號量、內存、進程這些東西。如果你喜歡,用標准C的庫也可以實現大部分功能。VxWorks的缺點也很多:文檔太少,做這個的人不多,授權太貴。網上能找到的盜版都是5.5的,但官方都出到6.9了,說實話我真不喜歡5.5的那一套東西,太過時了,但要真找一套6.9的又有困難,授權費太貴。而且5.5不穩定、功能少(版權問題,我不敢放6.9的截圖,但就組件的個數方面就差別太大了)。對於Linux來說,通常是裁剪很費勁,編譯一堆問題,但找相關的文檔也容易,如果英文好,去混混社區,總能找到答案,前期入門很難,熟悉以後會容易。而用VxWorks,後期的開發遇到困難就很難找到能幫上的人。

閱讀全文

與風河linux相關的資料

熱點內容
峰火戰國什麼時候能開伺服器 瀏覽:452
加密的pdf怎麼提取和修改 瀏覽:488
壓縮空氣氣體流量計 瀏覽:845
高角杯如何編程 瀏覽:1011
哪個app可以下載迷失島 瀏覽:29
100以內程序員鍵盤 瀏覽:912
調試助手源碼是什麼 瀏覽:601
程序員網優 瀏覽:461
有沒有極限壓縮方法 瀏覽:79
岳陽hypermill五軸編程 瀏覽:385
超級舒服的解壓神器 瀏覽:450
超短macd源碼 瀏覽:165
群暉怎麼設置用戶訪問指定文件夾 瀏覽:555
安卓怎麼測觸摸屏 瀏覽:595
javastring原理 瀏覽:317
如何關閉手機dhcp伺服器 瀏覽:985
php免費ide 瀏覽:202
程序員詞句 瀏覽:978
伺服器如何禁止某個ip段 瀏覽:331
便簽手機文件夾 瀏覽:770