資料介紹
1 引言
嵌入式操作系統(tǒng)是嵌入式系統(tǒng)的靈魂,而且在同一個硬件平臺上可以嵌入不同的嵌入式操作系統(tǒng)。比如ARM7TDMI內核,可以嵌入Nucleus、VxWorks、uClinux等操作系統(tǒng)。在此主要對uClinux的進行介紹,嵌入式uClinux操作系統(tǒng)主要有三個基本部分組成:引導程序、uClinux內核(由內存管理、進程管理和中斷處理等構成)和文件系統(tǒng)。uClinux可以通過定制使內核小型化,還可以加上GUI(圖形用戶界面)和定制應用程序,并將其放在ROM、RAM、FLASH或Disk On Chip中啟動。由于嵌入式uClinux操作系統(tǒng)的內核定制高度靈活性,開發(fā)者可以很容易地對其進行按需配置,來滿足實際應用需要。又由于uClinux是源代碼公開,因此開發(fā)人員只有了解內核原理就可以自己開發(fā)部分軟件,例如增加各類驅動程序。下面將詳細分析嵌入式操作系統(tǒng)uClinux。
2 嵌入式uCinux內核結構
uClinux內核結構如圖1所示:

圖1代表了內核的功能結構,與Linux基本相同,不同的只是對內存管理和進程管理進行改寫,以滿足無MMU處理器的要求。uClinux是Linux 操作系統(tǒng)的一種,是由Linux2.0內核發(fā)展來的,是專為沒有MMU的微處理器(如ARM7TDMI、Coldfire 等)設計的嵌入式Linux操作系統(tǒng)。另外,由于大多數(shù)內核源代碼都被重寫,uClinux的內核要比原Linux 2.0內核小的多, 但保留了Linux 操作系統(tǒng)的主要優(yōu)點:穩(wěn)定性,優(yōu)異的網(wǎng)絡能力以及優(yōu)秀的文件系統(tǒng)支持。
3 uClinux的內存管理
uClinux同標準Linux的最大區(qū)別就在于內存管理。標準Linux是針對有MMU的處理器設計的。在這種處理器上,虛擬地址被送到MMU,MMU把虛擬地址映射為物理地址。通過賦予每個任務不同的虛擬—物理地址轉換映射,支持不同任務之間的保護。對于uCLinux來說,其設計針對沒有MMU的處理器,不能使用處理器的虛擬內存管理技術。
uClinux不能使用處理器的虛擬內存管理技術(應該說這種不帶有MMU的處理器在嵌入式設備中相當普遍)。
uClinux仍采用存儲器的分頁管理,系統(tǒng)在啟動時把實際存儲器進行分頁。在加載應用程序時程序分頁加載。但是由于沒有MMU管理,所以實際上uClinux采用實存儲器管理策略(real memeory management)。這一點影響了系統(tǒng)工作的很多方面。
uClinux系統(tǒng)對于內存的訪問是直接的,(它對地址的訪問不需要經過MMU,而是直接送到地址線上輸出),所有程序中訪問的地址都是實際的物理地址。操作系統(tǒng)對內存空間沒有保護(這實際上是很多嵌入式系統(tǒng)的特點),各個進程實際上共享一個運行空間(沒有獨立的地址轉換表)。
一個進程在執(zhí)行前,系統(tǒng)必須為進程分配足夠的連續(xù)地址空間,然后全部載入主存儲器的連續(xù)空間中。與之相對應的是標準Linux系統(tǒng)在分配內存時沒有必要保證實際物理存儲空間是連續(xù)的,而只要保證虛存地址空間連續(xù)就可以了。此外磁盤交換空間也是無法使用的,系統(tǒng)執(zhí)行時如果缺少內存將無法通過磁盤交換來得到改善。
uClinux對內存的管理減少同時就給開發(fā)人員提出了更高的要求。如果從易用性這一點來說,uClinux的內存管理是一種倒退,退回了到了UNIX早期或是Dos系統(tǒng)時代。開發(fā)人員不得不參與系統(tǒng)的內存管理。從編譯內核開始,開發(fā)人員必須告訴系統(tǒng)這塊開發(fā)板到底擁有多少的內存(假如你欺騙了系統(tǒng),那將在后面運行程序時受到懲罰),從而系統(tǒng)將在啟動的初始化階段對內存進行分頁,并且標記已使用的和未使用的內存。系統(tǒng)將在運行應用時使用這些分頁內存。
由于應用程序加載時必須分配連續(xù)的地址空間,而針對不同硬件平臺的可一次成塊(連續(xù)地址)分配內存大小限制是不同(目前針對EZ328處理器的uClinux是128k,而針對Coldfire處理器的系統(tǒng)內存則無此限制),所以開發(fā)人員在開發(fā)應用程序時必須考慮內存的分配情況并關注應用程序需要運行空間的大小。另外由于采用實存儲器管理策略,用戶程序同內核以及其它用戶程序在一個地址空間,程序開發(fā)時要保證不侵犯其它程序的地址空間,以使得程序不至于破壞系統(tǒng)的正常工作,或導致其它程序的運行異常。
從內存的訪問角度來看,開發(fā)人員的權利增大了(開發(fā)人員在編程時可以訪問任意的地址空間),但與此同時系統(tǒng)的安全性也大為下降。此外,系統(tǒng)對多進程的管理將有很大的變化,這一點將在uClinux的多進程管理中說明。
4 uClinux的多進程處理
uClinux沒有MMU管理存儲器,在實現(xiàn)多個進程時(fork調用生成子進程)需要實現(xiàn)數(shù)據(jù)保護。由于uClinux的多進程管理是通過vfork來實現(xiàn),因此fork等于vfork。這意味著uClinux系統(tǒng)fork調用完成后,要么子進程代替父進程執(zhí)行(此時父進程已經sleep)直到子進程調用exit退出;要么調用exec執(zhí)行一個新的進程,這個時候將產生可執(zhí)行文件的加載,即使這個進程只是父進程的拷貝,這個過程也不能避免。當子進程執(zhí)行exit或exec后,子進程使用wakeup把父進程喚醒,使父進程繼續(xù)往下執(zhí)行。
uClinux的這種多進程實現(xiàn)機制同它的內存管理緊密相關。uClinux針對沒有mmu處理器開發(fā),所以被迫使用一種flat方式的內存管理模式,啟動新的應用程序時系統(tǒng)必須為應用程序分配存儲空間,并立即把應用程序加載到內存。缺少了MMU的內存重映射機制,uClinux必須在可執(zhí)行文件加載階段對可執(zhí)行文件reloc處理,使得程序執(zhí)行時能夠直接使用物理內存。
5 uCLinux針對實時性的解決方案
uClinux本身并沒有關注實時問題,它并不是為了Linux的實時性而提出的。另外有一種Linux:RT-Linux關注實時問題。RT-Linux執(zhí)行管理器把普通Linux的內核當成一個任務運行,同時還管理了實時進程。而非實時進程則交給普通Linux內核處理。這種方法已經應用于很多的操作系統(tǒng)用于增強操作系統(tǒng)的實時性,包括一些商用版UNIX系統(tǒng),Windows NT等等。這種方法優(yōu)點之一是實現(xiàn)簡單,且實時性能容易檢驗。優(yōu)點之二是由于非實時進程運行于標準Linux系統(tǒng),同其它Linux商用版本之間保持了很大的兼容性。優(yōu)點之三是可以支持硬實時時鐘的應用。uClinux可以使用RT-Linux的patch,從而增強uClinux的實時性,使得uClinux可以應用于工業(yè)控制、進程控制等一些實時要求較高的應用。
6 uClinux的開發(fā)環(huán)境
嵌入式操作系統(tǒng)是嵌入式系統(tǒng)的靈魂,而且在同一個硬件平臺上可以嵌入不同的嵌入式操作系統(tǒng)。比如ARM7TDMI內核,可以嵌入Nucleus、VxWorks、uClinux等操作系統(tǒng)。在此主要對uClinux的進行介紹,嵌入式uClinux操作系統(tǒng)主要有三個基本部分組成:引導程序、uClinux內核(由內存管理、進程管理和中斷處理等構成)和文件系統(tǒng)。uClinux可以通過定制使內核小型化,還可以加上GUI(圖形用戶界面)和定制應用程序,并將其放在ROM、RAM、FLASH或Disk On Chip中啟動。由于嵌入式uClinux操作系統(tǒng)的內核定制高度靈活性,開發(fā)者可以很容易地對其進行按需配置,來滿足實際應用需要。又由于uClinux是源代碼公開,因此開發(fā)人員只有了解內核原理就可以自己開發(fā)部分軟件,例如增加各類驅動程序。下面將詳細分析嵌入式操作系統(tǒng)uClinux。
2 嵌入式uCinux內核結構
uClinux內核結構如圖1所示:

