日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
uClinux系統(tǒng)簡介
uClinux系統(tǒng)簡介
 更新時(shí)間:2008-8-18 10:04:54  點(diǎn)擊數(shù):24
【字體: 字體顏色
簡介
Linux是一種很受歡迎的操作系統(tǒng),它與UNIX系統(tǒng)兼容,開放源代碼。它原本被設(shè)計(jì)為桌面系統(tǒng),現(xiàn)在廣泛應(yīng)用于服務(wù)器領(lǐng)域。而更大的影響在于它正逐漸的應(yīng)用于嵌入式設(shè)備。uClinux正是在這種氛圍下產(chǎn)生的。在uClinux這個(gè)英文單詞中u表示Micro,小的意思,C表示Control,控制的意思,所以uClinux就是Micro-Control-Linux,字面上的理解就是"針對微控制領(lǐng)域而設(shè)計(jì)的Linux系統(tǒng)"。

uClinux小型化的做法

標(biāo)準(zhǔn)Linux可能采用的小型化方法
1. 重新編譯內(nèi)核
Linux內(nèi)核采用模塊化的設(shè)計(jì),即很多功能塊可以獨(dú)立的加上或卸下,開發(fā)人員在設(shè)計(jì)內(nèi)核時(shí)把這些內(nèi)核模塊作為可選的選項(xiàng),可以在編譯系統(tǒng)內(nèi)核時(shí)指定。因此一種較通用的做法是對Linux內(nèi)核重新編譯,在編譯時(shí)仔細(xì)的選擇嵌入式設(shè)備所需要的功能支持模塊,同時(shí)刪除不需要的功能。通過對內(nèi)核的重新配置,可以使系統(tǒng)運(yùn)行所需要的內(nèi)核顯著減小,從而縮減資源使用量。
2. 制作root文件系統(tǒng)映象
Linux系統(tǒng)在啟動(dòng)時(shí)必須加載根(root)文件系統(tǒng),因此剪裁系統(tǒng)同時(shí)包括root file system的剪裁。在x86系統(tǒng)下,Linux可以在Dos下,使用Loadlin文件加載啟動(dòng),
uClinux采用的小型化方法
1.uClinux的內(nèi)核加載方式
uClinux的內(nèi)核有兩種可選的運(yùn)行方式:可以在flash上直接運(yùn)行,也可以加載到內(nèi)存中運(yùn)行。這種做法可以減少內(nèi)存需要。
Flash運(yùn)行方式:把內(nèi)核的可執(zhí)行映象燒寫到flash上,系統(tǒng)啟動(dòng)時(shí)從flash的某個(gè)地址開始逐句執(zhí)行。這種方法實(shí)際上是很多嵌入式系統(tǒng)采用的方法。
內(nèi)核加載方式:把內(nèi)核的壓縮文件存放在flash上,系統(tǒng)啟動(dòng)時(shí)讀取壓縮文件在內(nèi)存里解壓,然后開始執(zhí)行,這種方式相對復(fù)雜一些,但是運(yùn)行速度可能更快(ram的存取速率要比flash高)。同時(shí)這也是標(biāo)準(zhǔn)Linux系統(tǒng)采用的啟動(dòng)方式。
2.uClinux的根(root)文件系統(tǒng)
uClinux系統(tǒng)采用romfs文件系統(tǒng),這種文件系統(tǒng)相對于一般的ext2文件系統(tǒng)要求更少的空間?臻g的節(jié)約來自于兩個(gè)方面,首先內(nèi)核支持romfs文件系統(tǒng)比支持ext2文件系統(tǒng)需要更少的代碼,其次romfs文件系統(tǒng)相對簡單,在建立文件系統(tǒng)超級塊(superblock)需要更少的存儲空間。Romfs文件系統(tǒng)不支持動(dòng)態(tài)擦寫保存,對于系統(tǒng)需要?jiǎng)討B(tài)保存的數(shù)據(jù)采用虛擬ram盤的方法進(jìn)行處理(ram盤將采用ext2文件系統(tǒng))。
3.uClinux的應(yīng)用程序庫
uClinux小型化的另一個(gè)做法是重寫了應(yīng)用程序庫,相對于越來越大且越來越全的glibc庫,uClibc對libc做了精簡。
uClinux對用戶程序采用靜態(tài)連接的形式,這種做法會(huì)使應(yīng)用程序變大,但是基于內(nèi)存管理的問題,不得不這樣做(這將在下文對uClinux內(nèi)存管理展開分析時(shí)進(jìn)行說明),同時(shí)這種做法也更接近于通常嵌入式系統(tǒng)的做法。

uClinux的開發(fā)環(huán)境

