版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
構(gòu)建嵌入式Linux開發(fā)平臺嵌入式交叉編譯環(huán)境搭建
交叉編譯的含義:就是在一個平臺上生成另一個平臺上可執(zhí)行的目標代碼。
平臺的含義:處理器的體系結(jié)構(gòu);運行的操作系統(tǒng)。說明:操作系統(tǒng)或處理器體系結(jié)構(gòu)不同則是不同的平臺
嵌入式系統(tǒng)層次結(jié)構(gòu)CPUExternaldevicesEmbeddedRTOSExtend
軟件
硬件嵌入式交叉編譯環(huán)境模型宿主機安裝Linux操作系統(tǒng)配置好網(wǎng)絡(luò)配置TFTP服務(wù)——用于下載燒寫配置NFS服務(wù)——為交叉開發(fā)時下載所用構(gòu)建交叉編譯環(huán)境確定目標平臺選擇交叉編譯工具
目標機一般采用flash存儲器來保存軟件Bootloader啟動參數(shù)系統(tǒng)內(nèi)核根文件系統(tǒng)應(yīng)用程序燒些方式編程器(JTAG)——bootloader串口網(wǎng)絡(luò)接口1)在/usr/local/目錄下新建arm目錄,并進入該目錄。
[root@vm-devlocal]#mkdirarm
[root@vm-devlocal]#cdarm2)使用cp命令,把cross_3.3.2.tar.bz2拷貝到新建立的/usr/local/arm目錄下。3)解壓交叉編譯器安裝文件(cross_3.3.2.tar.bz2)。 [root@vm-devarm]#
tar-jxvfcross_3.3.2.tar.bz2
交叉編譯器的安裝過程4)增加編譯器路徑。[root@vm-devarm]#
vi/etc/profile
…… #Pathmanipulation if[`id-u`=0];then pathmunge/sbin pathmunge/usr/sbin
pathmunge/usr/local/sbin
pathmunge/usr/local/arm/3.3.2/bin fi使用export命令增加環(huán)境變量:
#exportPATH=$PATH:/usr/local/arm/2.95.3/bin
交叉編譯器的安裝過程在“/”目錄先建立安裝ARM-Linux軟件包目錄軟件包:linux-2.4.18-rmk7-pxa1-mz5-zhiyuan.tar.bz2
建立/zylinux目錄,將ARMLinux源代碼解壓至該目錄下交叉編譯案例—編譯ARM-Linux內(nèi)核#mkdir/zylinux#tarxjvflinux-2.4.18-rmk7-pxa1-mz5-zhiyuan.tar.bz2–C/zylinux編譯ARMLinux內(nèi)核編譯ARMLinux內(nèi)核。進入主界面后,裝載默認配置文件ZY2410x,然后建立依賴關(guān)系,最后編譯即可。#cd/zylinux/kernel#makedistclean#makemenuconfig#makedep#makezImage編譯ARMLinux內(nèi)核#makemenuconfig編譯ARMLinux內(nèi)核構(gòu)建嵌入式Linux目標平臺Bootloader啟動參數(shù)系統(tǒng)內(nèi)核根文件系統(tǒng)應(yīng)用程序啟動參數(shù)引導系統(tǒng)(Bootloader)系統(tǒng)內(nèi)核(Kernel)根文件系統(tǒng)(Rootfs)應(yīng)用程序flashBootloader操作系統(tǒng)內(nèi)核運行之前運行的一段小程序初始化硬件設(shè)備建立內(nèi)存空間的映射圖大多數(shù)引導系統(tǒng)都分為stage1和stage2兩個階段Stage1:依賴于處理器體系結(jié)構(gòu)和板級初始化的代碼通常都放在stage1階段,用匯編語言實現(xiàn);Stage2:則通常用C語言來實現(xiàn),這樣可以實現(xiàn)更復雜的功能,同時具有更好的可讀性和可移植性。硬件設(shè)備初始化;為加載引導系統(tǒng)的stage2準備RAM空間;拷貝引導系統(tǒng)的stage2程序到RAM空間中;設(shè)置好堆棧;跳轉(zhuǎn)到stage2的C程序入口點。引導系統(tǒng)stage1實現(xiàn)的功能初始化本階段要用到的硬件設(shè)備;檢測系統(tǒng)內(nèi)存映射(memorymap);將操作系統(tǒng)內(nèi)核映像和根文件系統(tǒng)映像從Flash讀到RAM空間中;為操作系統(tǒng)內(nèi)核設(shè)置啟動參數(shù);調(diào)用操作系統(tǒng)內(nèi)核。引導系統(tǒng)stage2實現(xiàn)的功能由于引導系統(tǒng)是完全依賴于硬件實現(xiàn)的,不同類別的處理器有不同的匯編語言,不同的開發(fā)平臺有不同的硬件資源。因此,在嵌入式世界里建立一個通用的Bootloader幾乎是不可能的。盡管如此,仍然可以對Bootloader歸納出一些通用的概念來指導特定的Bootloader設(shè)計與實現(xiàn)。BootloaderBootloader共性分析CPU體系結(jié)構(gòu):每一種體系結(jié)構(gòu)的處理器都大量面世。Bootloader的安裝媒介:處理器的復位地址大多統(tǒng)一。Bootloader的啟動過程分為單階段和多階段兩種。Bootloader的操作模式。啟動加載模式下載模式Bootloader的燒寫加載:統(tǒng)一使用JTAG接口。常用bootloaderU-BootBlobARMBootRedBootviviLinux內(nèi)核移植cpuloaderflashOSmemoryOS嵌入式系統(tǒng)啟動過程操作系統(tǒng)作為一組管理軟硬件資源的程序,它能夠管理內(nèi)存、決定系統(tǒng)資源分配、控制輸入/輸出設(shè)備以及管理網(wǎng)絡(luò)文件等,是系統(tǒng)軟硬件之間的紐帶,其典型存儲地址結(jié)構(gòu)如圖所示。啟動參數(shù)引導系統(tǒng)(U-Boot)內(nèi)核(Kernel)根文件系統(tǒng)(Rootfs)典型的Flash存儲空間分配Linux內(nèi)核移植過程獲得Linux源碼()將得到的Linux源碼拷貝到對應(yīng)的工作目錄下,解壓。
[root@vm-dev2410-s]#tar-jxvflinux-.tar.bz2說明:這里以Linux-為示例,內(nèi)核解壓后,當前目錄下自動新建一個名為linux-的子目錄,可進入該目錄查看Linux目錄結(jié)構(gòu)。[root@vm-dev2410-s]#cdlinux-/[root@vm-devlinux-]#ls修改Makefile文件
MagicARM2410的主處理器是S3C2410X,屬于ARM920T,使用交叉編譯器arm-linux-,需修改內(nèi)核的底層Makefile文件。[root@vm-devlinux-]#viMakefile修改前:ARCH?=$(SUBARCH)CROSS_COMPILE?=
修改后:ARCH?=armCROSS_COMPILE?=arm-linux-Linux內(nèi)核移植過程拷貝.config配置文件
由于MagicARM2410的配置和SMDK2410開發(fā)板的類似,可以使用SMDK2410的配置文件s3c2410_defconfig,只需要把該文件拷貝成內(nèi)核目錄下的.config文件即可:[root@vm-devlinux-]#cp./arch/arm/configs/s3c2410_defconfig./.configLinux內(nèi)核移植過程修改NandFlash分區(qū)Linux內(nèi)核移植過程所使用的是SMDK2410開發(fā)板原型,而SMDK2410開發(fā)板的NANDFlash和MagicARM2410開發(fā)板不一樣,需修改。
用vi打開arch/arm/plat-s3c24xx/common-smdk.c文件;找到關(guān)于NandFlash分區(qū)的結(jié)構(gòu)體structmtd_partitionsmdk_default_nand_part[][root@vm-devlinux-]#
vi./arch/arm/plat-s3c24xx/common-smdk.cLinux內(nèi)核移植過程staticstructmtd_partitionsmdk_default_nand_part[]={[0]={.name="Bootloader",.size=0x80000,.offset=0,},[1]={.name="LinuxKernel",.offset=0x80000,.size=SZ_2M,},[2]={.name="RootFileSystem",.offset=0x280000,.size=SZ_4M,},[3]={.name="UserSpace",.offset=0x680000,.size=0x3980000,},};結(jié)構(gòu)體structmtd_partitionsmdk_default_nand_part[]添加LCD驅(qū)動支持
MagicARM2410開發(fā)平臺上配置有640×480的TFT液晶屏,需要在Linux內(nèi)核部分添加對LCD的支持。LCD驅(qū)動支持添加在/arch/arm/mach-s3c2410/目錄下的mach-smdk2410.c文件中;用vi編輯器打開該文件,并進行修改。[root@vm-devlinux-]#
vi./arch/arm/mach-s3c2410/mach-smdk2410.cLinux內(nèi)核移植過程修改mach-smdk2410.c文件①添加包含LCD的數(shù)據(jù)結(jié)構(gòu)的頭文件: #include<arch/asm/fb.h> #include<linux/platform_device.h>②添加與LCD點陣結(jié)構(gòu)相關(guān)的程序代碼:③找到smdk2410_init函數(shù),在函數(shù)的末尾添加對LCD的數(shù)據(jù)進行設(shè)置。Linux內(nèi)核移植過程添加網(wǎng)卡驅(qū)動支持MagicARM2410開發(fā)板上配置了DM9000A網(wǎng)卡,Linux內(nèi)核已經(jīng)有網(wǎng)卡驅(qū)動的實現(xiàn)代碼,需要添加相應(yīng)的配置。配置方法:①在“./arch/arm/mach-s3c2410/mach-smdk2410.c”文件中添加相應(yīng)的內(nèi)容(地址、中斷號、網(wǎng)卡數(shù)據(jù)等)。注意:具體地址、中斷號要與實際的開發(fā)板對應(yīng)。②把網(wǎng)卡數(shù)據(jù)加入smdk2410_devices數(shù)組,Linux內(nèi)核移植過程添加YAFFS文件系統(tǒng)支持YAFFS(YetAnotherFlashFilingSystem)是第一個專門為NandFlash存儲器設(shè)計的嵌入式文件系統(tǒng),適用于大容量的存儲設(shè)備。從http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi免費獲得源碼文件yaffs2.tar.gz。將YAFFS的源代碼yaffs2.tar.gz拷貝到linux-的同級目錄下,解壓該源碼包,獲得YAFFS源碼。進入yaffs2目錄,運行./patch-ker.sh給Linux內(nèi)核打上補丁。這樣,Linux內(nèi)核就可以支持YAFFS文件系統(tǒng)了。Linux內(nèi)核移植過程編譯和配置Linux內(nèi)核在內(nèi)核源代碼的根目錄下運行makemenuconfig命令Linux內(nèi)核移植過程SystemType子項界面Linux內(nèi)核移植過程編譯內(nèi)核:配置完成后,一個精簡的Linux就已經(jīng)設(shè)置完成??稍贚inux內(nèi)核源文件的根目錄下使用make命令編譯內(nèi)核。
[root@vm-devlinux-]#make生成內(nèi)核鏡像:編譯完成后,在Linux-內(nèi)核的/boot/arch/arm目錄下生成內(nèi)核的鏡像文件zImage。Linux內(nèi)核移植過程加載Linux內(nèi)核使用交叉網(wǎng)線連接好宿主機和目標機;設(shè)置宿主機的TCP/IP屬性(必須保證宿主機與目標機的IP地址處于同一網(wǎng)段)編譯U-Boot時,在源代碼tools目錄下生成有一個mkimage可執(zhí)行文件,用該文件可對剛編譯Linux內(nèi)核生成的zImage進行處理,以供U-Boot啟動。使用tftp下載內(nèi)核映像文件。Linux內(nèi)核移植過程根文件系統(tǒng)移植根文件系統(tǒng)一直以來都是所有類Unix操作系統(tǒng)的一個重要組成部分,也可以認為是嵌入式Linux系統(tǒng)區(qū)別于其他一些傳統(tǒng)嵌入式操作系統(tǒng)的重要特征,它給Linux帶來了許多強大和靈活的功能,同時也帶來了一些復雜性。根文件系統(tǒng)概述簡單的說,根文件系統(tǒng)就是一種目錄結(jié)構(gòu)。根文件系統(tǒng)就是要包括Linux啟動時所必須的目錄和關(guān)鍵性的文件。Linux啟動時需要有init目錄下的相關(guān)文件;在Linux掛載分區(qū)時Linux一定會找/etc/fstab這個掛載文件;根文件系統(tǒng)中還包括了許多的應(yīng)用程序bin目錄等;任何包括這些Linux系統(tǒng)啟動所必須的文件都可以稱為根文件系統(tǒng)。Linux根文件系統(tǒng)目錄結(jié)構(gòu)Linux的根文件系統(tǒng)以樹型結(jié)構(gòu)組織,包含內(nèi)核和系統(tǒng)管理所需要的各種文件和程序;一般說來根目錄”/”下的頂層目錄都有一些比較固定的命名和用途;linux根文件系統(tǒng)下一些主要目錄的功用如下:/bin:二進制可執(zhí)行命令;/dev:設(shè)備特殊文件;/etc:系統(tǒng)管理和配置文件;/etc/rc.d:啟動的配置文件和腳本;/home:用戶主目錄的基點,比如用戶user的主目錄就是/home/user;/lib:標準程序設(shè)計庫,又叫動態(tài)鏈接共享庫;/sbin:系統(tǒng)管理命令,存放系統(tǒng)管理員使用的管理程序;/tmp:公用的臨時文件存儲點;/root:系統(tǒng)管理員的主目錄;/mnt:系統(tǒng)提供讓用戶臨時掛載其他的文件系統(tǒng);/lost+found:這個目錄平時是空的,用于存放系統(tǒng)非正常關(guān)機而留下“無家可歸”的文件;/proc:虛擬的目錄,是系統(tǒng)內(nèi)存的映射;/var:某些大文件的溢出區(qū),比如各種服務(wù)的日志文件;/usr:最龐大的目錄,要用到的應(yīng)用程序和文件幾乎都在這個目錄。其中主要包含:/usr/bin:眾多的應(yīng)用程序;/usr/sbin:超級用戶的一些管理程序。Linux根文件系統(tǒng)目錄結(jié)構(gòu)BusyBox的init進程依次進行以下工作:為init設(shè)置信號處理進程;初始化控制臺;剖析inittab、/etc/inittab文件;執(zhí)行系統(tǒng)初始化的命令行。執(zhí)行所有會導致init暫停的inittab命令;(告訴init必須等到相應(yīng)的進程完成之后才能繼續(xù)執(zhí)行。)執(zhí)行所有僅執(zhí)行一次的inittab命令。(僅執(zhí)行相應(yīng)的進程一次,而且不會等待它完成。)一旦完成以上工作,init進程便會循環(huán)執(zhí)行以下工作:1.執(zhí)行所有終止時必須重新啟動的inittab命令;2.執(zhí)行所有終止時必須重新啟動但啟動前必須先詢問過用戶的inittab命令。Linux根文件系統(tǒng)引導過程1.獲得BusyBox源碼從網(wǎng)站下載。解壓源碼,得到完整的BusyBox源碼包.
[root@vm-dev2410-s]#tar-vxjfbusybox-1.12.2.tar.bz2
[root@vm-dev2410-s]#cdbusybox-1.12.2
[root@vm-devbusybox-1.12.2]#ls說明:BusyBox解壓后,當前目錄下自動新建一個名為busybox-1.12.2的子目錄,可進入該目錄查看BusyBox目錄結(jié)構(gòu)。BusyBox根文件系統(tǒng)移植過程2.修改Makefile文件與Linux內(nèi)核移植原因相同,需要修改Makefile中的ARCH和CROSS_COMPILE與本機的路徑一致。打開Makefile文件。
[root@vm-devbusybox-1.12.2]#viMakefile將Makefile文件的目標平臺改為arm,交叉編譯器前綴改為arm-linux-,修改如下: CROSS_COMPILE?=arm-linux- ... ARCH?=armBusyBox根文件系統(tǒng)移植過程3.配置和編譯BusyBox運行makemunuconfig命令,進入BusyBox配置界面BusyBox根文件系統(tǒng)移植過程將BusyBox編譯成靜態(tài)庫。BusyBox根文件系統(tǒng)移植過程添加轉(zhuǎn)義字符識別BusyBox根文件系統(tǒng)移植過程選擇shellBusyBox根文件系統(tǒng)移植過程其他選項請用戶根據(jù)自己的使用情況進行配置。配置好BusyBox選項后,即可對BusyBox進行編譯。BusyBox編譯過程:[root@vm-devbusybox-1.12.2]#make……[root@vm-devbusybox-1.12.2]#makeinstallBusyBox根文件系統(tǒng)移植過程4.創(chuàng)建根文件系統(tǒng)目錄結(jié)構(gòu)使用shell腳本創(chuàng)建根文件系統(tǒng)的目錄結(jié)構(gòu),并在想要建立根文件系統(tǒng)的地方運行此腳本。創(chuàng)建shell腳本文件:
[root@vm-devbusybox-1.12.2]#vibuild_fs.shBusyBox根文件系統(tǒng)移植過程#!/bin/shecho"makeingrootdir"mkdirrootfscdrootfsecho"makeingdir:bindevetclibprocsbinsysusr"mkdirbindevetclibprocsbinsysusr#8dirsmkdirusr/binusr/libusr/sbinlib/modules#Don'tusemknod,unlessyourunthisScriptasmknod-m600dev/consolec51mknod-m666dev/nullc13echo"makingdir:mnttmpvar"mkdirmnttmpvarchmod1777tmpmkdirmnt/etcmnt/jiffs2mnt/yaffsmnt/datamnt/tempmkdirvar/libvar/lockvar/logvar/runvar/tmpchmod1777var/tmpecho"makingdir:homerootboot"mkdirhomerootbootecho"done"build_fs.sh程序清單5.拷貝etc目錄把busybox源碼目錄下的etc的內(nèi)容拷貝到buildfs.sh新建的/rootfs/etc目錄下。具體操作過程:[root@vm-devbusybox-1.12.2]#cdrootfs[root@vm-devrootfs]#lsbinbootdevetchomelibmntprocrootsbinsystmpusrvar[root@vm-devrootfs]#cdetc[root@vm-devetc]#cp-a/root/2410-s/busybox-1.12.2/examples/bootfloppy/etc/*./[root@vm-devetc]#lsfstabinit.dinittabprofileBusyBox根文件系統(tǒng)移植過程6.修改profile文件
/etc/profile是用戶登錄時的環(huán)境變量設(shè)置;根據(jù)建立的根文件系統(tǒng)設(shè)置相應(yīng)的環(huán)境變量;使用vi編輯器編輯并保存profile文件。
[root@vm-devetc]#viprofile說明:profile文件的具體內(nèi)容與用戶建立的根文件系統(tǒng)相關(guān)。BusyBox根文件系統(tǒng)移植過程7.修改初始化文件inittab和fstabinittabinitilizetable(定義了開機之后的run-level以及其他有關(guān)啟動的設(shè)定)fstabfilesystemtable(讓系統(tǒng)可以自動掛載的配置文件)1)根據(jù)目標板硬件平臺修改inittab文件2)根據(jù)目標板硬件平臺和用途修改fstab文件BusyBox根文件系統(tǒng)移植過程8.修改初始化腳本文件init.d/rcS腳本文件init.d/rcS的主要功能:為啟動環(huán)境設(shè)置必要的環(huán)境變量設(shè)置目標機名稱掛載“虛擬”的文件系統(tǒng)創(chuàng)建設(shè)備節(jié)點設(shè)置系統(tǒng)時間設(shè)置啟動提示信息
……根據(jù)系統(tǒng)配置及硬件情況修改該文件。BusyBox根文件系統(tǒng)移植過程9.用戶和組文件創(chuàng)建1)創(chuàng)建passwd文件[root@vm-devetc]#vipasswdpasswd一共由7個字段組成,由6個冒號將其隔開。其
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版學校校辦工廠風險管理與承包經(jīng)營合同3篇
- 二零二五年度木材市場行情預測與分析咨詢合同4篇
- 2025年度環(huán)保材料研發(fā)與生產(chǎn)合作合同范本4篇
- 2025版旅游度假區(qū)租賃與旅游服務(wù)合作協(xié)議3篇
- 2025年度智能交通系統(tǒng)保密管理與服務(wù)合同
- 二零二五年度科技型中小企業(yè)貸款合同
- 2025年度知識產(chǎn)權(quán)授權(quán)委托書簽訂協(xié)議
- 2025年度門面出租合同終止與租賃合同終止后合同解除及違約賠償協(xié)議
- 2025年度銀行存款賬戶遠程開戶服務(wù)協(xié)議
- 2025年度私人房產(chǎn)使用權(quán)轉(zhuǎn)讓與智能家居系統(tǒng)安裝合同
- 2024年全國體育專業(yè)單獨招生考試數(shù)學試卷試題真題(含答案)
- 北師大版小學三年級上冊數(shù)學第五單元《周長》測試卷(含答案)
- DB45T 1950-2019 對葉百部生產(chǎn)技術(shù)規(guī)程
- 2025屆河北省衡水市衡水中學高考仿真模擬英語試卷含解析
- 新修訂《保密法》知識考試題及答案
- 電工基礎(chǔ)知識培訓課程
- 住宅樓安全性檢測鑒定方案
- 廣東省潮州市潮安區(qū)2023-2024學年五年級上學期期末考試數(shù)學試題
- 市政道路及設(shè)施零星養(yǎng)護服務(wù)技術(shù)方案(技術(shù)標)
- 選擇性必修一 期末綜合測試(二)(解析版)2021-2022學年人教版(2019)高二數(shù)學選修一
- 《論語》學而篇-第一課件
評論
0/150
提交評論