版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式Linux嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)是指支持嵌入式系統(tǒng)工作的操作系統(tǒng),它在知識(shí)體系和技術(shù)結(jié)構(gòu)上與通用操作系統(tǒng)沒(méi)有太大區(qū)別。實(shí)時(shí)系統(tǒng)是指一個(gè)能夠在指定的或者確定的時(shí)間內(nèi),實(shí)現(xiàn)系統(tǒng)功能和對(duì)外部或內(nèi)部、同步或異步事件作出響應(yīng)的系統(tǒng)。嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)在設(shè)計(jì)上都非常緊湊有效,拋棄了運(yùn)行在它們之上的特定的應(yīng)用程序所不需要的各種功能。嵌入式操作系統(tǒng)多數(shù)也是實(shí)時(shí)操作系統(tǒng)嵌入式操作系統(tǒng)負(fù)責(zé)嵌入系統(tǒng)的全部軟、硬件資源的分配、調(diào)度工作,控制協(xié)調(diào)并發(fā)活動(dòng),必須體現(xiàn)其所在系統(tǒng)的特征,能夠通過(guò)裝卸某些模塊來(lái)達(dá)到系統(tǒng)所要求的功能。典型的嵌入式操作系統(tǒng)VxWorksWindowsCEpSOSQNXPalmOS嵌入式LinuxC/OS-II國(guó)內(nèi)著名的嵌入式實(shí)時(shí)操作系統(tǒng)1.VxWorks
VxWorks操作系統(tǒng)美國(guó)WindRiver公司于1993年設(shè)計(jì)開(kāi)發(fā)的一種嵌入式實(shí)時(shí)操作系統(tǒng)。
VxWorks擁有良好的持續(xù)發(fā)展能力、高性能的內(nèi)核及友好的用戶(hù)開(kāi)發(fā)環(huán)境,是目前嵌入式系統(tǒng)領(lǐng)域中使用最廣泛、市場(chǎng)占有率最高的實(shí)時(shí)操作系統(tǒng)。
VxWorks支持多種處理器,如x86、i960、SunSparc、PowerPC、MotorolaMC68xxx,MIPSRX000、StrongARM等。
VxWorks采用GNU的編譯和調(diào)試器。1.VxWorksVxWorks以其良好的可靠性和卓越的實(shí)時(shí)性被廣泛的應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域中,如通信衛(wèi)星、軍事演習(xí)、導(dǎo)彈制導(dǎo)和飛機(jī)導(dǎo)航等。美國(guó)的F-16、FA-18戰(zhàn)斗機(jī),B-12隱形轟炸機(jī)和愛(ài)國(guó)者導(dǎo)彈。美國(guó)JPL實(shí)驗(yàn)室研制的著名“索杰納”火星探測(cè)器上也使用了VxWorks。2.WindowsCEMicrosoftWindowsCE是從整體上為有限資源的平臺(tái)而設(shè)計(jì)的多線程、多任務(wù)的嵌入式操作系統(tǒng)。WindowsCE主要針對(duì)小容量、移動(dòng)式、智能化、32位、連接設(shè)備的模塊化實(shí)時(shí)應(yīng)用。WindowsCE能夠?qū)φ粕显O(shè)備、無(wú)線設(shè)備、專(zhuān)用工業(yè)控制器的用戶(hù)電子設(shè)備等進(jìn)行定制,并能在多種處理器體系結(jié)構(gòu)上運(yùn)行,尤其適用于那些對(duì)內(nèi)存占用空間具有一定限制的設(shè)備。WindowsCE的基本內(nèi)核至少需要200K的ROM。
Microsoft公司為WindowsCE提供了PlatformBuilder和EmbeddedVisualStudio開(kāi)發(fā)工具。
WindowsCE嵌入式操作系統(tǒng)不是一個(gè)硬實(shí)時(shí)操作系統(tǒng),但它最大的優(yōu)點(diǎn)是能夠提供與PC機(jī)類(lèi)似的圖形用戶(hù)界面和主要的應(yīng)用程序。2.WindowsCE
4.QNX
QNX是加拿大QNX公司的產(chǎn)品。大多數(shù)RTOS都是從68K的CPU上開(kāi)發(fā)成熟,然后再移植到x86體系上。而QNX是直接在x86體系上開(kāi)發(fā)出來(lái)的,只是近幾年才在68K等CPU上使用。
QNX是實(shí)時(shí)、可擴(kuò)充的操作系統(tǒng),內(nèi)核非常小巧(QNX4.x約為12KB),且運(yùn)行速度極快。QNX具有強(qiáng)大的圖形界面功能,適合作為機(jī)頂盒、手持設(shè)備、GPS設(shè)備的嵌入式實(shí)時(shí)操作系統(tǒng)使用。6.嵌入式Linux
Linux是一種免費(fèi)的、源代碼完全開(kāi)放的、符合POSIX標(biāo)準(zhǔn)規(guī)范的操作系統(tǒng)。嵌入式Linux版本包括:硬實(shí)時(shí)的嵌入式Linux(如新墨西哥工學(xué)院的RT-Linux、堪薩斯大學(xué)的KURT-Linux)和一般的嵌入式Linux版本(如CLinux、PocketLinux等)。
RT-Linux通過(guò)把Linux任務(wù)優(yōu)先級(jí)設(shè)為最低,而所有實(shí)時(shí)任務(wù)的優(yōu)先級(jí)都高于它,最終達(dá)到既兼容通常的Linux任務(wù)又保證強(qiáng)實(shí)時(shí)性能的目的。6.嵌入式Linux
CLinux是針對(duì)沒(méi)有MMU的處理器而開(kāi)發(fā)的,已被廣泛使用在ColdFire、ARM、MIPS、SPARC、SuperH等沒(méi)有MMU的微處理器上。雖然CLinux的內(nèi)核比Linux2.0內(nèi)核小得多,但它保留了Linux操作系統(tǒng)穩(wěn)定性好、網(wǎng)絡(luò)能力優(yōu)異以及對(duì)文件系統(tǒng)的支持等主要優(yōu)點(diǎn)。
CLinux與標(biāo)準(zhǔn)Linux最大的區(qū)別在于內(nèi)存管理。7.C/OS-II
C/OS-II是一個(gè)完整的,源碼公開(kāi)的,可移植、固化、裁剪的占先式實(shí)時(shí)多任務(wù)內(nèi)核,主要面向中小型嵌入式系統(tǒng),具有執(zhí)行效率高、占用空間小、可移植性強(qiáng)、實(shí)時(shí)性能優(yōu)良和可擴(kuò)展性強(qiáng)等特點(diǎn)。
C/OS-II結(jié)構(gòu)小巧,最小內(nèi)核可編譯至2K,即使包含全部功能編譯后也僅有6~10KB,非常適用于小型控制系統(tǒng)。8.國(guó)內(nèi)著名的嵌入式實(shí)時(shí)操作系統(tǒng)
DeltaOS
DeltaOS是全中文的嵌入式實(shí)時(shí)操作系統(tǒng),提供強(qiáng)實(shí)時(shí)和嵌入式多任務(wù)的內(nèi)核。
DeltaOS的特點(diǎn)是任務(wù)響應(yīng)時(shí)間快速、確定,不隨任務(wù)負(fù)載大小改變;絕大部分的代碼由C語(yǔ)言編寫(xiě),具有很好的移植性。
適用于內(nèi)在要求較大、可靠性要求較高的嵌入式系統(tǒng),成功應(yīng)用于通信、網(wǎng)絡(luò)、信息家電等多個(gè)領(lǐng)域。8.國(guó)內(nèi)著名的嵌入式實(shí)時(shí)操作系統(tǒng)
HopenOS
HopenOS由一個(gè)體積很小的內(nèi)核以及一些可以根據(jù)需要自行定制的系統(tǒng)模塊組成。其核心HopenKernel的規(guī)模一般為10KB左右,占用空間小,并具有實(shí)時(shí)、多任務(wù)、多線程的系統(tǒng)特征。8.國(guó)內(nèi)著名的嵌入式實(shí)時(shí)操作系統(tǒng)
HBOS
HBOS系統(tǒng)具有實(shí)時(shí)、多任務(wù)等特征,能提供瀏覽器、網(wǎng)絡(luò)通信核圖形窗口等服務(wù),還可供進(jìn)行一定的定制或二次開(kāi)發(fā),并能為應(yīng)用軟件開(kāi)發(fā)提供API接口支持。
HBOS系統(tǒng)可用于信息家電、智能設(shè)備和儀器儀表等領(lǐng)域開(kāi)發(fā)應(yīng)用。在HBOS系統(tǒng)平臺(tái)下,已經(jīng)成功地開(kāi)發(fā)出機(jī)頂盒和數(shù)據(jù)采集等系統(tǒng)。嵌入式Linux概述
Linux介紹嵌入式Linux系統(tǒng)交叉開(kāi)發(fā)環(huán)境開(kāi)發(fā)工具GNU的介紹Linux介紹Linux是類(lèi)UNIX操作系統(tǒng)。最初是由LinusTorvalds于1991年在基于Intel80386處理器的IBM兼容機(jī)上開(kāi)發(fā)的操作系統(tǒng)。出現(xiàn)在二十世紀(jì)九十年代,在短短十幾年的時(shí)間里發(fā)展成為功能強(qiáng)大,設(shè)計(jì)完善的操作系統(tǒng)。源程序可以在/下載。Linux介紹Linux有異常豐富的驅(qū)動(dòng)程序資源,支持各種主流的硬件設(shè)備與技術(shù)。它能夠固化在容量只有幾KB或者幾MB的存儲(chǔ)芯片或者微控制器中。Linux包含了現(xiàn)代的UNIX操作系統(tǒng)的所有功能特性,包括多任務(wù)、虛擬內(nèi)存、虛擬文件系統(tǒng)、進(jìn)程間通信、對(duì)稱(chēng)多處理器(SMP)、多用戶(hù)支持等功能。Linux介紹Linux具有以下特性:小巧,吞吐率好強(qiáng)大的網(wǎng)絡(luò)功能真正的多任務(wù)和多用戶(hù)符合IEEEPOSIX標(biāo)準(zhǔn)支持?jǐn)?shù)十種文件系統(tǒng)
有完整的開(kāi)發(fā)工具嵌入式Linux操作系統(tǒng)的應(yīng)用領(lǐng)域:手機(jī)、PDA數(shù)字相機(jī)、數(shù)字電視機(jī)、數(shù)碼相機(jī)VCD/DVD音響設(shè)備、可視電話家庭網(wǎng)絡(luò)設(shè)備洗衣機(jī)、電冰箱智能玩具Linux介紹廣泛應(yīng)用的原因:公開(kāi)源代碼沒(méi)有專(zhuān)利費(fèi)外部設(shè)備驅(qū)動(dòng)豐富網(wǎng)絡(luò)協(xié)議及中間件非常豐富穩(wěn)定可靠良好的可移植性嵌入式Linux嵌入式Linux(EmbeddedLinux)是指對(duì)標(biāo)準(zhǔn)Linux經(jīng)過(guò)小型化裁剪處理之后,能夠固化在容量只有幾KB或者幾MB字節(jié)的存儲(chǔ)器芯片或者單片機(jī)中,是適用于特定嵌入式應(yīng)用場(chǎng)合的專(zhuān)用Linux操作系統(tǒng)。嵌入式Linux在目前已經(jīng)開(kāi)發(fā)成功的嵌入式系統(tǒng)中,約有一半使用的是Linux。這與它自身的優(yōu)良特性是分不開(kāi)的。嵌入式Linux同Linux一樣,具有低成本、多種硬件平臺(tái)支持、優(yōu)異的性能和良好的網(wǎng)絡(luò)支持等優(yōu)點(diǎn)。
嵌入式Linux
嵌入式Linux還在Linux基礎(chǔ)上做了部分改進(jìn),主要的改動(dòng)有:改善的內(nèi)核結(jié)構(gòu)提高的系統(tǒng)實(shí)時(shí)性嵌入式Linux同Linux一樣,也有眾多的版本,其中不同的版本分別針對(duì)不同的需要在內(nèi)核等方面加入了特定的機(jī)制。
嵌入式Linux系統(tǒng)交叉開(kāi)發(fā)環(huán)境
交叉開(kāi)發(fā)模型主要思想是,首先在宿主機(jī)(Host)上安裝開(kāi)發(fā)工具,編輯、編譯目標(biāo)板(Target)的Linux引導(dǎo)程序、內(nèi)核和文件系統(tǒng),然后下載到目標(biāo)板上運(yùn)行。通常這種在宿主機(jī)環(huán)境下開(kāi)發(fā),在目標(biāo)機(jī)上運(yùn)行的開(kāi)發(fā)模式叫做交叉開(kāi)發(fā)。交叉開(kāi)發(fā)模型見(jiàn)圖所示。嵌入式Linux系統(tǒng)交叉開(kāi)發(fā)環(huán)境交叉開(kāi)發(fā)Host(宿主機(jī)):通常是硬件資源豐富的PC機(jī)或工作站。編輯、編譯、鏈接等過(guò)程在HOST上完成。Target(目標(biāo)機(jī)):即嵌入式設(shè)備,是應(yīng)用程序的最終運(yùn)行平臺(tái)。調(diào)試在二者間聯(lián)機(jī)交互進(jìn)行,連接方式:RS232串口,TCP/IP,USB等。Host與Target的差別硬件差別:處理器、存儲(chǔ)能力、外設(shè)等軟件環(huán)境差異:Host上有通用OS,有可視化開(kāi)發(fā)環(huán)境;Target一般是裸機(jī),無(wú)任何軟件資源,無(wú)法進(jìn)行開(kāi)發(fā)調(diào)試。
開(kāi)發(fā)工具GNU的介紹
GNU(GNU’sNotUnix)項(xiàng)目是自由軟件基金會(huì)(FreeSoftwareFoundation)的董事長(zhǎng)RichardM.Stallman于1984年發(fā)起,意在軟件開(kāi)發(fā)團(tuán)體中發(fā)起支持開(kāi)發(fā)自由軟件的運(yùn)動(dòng)。
開(kāi)發(fā)工具GNU的介紹
GNU工具包括:GCC:編譯應(yīng)用程序和內(nèi)核Glibc:工具庫(kù)Binutils:工具包make:工程管理器,讀入Makefile文件,按內(nèi)容進(jìn)行編譯
開(kāi)發(fā)工具GNU的介紹
GNU代碼生成和調(diào)試工具包括:C編譯器gccC++編譯器g++GNU的匯編器asGNU的鏈接器ld二進(jìn)制轉(zhuǎn)換工具(objcopy、bjdump)調(diào)試工具(gdb、gdbserver、kgdb)基于不同硬件平臺(tái)的開(kāi)發(fā)庫(kù)。開(kāi)發(fā)工具GNU的介紹1.GNUBinutils工具
工具集GNUBinutils主要是一套用來(lái)構(gòu)造和使用二進(jìn)制代碼所需的工具集。建立嵌入式交叉編譯環(huán)境,GNUBinutils工具包是不可缺少的,沒(méi)有Binutils,GNU的C編譯器gcc將無(wú)法正常工作。開(kāi)發(fā)工具GNU的介紹2.編譯器gcc
是GNU的功能強(qiáng)大,性能優(yōu)越的多平臺(tái)編譯器,是Linux中最重要的軟件開(kāi)發(fā)工具。它被成功地移植到不同的處理平臺(tái)上。標(biāo)準(zhǔn)的臺(tái)式Linux上的gcc是針對(duì)IntelCPU的,而ARM系列開(kāi)發(fā)軟件使用的是針對(duì)ARM系列處理器的gcc編譯器、arm-elf-gcc、arm-elf-as及相應(yīng)的GNUBinutils工具集。開(kāi)發(fā)工具GNU的介紹Gcc的編譯流程使用gcc編譯器編譯C語(yǔ)言程序時(shí),通常會(huì)經(jīng)過(guò)四個(gè)處理階段,即預(yù)處理階段、編譯階段、匯編階段和鏈接階段。gcc是通過(guò)文件的后綴來(lái)區(qū)別文件的類(lèi)別,下面的表中給出gcc的部分約定規(guī)則。在使用gcc編譯器時(shí),需要給出一系列調(diào)用參數(shù)和文件名,當(dāng)沒(méi)有給出時(shí),gcc將使用缺省參數(shù),gcc基本的用法是:gcc[options][filename]開(kāi)發(fā)工具GNU的介紹
其中,options就是參數(shù)選項(xiàng),filename是相關(guān)的文件名稱(chēng)。常用的選項(xiàng)有:–c:只編譯生成目標(biāo)文件,不鏈接成可執(zhí)行文件。–DMACRO=DEFN:以字符串“DEFN”定義MACRO宏。–E: 只對(duì)程序進(jìn)行預(yù)處理。–g: 生成調(diào)試信息,GNU調(diào)試器可利用該信息。–llibrary: 用來(lái)指定所使用的庫(kù)文件。–ldirectory:為include文件的搜索指定目錄。–ofilename:生成指定的文件名的可執(zhí)行文件。
開(kāi)發(fā)工具GNU的介紹開(kāi)發(fā)工具GNU的介紹3.調(diào)試器gdb
gdb是GnuDeBugger的縮寫(xiě),是GNUC的用來(lái)調(diào)試C和C++程序的調(diào)試工具。開(kāi)發(fā)者在使用它時(shí),可以了解程序在運(yùn)行時(shí)的詳細(xì)情況,如程序的內(nèi)部結(jié)構(gòu)和內(nèi)存等信息。gdb能夠通過(guò)完成以下幾個(gè)任務(wù)來(lái)幫助你查找程序中的錯(cuò)誤。Linux開(kāi)發(fā)環(huán)境建立Windows環(huán)境+CygwinWindows環(huán)境+VMWare虛擬機(jī)(安裝RedHat9.0)Linux環(huán)境,推薦RedHat9.0單機(jī)模式(一臺(tái)計(jì)算機(jī))Cygwin是運(yùn)行于Windows中的一個(gè)應(yīng)用程序,它可以使得Linux環(huán)境下的應(yīng)用程序可以在Cygwin環(huán)境下進(jìn)行編譯,即可以在Windows下進(jìn)行編譯。在linux環(huán)境下進(jìn)行Linux開(kāi)發(fā)Linux開(kāi)發(fā)環(huán)境建立Linux的程序編輯、編譯、調(diào)試都在Linux環(huán)境進(jìn)行必須采用支持GDB的調(diào)試器(如ADT1000A)才能進(jìn)行調(diào)試,否則只能通過(guò)BOOTLOADER進(jìn)行簡(jiǎn)單的程序燒寫(xiě)運(yùn)行等調(diào)試信息的打印可以通過(guò)串口完成,使用linux下的minicom超級(jí)終端程序(類(lèi)似于Windows上的超級(jí)終端工具)接收并顯示目標(biāo)板傳送的打印信息Linux串口驅(qū)動(dòng)完成后,可以通過(guò)內(nèi)核打印函數(shù)printk向串口打印信息,這是Linux內(nèi)核調(diào)試過(guò)程中最有效的手段在Windows+VMWare虛擬機(jī)環(huán)境下進(jìn)行Linux開(kāi)發(fā)如果需要使用只支持Windows環(huán)境下調(diào)試的調(diào)試器,可以通過(guò)在VMWare中安裝linux虛擬機(jī),在該虛擬機(jī)中進(jìn)行編輯、編譯Linux,然后通過(guò)網(wǎng)絡(luò)(ftp、nfs、ssh)等手段傳送到Windows中,進(jìn)行調(diào)試,這樣編譯和調(diào)試可以分別在linux和windows環(huán)境下但是是在一臺(tái)電腦中完成,它的缺點(diǎn)是系統(tǒng)要求較高,運(yùn)行速度慢。VMWare是運(yùn)行于Windows中的一個(gè)應(yīng)用程序,是一個(gè)虛擬機(jī),可以在其上安裝多個(gè)操作系統(tǒng),相當(dāng)于在Windows上安裝一個(gè)虛擬的操作系統(tǒng)。Linux開(kāi)發(fā)環(huán)境建立Step1安裝主機(jī)Windows+VMWare在VMWare中安裝linux虛擬機(jī)Step2在linux虛擬機(jī)上安裝開(kāi)發(fā)工具軟件Step3開(kāi)發(fā)環(huán)境配置(linux)配置網(wǎng)絡(luò):配置IP地址、NFS服務(wù)、防火墻配置NFS:設(shè)置主機(jī)和目標(biāo)機(jī)間的共享目錄Step4配置超級(jí)終端(windows)目標(biāo)機(jī)的信息窗口Linux開(kāi)發(fā)環(huán)境建立在Windows+VMWare虛擬機(jī)環(huán)境下進(jìn)行Linux開(kāi)發(fā)Linux內(nèi)核的目錄結(jié)構(gòu)Linux內(nèi)核主要由5個(gè)子系統(tǒng)組成◆進(jìn)程調(diào)度子系統(tǒng);◆進(jìn)程間通信子系統(tǒng);◆內(nèi)存管理子系統(tǒng);◆虛擬文件子系統(tǒng);◆網(wǎng)絡(luò)接口子系統(tǒng);Linux內(nèi)核的目錄結(jié)構(gòu)linuxDocumentationarchdriversfsincludeinitmmnommulibnetscript有關(guān)內(nèi)核的詳細(xì)文檔硬件體系結(jié)構(gòu)相關(guān)源代碼內(nèi)核中所有設(shè)備驅(qū)動(dòng)程序所有文件系統(tǒng)的代碼內(nèi)核代碼庫(kù)文件的頭文件kernel初始化代碼Linux內(nèi)核的內(nèi)存管理常用庫(kù)函數(shù)代碼內(nèi)核的網(wǎng)絡(luò)協(xié)議代碼配置內(nèi)核的一些腳本文件Linux內(nèi)核的arch目錄archbootkernellibmach-s3c2410vmlinux.lds壓縮內(nèi)核啟動(dòng)引導(dǎo)代碼內(nèi)核起始代碼常用函數(shù)s3c2410平臺(tái)相關(guān)代碼核心的連接腳本文件與架構(gòu)和平臺(tái)相關(guān)的源代碼都放在arch目錄下移植工作的重點(diǎn)就是移植arch目錄下的文件Linux內(nèi)核移植分三個(gè)步驟配置內(nèi)核編譯內(nèi)核下載、運(yùn)行、調(diào)試內(nèi)核Linux內(nèi)核配置工具makeconfig基于文本的最為傳統(tǒng)的配置界面makemenuconfig基于文本選單的配置界面makexconfig基于圖形窗口模式的配置界面編譯Linux內(nèi)核建立依賴(lài)關(guān)系makedep編譯內(nèi)核make編譯內(nèi)核makezImage編譯壓縮核心(zImage)編譯生成的Linux映像文件zImage通常保存在arch/arm/boot/目錄下下載、運(yùn)行和調(diào)試內(nèi)核通過(guò)調(diào)試器下載內(nèi)核并運(yùn)行通過(guò)BOOTLOADER下載內(nèi)核到SDRAM中運(yùn)行通過(guò)BOOTLOADER將內(nèi)核燒寫(xiě)到FLASH中,然后運(yùn)行LinuxBootLoadervivi是韓國(guó)MIZI公司提供的一款針對(duì)S3C2410芯片的Bootloader。能引導(dǎo)Linux系統(tǒng)的運(yùn)行,編譯完內(nèi)核后,快速下載內(nèi)核和文件系統(tǒng)。Vivi首先通過(guò)串口下載內(nèi)核和文件系統(tǒng)網(wǎng)絡(luò)驅(qū)動(dòng)正常運(yùn)行后,vivi可通過(guò)網(wǎng)口下載內(nèi)核和文件系統(tǒng)vivi的軟件架構(gòu)分為三個(gè)層次BootLoadervivivivi的工作模式vivi有兩種工作模式,啟動(dòng)加載模式可以在一段時(shí)間后(這個(gè)時(shí)間可更改)自行啟動(dòng)Linux內(nèi)核,這是vivi的默認(rèn)模式。在下載模式下,vivi為用戶(hù)提供一個(gè)命令行接口,通過(guò)該接口可以使用vivi提供的一些命令。Vivi的啟動(dòng)過(guò)程(1)
關(guān)閉看門(mén)狗
(2)
禁止所有中斷
(3)
初始化system
clock
(4)
初始化串口
(5)
初始化nand
flash相關(guān)的控制寄存器
(6)
把vivi
copy
到
SDRAM上,最后把pc指向ram
(7)
設(shè)置堆棧
(8)
call
一個(gè)叫做main的函數(shù)。這個(gè)函數(shù)是c寫(xiě)的
Vivi的啟動(dòng)過(guò)程main()函數(shù)中調(diào)用若干個(gè)初始化的函數(shù)reset_handler()
(clear
memory)
board_init()
(時(shí)鐘初始化,I/O配置)mem_map_init()
和mmu_init
(使用nand
flash作啟動(dòng)設(shè)備,內(nèi)存映射完后,MMU開(kāi)始工作,初始化cache)
heap_init()
(初始化堆)mtd_init()
初始化MTD設(shè)備(閃存芯片、小型閃存卡、記憶棒等之類(lèi)的設(shè)備)
init_priv_data()
初始化私有數(shù)據(jù)init_builtin_cmds()
初始化用戶(hù)的基本命令,包括boot,
bon,
load,
help
等boot_or_vivi()
用于啟動(dòng)vivi---等待用戶(hù)輸入,有輸入進(jìn)入vivi_shell,沒(méi)有輸入,超時(shí)后啟動(dòng)linux
。
至此main結(jié)束
Vivi的啟動(dòng)過(guò)程Vivi常用命令啟動(dòng)vivi時(shí),在超級(jí)終端界面中鍵入任意鍵(除enter外)進(jìn)入vivi命令界面,字符提示為“vivi>”,reset命令復(fù)位Arm9系統(tǒng)help命令顯示開(kāi)發(fā)板上vivi支持的所有命令,如boothelpVivi常用命令part命令用于對(duì)分區(qū)進(jìn)行操作。load命令下載程序到存儲(chǔ)器中(Flash或者RAM中)。param命令用于對(duì)bootloader的參數(shù)進(jìn)行操作。boot命令用于引導(dǎo)linuxkernel啟動(dòng)。bon命令用于對(duì)bon分區(qū)進(jìn)行操作。go命令跳轉(zhuǎn)到指定地址處執(zhí)行該地址處的代碼Linux文件系統(tǒng)Linux內(nèi)核移植文件系統(tǒng)是操作系統(tǒng)用于明確磁盤(pán)或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu);即在磁盤(pán)上組織文件的方法。指文件存在的物理空間。在Linux系統(tǒng)中,每個(gè)分區(qū)都是一個(gè)文件系統(tǒng),都有自己的目錄層次結(jié)構(gòu)。Linux的最重要特征之一就是支持多種文件系統(tǒng),這樣它更加靈活,并可以和許多其它種操作系統(tǒng)共存。Linux的文件系統(tǒng)是采用的階層式樹(shù)狀目錄結(jié)構(gòu),最上層是“/”,然后在下邊創(chuàng)建其它的目錄。文件系統(tǒng)中管理的每個(gè)對(duì)象(文件或目錄)在Linux中表示為一個(gè)inode。inode包含管理文件系統(tǒng)中的對(duì)象所需的所有數(shù)據(jù):文件類(lèi)型、訪問(wèn)權(quán)限、屬主、時(shí)間戳、大小、指向數(shù)據(jù)塊的指針Linux文件系統(tǒng)Linux文件系統(tǒng)文件系統(tǒng)的創(chuàng)建:
這個(gè)過(guò)程是存儲(chǔ)設(shè)備建立文件系統(tǒng)的過(guò)程,一般也被稱(chēng)為格式化或初始化,通過(guò)一些初始化工具來(lái)進(jìn)行。一般的情況下每個(gè)類(lèi)型的操作系統(tǒng)都有這方面的工具,也有多功能的第三方工具。在Linux中有mkfs系列工具
掛載(mount):
◆
在Linux中將一個(gè)文件系統(tǒng)與一個(gè)存儲(chǔ)設(shè)備關(guān)聯(lián)起來(lái)的過(guò)程稱(chēng)為掛載(mount)。
◆使用mount命令將一個(gè)文件系統(tǒng)附著到當(dāng)前文件系統(tǒng)層次結(jié)構(gòu)中(根)。在執(zhí)行掛載時(shí),要提供文件系統(tǒng)類(lèi)型、文件系統(tǒng)和一個(gè)掛裝點(diǎn)掛載點(diǎn)通常是一個(gè)空置的目錄。
◆文件系統(tǒng)只有掛載才能使用。
◆根文件系統(tǒng)是系統(tǒng)啟動(dòng)時(shí)掛載的第一個(gè)文件系統(tǒng),其他的文件系統(tǒng)需要在跟文件系統(tǒng)目錄中建立節(jié)點(diǎn)后再掛載。Linux文件系統(tǒng)Linux文件系統(tǒng)Linux內(nèi)核移植虛擬文件系統(tǒng)(VirtualFileSystem)是物理文件系統(tǒng)與服務(wù)之間的一個(gè)接口層,它對(duì)Linux的每個(gè)文件系統(tǒng)的所有細(xì)節(jié)進(jìn)行抽象,使得不同的文件系統(tǒng)在Linux核心以及系統(tǒng)中運(yùn)行的其他進(jìn)程看來(lái),都是相同的。嚴(yán)格說(shuō)來(lái),VFS并不是一種實(shí)際的文件系統(tǒng)。它只存在于內(nèi)存中,不存在于任何外存空間。VFS在系統(tǒng)啟動(dòng)時(shí)建立,在系統(tǒng)關(guān)閉時(shí)消亡。Linux文件系統(tǒng)Linux內(nèi)核移植VirtualFileSystem(虛擬文件系統(tǒng))使得Linux可以支持多個(gè)不同的文件系統(tǒng)。由于系統(tǒng)已將Linux文件系統(tǒng)的所有細(xì)節(jié)進(jìn)行了轉(zhuǎn)換,所以Linux核心的其它部分及系統(tǒng)中運(yùn)行的程序?qū)⒖吹浇y(tǒng)一的文件系統(tǒng)。Linux的虛擬文件系統(tǒng)允許用戶(hù)同時(shí)能透明地安裝許多不同的文件系統(tǒng)。虛擬文件系統(tǒng)是為L(zhǎng)inux用戶(hù)提供快速且高效的文件訪問(wèn)服務(wù)而設(shè)計(jì)的。常用Linux文件系統(tǒng)Linux系統(tǒng)核心可以支持十多種文件系統(tǒng)類(lèi)型:JFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC、romfs等。cramfs是一個(gè)壓縮式的只讀文件系統(tǒng),它并不需要一次性地將文件系統(tǒng)中的所有內(nèi)容都解壓縮到內(nèi)存之中,而只是在系統(tǒng)需要訪問(wèn)某個(gè)位置的數(shù)據(jù)的時(shí)侯,馬上計(jì)算出該數(shù)據(jù)在cramfs中的位置,將其實(shí)時(shí)地解壓縮到內(nèi)存之中,然后通過(guò)對(duì)內(nèi)存的訪問(wèn)來(lái)獲取文件系統(tǒng)中需要讀取的數(shù)據(jù)。cramfs中的解壓縮以及解壓縮之后的內(nèi)存中數(shù)據(jù)存放位置都是由cramfs文件系統(tǒng)本身進(jìn)行維護(hù)的。常用Linux文件系統(tǒng)Linux系統(tǒng)中混合使用Cramfs、YAFFS和Ramfs
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版供水用不銹鋼水箱購(gòu)銷(xiāo)合同2篇
- 機(jī)械課程設(shè)計(jì)干啥的啊
- 智能核儀器基礎(chǔ)課程設(shè)計(jì)
- 稅收法制教育課程設(shè)計(jì)
- 編曲音樂(lè)創(chuàng)作課程設(shè)計(jì)
- 羽毛球上課課程設(shè)計(jì)
- 機(jī)械設(shè)計(jì)課程設(shè)計(jì)記錄
- 聯(lián)接軸課程設(shè)計(jì)
- 網(wǎng)站前段課課程設(shè)計(jì)
- 自動(dòng)掃地機(jī)課程設(shè)計(jì)
- 《輔酶q10》教學(xué)講解課件
- SMT工程師工作簡(jiǎn)歷
- 北京市海淀區(qū)2022-2023學(xué)年七年級(jí)上學(xué)期期末語(yǔ)文試題(含答案)
- 心血管內(nèi)科醫(yī)生成長(zhǎng)手冊(cè)
- 國(guó)家開(kāi)放大學(xué)一網(wǎng)一平臺(tái)電大《當(dāng)代中國(guó)政治制度》形考任務(wù)1-4網(wǎng)考題庫(kù)及答案
- 小企業(yè)會(huì)計(jì)準(zhǔn)則財(cái)務(wù)報(bào)表
- 資產(chǎn)損失鑒證報(bào)告(范本)
- 農(nóng)學(xué)技能高考【種植類(lèi)】復(fù)習(xí)題庫(kù)大全-2、《植物生產(chǎn)與環(huán)境》-上(單選多選題)
- 隧道貫通方案貫通計(jì)算
- GB/T 21010-2017土地利用現(xiàn)狀分類(lèi)
- GB/T 15532-2008計(jì)算機(jī)軟件測(cè)試規(guī)范
評(píng)論
0/150
提交評(píng)論