圖1代表了內核的功能結構,與Linux基本相同,不同的只是對內存管理和進程管理進行改寫,以滿足無MMU處理器的要求。uClinux是Linux 操作系統(tǒng)的一種,是由Linux2.0內核發(fā)展來的,是專為沒有MMU的微處理器(如ARM7TDMI、Coldfire 等)設計的嵌入式Linux操作系統(tǒng)。另外,由于大多數(shù)內核源代碼都被重寫,uClinux的內核要比原Linux 2.0內核小的多, 但保留了Linux 操作系統(tǒng)的主要優(yōu)點:穩(wěn)定性,優(yōu)異的網(wǎng)絡能力以及優(yōu)秀的文件系統(tǒng)支持。
3 uClinux的內存管理
uClinux同標準Linux的最大區(qū)別就在于內存管理。標準Linux是針對有MMU的處理器設計的。在這種處理器上,虛擬地址被送到MMU,MMU把虛擬地址映射為物理地址。通過賦予每個任務不同的虛擬—物理地址轉換映射,支持不同任務之間的保護。對于uCLinux來說,其設計針對沒有MMU的處理器,不能使用處理器的虛擬內存管理技術。
uClinux不能使用處理器的虛擬內存管理技術(應該說這種不帶有MMU的處理器在嵌入式設備中相當普遍)。
uClinux仍采用存儲器的分頁管理,系統(tǒng)在啟動時把實際存儲器進行分頁。在加載應用程序時程序分頁加載。但是由于沒有MMU管理,所以實際上uClinux采用實存儲器管理策略(real memeory management)。這一點影響了系統(tǒng)工作的很多方面。
uClinux系統(tǒng)對于內存的訪問是直接的,(它對地址的訪問不需要經過MMU,而是直接送到地址線上輸出),所有程序中訪問的地址都是實際的物理地址。操作系統(tǒng)對內存空間沒有保護(這實際上是很多嵌入式系統(tǒng)的特點),各個進程實際上共享一個運行空間(沒有獨立的地址轉換表)。
一個進程在執(zhí)行前,系統(tǒng)必須為進程分配足夠的連續(xù)地址空間,然后全部載入主存儲器的連續(xù)空間中。與之相對應的是標準Linux系統(tǒng)在分配內存時沒有必要保證實際物理存儲空間是連續(xù)的,而只要保證虛存地址空間連續(xù)就可以了。此外磁盤交換空間也是無法使用的,系統(tǒng)執(zhí)行時如果缺少內存將無法通過磁盤交換來得到改善。
uClinux對內存的管理減少同時就給開發(fā)人員提出了更高的要求。如果從易用性這一點來說,uClinux的內存管理是一種倒退,退回了到了UNIX早期或是Dos系統(tǒng)時代。開發(fā)人員不得不參與系統(tǒng)的內存管理。從編譯內核開始,開發(fā)人員必須告訴系統(tǒng)這塊開發(fā)板到底擁有多少的內存(假如你欺騙了系統(tǒng),那將在后面運行程序時受到懲罰),從而系統(tǒng)將在啟動的初始化階段對內存進行分頁,并且標記已使用的和未使用的內存。系統(tǒng)將在運行應用時使用這些分頁內存。
由于應用程序加載時必須分配連續(xù)的地址空間,而針對不同硬件平臺的可一次成塊(連續(xù)地址)分配內存大小限制是不同(目前針對EZ328處理器的uClinux是128k,而針對Coldfire處理器的系統(tǒng)內存則無此限制),所以開發(fā)人員在開發(fā)應用程序時必須考慮內存的分配情況并關注應用程序需要運行空間的大小。另外由于采用實存儲器管理策略,用戶程序同內核以及其它用戶程序在一個地址空間,程序開發(fā)時要保證不侵犯其它程序的地址空間,以使得程序不至于破壞系統(tǒng)的正常工作,或導致其它程序的運行異常。
從內存的訪問角度來看,開發(fā)人員的權利增大了(開發(fā)人員在編程時可以訪問任意的地址空間),但與此同時系統(tǒng)的安全性也大為下降。此外,系統(tǒng)對多進程的管理將有很大的變化,這一點將在uClinux的多進程管理中說明。
4 uClinux的多進程處理
uClinux沒有MMU管理存儲器,在實現(xiàn)多個進程時(fork調用生成子進程)需要實現(xiàn)數(shù)據(jù)保護。由于uClinux的多進程管理是通過vfork來實現(xiàn),因此fork等于vfork。這意味著uClinux系統(tǒng)fork調用完成后,要么子進程代替父進程執(zhí)行(此時父進程已經sleep)直到子進程調用exit退出;要么調用exec執(zhí)行一個新的進程,這個時候將產生可執(zhí)行文件的加載,即使這個進程只是父進程的拷貝,這個過程也不能避免。當子進程執(zhí)行exit或exec后,子進程使用wakeup把父進程喚醒,使父進程繼續(xù)往下執(zhí)行。
uClinux的這種多進程實現(xiàn)機制同它的內存管理緊密相關。uClinux針對沒有mmu處理器開發(fā),所以被迫使用一種flat方式的內存管理模式,啟動新的應用程序時系統(tǒng)必須為應用程序分配存儲空間,并立即把應用程序加載到內存。缺少了MMU的內存重映射機制,uClinux必須在可執(zhí)行文件加載階段對可執(zhí)行文件reloc處理,使得程序執(zhí)行時能夠直接使用物理內存。
5 uCLinux針對實時性的解決方案
uClinux本身并沒有關注實時問題,它并不是為了Linux的實時性而提出的。另外有一種Linux:RT-Linux關注實時問題。RT-Linux執(zhí)行管理器把普通Linux的內核當成一個任務運行,同時還管理了實時進程。而非實時進程則交給普通Linux內核處理。這種方法已經應用于很多的操作系統(tǒng)用于增強操作系統(tǒng)的實時性,包括一些商用版UNIX系統(tǒng),Windows NT等等。這種方法優(yōu)點之一是實現(xiàn)簡單,且實時性能容易檢驗。優(yōu)點之二是由于非實時進程運行于標準Linux系統(tǒng),同其它Linux商用版本之間保持了很大的兼容性。優(yōu)點之三是可以支持硬實時時鐘的應用。uClinux可以使用RT-Linux的patch,從而增強uClinux的實時性,使得uClinux可以應用于工業(yè)控制、進程控制等一些實時要求較高的應用。
6 uClinux的開發(fā)環(huán)境
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 嵌入式操作系統(tǒng)
- 課堂筆記之嵌入式Linux操作系統(tǒng)
- 嵌入式操作系統(tǒng)
- 什么是嵌入式操作系統(tǒng) 常見的嵌入式系統(tǒng)有哪些
- 詳解目前主流的嵌入式操作系統(tǒng)(RTOS)操作系統(tǒng)
- 介紹幾種開源嵌入式操作系統(tǒng)
- ucosII嵌入式實時操作系統(tǒng)實驗
- 嵌入式操作系統(tǒng)FreeRTOS的原理實現(xiàn)
- 嵌入式操作系統(tǒng)FREERTOS的移植.
- (完整版)vxworks嵌入式操作系統(tǒng) 0次下載
- 嵌入式操作系統(tǒng)的介紹和嵌入式操作系統(tǒng)的發(fā)展狀況和應用前景說明
- 嵌入式操作系統(tǒng)-李春杰 0次下載
- 基于uCLinux的嵌入式實時遠程數(shù)據(jù)采集系統(tǒng)
- 嵌入式實時操作系統(tǒng)教程
- 深入uclinux嵌入式操作系統(tǒng)
- 基于優(yōu)先級調度的嵌入式實時操作系統(tǒng)內核詳解(下) 936次閱讀
- 米爾科技嵌入式實時操作系統(tǒng)介紹 2348次閱讀
- 基于μC/OS嵌入式操作系統(tǒng)的嵌入式數(shù)據(jù)管理設計 1241次閱讀
- 基于ARM的嵌入式操作系統(tǒng)該如何設計 1558次閱讀
- 該如何正確選擇嵌入式操作系統(tǒng) 2811次閱讀
- 關于Linux嵌入式操作系統(tǒng)的優(yōu)勢特征詳解 5690次閱讀
- 構建eCos嵌入式系統(tǒng)的步驟教程 3987次閱讀
- 關于嵌入式Linux操作系統(tǒng)的內核調試技術詳解 1668次閱讀
- 隨機存儲器在嵌入式操作系統(tǒng)中的應用設計詳解 1433次閱讀
- 什么是嵌入式操作系統(tǒng) 常見的嵌入式系統(tǒng)有哪些 4w次閱讀
- 嵌入式操作系統(tǒng)是什么_嵌入式操作系統(tǒng)有哪些 2w次閱讀
- 如何設計一個小型嵌入式操作系統(tǒng) 9509次閱讀
- 基于FreeRTOS的嵌入式實時操作系統(tǒng)的原理和實現(xiàn) 6714次閱讀
- uC/OS和uClinux操作系統(tǒng)的區(qū)別 4534次閱讀
- 概述及匯總ARM的嵌入式操作系統(tǒng) 3008次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統(tǒng)的設計與實現(xiàn)
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發(fā)板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論