版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
3.4Linux系統(tǒng)目錄結(jié)構(gòu)
移植Linux操作系統(tǒng)就是修改平臺(tái)相關(guān)的原文件,因此要知道這些文件在源代碼樹中的位置,也就要了解Linux系統(tǒng)目錄結(jié)構(gòu),了解源代碼文件的功能。Linux的源代碼非常龐大、復(fù)雜,要完全閱讀理解完整的內(nèi)核代碼幾乎是不可能的,但內(nèi)核代碼文件的組織是非常清晰的,每個(gè)目錄都對(duì)應(yīng)特定功能。系統(tǒng)移植只是涉及其中很小一部分代碼。以內(nèi)核版本2.6為例介紹Linux的目錄結(jié)構(gòu):1.Arch目錄
arch目錄包括所有硬件結(jié)構(gòu)特定的內(nèi)核代碼。它包含24個(gè)子目錄,每個(gè)子目錄代表一種體系結(jié)構(gòu),如ARM、i386等,就是關(guān)于ARM等與之相兼容體系結(jié)構(gòu)的子目錄。并必須包含以下子目錄Boot:包括啟動(dòng)內(nèi)核的代碼。Kernel:存放支持體系的核心代碼。
lib:存放庫(kù)函數(shù)。mm:存放內(nèi)存管理代碼。Math-emu:模擬FPU的代碼。2、include:目錄包含編譯核心所需的大部分頭文件。與平臺(tái)無(wú)關(guān)的頭文件放在include/linux子目錄下,與平臺(tái)有關(guān)的頭文件放在include/asm/開頭的子目錄中。3、init:目錄包含核心的初始化代碼。4、mm:目錄存放包括所有獨(dú)立于cpu體系結(jié)構(gòu)的內(nèi)存管理代碼。5、Kernel:目錄為系統(tǒng)主要的核心代碼。6、drivers:目錄中是系統(tǒng)中所有的設(shè)備驅(qū)動(dòng)程序。它又進(jìn)一步劃分成幾類設(shè)備驅(qū)動(dòng),每一種有對(duì)應(yīng)的子目錄,如聲卡的驅(qū)動(dòng)對(duì)應(yīng)于drivers/sound。
7、lib:目錄包含了核心的庫(kù)代碼,不過(guò)與處理器結(jié)構(gòu)相關(guān)庫(kù)代碼被放在arch/*/lib/目錄下。
8、net:目錄里是核心的網(wǎng)絡(luò)部分代碼,其每個(gè)子目錄對(duì)應(yīng)于網(wǎng)絡(luò)的一個(gè)方面。
9、ipc:目錄包含了核心進(jìn)程間的通信代碼。10、fs目錄存放Linux支持的文件系統(tǒng)代碼。不同的文件系統(tǒng)有不同的子目錄對(duì)應(yīng),如ext3文件系統(tǒng)對(duì)應(yīng)的就是ext3子目錄。11、scripts目錄包含用于配置核心的腳本文件。12、documentation目錄下是一些文檔,是對(duì)每個(gè)目錄作用的具體說(shuō)明。
進(jìn)行Linux系統(tǒng)的移植不會(huì)涉及所有的目錄。一般指修改或增加目錄arch/、drivers/、fs/、include/中的某些文件就可以了第4章嵌入式系統(tǒng)的開發(fā)4.1ARM嵌入式系統(tǒng)的軟件結(jié)構(gòu)ARM嵌入式系統(tǒng)的軟件通常包括固件(引導(dǎo)程序BootLoader)、操作系統(tǒng)、應(yīng)用程序。對(duì)于Linux操作系統(tǒng)還需要有一個(gè)根文件系統(tǒng)。bootloader(一次固化)+內(nèi)核(多次更新)+根文件系統(tǒng)(多次更新)4.2嵌入式系統(tǒng)的開發(fā)步驟先在通用計(jì)算機(jī)上編寫程序,然后,通過(guò)交叉編譯,生成目標(biāo)平臺(tái)上可以運(yùn)行的二進(jìn)制代碼格式,最后下載到目標(biāo)平臺(tái)的特定位置上運(yùn)行。Linux操作系統(tǒng)和引導(dǎo)程序的編譯,根文件系統(tǒng)的制作都需要在Linux環(huán)境下進(jìn)行,所以要首先在PC中安裝Linux操作系統(tǒng)。4.2、幾種常用的開發(fā)方法指令集模擬器一種利用PC機(jī)端的仿真開發(fā)軟件模擬調(diào)試的方法。駐留監(jiān)控軟件駐留監(jiān)控程序運(yùn)行在目標(biāo)板上,PC機(jī)端調(diào)試軟件可通過(guò)并口、串口、網(wǎng)口與之交互,以完成程序執(zhí)行、存儲(chǔ)器及寄存器讀寫、斷點(diǎn)設(shè)置等任務(wù)JTAG仿真器通過(guò)ARM芯片的JTAG邊界掃描口與ARM核進(jìn)行通信,不占用目標(biāo)板的資源,是目前使用最廣泛的調(diào)試手段在線仿真器使用仿真頭代替目標(biāo)板上的CPU,可以完全仿真ARM芯片的行為。但結(jié)構(gòu)較復(fù)雜,價(jià)格昂貴,通常用于ARM硬件開發(fā)中4.3嵌入式開發(fā)環(huán)境的建立一、安裝Linux操作系統(tǒng)可在
網(wǎng)站獲得Linux操作系統(tǒng)??梢酝ㄟ^(guò)光盤或內(nèi)存安裝。二、開發(fā)環(huán)境配置宿主機(jī)與開發(fā)板通過(guò)串口、網(wǎng)口、USB口進(jìn)行通信,可根據(jù)使用的端口對(duì)宿主機(jī)的端口進(jìn)行配置。1、串口1啟動(dòng)后,先按Ctrl+A鍵,再按Z鍵(注意不是連續(xù)按,Ctrl+A松開后才按Z),進(jìn)入主配置界面
2按“O”進(jìn)入配置界面
3按上下鍵選擇Serialportsetup,進(jìn)入端口設(shè)置界面,這里有幾個(gè)重要選項(xiàng)改為如下值:
(在Changewhichsetting后按哪個(gè)字母就進(jìn)入哪項(xiàng)的配置,如按A進(jìn)行端口號(hào)配置。)
A――――SerialDevice:/dev/ttyS0(端口號(hào)使用串口1)
E――――BPS/par/bits:/1152008N1(波特率)
F,E硬件流,軟件流都改為NO,若要使用PC機(jī)的串口2來(lái)接板子的串口1做監(jiān)控,改為:/dev/ttyS1即可。
4.選好后按ESC鍵退出,選擇Savesetupasdf1保存退出,以后只要啟動(dòng)就是該配置,無(wú)需再做改動(dòng)。2、網(wǎng)口配置
使用網(wǎng)口進(jìn)行數(shù)據(jù)傳輸需要配置網(wǎng)口的傳輸協(xié)議,在Linux中主要有NFS和TFTP
配置好傳輸協(xié)議后,還要配置exports目錄,也就是共享目錄。當(dāng)在目標(biāo)機(jī)上mount該目錄時(shí),就像訪問(wèn)自己機(jī)器中的文件一樣訪問(wèn)該目錄。三、編譯環(huán)境的建立ARM嵌入式系統(tǒng)常用的編輯工具有ADS、Keilarm和ARMgcc等。1、可以從網(wǎng)上下載編譯好的工具鏈,解壓縮后,修改環(huán)境變量,即可以使用。2、下載必備的源代碼,自己編譯,這要花費(fèi)一定的時(shí)間和精力。4.4GNUGCC簡(jiǎn)介GNUGCC是一套面向嵌入式領(lǐng)域的交叉編譯工具,支持多種編程語(yǔ)言、多種優(yōu)化選項(xiàng)并且支持分步編譯、支持多種反匯編方式、支持多種調(diào)試信息格式,目前支持x86、ARM7、StrongARM等多種CPU?;竟δ苋缦拢狠敵鲱A(yù)處理后的C/C++源程序(展開頭文件和宏替換);輸出C/C++源程序的匯編代碼;輸出二進(jìn)制的目標(biāo)文件;生成靜態(tài)庫(kù);生成可執(zhí)行文件;轉(zhuǎn)換文件格式。2、GCC編譯程序的基本過(guò)程1、GCC組成C/CC++交叉編譯器arm-elf-gcc通過(guò)調(diào)用其它程序?qū)崿F(xiàn)將程序源文件編譯成目標(biāo)文件的功能。匯編器arm-elf-as將匯編文件轉(zhuǎn)換為ELF格式的可重新定位的目標(biāo)代碼文件。連接器arm-elf-ld根據(jù)鏈接定位文件Linkcmds中的代碼區(qū)、數(shù)據(jù)區(qū)、BSS區(qū)(全局變量)和棧區(qū)等定位信息將可重定位的目標(biāo)模塊鏈接成一個(gè)單一的、絕對(duì)定位的目標(biāo)程序。庫(kù)管理器arm-elf-ar可將多個(gè)可重定位的目標(biāo)模塊歸檔為一個(gè)函數(shù)庫(kù)文件。工程管理器makemake用于自動(dòng)編譯、鏈接程序的使用工具,使用make后就不需要手工地編譯每個(gè)程序文件,要使用make,首先要編寫makefile。其它使用工具目標(biāo)文件格式轉(zhuǎn)換工具arm-elf-objcopy等。工程管理器makemake是用于自動(dòng)編譯、鏈接程序的工具。使用make后就不需要手工編譯每個(gè)程序文件。整個(gè)工程的編譯只需要一個(gè)命令就可以完成編譯、連接以至于最后的執(zhí)行。不過(guò)這需要我們投入一些時(shí)間去完成一個(gè)或者多個(gè)稱之為makefile文件的編寫。makefile描述程序文件之間的依賴關(guān)系以及提供更新文件的命令。命令格式:make[-fmakefile][option][target][-fmakefile]指定makefile,[option]make的選項(xiàng),[target]make指定的目標(biāo)。
當(dāng)使用make工具進(jìn)行編譯時(shí),工程中以下幾種文件在執(zhí)行make時(shí)將會(huì)被編譯(重新編譯):
所有的源文件沒(méi)有被編譯過(guò),則對(duì)各個(gè)C源文件進(jìn)行編譯并進(jìn)行鏈接,生成最后的可執(zhí)行程序;
每一個(gè)在上次執(zhí)行make之后修改過(guò)的C源代碼文件在本次執(zhí)行make時(shí)將會(huì)被重新編譯;
頭文件在上一次執(zhí)行make之后被修改。則所有包含此頭文件的C源文件在本次執(zhí)行make時(shí)將會(huì)被重新編譯。makefile通常包括以下內(nèi)容:需要由make工具創(chuàng)建的目標(biāo)體(target),通常是目標(biāo)文件或可執(zhí)行文件;要?jiǎng)?chuàng)建的目標(biāo)體所依賴的文件(depency-file);創(chuàng)建每個(gè)目標(biāo)體時(shí)需要運(yùn)行的命令(command).
#Itisaexamplefordescribingmakefile
prog:filea.ofileb.ofilec.o
ccfilea.ofileb.ofilec.o-LS-oprog
filea.o:filea.ca.hdefs
cc-cfilea.c
fileb.o:fileb.cb.hdefs
cc-cfileb.c
filec.o:filec.cc.h
cc-cfilec.c全屏幕編輯器ViLinux系統(tǒng)的第一個(gè)全屏幕交互式編輯程序,是主要的文本編輯工具。Gdb調(diào)試器Linux下的程序調(diào)試工具,Gdb調(diào)試的是可執(zhí)行文件,ADS(ARMDeveloperSuite)是ARM公司推出的關(guān)于ARM處理器的編譯、鏈接和調(diào)試的集成開發(fā)環(huán)境。
ADS將編譯和鏈接集成一個(gè)環(huán)境中,簡(jiǎn)稱CodeWarriorforADS。將仿真調(diào)試環(huán)境集成在一個(gè)稱為ARMextendedDebugger的環(huán)境中,簡(jiǎn)稱AXD.
兩個(gè)環(huán)境都同時(shí)提供了圖形環(huán)境和命令行環(huán)境,兩者各有特色。4.5ADS集成開發(fā)環(huán)境ARMADS由六部分組成:
代碼生成工具(CodeGenerationTools)代碼生成工具由源程序編譯、匯編、鏈接工具集組成。ARM公司針對(duì)ARM系列每一種結(jié)構(gòu)都進(jìn)行了專門的優(yōu)化處理,這一點(diǎn)除了作為ARM結(jié)構(gòu)的設(shè)計(jì)者的ARM公司,其他公司都無(wú)法辦到,ARM公司宣稱,其代碼生成工具最終生成的可執(zhí)行文件最多可以比其他公司工具套件生成的文件小20%。
集成開發(fā)環(huán)境(CodeWarriorIDEfromMetrowerks)
CodeWarriorIDE是Metrowerks公司一套比較有名的集成開發(fā)環(huán)境,有不少?gòu)S商將它作為界面工具集成在自己的產(chǎn)品中。CodeWarriorIDE包含工程管理器、代碼生成接口、語(yǔ)法敏感編輯器、源文件和類瀏覽器、源代碼版本控制系統(tǒng)接口、文本搜索引擎等,其功能與VisualStudio相似,但界面風(fēng)格比較獨(dú)特。ADS僅在其PC機(jī)版本中集成了該IDE。
調(diào)試器(Debuggers)
調(diào)試器部分包括兩個(gè)調(diào)試器:ARM擴(kuò)展調(diào)試器AXD(ARMeXtendedDebugger)、ARM符號(hào)調(diào)試器armsd(ARMsymbolicdebugger)。AXD基于Windows9X/NT風(fēng)格,具有一般意義上調(diào)試器的所有功能,包括簡(jiǎn)單和復(fù)雜斷點(diǎn)設(shè)置、棧顯示、寄存器和存儲(chǔ)區(qū)顯示、命令行接口等。Armsd作為一個(gè)命令行工具輔助調(diào)試或者用在其他操作系統(tǒng)平臺(tái)上。指令集模擬器(InstructionSetSimulators)
用戶使用指令集模擬器無(wú)需任何硬件即可在PC機(jī)上完成一部分調(diào)試工作。
ARM開發(fā)包(ARMFirmwareSuite)
ARM開發(fā)包由一些底層的例程和庫(kù)組成,幫助用戶快速開發(fā)基于ARM的應(yīng)用和操作系統(tǒng)。具體包括系統(tǒng)啟動(dòng)代碼、串行口驅(qū)動(dòng)程序、時(shí)鐘例程、中斷處理程序等,Angel調(diào)試軟件也包含在其中。ARM應(yīng)用庫(kù)(ARMApplicationsLibrary)
ADS的ARM應(yīng)用庫(kù)完善和增強(qiáng)了SDT中的函數(shù)庫(kù),同時(shí)還包括一些相當(dāng)有用的提供了源代碼的例程。用戶使用ARMADS開發(fā)應(yīng)用程序與使用ARMSDT完全相同,同樣是選擇配合Angel駐留模塊或者JTAG仿真器進(jìn)行,目前大部分JTAG仿真器均支持ARMADS。4.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025下半年四川涼山越西縣招聘中小學(xué)教師100人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上海市體育發(fā)展服務(wù)中心擬聘人員歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年浙江杭州市五云山醫(yī)院高層次、緊缺專業(yè)人才招考聘用4人通知高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川遂寧市安居區(qū)部分事業(yè)單位考試招聘7人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025上半年四川省自貢市事業(yè)單位招聘(1121人)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 建筑裝飾翰林府施工合同
- 傳媒公司制片人聘任合同
- 建筑材料質(zhì)量檢驗(yàn)操作手冊(cè)
- 2024圓通速遞快遞服務(wù)收費(fèi)標(biāo)準(zhǔn)及合同規(guī)定3篇
- 2024年離婚財(cái)產(chǎn)分割夫妻合同標(biāo)準(zhǔn)格式版B版
- 物流春節(jié)保障方案(2篇)
- 行政復(fù)議法-形考作業(yè)1-國(guó)開(ZJ)-參考資料
- CT增強(qiáng)檢查的護(hù)理
- DB32T3691-2019成品住房裝修技術(shù)標(biāo)準(zhǔn)
- (完整版)公務(wù)員考試行測(cè)答題卡-高清A4標(biāo)準(zhǔn)打印版
- 《預(yù)測(cè)與決策教程第2版》(習(xí)題解答)機(jī)工版
- 醫(yī)療質(zhì)量安全管理體系建設(shè)方案
- MOOC 工程制圖-北京科技大學(xué) 中國(guó)大學(xué)慕課答案
- 《會(huì)展英語(yǔ)》課程教學(xué)大綱
- 服裝色彩搭配智慧樹知到期末考試答案2024年
- 礦山安全生產(chǎn)管理經(jīng)驗(yàn)分享
評(píng)論
0/150
提交評(píng)論