




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第8章
嵌入式系統(tǒng)移植移植的基本概念使某個平臺的代碼運行在其他平臺上的過程就叫做移植。如Linux系統(tǒng)通過移植可以運行在ARM,PowerPC,M68K等多種平臺上。軟件的移植:從一個硬件平臺移植到另一個硬件平臺從一個操作系統(tǒng)移植到另一個操作系統(tǒng)軟件進行移植的容易程度即可移植性3嵌入式系統(tǒng)需要移植什么?Bootloader操作系統(tǒng)內(nèi)核(kernel)文件系統(tǒng)硬件驅(qū)動應用程序嵌入式系統(tǒng)的BootLoader程序相當于PC中BIOS+MBR大多數(shù)BootLoader程序都包括兩種不同的操作模式:啟動加載模式(Bootloading)下載模式(Downloading)BootLoader1、把Linux操作系統(tǒng)針對具體的目標平臺做必要的改寫之后,安裝到該目標平臺使其正確運行,這就叫內(nèi)核移植。2、因為不同的嵌入式系統(tǒng)使用的微處理器不同,且硬件設計時,可能存儲器安排的地址也不同。因此要根據(jù)系統(tǒng)的體系結(jié)構(gòu)、硬件的結(jié)構(gòu)來修改源代碼,否則系統(tǒng)不能正確運行。3、一般由將它打到內(nèi)核上,最后進行交叉編譯就行。目標平臺提供商來完成。例如ARM平臺,它的這部分工作就是由ARM公司的工程師完成的。我們所做的就是:下載相關版本的linux內(nèi)核補丁,操作系統(tǒng)內(nèi)核
根文件系統(tǒng)是Linux操作系統(tǒng)運行時所需要的特有文件系統(tǒng),相當于Windows中的C盤。不僅具有普通文件系統(tǒng)的存儲數(shù)據(jù)文件的功能,還被操作系統(tǒng)用來存儲運行時所需要的一些特殊文件。這些特殊文件包括操作系統(tǒng)運行時的配置數(shù)據(jù)文件(通常位于/etc目錄下)和設備文件(位于/dev目錄下)。操作系統(tǒng)通過使用它們來與應用程序進行接口,并與設備進行交互。根文件系統(tǒng)
指系統(tǒng)啟動后運行的程序,如手機上啟動的第一個程序,有的是Android程序,有的是Qt程序,根據(jù)不同的需求不一而足。
有的應用程序直接放在根文件系統(tǒng),有的則是存放在另外的文件系統(tǒng)。應用程序從Linux系統(tǒng)角度看,通??梢苑譃樗膫€層次,即:引導加載程序(BootLoader)Linux內(nèi)核根文件系統(tǒng)用戶應用程序嵌入式軟件系統(tǒng)分四層2025/1/9操作系統(tǒng)實驗9Linux操作系統(tǒng)移植獲取內(nèi)核源碼構(gòu)建交叉編譯環(huán)境101、獲得內(nèi)核代碼,并解壓內(nèi)核源碼的官方網(wǎng)址:此處的內(nèi)核首先確保的是在Intelx86體系結(jié)構(gòu)上可以正常運行。國內(nèi)鏡像/sites//pub/linux/kernel/Linux下輸入以下命令可獲得linux的代碼:sudowget/sites//pub/linux/kernel/v.../linux-版本號.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)相關的代碼。對應于每個支持的體系結(jié)構(gòu),有一個相應的子目錄如x86、arm等,每個體系結(jié)構(gòu)子目錄下包含幾個主要子目錄:.boot啟動內(nèi)核所需的平臺特有代碼.kernel體系結(jié)構(gòu)特有特征(如SMP)的實現(xiàn).mm 與體系結(jié)構(gòu)相關的內(nèi)存管理代碼.lib 與體系結(jié)構(gòu)相關的通用函數(shù)的實現(xiàn)內(nèi)核源碼目錄結(jié)構(gòu)分析drivers所有設備驅(qū)動程序代碼,它占整個內(nèi)核代碼量一半以上,每一個子目錄對應一類驅(qū)動程序。fs文件系統(tǒng)代碼,每個支持的文件系統(tǒng)有相應的子目錄,如cramfs,yaffs,jffs2等include
包括編譯內(nèi)核所需的大部分頭文件,與平臺無關的頭文件放在include/linux子目錄下,平臺相關的頭文件如include/asm-arm內(nèi)核源碼目錄結(jié)構(gòu)分析init內(nèi)核初始化代碼kernel內(nèi)核管理核心代碼lib庫函數(shù)代碼Mm內(nèi)存管理代碼net網(wǎng)絡支持代碼sound音頻設備驅(qū)動代碼scripts用于配置內(nèi)核的腳本文件documentation內(nèi)核相關文檔2、構(gòu)建交叉編譯環(huán)境搭建交叉編譯環(huán)境是嵌入式開發(fā)的第一步,也是很關鍵的一步。不同的體系結(jié)構(gòu)、不同的操作內(nèi)容設置是不同的版本的內(nèi)核,都會用到不同的交叉編譯器。選擇交叉編譯器非常重要,有些交叉編譯器經(jīng)常會有部分的bug,都會導致最后的代碼無法正常運行。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用戶重新su進入rootLinux內(nèi)核配置(1)尺寸小。
自己定制內(nèi)核可以使代碼尺寸減小,運行將會更快。(2)節(jié)省內(nèi)存。
由于內(nèi)核部分代碼永遠占用物理內(nèi)存,定制內(nèi)核可以使系統(tǒng)擁有更多的可用物理內(nèi)存。(3)減少漏洞。
不需要的功能編譯進入內(nèi)核可能會增加被系統(tǒng)攻擊者利用的機會。(4)動態(tài)加載模塊。
根據(jù)需要動態(tài)地加載或者卸載模塊,可以節(jié)省系統(tǒng)內(nèi)存。
因此,在編譯之前必須根據(jù)特定平臺配置內(nèi)核源代碼。Linux內(nèi)核有上千個配置選項,配置相當復雜。所以,Linux內(nèi)核源代碼組織了一個配置系統(tǒng)。
18Makefile與.configLinux的Makefile分析
內(nèi)核源碼中含有很多個Makefile文件,這些Makefile文件又要包含其他一些文件(比如配置信息、通用規(guī)則等。)這些文件構(gòu)成了Linux的Makefile體系,可以分為如下五類:名稱描述頂層Makefile它是所有makefile文件的核心,從總體上控制著內(nèi)核的編譯、連接.config配置文件,在配置內(nèi)核時生成。根據(jù).config可以確定在編譯內(nèi)核時需要使用哪些文件arch/$(ARCH)/Makefile對應體系結(jié)構(gòu)的Makefile,它用來決定哪些體系結(jié)構(gòu)相關的文件參與內(nèi)核的生成,并提供一些規(guī)則來生成特定格式的內(nèi)核映像Scripts/Makefile.*Makefile共用的通用規(guī)則、腳本等KbuildMakefiles各級子目錄下的makefile,他們相對簡單,被上一層makefile調(diào)用來編譯當前目錄下的文件Makefile是如何決定編譯哪些文件?1).config配置文件中定義了一系列的變量,Makefile將結(jié)合這些變量來決定哪些文件被編譯進內(nèi)核、哪些文件被編譯成模塊、涉及哪些子目錄。2)
編譯過程從頂層Makefile文件開始,然后遞歸地進入各級子目錄調(diào)用他們的makefile,分為三個步驟:頂層Makefile決定內(nèi)核根目錄下哪些子目錄將被編進內(nèi)核Arch/$(ARCH)/Makefile決定arch/$(ARCH)目錄下哪些文件、哪些目錄將被編譯進內(nèi)核各級子目錄下的Makefile決定所在目錄下哪些文件將被編譯進內(nèi)核,哪些文件將被編譯成模塊(即驅(qū)動程序),進入哪些子目錄繼續(xù)調(diào)用他們的Makefile。2025/1/9操作系統(tǒng)實驗20Makefile與.configLinux內(nèi)核中的.config文件默認是隱藏的,可以輸入指令“l(fā)s–a”查看
如何得到.config?內(nèi)核源碼每個子目錄中都有一個Makefile與Kconfig。
Kconfig是各種配置界面的源文件。內(nèi)核的配置工具讀取各個Kconfig文件,生成配置界面供開發(fā)人員配置內(nèi)核,最后生成配置文件.configArch/arm/mach-exynos/Kconfig配置命令有三種:makeconfig字符界面
makemenuconfigNcurses圖形界面makexconfigXwindows圖形界面配置文件:執(zhí)行以上任意一個命令配置內(nèi)核后生成文件.config,執(zhí)行make時根據(jù).config來決定使用哪些Makefile配置內(nèi)核1、執(zhí)行配置命令配置內(nèi)核一般運行makemenuconfig配置內(nèi)核,內(nèi)核的配置選項有很多,用戶可以使用提供的預配置文件,也可以自行配置,選擇相應的配置時,有三種選擇(按空格鍵進行選擇),它們分別代表的含義如下:
[*]-將該功能編譯進內(nèi)核
[]-不將該功能編譯進內(nèi)核
[M]-將該功能編譯成可以在需要時動態(tài)插入到內(nèi)核中的模塊配置和編譯內(nèi)核配置和編譯內(nèi)核如果要利用默認配置做自己的配置單
(不做)
在目錄arch/arm/configs下有所有的系統(tǒng)針對各種平臺的默認配置單,其中exynos4_defconfig為4412cpu的默認配置單,用戶也可以在這個配置單的基礎上進行配置。輸入命令
makeexynos4_defconfig再輸入命令makemenuconfig,在進行修改。載入配置文件
arch/arm/configs/exynos4_defconfig2025/1/9操作系統(tǒng)實驗26配置和編譯內(nèi)核2、保存配置單
將其保存為”.config”文件,因為編譯系統(tǒng)時會調(diào)用該文件編譯內(nèi)核內(nèi)核文件:vmlinux編譯出來的最原始的內(nèi)核文件,未壓縮zImage是vmlinux經(jīng)過gzip壓縮后的文件
uImageU-boot專用的映像文件,由bootm命令啟動
4、輸入”makezImage”,編譯完畢后,會在內(nèi)核源碼的“arch/arm/boot”目錄下面生成名為“zImage”的鏡像,然后可以將其燒寫到開發(fā)板中。配置和編譯內(nèi)核5、后續(xù)工作前面所做的工作僅僅只是皮毛,移植一個Linux內(nèi)核遠比這復雜移植Bootloader、移植內(nèi)核、移植驅(qū)動、移植根文件系統(tǒng)、移植圖形開發(fā)界面等等。將自己編寫的VirtualCharDev驅(qū)動加入到內(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./將自己編寫的VirtualCharDev驅(qū)動加入到內(nèi)核2、修改MakefilevimMakefile到文件最末端加入一句:obj-$(CONFIG_VIRTDEV_CTL)+=VirtualCharDev.o保存退出將自己編寫的VirtualCharDev驅(qū)動加入到內(nèi)核3、修改KconfigvimKconfig到文件最末端endmenu前加入一段:保存退出將自己編寫的VirtualCharDev驅(qū)動加入到內(nèi)核4、退回到內(nèi)核目錄(iTop4412_Kernel_3.0)下cd../..makemenuconfig選中對應的項目將自己編寫的VirtualCharDev驅(qū)動加入到內(nèi)核5、vim.config可查看到CONFIG_VIRTDEV_CTL=y表示該選項已被選中編譯,6、makezImage在…./drivers/char目錄下可看到Virt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學三年級下冊(三下)蘇教版數(shù)學期中測試卷.2
- 2025年小升初數(shù)學專項訓練-集合(含答案)
- 2024國際設計師考試全景式復習試題及答案
- 2024年設計師創(chuàng)意能力考核題及答案
- 助理廣告師考試目標導向試題及答案
- 側(cè)方停車考試題庫及答案
- 信托業(yè)培訓試題及答案
- 2024年紡織品新材料趨勢試題及答案
- 新能源知識競賽考試試卷及答案(二)
- 廣告設計師考試2024年外部環(huán)境影響試題及答案
- 婦科一病一品護理匯報
- 大學生心理健康教育-大學生心理健康
- 精密干涉?zhèn)鞲屑夹g(shù)與應用 - 干涉條紋與zernike多項式
- 2024住院患者靜脈血栓栓塞癥預防護理與管理專家共識要點(全文)
- 2024-2030年中國有機肥產(chǎn)業(yè)應用態(tài)勢及投資盈利預測報告
- 鋼結(jié)構(gòu)工程施工應急處置措施
- 施工損壞賠償協(xié)議書
- 2024年湖北省十堰市荊楚初中聯(lián)盟八年級中考模擬預測生物試題
- 2024年北京東城區(qū)高三二模地理試題和答案
- 幼兒園一等獎公開課:大班繪本《愛書的孩子》課件
- 中國城市建設史智慧樹知到期末考試答案章節(jié)答案2024年西安工業(yè)大學
評論
0/150
提交評論