版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章
嵌入式系統(tǒng)移植移植的基本概念使某個(gè)平臺(tái)的代碼運(yùn)行在其他平臺(tái)上的過(guò)程就叫做移植。如Linux系統(tǒng)通過(guò)移植可以運(yùn)行在ARM,PowerPC,M68K等多種平臺(tái)上。軟件的移植:從一個(gè)硬件平臺(tái)移植到另一個(gè)硬件平臺(tái)從一個(gè)操作系統(tǒng)移植到另一個(gè)操作系統(tǒng)軟件進(jìn)行移植的容易程度即可移植性3嵌入式系統(tǒng)需要移植什么?Bootloader操作系統(tǒng)內(nèi)核(kernel)文件系統(tǒng)硬件驅(qū)動(dòng)應(yīng)用程序嵌入式系統(tǒng)的BootLoader程序相當(dāng)于PC中BIOS+MBR大多數(shù)BootLoader程序都包括兩種不同的操作模式:?jiǎn)?dòng)加載模式(Bootloading)下載模式(Downloading)BootLoader1、把Linux操作系統(tǒng)針對(duì)具體的目標(biāo)平臺(tái)做必要的改寫(xiě)之后,安裝到該目標(biāo)平臺(tái)使其正確運(yùn)行,這就叫內(nèi)核移植。2、因?yàn)椴煌那度胧较到y(tǒng)使用的微處理器不同,且硬件設(shè)計(jì)時(shí),可能存儲(chǔ)器安排的地址也不同。因此要根據(jù)系統(tǒng)的體系結(jié)構(gòu)、硬件的結(jié)構(gòu)來(lái)修改源代碼,否則系統(tǒng)不能正確運(yùn)行。3、一般由將它打到內(nèi)核上,最后進(jìn)行交叉編譯就行。目標(biāo)平臺(tái)提供商來(lái)完成。例如ARM平臺(tái),它的這部分工作就是由ARM公司的工程師完成的。我們所做的就是:下載相關(guān)版本的linux內(nèi)核補(bǔ)丁,操作系統(tǒng)內(nèi)核
根文件系統(tǒng)是Linux操作系統(tǒng)運(yùn)行時(shí)所需要的特有文件系統(tǒng),相當(dāng)于Windows中的C盤(pán)。不僅具有普通文件系統(tǒng)的存儲(chǔ)數(shù)據(jù)文件的功能,還被操作系統(tǒng)用來(lái)存儲(chǔ)運(yùn)行時(shí)所需要的一些特殊文件。這些特殊文件包括操作系統(tǒng)運(yùn)行時(shí)的配置數(shù)據(jù)文件(通常位于/etc目錄下)和設(shè)備文件(位于/dev目錄下)。操作系統(tǒng)通過(guò)使用它們來(lái)與應(yīng)用程序進(jìn)行接口,并與設(shè)備進(jìn)行交互。根文件系統(tǒng)
指系統(tǒng)啟動(dòng)后運(yùn)行的程序,如手機(jī)上啟動(dòng)的第一個(gè)程序,有的是Android程序,有的是Qt程序,根據(jù)不同的需求不一而足。
有的應(yīng)用程序直接放在根文件系統(tǒng),有的則是存放在另外的文件系統(tǒng)。應(yīng)用程序從Linux系統(tǒng)角度看,通常可以分為四個(gè)層次,即:引導(dǎo)加載程序(BootLoader)Linux內(nèi)核根文件系統(tǒng)用戶(hù)應(yīng)用程序嵌入式軟件系統(tǒng)分四層2025/1/9操作系統(tǒng)實(shí)驗(yàn)9Linux操作系統(tǒng)移植獲取內(nèi)核源碼構(gòu)建交叉編譯環(huán)境101、獲得內(nèi)核代碼,并解壓內(nèi)核源碼的官方網(wǎng)址:此處的內(nèi)核首先確保的是在Intelx86體系結(jié)構(gòu)上可以正常運(yùn)行。國(guó)內(nèi)鏡像/sites//pub/linux/kernel/Linux下輸入以下命令可獲得linux的代碼:sudowget/sites//pub/linux/kernel/v.../linux-版本號(hào).tar.xzARM體系結(jié)構(gòu)的源碼網(wǎng)址:.uk/developer獲得內(nèi)核源碼#cd/root/yizhi/boot-kernel-source/#tariTop4412_Kernel_3.0_20191007.tar.gz#cdiTop4412_Kernel_3.0鏡像中的內(nèi)核源代碼:/root/yizhi/boot-kernel-source/iTop4412_Kernel_3.0_20191007.tar.gz解壓縮代碼:內(nèi)核源碼目錄結(jié)構(gòu)分析arch與體系結(jié)構(gòu)相關(guān)的代碼。對(duì)應(yīng)于每個(gè)支持的體系結(jié)構(gòu),有一個(gè)相應(yīng)的子目錄如x86、arm等,每個(gè)體系結(jié)構(gòu)子目錄下包含幾個(gè)主要子目錄:.boot啟動(dòng)內(nèi)核所需的平臺(tái)特有代碼.kernel體系結(jié)構(gòu)特有特征(如SMP)的實(shí)現(xiàn).mm 與體系結(jié)構(gòu)相關(guān)的內(nèi)存管理代碼.lib 與體系結(jié)構(gòu)相關(guān)的通用函數(shù)的實(shí)現(xiàn)內(nèi)核源碼目錄結(jié)構(gòu)分析drivers所有設(shè)備驅(qū)動(dòng)程序代碼,它占整個(gè)內(nèi)核代碼量一半以上,每一個(gè)子目錄對(duì)應(yīng)一類(lèi)驅(qū)動(dòng)程序。fs文件系統(tǒng)代碼,每個(gè)支持的文件系統(tǒng)有相應(yīng)的子目錄,如cramfs,yaffs,jffs2等include
包括編譯內(nèi)核所需的大部分頭文件,與平臺(tái)無(wú)關(guān)的頭文件放在include/linux子目錄下,平臺(tái)相關(guān)的頭文件如include/asm-arm內(nèi)核源碼目錄結(jié)構(gòu)分析init內(nèi)核初始化代碼kernel內(nèi)核管理核心代碼lib庫(kù)函數(shù)代碼Mm內(nèi)存管理代碼net網(wǎng)絡(luò)支持代碼sound音頻設(shè)備驅(qū)動(dòng)代碼scripts用于配置內(nèi)核的腳本文件documentation內(nèi)核相關(guān)文檔2、構(gòu)建交叉編譯環(huán)境搭建交叉編譯環(huán)境是嵌入式開(kāi)發(fā)的第一步,也是很關(guān)鍵的一步。不同的體系結(jié)構(gòu)、不同的操作內(nèi)容設(shè)置是不同的版本的內(nèi)核,都會(huì)用到不同的交叉編譯器。選擇交叉編譯器非常重要,有些交叉編譯器經(jīng)常會(huì)有部分的bug,都會(huì)導(dǎo)致最后的代碼無(wú)法正常運(yùn)行。gcc的版本有很多種,我們采用arm-linux-gcc2009q3版本修改交叉編譯環(huán)境cd輸入以下命令查看編譯器版本arm-none-gnueabi-linux-gcc-vvim.bashrc在最后一行加入:exportPATH=$PATH:/usr/local/arm/arm-2009q3/bin:wq保存退出輸入exit推出root用戶(hù)重新su進(jìn)入rootLinux內(nèi)核配置(1)尺寸小。
自己定制內(nèi)核可以使代碼尺寸減小,運(yùn)行將會(huì)更快。(2)節(jié)省內(nèi)存。
由于內(nèi)核部分代碼永遠(yuǎn)占用物理內(nèi)存,定制內(nèi)核可以使系統(tǒng)擁有更多的可用物理內(nèi)存。(3)減少漏洞。
不需要的功能編譯進(jìn)入內(nèi)核可能會(huì)增加被系統(tǒng)攻擊者利用的機(jī)會(huì)。(4)動(dòng)態(tài)加載模塊。
根據(jù)需要?jiǎng)討B(tài)地加載或者卸載模塊,可以節(jié)省系統(tǒng)內(nèi)存。
因此,在編譯之前必須根據(jù)特定平臺(tái)配置內(nèi)核源代碼。Linux內(nèi)核有上千個(gè)配置選項(xiàng),配置相當(dāng)復(fù)雜。所以,Linux內(nèi)核源代碼組織了一個(gè)配置系統(tǒng)。
18Makefile與.configLinux的Makefile分析
內(nèi)核源碼中含有很多個(gè)Makefile文件,這些Makefile文件又要包含其他一些文件(比如配置信息、通用規(guī)則等。)這些文件構(gòu)成了Linux的Makefile體系,可以分為如下五類(lèi):名稱(chēng)描述頂層Makefile它是所有makefile文件的核心,從總體上控制著內(nèi)核的編譯、連接.config配置文件,在配置內(nèi)核時(shí)生成。根據(jù).config可以確定在編譯內(nèi)核時(shí)需要使用哪些文件arch/$(ARCH)/Makefile對(duì)應(yīng)體系結(jié)構(gòu)的Makefile,它用來(lái)決定哪些體系結(jié)構(gòu)相關(guān)的文件參與內(nèi)核的生成,并提供一些規(guī)則來(lái)生成特定格式的內(nèi)核映像Scripts/Makefile.*Makefile共用的通用規(guī)則、腳本等KbuildMakefiles各級(jí)子目錄下的makefile,他們相對(duì)簡(jiǎn)單,被上一層makefile調(diào)用來(lái)編譯當(dāng)前目錄下的文件Makefile是如何決定編譯哪些文件?1).config配置文件中定義了一系列的變量,Makefile將結(jié)合這些變量來(lái)決定哪些文件被編譯進(jìn)內(nèi)核、哪些文件被編譯成模塊、涉及哪些子目錄。2)
編譯過(guò)程從頂層Makefile文件開(kāi)始,然后遞歸地進(jìn)入各級(jí)子目錄調(diào)用他們的makefile,分為三個(gè)步驟:頂層Makefile決定內(nèi)核根目錄下哪些子目錄將被編進(jìn)內(nèi)核Arch/$(ARCH)/Makefile決定arch/$(ARCH)目錄下哪些文件、哪些目錄將被編譯進(jìn)內(nèi)核各級(jí)子目錄下的Makefile決定所在目錄下哪些文件將被編譯進(jìn)內(nèi)核,哪些文件將被編譯成模塊(即驅(qū)動(dòng)程序),進(jìn)入哪些子目錄繼續(xù)調(diào)用他們的Makefile。2025/1/9操作系統(tǒng)實(shí)驗(yàn)20Makefile與.configLinux內(nèi)核中的.config文件默認(rèn)是隱藏的,可以輸入指令“l(fā)s–a”查看
如何得到.config??jī)?nèi)核源碼每個(gè)子目錄中都有一個(gè)Makefile與Kconfig。
Kconfig是各種配置界面的源文件。內(nèi)核的配置工具讀取各個(gè)Kconfig文件,生成配置界面供開(kāi)發(fā)人員配置內(nèi)核,最后生成配置文件.configArch/arm/mach-exynos/Kconfig配置命令有三種:makeconfig字符界面
makemenuconfigNcurses圖形界面makexconfigXwindows圖形界面配置文件:執(zhí)行以上任意一個(gè)命令配置內(nèi)核后生成文件.config,執(zhí)行make時(shí)根據(jù).config來(lái)決定使用哪些Makefile配置內(nèi)核1、執(zhí)行配置命令配置內(nèi)核一般運(yùn)行makemenuconfig配置內(nèi)核,內(nèi)核的配置選項(xiàng)有很多,用戶(hù)可以使用提供的預(yù)配置文件,也可以自行配置,選擇相應(yīng)的配置時(shí),有三種選擇(按空格鍵進(jìn)行選擇),它們分別代表的含義如下:
[*]-將該功能編譯進(jìn)內(nèi)核
[]-不將該功能編譯進(jìn)內(nèi)核
[M]-將該功能編譯成可以在需要時(shí)動(dòng)態(tài)插入到內(nèi)核中的模塊配置和編譯內(nèi)核配置和編譯內(nèi)核如果要利用默認(rèn)配置做自己的配置單
(不做)
在目錄arch/arm/configs下有所有的系統(tǒng)針對(duì)各種平臺(tái)的默認(rèn)配置單,其中exynos4_defconfig為4412cpu的默認(rèn)配置單,用戶(hù)也可以在這個(gè)配置單的基礎(chǔ)上進(jìn)行配置。輸入命令
makeexynos4_defconfig再輸入命令makemenuconfig,在進(jìn)行修改。載入配置文件
arch/arm/configs/exynos4_defconfig2025/1/9操作系統(tǒng)實(shí)驗(yàn)26配置和編譯內(nèi)核2、保存配置單
將其保存為”.config”文件,因?yàn)榫幾g系統(tǒng)時(shí)會(huì)調(diào)用該文件編譯內(nèi)核內(nèi)核文件:vmlinux編譯出來(lái)的最原始的內(nèi)核文件,未壓縮zImage是vmlinux經(jīng)過(guò)gzip壓縮后的文件
uImageU-boot專(zhuān)用的映像文件,由bootm命令啟動(dòng)
4、輸入”makezImage”,編譯完畢后,會(huì)在內(nèi)核源碼的“arch/arm/boot”目錄下面生成名為“zImage”的鏡像,然后可以將其燒寫(xiě)到開(kāi)發(fā)板中。配置和編譯內(nèi)核5、后續(xù)工作前面所做的工作僅僅只是皮毛,移植一個(gè)Linux內(nèi)核遠(yuǎn)比這復(fù)雜移植Bootloader、移植內(nèi)核、移植驅(qū)動(dòng)、移植根文件系統(tǒng)、移植圖形開(kāi)發(fā)界面等等。將自己編寫(xiě)的VirtualCharDev驅(qū)動(dòng)加入到內(nèi)核1、將VirtualCharDev.c和VirtualCharDev.h拷貝到內(nèi)核代碼iTop4412_Kernel_3.0/drivers/char目錄下cd/root/yizhi/boot_kernel_source/iTop4412_Kernel_3.0/drivers/charcp/home/xitee/driver/VirtualCharDev/VirtualCharDev.c./cp/home/xitee/driver/VirtualCharDev/VirtualCharDev.h./將自己編寫(xiě)的VirtualCharDev驅(qū)動(dòng)加入到內(nèi)核2、修改MakefilevimMakefile到文件最末端加入一句:obj-$(CONFIG_VIRTDEV_CTL)+=VirtualCharDev.o保存退出將自己編寫(xiě)的VirtualCharDev驅(qū)動(dòng)加入到內(nèi)核3、修改KconfigvimKconfig到文件最末端endmenu前加入一段:保存退出將自己編寫(xiě)的VirtualCharDev驅(qū)動(dòng)加入到內(nèi)核4、退回到內(nèi)核目錄(iTop4412_Kernel_3.0)下cd../..makemenuconfig選中對(duì)應(yīng)的項(xiàng)目將自己編寫(xiě)的VirtualCharDev驅(qū)動(dòng)加入到內(nèi)核5、vim.config可查看到CONFIG_VIRTDEV_CTL=y表示該選項(xiàng)已被選中編譯,6、makezImage在…./drivers/char目錄下可看到Virt
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年水電站發(fā)電權(quán)承包經(jīng)營(yíng)協(xié)議3篇
- 2025年度選礦廠礦產(chǎn)資源開(kāi)采承包合同示例3篇
- 2025年新婚姻法離婚協(xié)議書(shū)婚姻法律專(zhuān)家團(tuán)隊(duì)服務(wù)合同2篇
- 2025年綠色能源開(kāi)發(fā)項(xiàng)目投資合作協(xié)議范本3篇
- 二零二五版海洋工程設(shè)備采購(gòu)預(yù)付款擔(dān)保服務(wù)協(xié)議3篇
- 2025年上半年遵義市規(guī)劃中心招考研究生易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年遺傳發(fā)育所植物激素平臺(tái)首席科學(xué)家招聘1人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年遼寧錦州市事業(yè)單位面向退役高校畢業(yè)生招聘64人重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解-1
- 2025年上半年遼寧省本溪市事業(yè)單位招考易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年上半年贛州銅仁江口縣教育系統(tǒng)引進(jìn)重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解-1
- 大數(shù)據(jù)管理與考核制度大全
- 大學(xué)面試后感謝信
- 2022屆上海高考語(yǔ)文調(diào)研試測(cè)卷詳解(有《畏齋記》“《江表傳》曰…”譯文)
- SBT11229-2021互聯(lián)網(wǎng)舊貨交易平臺(tái)建設(shè)和管理規(guī)范
- 如何打造頂尖理財(cái)顧問(wèn)團(tuán)隊(duì)
- 土壤農(nóng)化分析課件
- 小區(qū)大型團(tuán)購(gòu)活動(dòng)策劃
- NEC(新生兒壞死性小腸結(jié)腸炎)92273
- 2023年租賃風(fēng)控主管年度總結(jié)及下一年展望
- 開(kāi)關(guān)插座必看的七個(gè)安全隱患范文
- 高分子成型加工課件
評(píng)論
0/150
提交評(píng)論