GNU開發(fā)套件
Gnu開發(fā)套件作為通用的Linux開放套件,包括一系列的開發(fā)調(diào)試工具。主要組件:
Gcc: 編譯器,可以做成交叉編譯的形式,即在宿主機(jī)上開發(fā)編譯目標(biāo)上可運(yùn)行的二進(jìn)制文件。
Binutils:一些輔助工具,包括objdump(可以反編譯二進(jìn)制文件),as(匯編編譯器),ld(連接器)等等。
Gdb:調(diào)試器,可使用多種交叉調(diào)試方式,gdb-bdm(背景調(diào)試工具),gdbserver(使用以太網(wǎng)絡(luò)調(diào)試)。
uClinux的打印終端
通常情況下,uClinux的默認(rèn)終端是串口,內(nèi)核在啟動(dòng)時(shí)所有的信息都打印到串口終端(使用printk函數(shù)打。,同時(shí)也可以通過串口終端與系統(tǒng)交互。
uClinux在啟動(dòng)時(shí)啟動(dòng)了telnetd(遠(yuǎn)程登錄服務(wù)),操作者可以遠(yuǎn)程登錄上系統(tǒng),從而控制系統(tǒng)的運(yùn)行。至于是否允許遠(yuǎn)程登錄可以通過燒寫romfs文件系統(tǒng)時(shí)有用戶決定是否啟動(dòng)遠(yuǎn)程登錄服務(wù)。
交叉編譯調(diào)試工具
支持一種新的處理器,必須具備一些編譯,匯編工具,使用這些工具可以形成可運(yùn)行于這種處理器的二進(jìn)制文件。對于內(nèi)核使用的編譯工具同應(yīng)用程序使用的有所不同。在解釋不同點(diǎn)之前,需要對gcc連接做一些說明:
.ld(link description)文件:ld文件是指出連接時(shí)內(nèi)存映象格式的文件。
crt0.S:應(yīng)用程序編譯連接時(shí)需要的啟動(dòng)文件,主要是初始化應(yīng)用程序棧。
pic:position independence code ,與位置無關(guān)的二進(jìn)制格式文件,在程序段中必須包括reloc段,從而使的代碼加載時(shí)可以進(jìn)行重新定位。
內(nèi)核編譯連接時(shí),使用ucsimm.ld文件,形成可執(zhí)行文件映象,所形成的代碼段既可以使用間接尋址方式(即使用reloc段進(jìn)行尋址),也可以使用絕對尋址方式。這樣可以給編譯器更多的優(yōu)化空間。因?yàn)閮?nèi)核可能使用絕對尋址,所以內(nèi)核加載到的內(nèi)存地址空間必須與ld文件中給定的內(nèi)存空間完全相同。
應(yīng)用程序的連接與內(nèi)核連接方式不同。應(yīng)用程序由內(nèi)核加載(可執(zhí)行文件加載器將在后面討論),由于應(yīng)用程序的ld文件給出的內(nèi)存空間與應(yīng)用程序?qū)嶋H被加載的內(nèi)存位置可能不同,這樣在應(yīng)用程序加載的過程中需要一個(gè)重新地位的過程,即對reloc段進(jìn)行修正,使得程序進(jìn)行間接尋址時(shí)不至于出錯(cuò)。(這個(gè)問題在i386等高級處理器上方法有所不同,本文將在后面進(jìn)一步分析)。
由上述討論,至少需要兩套編譯連接工具。在討論過uClinux的內(nèi)存管理后本文將給出整個(gè)系統(tǒng)的工作流程以及系統(tǒng)在flash和ram中的空間分布。
可執(zhí)行文件格式
先對一些名詞作一些說明:
coff(common object file format):一種通用的對象文件格式
elf(excutive linked file):一種為Linux系統(tǒng)所采用的通用文件格式,支持動(dòng)態(tài)連接
flat:elf格式有很大的文件頭,flat文件對文件頭和一些段信息做了簡化
uClinux系統(tǒng)使用flat可執(zhí)行文件格式,gcc的編譯器不能直接形成這種文件格式,但是可以形成coff或elf格式的可執(zhí)行文件,這兩種文件需要coff2flt或elf2flt工具進(jìn)行格式轉(zhuǎn)化,形成flat文件。
當(dāng)用戶執(zhí)行一個(gè)應(yīng)用時(shí),內(nèi)核的執(zhí)行文件加載器將對flat文件進(jìn)行進(jìn)一步處理,主要是對reloc段進(jìn)行修正(可執(zhí)行文件加載器的詳見fs/binfmt_flat.c)。以下對reloc段進(jìn)一步討論。
需要reloc段的根本原因是,程序在連接時(shí)連接器所假定的程序運(yùn)行空間與實(shí)際程序加載到的內(nèi)存空間不同。假如有這樣一條指令:
jsr app_start;
這一條指令采用直接尋址,跳轉(zhuǎn)到app_start地址處執(zhí)行,連接程序?qū)⒃诰幾g完成是計(jì)算出app_start的實(shí)際地址(設(shè)若實(shí)際地址為0x10000),這個(gè)實(shí)際地址是根據(jù)ld文件計(jì)算出來(因?yàn)檫B接器假定該程序?qū)⒈患虞d到由ld文件指明的內(nèi)存空間)。但實(shí)際上由于內(nèi)存分配的關(guān)系,操作系統(tǒng)在加載時(shí)無法保證程序?qū)磍d文件加載。這時(shí)如果程序仍然跳轉(zhuǎn)到絕對地址0x10000處執(zhí)行,通常情況這是不正確的。一個(gè)解決辦法是增加一個(gè)存儲空間,用于存儲app_start的實(shí)際地址,設(shè)若使用變量addr表示這個(gè)存儲空間。則以上這句程序?qū)⒏臑椋?/div>
[1] [2] [3]  下一頁
  • 上一篇: 易失性、32抽頭數(shù)控電位器
  • 下一篇: PID控制器的參數(shù)整定
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1