版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Embedded LINUX Solutions華恒是國內(nèi)最早開發(fā)嵌入式Linux技術(shù)的公司之一。華恒先后推出 HYPERLINK :/ hhcn /chinese/sale.htm t _blank 國內(nèi)首款嵌入式Linux SOHO路由卡; HYPERLINK :/ hhcn /chinese/sale.htm 國內(nèi)首款面向手持設(shè)備和PDA的嵌入式Linux開發(fā)板; HYPERLINK :/ hhcn /chinese/sale.htm 國內(nèi)首款工控應(yīng)用嵌入式uCLinux開發(fā)板。華恒為客戶提供從硬件到系統(tǒng)軟件的開放平臺,為客戶的應(yīng)用開發(fā)提供低成本、高效、易用的互聯(lián)網(wǎng)接入綜合解決方案。采用
2、華恒嵌入式LINUX綜合解決方案: 高性價比:中國人自主開發(fā),保證了該方案的低成本和高性能。領(lǐng)先的硬件設(shè)計開發(fā)能力:華恒是一家嵌入式Linux供應(yīng)商,可以提供硬件技術(shù)。其深厚的電信技術(shù)背景和豐富的嵌入式系統(tǒng)和Linux系統(tǒng)設(shè)計開發(fā)經(jīng)驗,給客戶強大的信心和可靠性。技術(shù)支援。提供全中文軟硬件開發(fā)培訓(xùn):為客戶帶來嵌入式處理器的開發(fā)調(diào)試技術(shù)、板級硬件設(shè)計和軟硬件系統(tǒng)集成技術(shù)能力。華恒與著名高校的研究機構(gòu)有著長期的合作協(xié)議,在微處理器制造領(lǐng)域與行業(yè)領(lǐng)導(dǎo)者進行了深度合作。這些良好的資源也為我們客戶的最終產(chǎn)品設(shè)計提供了強有力的支持。資源豐富:華恒長期支持并持續(xù)推出多個基于其嵌入式Linux開發(fā)平臺的開源項目
3、,并及時發(fā)布技術(shù)源代碼,為客戶開發(fā)提供技術(shù)指導(dǎo)和代碼支持。隨著微處理器的出現(xiàn),嵌入式Linux提供了穩(wěn)定可靠的硬件架構(gòu),低成本、緊湊的CPU和外圍連接,因此制約嵌入式系統(tǒng)發(fā)展的瓶頸突出在軟件上。盡管自1980年代后期以來,一些嵌入式操作系統(tǒng)陸續(xù)出現(xiàn),但比較有名的有Vxwork、pSOS、Neculeus和Windows CE。但這些專業(yè)化的操作系統(tǒng)是商業(yè)產(chǎn)品,價格高昂,讓很多小公司望而卻步的低端產(chǎn)品;而且,封閉的源代碼也極大地限制了開發(fā)者的積極性。此外,根據(jù)國家的實際情況,國家對獨立操作系統(tǒng)的大力支持也為開源Linux的推廣提供了廣闊的發(fā)展前景。另外,對于上層應(yīng)用開發(fā)者來說,嵌入式系統(tǒng)需要一套
4、高度簡潔、界面友好、質(zhì)量可靠、應(yīng)用廣泛、易于開發(fā)、多任務(wù)、價格低廉的操作系統(tǒng)。在不久的將來,從冰箱到收音機的所有東西都將配備處理器。由于其開放性,許多人認為 Linux 非常適合大多數(shù) Internet 設(shè)備。他們認為Linux可以支持不同的設(shè)備,支持不同的配置。對供應(yīng)商而言,公正且成本極低,Linux 可以迅速成為各種設(shè)備的操作系統(tǒng)。如今,業(yè)界已經(jīng)達成共識:嵌入式linux是大勢所趨,其巨大的市場潛力和醞釀的無限商機,勢必會吸引眾多廠商進入這一領(lǐng)域。嵌入式操作系統(tǒng)主要有Palm OS、Windows CE、EPOC、LinuxCE、QNX、ECOS、LYNX。高端嵌入式系統(tǒng)需要許多高級功能,
5、例如圖形用戶界面和網(wǎng)絡(luò)支持。許多高端 RTOS 廠商已經(jīng)提供這些功能,但價格太高,一般人無法接受。微軟的Windows CE也有這樣的功能,但不具備大多數(shù)嵌入式系統(tǒng)所需的實時性能,移植起來也很困難。也有人嘗試將基于 DOS 的系統(tǒng)與單獨的第三方工具組合在一起,但這種努力將是徒勞的?,F(xiàn)在需要的是一種廉價、成熟并提供高端嵌入式系統(tǒng)必要功能的操作系統(tǒng)。嵌入式Linux操作系統(tǒng)以其價格低廉、功能強大、易于移植等優(yōu)點被廣泛采用,成為一股新興力量。因此,很多企業(yè)紛紛轉(zhuǎn)向嵌入式linux。 Linux 為嵌入式操作系統(tǒng)提供了一個非常有吸引力的選擇。它是一個類 Unix、基于內(nèi)核、完全受內(nèi)存保護、多任務(wù)、多進
6、程的操作系統(tǒng)。支持廣泛的計算機硬件,包括X86、Alpha、Sparc、MIPS、PPC、ARM、NEC、MOTOROLA等大多數(shù)現(xiàn)有芯片。程序源代碼全部開放,任何人都可以修改和分發(fā)根據(jù) GNU 通用公共許可證。這樣,開發(fā)者就可以自定義操作系統(tǒng),而不必擔心MS Windows操作系統(tǒng)中的“后門”。威脅。同時,由于GPL的控制,大家開發(fā)的大部分東西都是相互兼容的,不會走向分裂的道路。當Linux用戶遇到問題時,他們可以通過互聯(lián)網(wǎng)咨詢互聯(lián)網(wǎng)上成千上萬的Linux開發(fā)者,這使得解決最困難的問題成為可能。 Linux擁有完善的Unix用戶熟悉的開發(fā)工具,幾乎所有Unix系統(tǒng)的應(yīng)用軟件都移植到了Linu
7、x上。 Linux還提供了強大的網(wǎng)絡(luò)功能,有多種可選的窗口管理器(X windows)。其強大的語言編譯器gcc、g+等也可以輕松獲取。不僅成熟完善,而且易于使用。選擇linux的理由可以應(yīng)用于多種硬件平臺。 Linux 已被移植到各種硬件平臺,這對于受開銷和時間限制的研發(fā)項目具有吸引力。原型可以在標準平臺上開發(fā),然后移植到特定的硬件上,加快軟件和硬件的開發(fā)過程。 Linux 可以自由配置,無需任何許可或業(yè)務(wù)合作。免費提供源代碼。這是最吸引人的。毫無疑問,這將節(jié)省大量的開發(fā)成本。內(nèi)置網(wǎng)絡(luò)支持。 Linux 的高度模塊化使得添加組件變得非常容易。 Linux 在桌面上的成功,讓大家看到了 Lin
8、ux 在嵌入式系統(tǒng)中的輝煌未來。嵌入式系統(tǒng)以及如何開發(fā)自己的嵌入式系統(tǒng)由 JoelR.Williams 提供大多數(shù) Linux 系統(tǒng)運行在 PC 平臺上,但 Linux 作為嵌入式系統(tǒng)也非常穩(wěn)定。本文描述了嵌入式系統(tǒng)的概述,并展示了嵌入式系統(tǒng)產(chǎn)品如何使用 Linux。嵌入式系統(tǒng)比摩西的故事更古老計算機用于控制設(shè)備或嵌入式系統(tǒng)的時間幾乎與計算機本身一樣長。在通信領(lǐng)域,在 1960 年代后期,計算機被用于稱為“存儲程序控制”系統(tǒng)的電子開關(guān)。 “計算機”一詞在當時并不常見,存儲程序意味著存儲有關(guān)程序和例程的信息。存儲控制邏輯,而不是在硬件中強化它,在當時確實是開創(chuàng)性的。今天,我們認為應(yīng)該如此。當時的
9、計算機是為每個應(yīng)用程序定制的,按照今天的標準,它們是一組不尋常的奇怪的特殊指令和集成到計算機中的 I/O 設(shè)備。微處理器通過提供小型、低成本的 CPU 引擎來構(gòu)建大型系統(tǒng)級模塊,從而改變了這一切。它提出了一種固定的硬件架構(gòu),外設(shè)通過總線連接,以及一種稱為編程的通用編程模型。軟件還附帶硬件。最初,只有用于編寫和測試軟件的簡單編程開發(fā)工具。在每個項目上實際運行的軟件通常來自草稿的修訂。編程通常用匯編語言或宏語言完成,因為編譯器經(jīng)常有缺陷并且缺乏復(fù)雜的調(diào)試工具。軟件構(gòu)建塊和標準化庫是在 70 年代才流行起來的概念。嵌入式系統(tǒng)的商業(yè)操作系統(tǒng)直到 1970 年代后期才出現(xiàn)。許多是用匯編語言編寫的,僅適用
10、于特定的微處理器。當微處理器被淘汰時,它們的操作系統(tǒng)被 設(shè)備重寫,否則將被淘汰。今天,這些早期系統(tǒng)中的許多都是模糊的記憶。還有人記得 MTOS 嗎? C語言出現(xiàn)后,操作系統(tǒng)編寫的效率、穩(wěn)定性和可移植性都得到了很大的提升。這立即體現(xiàn)在管理上,并為在微處理器過時保護軟件投資提供了希望。這對市場來說是個好消息。如今,用 C 編寫的操作系統(tǒng)越來越普遍。一般來說,可重用軟件已經(jīng)占據(jù)主導(dǎo)地位并且正在變得越來越好。八十年代初,我最喜歡的操作系統(tǒng)是 Wendon OS,你可以花大約 150 美元買到一個 C 源代碼庫。它是一個包,您可以在其中通過選擇組件來構(gòu)建自己的操作系統(tǒng),類似于從菜單中訂購。例如,您可以點
11、擊圖書館列表中的工作調(diào)度和庫存管理解決方案。許多嵌入式系統(tǒng)的商業(yè)操作系統(tǒng)出現(xiàn)在 1980 年代。這種熱潮一直持續(xù)到今天,今天,有許多可行的商業(yè)操作系統(tǒng)可供選擇。出現(xiàn)了一些大牌,如 VxWorks、pSOS、Neculeus 和 Windows CE。許多嵌入式系統(tǒng)根本沒有操作系統(tǒng),只有循環(huán)控制。這對于一些簡單的設(shè)備來說已經(jīng)足夠了,但是隨著系統(tǒng)變得更加復(fù)雜,操作系統(tǒng)變得必要或者軟件變得難以置信地復(fù)雜。不幸的是,一些極其復(fù)雜的嵌入式系統(tǒng)之所以如此復(fù)雜,是因為它們的設(shè)計者堅持不運行操作系統(tǒng)。漸漸地,越來越多的嵌入式系統(tǒng)需要連接到各種類型的網(wǎng)絡(luò),從而需要網(wǎng)絡(luò)能力。甚至酒店的門把手也嵌入了微處理器并聯(lián)網(wǎng)
12、。對于僅僅是一個編碼控制回路的嵌入式系統(tǒng),添加網(wǎng)絡(luò)功能將導(dǎo)致需要操作系統(tǒng)的系統(tǒng)復(fù)雜性增加。除了商業(yè)操作系統(tǒng)之外,還有大量的專用操作系統(tǒng)。有的來自草稿,比如CISCO的IOS;其他是從其他操作系統(tǒng)派生的。例如,許多操作系統(tǒng)都源自同一版本的 Berkeley Unix 系統(tǒng),因為它具有完整的網(wǎng)絡(luò)功能。其他的則基于主要操作系統(tǒng),例如 Phil Karn 的 KA9Q。 Linux 作為嵌入式系統(tǒng)是一個新人,具有許多優(yōu)點。它便攜、穩(wěn)定、功能強大且易于開發(fā),適用于許多 CPU 和硬件平臺。打破 ICE 壁壘的工具包 開發(fā)嵌入式系統(tǒng)的關(guān)鍵是可用的工具包。像任何工作一樣,好的工具可以讓工作更快更好。不同的開
13、發(fā)階段需要不同的工具。傳統(tǒng)上,用于開發(fā)嵌入式系統(tǒng)的第一個工具是電路仿真器 (ICE),這是一個相對昂貴的組件,內(nèi)置在微處理器和總線之間的電路中,內(nèi)容用戶監(jiān)視和控制微控制器。所有進出處理器的信號。這有點難做,因為它是異體的并且可能導(dǎo)致不穩(wěn)定。但它提供了總線在做什么的清晰畫面,省去了很多關(guān)于底層硬件和軟件在做什么的猜測。過去,一些工作依賴 ICE 作為整個開發(fā)過程的主要調(diào)試工具。但是,一旦初始化軟件很好地支持了串口,大多數(shù)調(diào)試都可以在沒有 ICE 的情況下使用其他方法來完成。較新的嵌入式系統(tǒng)使用非常清晰的微處理器設(shè)計。有時,相應(yīng)的工作初始化代碼已經(jīng)具備快速讓串口工作的能力。這意味著人們可以在沒有
14、ICE 的情況下輕松工作。消除 ICE 可降低開發(fā)成本。串口一旦工作,就可以支持各種專業(yè)的開發(fā)工具。 Linux 是一個基于 GNU 的 C 編譯器,它與 gdb 源代碼調(diào)試器一起作為 GNU 工具鏈的一部分工作。它提供了用于開發(fā)嵌入式 Linux 系統(tǒng)的所有軟件工具。這些是用于在新硬件上開發(fā)嵌入式 Linux 系統(tǒng)的一些典型調(diào)試工具。 1.編寫或植入引導(dǎo)代碼2.將字符串的編碼打印到串口,比如“Hello World”(其實我更喜歡“Watson, Come hre I need you”,常用的第一個詞就可以了.) 3 .將 gdb 目標代碼插入工作串行端口,它可以與另一個運行 gdb 程序
15、的 Linux 主機系統(tǒng)通信。只需簡單地告訴 gdb 通過串行端口調(diào)試程序。它通過串口與測試機的gdb目標代碼進行通信。您可以調(diào)試 C 源代碼,也可以使用此功能將更多代碼加載到 RAM 或 Flash 存儲器中。 4、在Linux內(nèi)核啟動時,使用gdb使硬件和軟件初始化代碼工作。 5、Linux內(nèi)核啟動后,串口成為Linux控制口,可用于后續(xù)開發(fā)。使用kgdb,gdb的內(nèi)核調(diào)試版本,這一步通常不需要,如果你連接到10BaseT等網(wǎng)絡(luò),你可能需要接下來啟用它。 6. 如果您的目標硬件上正在運行完整的 Linux 內(nèi)核,您可以調(diào)試您的應(yīng)用程序進程。使用其他 gdb 或覆蓋 gdb 圖形,例如 xg
16、db。什么是實時系統(tǒng)?嵌入式系統(tǒng)經(jīng)常被錯誤地歸類為實時系統(tǒng),盡管大多數(shù)系統(tǒng)通常不需要實時功能。實時是一個相對術(shù)語,純粹主義者通常將實時嚴格定義為在極短的時間內(nèi)(例如微秒)以預(yù)定方式對事件的響應(yīng)。在 ASIC 上實現(xiàn)。這僅在設(shè)計低級硬件 FIFO、分散/聚集 DMA 引擎和定制硬件時才需要。許多設(shè)計人員對實時需求感到焦慮,因為他們對真實需求有清晰的了解。對于大多數(shù)系統(tǒng)來說,一到五微秒的近乎實時的響應(yīng)就足夠了。軟需求也是可以接受的。 Windows 98 等已經(jīng)崩潰的中斷必須在 4ms (98%) 或 20ms (0) 內(nèi)處理。這樣的軟需求比較容易滿足,包括環(huán)境轉(zhuǎn)換時間、中斷等待時間、任務(wù)優(yōu)先級和
17、排序。環(huán)境轉(zhuǎn)換時間曾經(jīng)是操作系統(tǒng)中的熱門話題??偠灾蠖鄶?shù) CPU 都可以很好地處理這些要求,而且由于 CPU 現(xiàn)在速度快得多,所以這個問題并不重要。嚴格的實時要求通常由中斷例程或其他內(nèi)核環(huán)境驅(qū)動程序函數(shù)處理,以確保穩(wěn)定的性能、延遲和請求出現(xiàn)后的服務(wù)時間,很大程度上取決于中斷的優(yōu)先級和其他可以暫時屏蔽中斷的因素。軟件。與許多其他操作系統(tǒng)一樣,必須處理和管理中斷以確保滿足時序要求。在 Intel X86 處理器上,這項工作很容易被 Linux 實時擴展處理。這是為了提供一個中斷處理調(diào)度程序,用于將 Linux 作為后臺任務(wù)運行。關(guān)鍵中斷響應(yīng)不必通知 Linux。因此,可以對關(guān)鍵時鐘進行大量控
18、制。提供實時控制級別和具有寬松時間限制的基本 Linux 級別之間的接口,提供類似于其他嵌入式操作系統(tǒng)的實時框架。因此,實時關(guān)鍵代碼被隔離并“設(shè)計”以滿足要求。代碼處理的結(jié)果可能只是以更總則方式在應(yīng)用程序任務(wù)級別。嵌入式系統(tǒng)定義一個觀點是,如果一個應(yīng)用程序沒有用戶界面,它必須是嵌入式的,因為用戶不能直接與之交互。當然,這是一種簡化。電梯控制計算機被認為是嵌入式的:按鈕選擇樓層,指示燈顯示電梯的??繕菍?。對于聯(lián)網(wǎng)的嵌入式系統(tǒng),如果系統(tǒng)包含用于監(jiān)視和控制的 Web 瀏覽器,則界限會變得更加模糊。更好的定義側(cè)重于系統(tǒng)的集中功能和主要目的。因為 Linux 提供了執(zhí)行嵌入式功能所需的基本內(nèi)核和所有用戶
19、界面,所以它是多方面的。它可以處理嵌入式任務(wù)和用戶界面。將 Linux 視為一個連續(xù)體,從具有存儲管理、任務(wù)切換、時間服務(wù)和其他衍生產(chǎn)品的微內(nèi)核到支持所有文件系統(tǒng)和網(wǎng)絡(luò)服務(wù)的完整服務(wù)器。一個小型的嵌入式 Linux 系統(tǒng)只需要以下三個基本要素:引導(dǎo)工具Linux 微內(nèi)核,它由內(nèi)存管理、進程管理和事務(wù)處理組成一個初始化進程:如果你想讓它做某事并保持它的小,你有添加 Top:其硬件驅(qū)動程序提供所需功能的一個或多個應(yīng)用程序。要添加功能,這些可能需要TCP/IP 網(wǎng)絡(luò)堆棧的文件系統(tǒng)(可能在 ROM 或 RAM 中)來存儲半轉(zhuǎn)換數(shù)據(jù)和用于交換的磁盤。硬件平臺選擇最好的硬件是一項復(fù)雜的工作,充滿了政治、偏
20、見、傳統(tǒng),并且缺乏關(guān)于公司其他項目的完整或準確的信息。成本通常是一個關(guān)鍵問題。在考慮成本時,請確保您考慮的是產(chǎn)品的全部成本,而不僅僅是 CPU。有時,一旦您添加總線邏輯和延遲以使其與外圍設(shè)備一起使用,快速、廉價的 CPU 可能會變成昂貴的狗產(chǎn)品。如果要找軟件,首先是硬件已經(jīng)有產(chǎn)品了。如果您是系統(tǒng)設(shè)計人員,您可以自行制定實時預(yù)算以及硬件是否運行良好。實際上需要多快的 CPU 才能完成一項工作,然后將速度提高三倍。奇怪,CPU的理論速度和現(xiàn)實中的一樣,別忘了應(yīng)用程序會充分利用緩存。想象一下總線需要多快,如果還有其他總線,例如 PCI 總線,包括在內(nèi)。慢速總線或帶有 DMA 阻塞的總線會降低 CPU
21、 的速度并導(dǎo)致?lián)砣>哂屑稍O(shè)備的 CPU 很好,因為需要調(diào)試的設(shè)備很少,而且支持通用 CPU 的驅(qū)動程序通常很容易獲得。在我的項目中,芯片和外設(shè)的連接經(jīng)常會出現(xiàn)故障或者不符合我們需要的兼容性。由于外設(shè)是集成的,不要以為這會便宜。把一個 10 磅的 Linux 塞進一個 5 磅的包里對 Linux 的一個普遍理解是,它對于嵌入式系統(tǒng)來說是驚人的。這可能不對,典型 PC 上的 Linux 對于 PC 用戶來說非常實用。對于初學(xué)者來說,內(nèi)核可以與任務(wù)分離,標準的 Linux 內(nèi)核通常駐留在內(nèi)存中,每個應(yīng)用程序都從磁盤傳送到內(nèi)存中執(zhí)行。當程序結(jié)束時,它占用的內(nèi)存被釋放,程序被下載。在嵌入式系統(tǒng)中,可
22、能沒有磁盤。有兩種方法可以消除對磁盤的依賴,具體取決于系統(tǒng)的復(fù)雜性和硬件的設(shè)計。在一個簡單的系統(tǒng)中,內(nèi)核和所有應(yīng)用程序在系統(tǒng)啟動時都存在。這是大多數(shù)傳統(tǒng)嵌入式系統(tǒng)的工作模式,Linux也可以支持。對于 Linux,還有第二種可能性。因為 Linux 已經(jīng)具備“加載”和“卸載”程序的能力,嵌入式系統(tǒng)可以利用它來節(jié)省內(nèi)存??紤]一個包含大約 8MB 到 16MB 閃存和 8MB RAM 的典型系統(tǒng)。閃存可用作文件系統(tǒng)。 Flash Memory 驅(qū)動程序用于連接Flash Memory 和文件系統(tǒng)。作為替代方案,可以使用閃存盤。此 Flash 組件使用軟件模擬磁盤。一個例子是 M-Systems 的
23、 DiskOnChip,它可以達到 160MB。 (.m 系統(tǒng)。)。所有程序都以文件的形式存儲在Flash文件中,需要時可以加載。這種動態(tài)的“按需加載”功能是支持一系列其他功能的重要特性:它內(nèi)容在系統(tǒng)啟動后釋放初始化代碼。 Linux 也有許多在內(nèi)核外運行的實用程序。這些例程通常在初始化時運行一次,并且不再運行。此外,這些實用程序可以以彼此共享的方式一個接一個地依次運行。這樣,同一個內(nèi)存空間就可以被重復(fù)使用來“調(diào)用”每個程序,就像系統(tǒng)啟動一樣。這確實節(jié)省了內(nèi)存,特別是對于配置一次且永不更改的網(wǎng)絡(luò)堆棧。如果內(nèi)核中包含 Linux 可加載模塊功能,則可以加載驅(qū)動程序和應(yīng)用程序。它可以檢查硬件環(huán)境并
24、為硬件安裝相應(yīng)的軟件。這消除了使用一個程序占用大量閃存來處理多個硬件的復(fù)雜性。軟件升級更加模塊化。您可以在系統(tǒng)運行時更新 Flash 上的應(yīng)用程序和可加載驅(qū)動程序。配置信息和運行時參數(shù)可以作為數(shù)據(jù)文件存儲在 Flash 中。非虛擬存儲標準 Linux 的另一個特性是虛擬存儲的能力。正是這個神奇的特性,讓應(yīng)用程序員可以不顧后果地瘋狂地編寫代碼,不管程序有多大。程序溢出到磁盤交換區(qū)。在沒有磁盤的嵌入式系統(tǒng)中,這通常是不可能的。嵌入式系統(tǒng)不需要這種強大的功能。事實上,您可能不希望在實時關(guān)鍵系統(tǒng)中使用它,因為它引入了無法控制的時序因素。該軟件必須設(shè)計得更加穩(wěn)健,以適應(yīng)市場上的物理內(nèi)存,就像任何其他嵌入
25、式系統(tǒng)一樣。請注意,由于 CPU 的原因,在 Linux 中保留虛擬內(nèi)存代碼通常是明智的,因為清除它非常昂貴。另一個原因是它支持共享文本,因此許多程序可以共享一個軟件。沒有這個,每個程序都會有自己的庫,就像 printf 一樣。可以關(guān)閉虛擬內(nèi)存的加載功能,只要將交換空間的大小設(shè)置為零即可。然后,如果您編寫的程序比實際的大,系統(tǒng)會將其視為您的交換空間已用完;程序不會運行,否則 malloc 會失敗。在許多 CPU 上,虛擬內(nèi)存提供內(nèi)存管理,將不同的程序與寫入其他地址空間分開。這在僅支持簡單、平坦地址空間的嵌入式系統(tǒng)上通常是不可能的。 Linux 的這一特性有助于它成長。它減少了隨機編程導(dǎo)致系統(tǒng)崩
26、潰的可能性。許多嵌入式系統(tǒng)出于效率原因有意識地使用可以在程序之間共享的“全局”數(shù)據(jù)。 Linux 共享內(nèi)存特性也可以支持這一點,只共享指定的內(nèi)存部分。文件系統(tǒng)許多嵌入式系統(tǒng)沒有磁盤或文件系統(tǒng)。 Linux 不需要它們來運行。如前所述,應(yīng)用程序任務(wù)可以使用內(nèi)核編寫并在啟動時作為映像加載。對于簡單的系統(tǒng),這就足夠了。但是,它缺乏上述靈活性。事實上,許多商業(yè)嵌入式系統(tǒng)都提供文件系統(tǒng)作為選項。許多是專有文件系統(tǒng)或與 MS-DOS 兼容的文件系統(tǒng)。 Linux 提供了與 MS-DOS 兼容的文件系統(tǒng),還有許多其他選項。提供了其他選項,因為它們更健壯且容錯。 Linux 還具有商業(yè)供應(yīng)商通常不提供的檢查和
27、維護功能。這對于通過網(wǎng)絡(luò)更新的 Flash 系統(tǒng)尤其重要。如果系統(tǒng)在升級過程中失去了功能,那就沒用了。維護的功能通常可以解決這類問題。文件系統(tǒng)可以放置在傳統(tǒng)的磁盤驅(qū)動器、閃存或其他此類介質(zhì)上。此外,對于臨時保存文件,一個小的 RAM 磁盤就足夠了。閃存被分成塊。這些塊可能包括一個引導(dǎo)塊,其中包含在 CPU 啟動時運行的初始軟件。這可能包括 Linux 引導(dǎo)代碼。剩余的 Flash 可以用作文件系統(tǒng)。 Linux 內(nèi)核可以通過引導(dǎo)代碼從 Flash 復(fù)制到 RAM,或者,內(nèi)核可以存儲在 Flash 的單獨部分中并直接從那里執(zhí)行。對于某些系統(tǒng)來說,另一個有趣的選擇是包含一個便宜的 CD-ROM。這
28、比閃存便宜,并且支持通過交換 CD-ROM 輕松升級。這樣,Linux 就從 CD-ROM 啟動,并像從硬盤中一樣從 CD-ROM 中獲取所有程序。最后,對于聯(lián)網(wǎng)的嵌入式系統(tǒng),Linux 支持 NFS(網(wǎng)絡(luò)文件系統(tǒng))。這為網(wǎng)絡(luò)系統(tǒng)的許多增值功能打開了大門。首先,它內(nèi)容通過網(wǎng)絡(luò)加載應(yīng)用程序。這是控制軟件修改的基礎(chǔ),因為每個嵌入式系統(tǒng)的軟件都可以加載到一個通用的服務(wù)器上。它還可用于在運行時輸入或輸出大量數(shù)據(jù)、配置和狀態(tài)信息。這是用戶監(jiān)督和控制的一個非常強大的功能。例如,嵌入式系統(tǒng)可以創(chuàng)建一個小型 RAM 磁盤,其中包含與當前狀態(tài)信息同步的文件。其他系統(tǒng)可以簡單地將這個 RAM 磁盤設(shè)置為基于網(wǎng)絡(luò)的
29、遠程磁盤并通過無線方式訪問狀態(tài)文件。這內(nèi)容另一臺機器上的 Web 服務(wù)器通過簡單的 CGI 腳本訪問狀態(tài)信息。在其他計算機上運行的其他應(yīng)用程序包可以輕松訪問數(shù)據(jù)。對于更復(fù)雜的監(jiān)控,可以使用 Matlab (.mathworks./products/matlab/) 等應(yīng)用程序包在操作員的 PC 或工作站上提供系統(tǒng)操作的圖形表示。 LILO 和 BIOS 的引導(dǎo)位置 當微處理器第一次啟動時,它開始在預(yù)設(shè)地址處執(zhí)行指令。通常那里有一些只讀存儲器,包括初始化或引導(dǎo)代碼。在 PC 上,這是 BIOS。它執(zhí)行一些低級 CPU 初始化和其他硬件配置。 BIOS 繼續(xù)識別哪個磁盤具有操作系統(tǒng),將操作系統(tǒng)復(fù)制
30、到 RAM 并轉(zhuǎn)向它。實際上,這很復(fù)雜,但對我們的目標也很重要。在 PC 上運行的 Linux 依賴 PC 的 BIOS 來提供這些配置和操作系統(tǒng)加載功能。嵌入式系統(tǒng)中通常沒有這樣的 BIOS。然后您必須提供等效的啟動代碼。幸運的是,嵌入式系統(tǒng)不需要 PC BIOS 引導(dǎo)加載程序的靈活性,因為它通常只需要處理一個硬件的配置。這段代碼更簡單也更無聊。它只是一個指令列表,將固定數(shù)字填充到硬件寄存器中。但是,這是關(guān)鍵代碼,因為這些值必須與您的硬件相匹配并按特定順序排列。所以在大多數(shù)情況下,一個最小的 POST 模塊可以檢查內(nèi)存是否正常運行、閃爍 LED 并驅(qū)動其他必要的硬件來啟動和運行主 Linux
31、 操作系統(tǒng)。這些啟動代碼完全由硬件決定,不能隨意移動。幸運的是,許多系統(tǒng)都有為核心微處理器和內(nèi)存定制的菜單驅(qū)動硬件設(shè)計。通常,芯片制造商有一個樣本主板,可以用作與新設(shè)計或多或少相同的設(shè)計的參考。通常這些基于菜單的設(shè)計的啟動代碼是可用的,可以根據(jù)您的需要輕松修改。在少數(shù)情況下,需要重寫啟動代碼。要測試此代碼,您可以使用包含“模擬存儲器”的電路仿真器,該模擬存儲器可用于代替目標存儲器。您將代碼加載到模擬器中并通過模擬器對其進行調(diào)試。如果這不起作用,您可以跳過這一步,但這將需要更長的調(diào)試周期。這段代碼最終會在更穩(wěn)定的內(nèi)存上運行,通常是 Flash 或 EPROM 芯片。您需要使用某種方法將代碼放在芯
32、片上。如何做到這一點取決于“目標”硬件和工具。一種流行的方法是將 Flash 或 EPROM 芯片插入 EPROM 或 Flash 刻錄機。這會將您的程序“燒錄”(存儲)到芯片中。然后,將芯片插入目標板的插座并打開電源。這種方法需要板上有插座,但有些設(shè)備不能配備插座。另一種方法是通過 JTAG 接口。一些芯片具有可用于對芯片進行編程的 JTAG 接口。這是最方便的方法。芯片可以永久焊接到主板上,用一根小電纜從板上的 JTAG 連接器(通常是 PC 卡)連接到 JTAG 接口。以下是 PC 運行 JTAG 接口所需的一些習(xí)語。該設(shè)備也可用于小規(guī)模生產(chǎn)。魯棒性比政治家承諾的更可靠在 PC 硬件上運
33、行時,Linux 非??煽亢头€(wěn)定,尤其是與當今流行的一些操作系統(tǒng)相比。嵌入式內(nèi)核本身的穩(wěn)定性如何? Linux 非常適合大多數(shù)微處理器。移植到新微處理器系列的 Linux 內(nèi)核與該微處理器一樣穩(wěn)定運行。它通常被移植到一個或多個特定的主板上。這些板包括特定的外圍設(shè)備和 CPU。幸運的是,很多代碼都是特定于處理器的,所以移植的重點是不同之處。其中大部分是在存在管理和中斷控制領(lǐng)域。一旦成功移植,它們非常穩(wěn)定。正如我們前面所討論的,啟動策略很大程度上取決于硬件要求,您必須計劃做一些自定義工作。設(shè)備驅(qū)動程序更令人困惑:一些穩(wěn)定,一些不穩(wěn)定。而且選擇有限;一旦離開通用 PC 平臺,就需要自己編寫。幸運的是
34、,周圍有很多驅(qū)動程序,您也許可以找到一個具有與您的需求相似的修改的驅(qū)動程序。此驅(qū)動程序接口已定義。許多類型的驅(qū)動程序非常相似,因此將磁盤、網(wǎng)絡(luò)或一系列端口驅(qū)動程序從一個設(shè)備移植到另一個設(shè)備通常并不困難。我發(fā)現(xiàn)許多驅(qū)動程序都寫得很好并且易于理解,但您仍然希望手頭有一本關(guān)于核架構(gòu)的書。根據(jù)我的經(jīng)驗,Linux 至少與我使用過的著名商業(yè)操作系統(tǒng)一樣穩(wěn)定??傊@些操作系統(tǒng)和 Linux 的問題是對微秒如何工作的誤解,而不是代碼的難度或基本的設(shè)計錯誤。關(guān)于任何操作系統(tǒng)都有很多有爭議的故事,這里不需要重復(fù)。 Linux 的優(yōu)勢在于源代碼是公開的、有良好注釋的和有據(jù)可查的。這樣,您可以控制和處理出現(xiàn)的任何
35、問題。除了基本內(nèi)核和驅(qū)動程序之外,還有其他問題。如果系統(tǒng)有硬盤,那么文件系統(tǒng)的可靠性是個問題。我們有兩年多的使用磁盤設(shè)計 Linux 系統(tǒng)的經(jīng)驗。這些系統(tǒng)幾乎從不正常關(guān)閉。電源隨時可能中斷。使用標準(EXT2)文件系統(tǒng)感覺非常好。標準的 Linux 初始化腳本運行 fsck 程序,該程序在檢查和清除不穩(wěn)定的 inode 方面非常有效。明智的做法是將默認值更改為每 30 秒運行一次更新程序為每 5 或 10 秒運行一次。這減少了數(shù)據(jù)在進入磁盤之前在高速緩存中花費的時間,從而降低了丟失數(shù)據(jù)的可能性。如何開發(fā)嵌入式 Linux 確實有其缺陷。例如,雖然它并不比它的一些商業(yè)競爭對手差多少,但它是一個貪
36、婪的記憶。這可以通過刪除一些不必要的功能來彌補,但它可能需要很長時間,如果不小心可能會很煩人。許多 Linux 應(yīng)用程序使用虛擬內(nèi)存,這在許多嵌入式系統(tǒng)中沒有任何價值,因此不要假設(shè)沒有磁盤的嵌入式系統(tǒng)可以運行任何 Linux 應(yīng)用程序。核調(diào)試工具不是很好,尤其是在較低級別。 kgdb 可以輕松定位錯誤,您只需要重新啟動即可。不幸的是,打印語句更麻煩。然而,對我來說最糟糕的是心理問題。 Linux 非常靈活。嵌入式系統(tǒng)通常不靈活;它們被嚴格設(shè)計為最有效地執(zhí)行其預(yù)期功能。趨勢是保持靈活性,保持整體目標功能,并盡可能少地進行更改。這個目標是崇高的,但要付出的代價將是具體工作的巨大調(diào)整。保持靈活性會導(dǎo)
37、致額外的工作、額外的包,有時還會導(dǎo)致性能下降。一個反復(fù)出現(xiàn)的例子是配置??紤]在 Web 界面上配置 IP 地址,這通常通過從啟動腳本運行 ifconfig 程序來完成。這是一個 28K 的程序,它從配置文件中調(diào)用數(shù)據(jù),并且可以用幾行代碼替換以初始化適當?shù)慕Y(jié)構(gòu)。然而,即使這是完全合理的,它仍然是有害的,因為它以一種以前從未使用過的方式扭曲了軟件。 Linux在嵌入式系統(tǒng)中的應(yīng)用是可行的。實用可靠,開發(fā)成本與更換相同。隨著 CE(消費電子)供應(yīng)商繼續(xù)爭奪市場份額,消費者要求設(shè)計人員在每個新產(chǎn)品或產(chǎn)品升級中加入更多功能。用戶不再滿足于只提供一種功能的設(shè)備。手機、媒體播放器、數(shù)碼相機、游戲機、收音機和
38、電視機等各種多功能設(shè)備都在爭奪消費者錢包里的錢。對于這種復(fù)雜性,32b 處理器、網(wǎng)絡(luò)連接、全圖形、安全和多線程 HYPERLINK :/ ednchina /word/70724.aspx o 軟件 軟件已成為新設(shè)計的標準。鑒于 CE 產(chǎn)品的體積龐大且利潤微薄,設(shè)計團隊正在研究和利用 Linux 操作系統(tǒng)來解決軟件負擔。 Linux 的幾個特性使其非常適合 CE 項目。 Linux 最初吸引設(shè)計師的是它的免費源代碼、無許可費和每臺設(shè)備的版稅。與機構(gòu)開發(fā)或商業(yè)化的操作系統(tǒng)相比,這些成本相當高,在項目生命周期內(nèi)增加了數(shù)千美元。成本競爭和預(yù)算限制迫使軟件開發(fā)團隊為新項目考慮免版稅軟件,例如 Linu
39、x。 Linux 包括內(nèi)核、作業(yè)控制環(huán)境和應(yīng)用程序。 Linux內(nèi)核的基本架構(gòu)包括內(nèi)存管理、進程調(diào)度、文件系統(tǒng)和網(wǎng)絡(luò)接口。內(nèi)存管理器使多個程序能夠安全地共享系統(tǒng)內(nèi)存,而進程調(diào)度程序確保程序可以公平地訪問 CPU。虛擬文件系統(tǒng)隱藏了硬件的細節(jié),為用戶提供了一個通用的文件接口。 Linux內(nèi)核占用RAM比1MB少,作業(yè)控制環(huán)境提供用戶界面,可以簡單到命令行,也可以復(fù)雜到Windows圖形界面。當設(shè)計人員從用于 8b 和 16b 處理器的功能有限的“自己構(gòu)建”操作系統(tǒng)轉(zhuǎn)向超出部門軟件團隊能力或預(yù)算的復(fù)雜應(yīng)用程序時,Linux 應(yīng)運而生。這些開發(fā)人員習(xí)慣于維護自己的軟件包,Linux 許可協(xié)議符合他們
40、的口味。開源 Linux 增加了一些功能,例如內(nèi)置網(wǎng)絡(luò)支持和圖形,可以在新項目開發(fā)中節(jié)省大量編碼和集成時間。隨著新一代高速、低成本 32b 處理器和 Linux 的發(fā)展,開發(fā)人員發(fā)現(xiàn)嵌入式系統(tǒng)的實時性要求不再是負擔。盡管數(shù)據(jù)速率有所提高,但用戶 I/O 時序保持相對穩(wěn)定,程序員有更多時鐘周期可用于處理當今高速處理器的 I/O 請求。 Linux 并非旨在提供決定性的性能,而是用于以前需要實時操作系統(tǒng)的某些應(yīng)用程序中。低開銷Linux 是模塊化的,內(nèi)容開發(fā)人員構(gòu)建適合每個設(shè)備內(nèi)存的小型修改軟件包,從而消除專用通用操作系統(tǒng)的代碼開銷。 Linux 還支持大量的微處理器,使其最適合不斷變化的消費市場
41、。因為設(shè)計人員可以將 Linux 移植到最常見的嵌入式處理器上,所以沒有軟件限制迫使開發(fā)人員改變硬件決策。設(shè)計人員可以從僅滿足當前需求的低成本微處理器開始生產(chǎn),并且可以隨著設(shè)備需求和功能的擴展輕松升級到更強大的 CPU。 Linux 開發(fā)人員會定期更新內(nèi)核以包含來自用戶社區(qū)的插件和建議。有關(guān)最新內(nèi)核的信息可以在 HYPERLINK :/ / .找到,并且可以下載最新版本。 2.6 版現(xiàn)在包括許多搶占點,內(nèi)容調(diào)度程序暫停工作任務(wù)并啟動更高優(yōu)先級的進程。進程調(diào)度算法已被重寫,以加快多任務(wù)應(yīng)用程序中的作業(yè)切換。除了實時改進之外,2.6 版還有一些有益于消費設(shè)備應(yīng)用程序的更新。例如,藍牙和 USB 2
42、.0 等增強外設(shè)選項、ALSA(高級 Linux 聲音架構(gòu))使應(yīng)用程序能夠處理多個音頻流,而 Video4Linux 增加了一個視頻子系統(tǒng)。深度嵌入式系統(tǒng)的附加更新也占用很小的空間,適用于容量有限的應(yīng)用程序。 Linux 許可協(xié)議對消費設(shè)備開發(fā)人員既有積極的影響,也有消極的影響。從好的方面來說,您可以下載免費的 Linux 副本并在您自己的產(chǎn)品中使用它而無需支付版稅,而且您可以隨心所欲地使用它。 Linux 根據(jù) GNU 的 GPL(通用公共許可證)使用規(guī)則獲得許可。如果您修改和重新分發(fā) GPL 軟件,您的修改也自動符合 GPL 并且必須公開。只要應(yīng)用程序和設(shè)備驅(qū)動程序與 Linux 內(nèi)核無關(guān)
43、并且不包含 GPL 代碼,它們就可以保持專有。但是代碼隔離對于小型消費設(shè)備的開發(fā)人員來說是一個問題,因為他們將所有軟件都保存在一個 ROM 中。除了許可的不確定性,Linux 用戶還面臨其他非技術(shù)因素。例如,SCO(圣克魯斯行動)組織提出了法律挑戰(zhàn),聲稱 Linux 包含專有 Unix 代碼的殘余,并強制更改核心,甚至要求獲得專利資金。 2005 年 12 月,SCO 集團對 UNIX 知識產(chǎn)權(quán)的原始所有者、現(xiàn)在的 Linux 開發(fā)人員 Novell 提起了長期訴訟。 SCO 爭議的最新消息和完整歷史可以在 Linux Online, HYPERLINK :/ / .上查看。內(nèi)核補充開發(fā)人員預(yù)
44、見到在開源 Linux 環(huán)境中存在軟件損壞的可能性。如果 A 公司決定修改 Linux 內(nèi)核以解決其產(chǎn)品中的集成問題,而 B 公司進行了類似但不兼容的修改,那么現(xiàn)在有三個 Linux 版本。當下一次官方 Linux 更新發(fā)布時,兩家公司都必須搜索修改后的代碼,重新合并這些更改,或者繼續(xù)使用舊版本。最聰明的選擇可能不是修改內(nèi)核,而是使用源代碼進行調(diào)試,或者了解 Linux 的功能?,F(xiàn)在,Linux 社區(qū)利用復(fù)雜系統(tǒng)的升級提案和發(fā)布,成功地阻止了多個版本的出現(xiàn)。盡管 HYPERLINK :/ ednchina /word/70721.aspx o Linux Linux是一個免費的 HYPERLI
45、NK :/ ednchina /word/70720.aspx o 操作系統(tǒng) 操作系統(tǒng),但許多設(shè)計人員仍然希望為專業(yè)支持、特殊工具、定制服務(wù)和預(yù)打包配置付費,以促進 HYPERLINK :/ ednchina /word/70723.aspx o 開發(fā) 開發(fā)過程。商業(yè)供應(yīng)商提供定制的嵌入式配置、用戶支持包、開發(fā)工具包、應(yīng)用示例和咨詢服務(wù),作為 Linux 的增強功能。但與將用戶限制在單一來源的商業(yè)專有操作系統(tǒng)不同,Linux 用戶仍然可以自由地從任何其他供應(yīng)商那里獲得支持。看到 Linux 在 CE 產(chǎn)品中的日益普及,一些商業(yè) RTOS(實時操作系統(tǒng))供應(yīng)商也加入了開源運動, HYPERLIN
46、K :/ ednchina /word/70724.aspx o 軟件 為嚴格實時的應(yīng)用程序提供定制分發(fā)、開發(fā)工具、支持和推廣他們自己的專有軟件.例如,Wind River 產(chǎn)品線經(jīng)理 Glenn Seiler 這樣總結(jié)公司的戰(zhàn)略:“市場需要一個選擇。在某些情況下,市場想要一個 RTOS,但由于嚴格的實時要求或小尺寸要求,市場需要一些客戶仍然討厭的 RTOS . GPL 概念。其他已經(jīng)進行了大量現(xiàn)有投資的用戶也希望繼續(xù)使用 RTOS。 Seiler 還描述了其他想要快速創(chuàng)新的好處、免版稅模式、想要控制源代碼、想要保持相同的供應(yīng)商獨立性并且不擔心 GPL 的客戶。這些客戶的態(tài)度更多的是 Linu
47、x他說,“我們希望提供一種能夠同時滿足 RTOS 客戶和 Linux 客戶的解決方案?!彼忉屨f,“我們的方法采用了基于 Workbench 工具套件的策略,這是一種萬能的生命周期產(chǎn)品它涵蓋了從電路板設(shè)計到固件開發(fā)一直到核心板支持開發(fā)、應(yīng)用程序開發(fā)和調(diào)試的所有內(nèi)容?!?Wind River 的 Workbench 套件建立在開源 Eclipse 集成開發(fā)環(huán)境(圖 1)之上。同樣,MontaVista Software 提供 Linux CEE(消費電子版)、 HYPERLINK :/ ednchina /word/70722.aspx o 設(shè)備 嵌入式操作系統(tǒng)和 CE設(shè)備的交叉開發(fā)環(huán)境。該軟件
48、包具有動態(tài)電源管理、增強的文件系統(tǒng)、用于系統(tǒng)性能調(diào)整的新開發(fā)工具、處理器和外圍設(shè)備支持、用于應(yīng)用程序開發(fā)以與示例實用程序、庫和驅(qū)動程序一起使用的交叉開發(fā)工具等。 CEE 支持飛思卡爾、英特爾、瑞薩和德州儀器為消費類設(shè)備定制的各種處理器。 MontaVista 還為無線手機和移動產(chǎn)品提供適用于移動設(shè)備的 Linux (Mobilinux),滿足他們對電源管理、嚴格的實時性能、快速啟動和小尺寸的需求(圖 2)。TiVo 領(lǐng)先許多 CE 設(shè)備都與 Linux 操作系統(tǒng)相結(jié)合,但 TiVo 個人錄像機是最廣為人知的。 TiVo Linux 也是發(fā)燒友最喜歡修改的軟件。修改后,您可以使用更大的硬盤或通過
49、添加硬盤來增加存儲容量,或者將錄制的節(jié)目傳輸?shù)接嬎銠C或其他設(shè)備。 Linux 可能成為索尼下一代游戲機 PlayStation 3 軟件包的一部分,該游戲機預(yù)計將于 2006 年春季上市。最近推出的諾基亞 770 互聯(lián)網(wǎng)平板電腦也使用了 Linux,該平板電腦具有 802.11、USB 和藍牙功能連接性、800 x 480 像素觸摸屏和 64 MB 閃存(圖 3)。除了網(wǎng)絡(luò)瀏覽器,770 還配備了電子郵件客戶端、媒體播放器、文件管理器、游戲和幾個通用應(yīng)用程序。諾基亞 770 可在線購買,售價 360 美元。在今年拉斯維加斯的消費電子展上,Sonos 推出了基于 Linux 的 ZonePlay
50、er ZP80(如圖),它是無線系統(tǒng)的一部分,使用戶能夠?qū)?shù)字音樂流式傳輸?shù)郊抑械囊纛l設(shè)備。一旦您使用模擬或數(shù)字輸出將 ZP80 連接到任何音頻放大器設(shè)備,該設(shè)備就會成為無線、多房間數(shù)字音樂系統(tǒng)的一部分,您可以使用彩色 Sonos 控制器進行操作。 ZP80 包括一個自動檢測的線路輸入連接器,可以對任何傳入的音頻源進行數(shù)字編碼,例如 Apple iPod、CD 播放器或衛(wèi)星收音機。 Sonos ZonePlayer ZP80 零售價為 349 美元。如果您對 CE 使用的 Linux 比較陌生,您可以前往 CELF(消費電子 Linux 論壇)獲取新聞、討論和自定義源代碼。該論壇的目標是通過公
51、開指定和管理面向 CE 的代碼來增強用于 CE 設(shè)備的 Linux 的功能。您還可以在 HYPERLINK :/ linuxdevices / .linuxdevices找到有關(guān) Linux CE 產(chǎn)品的信息。這包括有關(guān) Linux 編程的最新新聞、文章和教程、現(xiàn)有分銷商以及有關(guān)嵌入式系統(tǒng)主題的論壇。當下一代 CE 設(shè)備進入市場時,設(shè)計人員必須準備好提供具有復(fù)雜用戶界面、網(wǎng)絡(luò)連接和實時數(shù)據(jù)安全功能的定制應(yīng)用軟件。 Linux 提供了一個免版稅的開源操作系統(tǒng),并且內(nèi)置了一些這樣和那樣的特性。事實上,互聯(lián)網(wǎng)上有數(shù)百萬免費的 Linux 兼容軟件支持 CE 開發(fā)項目。有了這些好處以及越來越多的技術(shù)愛
52、好者,Linux 在 CE 行業(yè)一定有一個光明的未來。 HYPERLINK :/ /online/arm/7-1.htm t _blank 第7章嵌入式uClinux及其應(yīng)用開發(fā)(一)本章從為 S 3C4510B 硬件平臺構(gòu)建嵌入式 uClinux 操作系統(tǒng)并在其上開發(fā)應(yīng)用程序入手,逐步介紹如何在 Linux 環(huán)境下編寫用戶應(yīng)用程序的方法和步驟。介紹在這個平臺上使用什么樣的工具來編寫和編譯你自己的應(yīng)用程序。通過本章的學(xué)習(xí),讀者可以對嵌入式uClinux有一定的了解,掌握Linux和Windows下嵌入式系統(tǒng)應(yīng)用開發(fā)的基本方法。本章主要包括:- 嵌入式uClinux系統(tǒng)概述- 使用開發(fā)工具 GN
53、U- 建立uClinux開發(fā)環(huán)境- 在uClinux下開發(fā)應(yīng)用程序7.1 嵌入式uClinux系統(tǒng)概述在PC上開發(fā)應(yīng)用程序的用戶會有這樣的感覺:PC擁有完整的操作系統(tǒng),并提供了應(yīng)用程序編程接口(API),開發(fā)的應(yīng)用程序可以直接在操作系統(tǒng)上運行。雖然嵌入式系統(tǒng)的應(yīng)用程序可以完全在裸板上運行,但為了使系統(tǒng)具備任務(wù)管理、定時器管理、內(nèi)存管理、資源管理、事件管理、系統(tǒng)管理、消息管理、隊列管理和中斷處理,為了提供多任務(wù)處理和更好的系統(tǒng)資源分配,用戶需要根據(jù)自己的硬件平臺和實際應(yīng)用選擇合適的嵌入式操作系統(tǒng)(Embedded Operating System,以下簡稱EOS)。本節(jié)將結(jié)合本書中提到的硬件平臺
54、S 4510B,介紹一個不帶MMU的ARM微處理器的嵌入式操作系統(tǒng)uClinux。3CuClinux 是一個完全符合 GNU/GPL 約定、完全開放代碼的操作系統(tǒng),現(xiàn)在由 Lineo Corporation 支持和維護。 uClinux的發(fā)音是“you-see-linux”,它的名字來源于希臘字母“mu”和英文大寫字母“C”的組合。 “mu”代表“micro”,字母“C”代表“controller”,所以可以從字面上看,即“微控制領(lǐng)域的Linux系統(tǒng)”。為了降低硬件成本和運行功耗,有一種CPU在設(shè)計中取消了內(nèi)存管理單元(Memory Management Unit,以下簡稱MMU)功能模塊。最
55、初,這些沒有 MMU 的 CPU 運行在一些非常簡單的單任務(wù)操作系統(tǒng)上,或者更簡單的控制程序,甚至完全不使用操作系統(tǒng)直接運行應(yīng)用程序。在這種情況下,系統(tǒng)無法運行復(fù)雜的應(yīng)用程序,或者效率低下,所有應(yīng)用程序都需要重寫,并且需要程序員非常了解硬件特性。這些都阻礙了應(yīng)用于此類 CPU 的嵌入式產(chǎn)品開發(fā)的速度。然而,隨著 uClinux 的誕生,這一切都改變了。uClinux源自Linux 2.0/2.4內(nèi)核,繼承了主流Linux的大部分特性。它專門用于沒有 MMU 的 CPU,并為嵌入式系統(tǒng)做了很多小型化。對于沒有虛擬內(nèi)存或內(nèi)存管理單元 (MMU) 的處理器,例如 ARM7TDMI。它通常用于內(nèi)存或閃
56、存很少的嵌入式系統(tǒng)。 uClinux 是對標準 Linux 的修正,以支持沒有 MMU 的處理器。它保留了操作系統(tǒng)的所有特性,為硬件平臺更好地運行各種程序提供了保障。在 GNU 通用公共許可證(GNU GPL)的保證下,運行 uClinux 操作系統(tǒng)的用戶可以使用幾乎所有的 Linux API 功能,而不受缺少 MMU 的影響。由于uClinux在標準Linux的基礎(chǔ)上進行了適當?shù)牟眉艉蛢?yōu)化,形成了高度優(yōu)化、緊湊的嵌入式Linux。雖然體積很小,但uClinux仍然保留了Linux的大部分優(yōu)點:穩(wěn)定、可移植性好、網(wǎng)絡(luò)功能優(yōu)秀、對各種文件系統(tǒng)的支持完整、標準API豐富。圖 7.1 顯示了 uCl
57、inux 的基本架構(gòu)。圖 7.1 uClinux 的基本架構(gòu)Boot Loader:負責Linux內(nèi)核的啟動,用于初始化系統(tǒng)資源,包括SDRAM。這部分代碼用于搭建Linux內(nèi)核運行環(huán)境,從Flash加載初始ramdisk。內(nèi)核初始化:Linux內(nèi)核的入口點是start_kernel()函數(shù)。它初始化內(nèi)核的其他部分,包括捕獲、IRQ 通道、調(diào)度、設(shè)備驅(qū)動程序、校準延遲循環(huán),最重要的是能夠派生“init”進程以啟動整個多任務(wù)環(huán)境。系統(tǒng)調(diào)用函數(shù)/捕獲函數(shù):在“init”程序執(zhí)行后,檢查器不再直接控制程序流程,此后,它的作用只是處理異步事件(如硬件中斷)并為系統(tǒng)調(diào)用。設(shè)備驅(qū)動程序:設(shè)備驅(qū)動程序占據(jù)了
58、 Linux 內(nèi)核的很大一部分。與其他操作系統(tǒng)一樣,設(shè)備驅(qū)動程序為它們控制的硬件設(shè)備和操作系統(tǒng)提供接口。文件系統(tǒng):Linux 最重要的特性之一是它支持多個文件系統(tǒng)。此功能使 Linux 可以輕松與其他操作系統(tǒng)共存。文件系統(tǒng)的概念使用戶能夠查看存儲設(shè)備上的文件和路徑,而不管實際物理設(shè)備的文件系統(tǒng)類型如何。 Linux 透明地支持多種不同的文件系統(tǒng),將各種已安裝的文件和文件系統(tǒng)以完整的虛擬文件系統(tǒng)的形式呈現(xiàn)給用戶。下面介紹一些與uClinux相關(guān)的知識。1. MMU(內(nèi)存管理單元)和VM(虛擬內(nèi)存)許多嵌入式微處理器不支持虛擬內(nèi)存,因為它們沒有 MMU。沒有內(nèi)存管理單元的好處是可以簡化芯片設(shè)計,降
59、低產(chǎn)品成本。由于大多數(shù)嵌入式設(shè)備沒有磁盤或內(nèi)存空間非常有限,因此不需要復(fù)雜的內(nèi)存管理機制。但是由于沒有MMU管理,操作系統(tǒng)不保護內(nèi)存空間,所有程序訪問的地址都是實際的物理地址。但從嵌入式系統(tǒng)一般實現(xiàn)某種功能的角度來看,對于存儲管理的需求可以由程序開發(fā)者考慮。2.實時支持uClinux 本身不支持實時,有兩種不同的解決方案可以為 uClinux 提供實時支持,它們是 RTLinux (RTL) 和 RTAI (Real Time Application Interface)。通過這兩種方案,uClinux可以應(yīng)用于實時性要求高的場合。3.平臺支持開發(fā)uClinux的工具鏈:uClinux 的開發(fā)
60、通常使用標準的 GNU 工具鏈。修改后的工具鏈支持一些高級特性,如 XIP(Execute-In-Place)技術(shù)、共享庫支持等。用于 uClinux 的微控制器:uClinux適用于Motorola的ColdFire/Dragonball、ARM系列(如Atmel、TI、Samsung等生產(chǎn)的芯片)、Intel i960、Sparc(如沒有MMU的LEON)、NEC v850,甚至可以開放綜合(到CLPD) CPU 內(nèi)核,例如 OPENcore。4.與標準Linux的兼容性除了 uClinux 不能實現(xiàn) fork() 而是使用 vfork() 之外,其余 uClinux 的 API 函數(shù)與標
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位管理制度集合大全人員管理篇十篇
- 單位管理制度集粹選集人事管理篇十篇
- 單位管理制度匯編大全人員管理十篇
- 《語文作業(yè)要求》課件
- 單位管理制度分享合集職工管理十篇
- 單位管理制度分享大合集職工管理
- 單位管理制度范文大合集職員管理十篇
- 單位管理制度范例匯編員工管理十篇
- 單位管理制度呈現(xiàn)匯編【人力資源管理】十篇
- 單位管理制度呈現(xiàn)大全員工管理十篇
- 2024-2030年中國大棚蔬菜種植行業(yè)市場發(fā)展監(jiān)測及投資前景展望報告
- 旋挖鉆孔灌注樁施工技術(shù)規(guī)程
- 船舶安全??繀f(xié)議書
- 幼師課例分析報告總結(jié)與反思
- 醫(yī)院門診醫(yī)療費用管理制度
- 2024年回遷房買賣合同樣本(5篇)
- 《大數(shù)據(jù)技術(shù)原理與應(yīng)用(第3版)》期末復(fù)習(xí)題庫(含答案)
- 項目15-1 蛋黃中免疫球蛋白的提取
- MOOC 中國哲學(xué)經(jīng)典著作導(dǎo)讀-西安交通大學(xué) 中國大學(xué)慕課答案
- 醫(yī)院培訓(xùn)課件:《痞滿(少陽太陰合?。┗颊咧嗅t(yī)個案護理》
- 泌尿外科抗菌藥物臨床應(yīng)用規(guī)范
評論
0/150
提交評論