freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

嵌入式系統(tǒng)的定義及特點(diǎn)(編輯修改稿)

2025-07-14 01:12 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 時(shí)性,使得uClinux可以應(yīng)用于工業(yè)控制、進(jìn)程控制等一些實(shí)時(shí)要求較高的應(yīng)用。6 uClinux的開發(fā)環(huán)境1,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)試方式,gdbbdm(背景調(diào)試工具),gdbserver(使用以太網(wǎng)絡(luò)調(diào)試)。2, Clinux的打印終端通常情況下,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ù)。3, 交叉編譯調(diào)試工具支持一種新的處理器,必須具備一些編譯,匯編工具,使用這些工具可以形成可運(yùn)行于這種處理器的二進(jìn)制文件。對(duì)于內(nèi)核使用的編譯工具同應(yīng)用程序使用的有所不同。在解釋不同點(diǎn)之前,需要對(duì)gcc連接做一些說(shuō)明:ld(link description)文件:ld文件是指出連接時(shí)內(nèi)存映象格式的文件。:應(yīng)用程序編譯連接時(shí)需要的啟動(dòng)文件,主要是初始化應(yīng)用程序棧。pic:position independence code ,與位置無(wú)關(guān)的二進(jìn)制格式文件,在程序段中必須包括reloc段,從而使的代碼加載時(shí)可以進(jìn)行重新定位。內(nèi)核編譯連接時(shí),形成可執(zhí)行文件映象,所形成的代碼段既可以使用間接尋址方式(即使用reloc段進(jìn)行尋址),也可以使用絕對(duì)尋址方式。這樣可以給編譯器更多的優(yōu)化空間。因?yàn)閮?nèi)核可能使用絕對(duì)尋址,所以內(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è)重新地位的過程,即對(duì)reloc段進(jìn)行修正,使得程序進(jìn)行間接尋址時(shí)不至于出錯(cuò)。(這個(gè)問題在i386等高級(jí)處理器上方法有所不同)。由上述討論,至少需要兩套編譯連接工具:1) 二進(jìn)制工具(Binutils)GNU binutils包包括了匯編工具、鏈接器和基本的目標(biāo)文件處理工具。對(duì)binutils包的設(shè)置定義了所需的目標(biāo)文件的格式和字節(jié)順序。Binutils包種的工具都使用了二進(jìn)制文件描述符(BFD)庫(kù)來(lái)交換數(shù)據(jù)。,可以指定默認(rèn)的二進(jìn)制文件格式(例如elf little endian)和任何工具可用的格式,見例1。例1 arm*uClinux* | armel*uClinux*tag_defvec=bfd_elf32_littlearm_vectarg_selvecs=”bfd_elf32_bigarm_vec armcoff_little_vec armcoff_big_vec”2) C編譯器GNU編譯器集GCC是通過使用一種叫做“寄存器轉(zhuǎn)換語(yǔ)言”(RTL)的方式實(shí)現(xiàn)的。假定現(xiàn)在有一種基本的機(jī)器描述性文件,它已經(jīng)能滿足大家的需要?,F(xiàn)在要做的僅僅是設(shè)置默認(rèn)情況下使用的參數(shù)和如何將文件組合成可執(zhí)行文件的方式。GNU的文檔提供了所有必需的資料,使得用戶可以為新型的處理器的指令集合提供支持。如果要針對(duì)體系的機(jī)器建立一個(gè)新的目標(biāo)機(jī)器,那么就必須指定默認(rèn)編譯參數(shù)和定制系統(tǒng)的特定參數(shù),見例2。對(duì)于特定的目標(biāo)系統(tǒng)。目標(biāo)tmakefile段指定了應(yīng)該構(gòu)建哪一個(gè)額外的例程和其編譯的方式。例2 #undef TARGET_DEFAULTdefine TARGET_DEFAULT(ARM_FLAG_APCS_32|ARM_FLAG_NO_GOT)4 可執(zhí)行文件格式先對(duì)一些名詞作一些說(shuō)明:coff(mon object file format):一種通用的對(duì)象文件格式elf(excutive linked file):一種為L(zhǎng)inux系統(tǒng)所采用的通用文件格式,支持動(dòng)態(tài)連接flat:elf格式有很大的文件頭,flat文件對(duì)文件頭和一些段信息做了簡(jiǎn)化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í)行文件加載器將對(duì)flat文件進(jìn)行進(jìn)一步處理,主要是對(duì)reloc段進(jìn)行修正。以下對(duì)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ì)算出來(lái)(因?yàn)檫B接器假定該程序?qū)⒈患虞d到由ld文件指明的內(nèi)存空間)。但實(shí)際上由于內(nèi)存分配的關(guān)系,操作系統(tǒng)在加載時(shí)無(wú)法保證程序?qū)磍d文件加載。這時(shí)如果程序仍然跳轉(zhuǎn)到絕對(duì)地址0x10000處執(zhí)行,通常情況這是不正確的。一個(gè)解決辦法是增加一個(gè)存儲(chǔ)空間,用于存儲(chǔ)app_start的實(shí)際地址,設(shè)若使用變量addr表示這個(gè)存儲(chǔ)空間。則以上這句程序?qū)⒏臑椋簃ovl addr, a0。jsr (a0)。增加的變量addr將在數(shù)據(jù)段中占用一個(gè)4字節(jié)的空間,連接器將app_start的絕對(duì)地址存儲(chǔ)到該變量。在可執(zhí)行文件加載時(shí),可執(zhí)
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1