版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
嵌入式系統(tǒng)原理與應用電子與電氣工程學院第七章Linux系統(tǒng)移植教師:程蔚正大氣象厚德載物MinnanUniversityofScienceandTechnology目錄CONTENTS01.U-Boot編譯與移植02.Linux編譯與移植03.Linux文件系統(tǒng)制作正大氣象厚德載物MinnanUniversityofScienceandTechnology01PARTONE嵌入式系統(tǒng)簡介正大氣象厚德載物MinnanUniversityofScienceandTechnology正大氣象厚德載物MinnanUniversityofScienceandTechnology一、BootLoader介紹二、S5p6818啟動方式三、Uboot移植四、Uboot命令U-Boot編譯與移植
S5p6818啟動正大氣象厚德載物MinnanUniversityofScienceandTechnology一、BootLoader介紹BootLoader系統(tǒng)啟動引導程序,主要作用:搬移內(nèi)核(系統(tǒng))到內(nèi)存中執(zhí)行。分類標準說明針對不同CPU架構(gòu)1、針對X86架構(gòu)的有LIL0、GRUB、ntldr等針對不同2、針對ARM架構(gòu)的有vivi、armboot等CPU架構(gòu)3、針對PPC架構(gòu)的有ppcboot等4、可以支持多種架構(gòu)的u-boot等針對不同操作系統(tǒng)1、專門用來啟動Linux系統(tǒng)的vivi2、專門用來啟動WinCE系統(tǒng)的eboot3、基于eCos系統(tǒng)的引導程序redboot4、可以啟動多種操作系統(tǒng)的u-boot等正大氣象厚德載物MinnanUniversityofScienceandTechnology一、BootLoader介紹BootLoader簡單對比BooloaderMonitor描述X86ARMLILO否Linux磁盤引導程序是否GRUB否GNU的LILO替代程序是否ntldr否x86上引導windowsNT系列是否armboot是專門為arm架構(gòu)設計的boot否是ppcboot是引導ppc架構(gòu)操作系統(tǒng)否是vivi是韓國Mizi公司針對三星ARM架構(gòu)CPU設計引導程序否是redboot是基于eCos的引導程序是是u-boot是通用引導程序,支持多種CPU架構(gòu)、多種操作系統(tǒng)是是正大氣象厚德載物MinnanUniversityofScienceandTechnologyS5P6818systemboot的兩種方式(芯片手冊第3章systemBootP93):1、外部靜態(tài)內(nèi)存啟動:2、內(nèi)部ROM啟動:NANDbootSD/MMC/SDFSbootSPISerialEEPROMbootUARTbootUSBboot二、S5p6818啟動方式二、S5p6818啟動方式--- 確定啟動方式為:SDHC啟動BootMCU_SD0:1MCU_SD1:0MCU_SD2:1采用的是SD/MMC啟動方式SD/MMC接口有3個通道,SD0卡槽、SD1卡槽和EMMC。默認是從SD0卡槽的中SD卡啟動,如果SD0卡槽沒有SD卡,是從EMMC啟動。MCU_SD3:0,選用的是CH1二、S5p6818啟動方式--- SDHC啟動方式介紹iROM(0x34000000)20KBiRAM(0xffff0000)64KB1、上電執(zhí)行固化在iROM中的指令,此代碼出廠就有,主要功能初始化SD,識別SD接口等;2、從SD/MMC/eMMC拷貝用戶的啟動代碼(約56KB)到iRAM;3、跳轉(zhuǎn)到iRAM地址中,執(zhí)行用戶的啟動代碼;注:用戶啟動代碼約等于56Kb。二、S5p6818啟動過程S5P6818啟動過程BL0階段:芯片選擇啟動iROM、iROM選擇啟動下一階段引導程序所在設備(P95圖iROM啟動Uboot第一階段BL1Uboot第一階段啟動Uboot第二階段BL2Uboot第二階段啟動內(nèi)核綜上所述,我們的userbootcode是從SD卡等外部設備上加載的,這樣iROM就會先找到能夠啟動的外部設備SD卡,并從核心板上的EMMC上搬運userbootcode,而搬運的這段代碼就是我們常說的Bootloader。ubootpak.bin主要就是一個包含了2ndboot和uboot.bin的完整Bootloader。二、S5p6818啟動過程二、S5p6818啟動過程二、S5p6818啟動過程二、S5p6818啟動過程三、Uboot移植---簡介1、簡介:Uboot最初是由PPCBoot發(fā)展而來,目前已成為Armboot和PPCboot的替代品2、特點:
支持操作系統(tǒng)有Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS等。
支持的處理器架構(gòu)有PowerPC、MIPS、X86、ARM、NIOS、Xscale3、Uboot最新版本:http://git.denx.de/?p=u-boot.git;a=summary三、Uboot移植---源碼目錄三、Uboot移植---源碼目錄三、Uboot移植---源碼目錄三、Uboot移植---編譯配置u-boot的配置編譯需要經(jīng)過以下步驟:①在u-boot的根目錄下執(zhí)行:#makeGEC6818_config//對應開發(fā)板配置Makefile會構(gòu)建編譯結(jié)構(gòu),如:架構(gòu)、cpu、開發(fā)板、廠商、芯片、目錄等,為下一步真正編譯鏈接做準備。②修改include/configs/x6818.h配置文件③在u-boot根目錄下執(zhí)行:makeARM=ARCHCROSS_COMPILE=../prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-其中ARM=ARCHCROSS_COMPILE=../prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-,可以根據(jù)實際情況指定編譯器路徑,或可將本部分添加到頂層Makefile文件中,則輸入編譯命令可只輸入:make。(注:選擇的編譯器需支持編譯U-boot)三、Uboot移植---編譯結(jié)果如下:GECuboot.bin三、Uboot移植---編譯配置連接文件u-boot.ldsmake命令執(zhí)行的是Makefile文件的第一個目標即->
->
->
->
->三、Uboot移植---編譯配置連接文件u-boot.ldsnsih.txt和2ndboot是廠商提供的,二進制文件。將u-boot.bin、nsih.txt和2ndboot使用tools/mk6818工具生成ubootpak.bin根據(jù)以上步驟產(chǎn)生編譯和鏈接所需文件的信息,最終make完成,在根目錄下將生成:ubootpak.binu-boot.binu-boot.map三個文件。三、Uboot移植---編譯配置1、Uboot源碼中README:2、確定配置方法為:makeGEC6818_config3、在終端輸入:makehelp4、打開Makefile文件,查找_config5、打開Uboot根目錄中的mkconfig,
是一個shell腳本進行配置。三、Uboot移植---編譯過程1、打開mkconfigUboot源碼提供了配置腳本,完成CPU架構(gòu)和平臺信息選擇配置:從boards.cfg文件中匹配到當前平臺信息,將該信息重定向到/include/config.h中。信息如下:四、Uboot命令常用命令1、print得到所有命令列表2、help:helptest,列出test功能的使用說明3、ping:測試與其他設備網(wǎng)絡是否連通4、setenv:設置環(huán)境變量,例:setenvserverip5、saveenv:設置好環(huán)境變量以后,保存變量值6、tftp:tftp32000000vmlinux,把server(IP=環(huán)境變量中設置的serverip)中/tftpdroot/下的vmlinux通過TFTP讀入到物理內(nèi)存32000000處。7、bootm:起動UBOOTTOOLS制作的壓縮LINUX內(nèi)核,bootm32000008、md:修改RAM中的內(nèi)容,md32000000(內(nèi)存的起始地址)四、Uboot命令---U-Boot命令制作內(nèi)核的啟動,通過U-Boot命令來實現(xiàn)的。U-Boot中每個命令都通過U_BOOT_CMD宏來定義,格式如下:U_BOOT_CMD(_name,_maxargs,_rep,_cmd,_usage,_help)各項參數(shù)的意義如下:
_name:命令的名字,它不是一個字符串。
_maxargs:最大的參數(shù)。
_rep:命令是否可重復,可重復是指運行一個命令后,下次敲回即可再次運行。
_cmd:對應的函數(shù)指針,類型為(*cmd)(structcmd_tbl_s*,int,int,char*[])。
_usage:簡單的使用說明,這是個字符串。
_help:較詳細的使用說明,這是個字符串。四、Uboot命令---U-Boot命令制作例:在U-boot中增加一條test命令,命令至少支持接收3個參數(shù)。并且根據(jù)輸入?yún)?shù)做求和,打印求和的值。1)進入common目錄下新增一個cmd_test.c文件,并且復制一份模板。2)打開cmd_test.c按要求修改。制作命令代碼框架如下:#include<common.h>#include<command.h>
staticintdo_help(cmd_tbl_t*cmdtp,intflag,intargc,char*constargv[]){……}
U_BOOT_CMD(……);四、Uboot命令---U-Boot命令制作例:在U-boot中增加一條test命令,命令至少支持接收3個參數(shù)。并且根據(jù)輸入?yún)?shù)做求和,打印求和的值。3)修改后如下:4)保存,并修改本級Makefile文件,添加編譯語句。ifndefCONFIG_SPL_BUILDobj-y+=main.oobj-y+=command.oobj-y+=exports.oobj-y+=hash.oobj-y+=cmd_test.o5)編譯與下載了解awk工具02PARTTWOLinux內(nèi)核編譯與移植正大氣象厚德載物MinnanUniversityofScienceandTechnology一、Linux內(nèi)核版本及獲得二、Linux內(nèi)核結(jié)構(gòu)三、Linux內(nèi)核啟動引導過程四、Linux內(nèi)核的配置和編譯五、Linux3.4.39內(nèi)核移植Linux內(nèi)核編譯與移植-S5P6818一、Linux內(nèi)核版本變遷及獲得BootLoader系統(tǒng)啟動引導程序,主要作用:搬移內(nèi)核(系統(tǒng))到內(nèi)存中執(zhí)行。一、Linux內(nèi)核版本變遷及其獲得登錄Linux內(nèi)核的官方網(wǎng)站/,可以看到如圖Linux內(nèi)核的版本號可以從源代碼的頂層目錄下的Makefile中看到,比如下面幾行它們構(gòu)成了Linux的版本號:3.4.39。VERSION=3PATCHLEVEL=6SUBLEVEL=39二、Linux內(nèi)核結(jié)構(gòu)內(nèi)核源碼結(jié)構(gòu)下載源碼后解壓進入源碼頂層目錄如下圖,其中首先要分析的三個重要文件為:Makefile、Kconfig、.config。.config為隱藏文件需輸入ls-a可查看,是編譯后自動生成文件保存相關配置項,Kconfig是生成配置菜單的重要文件。1、Makefile1)打開頂層Makefile:init-y、drivers-y、net-y、libs-y和core-y。2)arch/$(ARCH)/Makefile,以ARM體系為例,在arch/arm/Makefile中出現(xiàn)了另一類:head-y對于沒有MMU的處理器,MMUEXT的值位-nommu,使用文件head-nommu.S;對于有MMU的處理器,MMUEXT的值為空,使用文案head.S。3)在配置內(nèi)核時生成配置文件.config三、Linux內(nèi)核啟動引導過程1、Makefile3)在配置內(nèi)核時生成配置文件.config頂層Makefile使用如下語句間接包含.config文件,以后就根據(jù).config中定義的各個選項決定編譯那些文件。三、Linux內(nèi)核啟動引導過程vmlinux-all表示所有構(gòu)成內(nèi)核映像文件vmlinux的文件。從vmlinux-init開始可知這些目標文件的順序為:head-y、init-y、core-y、libs-y、drivers-y、net-y,即arch/arm/head.o(假設沒有MMU,否則為head-nommu.o)、arch/arm/kernel/init_task.o、init/built-in.o、usr/built-in.o等。1、Makefile3)在配置內(nèi)核時生成配置文件.config其中vmlinux-lds表示連接腳本為arch/$(SRCARCH)/kernel/vmlinux.lds。對于ARM體系,連接腳本就是arch/arm/kernel/vmlinux.lds,它由arch/arm/kernel/vmlinux.lds.S文件生成,規(guī)則在scripts/Makefile.build中三、Linux內(nèi)核啟動引導過程生成的arch/arm/kernel/vmlinux.lds頂層Makefile和arch/$(ARCH)/Makefile決定根目錄下哪些子目錄、arch/$(ARCH)/目錄下那些文件和目錄被編進內(nèi)核。各級子目錄下的Makefile決定所在目錄下哪些文件被編進內(nèi)核,哪些文件被編成模塊(即驅(qū)動程序)等。最后頂層Makefile按照一定的順序組織文件,根據(jù)連接腳本arch/$(ARCH)/kernel/vmlinux.lds生成內(nèi)核映像文件vmlinux。2Kconfig分析內(nèi)核目錄下執(zhí)行“makemenuconfig”三、Linux內(nèi)核啟動引導過程生成的arch/arm/kernel/vmlinux.lds內(nèi)核源碼的每個子目錄中,都有一個Kconfig文件。Kconfig用于配置內(nèi)核,是各種配置界面的源文件。1內(nèi)核編譯(1)修改頂層Makefie。CROSS_COMPILE變量賦值的路徑為編譯內(nèi)核編譯器所在路徑。請區(qū)分編譯內(nèi)核與編譯應用程序所使用的編譯器不是同一個編譯器。(2)查看與修改平臺的支持文件。根據(jù)自己設備體系結(jié)構(gòu)選擇相應的選項。粵嵌GEC6818實驗平臺選擇信息為:makemenuconfig--->SystemType--->ARMsystemtype(SLsiAPS5P6818)--->(X)SLsiAPS5P6818,四、Linux內(nèi)核的配置和編譯1內(nèi)核編譯(2)查看與修改平臺的支持文件。根據(jù)自己設備體系結(jié)構(gòu)選擇相應的選項?;浨禛EC6818實驗平臺選擇信息為:makemenuconfig--->SystemType--->ARMsystemtype(SLsiAPS5P6818)--->(X)SLsiAPS5P6818,四、Linux內(nèi)核的配置和編譯1內(nèi)核編譯(3)輸入命令make編譯,再輸入命令:makeuImage生成U-boot引導啟動的uImage文件。四、Linux內(nèi)核的配置和編譯說明:輸入makeuImage
如果報錯,請檢查mkimage文件是否放到/bin下。如沒有請進入前期章節(jié)編譯過的bootloader源碼目錄的tools中mkimage復制到/bin。命令為:sudocp../GEC6818uboot/tools/mkimage/bin1內(nèi)核編譯vmlinux:Linux內(nèi)核編譯出來的原始的內(nèi)核文件,elf格式,未做壓縮處理。該映像可用于定位內(nèi)核問題,但不能直接引導Linux系統(tǒng)啟動。Image:Linux內(nèi)核編譯時,使用objcopy處理vmlinux后生成的二進制內(nèi)核映像。該映像未壓縮,可直接引導Linux系統(tǒng)啟動。
zImage:使用gzip壓縮Image后,使用objcopy命令生成的Linux內(nèi)核映像。該映像一般作為uboot的引導映像文件。
uImage:在zImage前面增加一個64字節(jié)的頭,描述映像文件類型,加載位置,大小等信息。該映像是老版本uboot專用的引導映像。四、Linux內(nèi)核的配置和編譯03PARTTHERELinux文件系統(tǒng)制作正大氣象厚德載物MinnanUniversityofScienceandTechnology一、Linux文件系統(tǒng)概念二、Linux制作根文件系統(tǒng)根文件系統(tǒng)制作-S5P6818一、Linux文件系統(tǒng)概念Linux支持多種文件系統(tǒng),包括ext3、ext4、vfat、ntfs、iso9660、jffs、romfs和nfs等,為了對各類文件系統(tǒng)進行統(tǒng)一管理,Linux引入了虛擬文件系統(tǒng)VFS(VirtualFileSystem),為各類文件系統(tǒng)提供一個統(tǒng)一的操作界面和應用編程接口。Linux啟動時,第一個必須掛載的是根文件系統(tǒng);若系統(tǒng)不能從指定設備上掛載根文件系統(tǒng),則系統(tǒng)會出錯而退出啟動。二、制作根文件系統(tǒng)系統(tǒng)啟動時基本功能。1、init進程的應用程序掛在根文件系統(tǒng)上。2、根文件系統(tǒng)提供了根目錄/。3、內(nèi)核啟動后的應用層配置(etc目錄)在根文件系統(tǒng)上。(可以認為,發(fā)行版=內(nèi)核+rootfs)。4、Shell命令程序在根文件系統(tǒng)上(ls、cd等)。最小根文件系統(tǒng)一般至少包含:bin、sbin、dev、lib、etc、mnt等目錄及其中的關鍵文件。二、制作根文件系統(tǒng)busybox是一個集成了一百多個最常用linux命令和工具的軟件,是一個開源項目,遵循GPLv2協(xié)議。Busybox將眾多的UNIX命令集合進一個很小的可執(zhí)行程序中,可以用來替代GNUfileutils、shellutils等工具集。Busybox中各種命令與相應的GNU工具相比,所能提供的選項比較少,但是功能基本足夠,俗稱嵌入式系統(tǒng)中的“瑞士軍刀”。二、制作根文件系統(tǒng)1文件系統(tǒng)配置(1)獲取busybox工具:/downloads/,本章以busybox-1.26.2為例進行配置。新建一個文件夾,復制busybox壓縮包到改文件夾下,并解壓busybox-1.26.2.tar.bz2,進入解壓縮后的目錄,并清除預配置。二、制作根文件系統(tǒng)1文件系統(tǒng)配置(2)輸入makemenuconfig進入busybox配置界面如圖7.23所示,菜單各項表示編譯后所能支持的工具或命令。例如“Editors--->”菜單進入后可以見“[*]vi(NEW)”表示busybox編譯后支持vi編輯器。其他選項請根據(jù)實際情況或者興趣自行了解,本節(jié)案例全部選擇默認配置。二、制作根文件系統(tǒng)1文件系統(tǒng)配置編譯后,文件保存位置在(./_install)BusyBoxinstallationprefix,如圖7.25所示,此處可以默認,配置完成,退出時保存。二、制作根文件系統(tǒng)1文件系統(tǒng)配置(3)編譯。打開頂層Makefile,修改編譯器變量值。編譯器路徑請根據(jù)自己系統(tǒng)實際情況指定:ARCH?=arm,CROSS_COMPILE?=/usr/local/arm/5.4.0/usr/bin/arm-linux-。然后輸入make將編譯好的文件全部復制到指定目錄(此處為默認目錄),輸入makeinstall,復制成功結(jié)果。makeinstall后查看對應目錄,了解目錄結(jié)構(gòu),例如_install、_install/bin、linuxrc。linuxrc文件是鏈接腳本bin/busybox文件。二、制作根文件系統(tǒng)1文件系統(tǒng)配置查看busybox最終得到的文件,頂層目錄下的_install,進入該目錄,可見已生成bin、sbin、linuxrc并且其中已存在相關內(nèi)容,至此最小根文件系統(tǒng)bin、sbin已制作完成,后續(xù)將在_install目錄下完最小系統(tǒng)所需的其他目錄與內(nèi)容。cw@dell:~/rootfs/busybox-1.26.2$ls_install/cw@dell:~/rootfs/busybox-1.26.2$ls_install/bin/cw@dell:~/rootfs/busybox-1.26.2$cd_install/cw@dell:~/rootfs/busybox-1.26.2/_install$lslinuxrc-lcw@dell:~/rootfs/busybox-1.26.2/_install$filebin/busybox二、制作根文件系統(tǒng)1文件系統(tǒng)配置(4)復制lib內(nèi)容。在_install目新建lib,找到交叉編譯器所在路徑下的lib目錄,按依賴關系復制其中所有文件到新建的lib中。(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合作聘請合同范例
- 承包電工合同范例
- 樁基維修合同范例范例
- 小區(qū)消防通道畫線施工方案
- 墊板銷售合同范例
- 廣州集資建房合同范例
- 渠道征地合同范例
- 南陽農(nóng)村建房合同范例
- 內(nèi)科練習題庫與答案
- 潛山租房合同范例
- 大學物理實驗智慧樹知到期末考試答案2024年
- 5G網(wǎng)絡安全風險評估與緩解措施
- 2024年四川省普通高中學業(yè)水平考試(思想政治樣題)
- 中儲糧西安公司社會招聘試題
- 南呂一枝花不伏老課件
- 品質(zhì)部年終總結(jié)報告2022
- 康復科建設可行性方案及措施
- 華為手機行業(yè)洞察分析
- 蘇州市2023-2024學年高二上學期期末考試英語試卷(含答案)
- JGT366-2012 外墻保溫用錨栓
- 醫(yī)院網(wǎng)絡安全培訓
評論
0/150
提交評論