電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>嵌入式操作系統(tǒng)uCLinux詳解

嵌入式操作系統(tǒng)uCLinux詳解

2017-11-02 | rar | 0.2 MB | 次下載 | 1積分

資料介紹

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

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開關(guān)電源基礎(chǔ)知識
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)