




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
armlinux系統開發流程1、開發目標硬件系統2、建立交叉編譯工具3、開發bootloader4、移植linux內核5、開發一個文件系統6、開發相關硬件驅動程序7、開發上層應用程序8、燒寫bootloader、內核、文件系統等。嵌入式系統開發環境的建立第1頁嵌入式交叉編譯環境介紹交叉編譯就是在一個平臺上生成另一個平臺上可執行代碼。這里說平臺分別指是主機平臺Host和目標平臺Target。就我們在ARM平臺上移植Linux來說,Host是一臺普通PC機,它經過串口或網絡接口與Target通信;Target是arm-linux平臺(這里說arm指是平臺所使用CPU是ARM9處理器,linux指是運行操作系統是Linux)。我們在Host上開發程序,并在這個平臺上運行交叉編譯器CrossComplier,編譯我們程序,而由CrossComplier生成程序將在Target上運行嵌入式系統開發環境的建立第2頁
需要交叉編譯原因:首先,在項目標起始階段,目標平臺還未建立,所以需要做交叉編譯,以生成我們所需要Bootloader以及kernel(因為Bootloader和kernel源碼需要經過交叉編譯后才能夠在目標平臺上運行);其次,當目標平臺能開啟之后,因為目標平臺上資源限制,當我們編譯大型程序時,依然可能需要用到交叉編譯。嵌入式系統開發環境的建立第3頁怎樣建立交叉編譯工具鏈構建交叉工具鏈通常有以下3種方法:1.分步驟手工編譯分步編譯和安裝交叉編譯工具鏈所需要庫和源代碼,最終生成交叉編譯工具鏈。2.經過腳本編譯經過crosstool腳本工具來實現一次編譯生成交叉編譯工具鏈3.直接獲取交叉編譯工具鏈直接經過網上下載已經制作好交叉編譯工具鏈。ftp:.ukftp:ftp:Linux內核代碼linux-2.6.10.tar.gzglibc庫glibc-2.3.2.tar.gz工具程序binutils-2.15.tar.bz2內核線程包glibc-linuxthreads-2.3.2.tar.gz編譯器gcc-3.3.6.tar.gz嵌入式系統開發環境的建立第4頁配置開發板PXA270嵌入式系統宿主機交叉編譯環境arm-linux.tar.gz提供ARM系統開發交叉編譯器/usr/local/arm-linux/binvi/etc/profilepathmunge/usr/local/arm-linux/bincparm-linux.tar.gz/usr/localcd/usr/localtar-xzfarm-linux.tar.gz嵌入式系統開發環境的建立第5頁目標機與主機通訊方式嵌入式系統開發環境的建立第6頁1、minicomminicom很像Windows下面超級終端,我們利用minicom作為目標板終端顯示視窗;經過串口控制目標板嵌入式系統開發環境的建立第7頁2、從菜單中選擇SerialPortSetup配置minicom1、#minicom-s嵌入式系統開發環境的建立第8頁3、“A”以設置“SerialDevice”。假如使用串口1,則輸入/dev/ttyS0。假如使用串口2,則輸入/dev/ttyS1。嵌入式系統開發環境的建立第9頁4、“E”鍵進入設置“bps/par/Bits”(波特率)界面,再按“I”以設置波特率為115200嵌入式系統開發環境的建立第10頁設置被保留到“/etc/minirc.dfl”嵌入式系統開發環境的建立第11頁目標板上電后,目標板開啟過程顯示在minicom;CTR+A+s---zmodern嵌入式系統開發環境的建立第12頁2NFS服務NFS服務能夠使網絡上同為Linux或Unix系統主機共享文件系統。NFS能夠將遠程文件系統載入在當地文件系統下。遠程硬盤、目錄和光驅都能夠變成當地主機目錄樹中一個子目錄。載入后與處理自己文件系統一樣使用即可。不只方便,也節約了重復保留文件空間、傳輸文件時間及網絡帶寬。嵌入式系統開發環境的建立第13頁NFS特點NFS系統也是使用C/S體系結構,就是有服務器端與客戶端服務器端提供共享文件系統,必須把文件系統輸出(export)出去客戶端則要把文件系統載入到自己系統下使用NFS,需要在服務器端設置輸出,在客戶端設置載入嵌入式系統開發環境的建立第14頁NFS服務器端配置(1)關閉防火墻(2)配置共享目錄----客戶端主機IP范圍(3)主機IP(4)開啟NFS服務NFS客戶端(1)設置客戶端IP地址(2)掛載共享目錄mount-tnfs主機ip:共享目錄掛載點注意事項:關閉防火墻,主機與客戶端在同一ip段嵌入式系統開發環境的建立第15頁詳細配置步驟服務器端1)關閉防火墻嵌入式系統開發環境的建立第16頁詳細配置步驟2)配置NFS服務器嵌入式系統開發環境的建立第17頁詳細配置步驟2-1)設置共享目錄和主機范圍嵌入式系統開發環境的建立第18頁詳細配置步驟2-2)設置其它選項嵌入式系統開發環境的建立第19頁詳細配置步驟2-3)設置其它選項嵌入式系統開發環境的建立第20頁詳細配置步驟3)設置NFS服務器IP嵌入式系統開發環境的建立第21頁詳細配置步驟4)開啟NFS服務嵌入式系統開發環境的建立第22頁詳細配置步驟客戶端1)配置ip嵌入式系統開發環境的建立第23頁詳細配置步驟2)掛載NFS嵌入式系統開發環境的建立第24頁/etc/exports它基本格式是Directoryhost(權限選項、用戶映像、)Directory:表示打算共享目錄名稱;Host:共享這個目錄主機名稱;權限選項:定義安全選項;嵌入式系統開發環境的建立第25頁權限選項1)ro:只讀,只允許客戶機掛載這個文件系統為只讀模式。2)rw:明確指定共享目錄為讀/寫權限。用戶映像來限定一些用戶對NFS共享文件使用權限no_root_squash:其它安全選項1)Insecure:以非安全端口方式訪問,即默認用戶端口是1024或者更高,而NFS服務器默認安全服務器端口應該是低于1024。2)Sync:依據請求進行同時。嵌入式系統開發環境的建立第26頁例:vi/etc/exports/home/ls0(rw,insecure,no_root_squash)表示共享目錄為/home/ls,允許訪問客戶機地址為0主機,權限為可讀可寫(rw),非安全方式訪問(insecure),讓客戶機根用戶在服務器上擁有根權限。嵌入式系統開發環境的建立第27頁例:vi/etc/exports/home/ls*(rw)表示共享目錄為/home/ls,允許任意主機訪問,權限可讀可寫嵌入式系統開發環境的建立第28頁
Bootloader是什么?Bootloader,為引導加載程序,是嵌入式系統加電后運行第一段代碼,相當于PC機BIOS。Bootloader位置:通常固化在硬件上某個固態存放設備上,加電后自開啟。基于ARM處理器核CPU在復位時通常都從地址0x00000000取它第一條指令。在這個地址處安排就是Bootloader。Bootloader是在操作系統運行之前執行一段小程序。經過這段小程序,我們能夠初始化硬件設備、建立內存空間映像表,從而建立適當系統軟硬件環境,為最終調用操作系統內核做好準備。
3BootloaderBootloader參數系統內核根文件系統從低地址到高地址方向Flash嵌入式系統開發環境的建立第29頁
幾個公布BootloaderBootloader是嚴重地依賴于硬件而實現。每種不一樣體系結構處理器都有不一樣Bootloader。不過Bootloader發展也趨于支持各種體系結構,如現在比較成熟vivi、RedBoot和U-Boot等。ftp://ftp.denx.de/pub/u-boot/嵌入式系統開發環境的建立第30頁Bootloader操作模式大多數Bootloader都有兩種不一樣操作模式:“開啟加載”模式和“下載”模式。其區分對于開發人員才有意義。從最終用戶角度看,Bootloader作用就是用來加載操作系統,而并不存在所謂開啟加載模式與下載模式區分。嵌入式系統開發環境的建立第31頁1、開啟加載(Bootloading)模式 即Bootloader從目標機上某個固態存放設備上將操作系統加載到RAM中運行,整個過程并沒有用戶介入。 開啟加載模式是Bootloader正常工作模式,在嵌入式產品公布時侯,Bootloader必須工作在這種模式下。嵌入式系統開發環境的建立第32頁2、下載(Downloading)模式
下載方式:在這種模式下,目標機上Bootloader將經過串口連接或網絡連接等通信伎倆從主機下載文件。
下載內容及存放:主要是下載內核映像和根文件系統映像等。從主機下載文件通常首先被Bootloader保留到目標機RAM中,然后再被Bootloader寫到目標機上FLASH類固態存放設備中。嵌入式系統開發環境的建立第33頁下載模式應用場所:Bootloader這種模式通常在第一次安裝內核與根文件系統時被使用;另外,以后系統更新也會使用到這種工作模式。用戶應用接口:工作于這種模式下Bootloader通常都會向它終端用戶提供一個簡單命令行接口。如在U-BOOT下,將出現“#”提醒符;在vivi下出現“vivi>”提醒符。嵌入式系統開發環境的建立第34頁下載(Downloading)模式示例嵌入式系統開發環境的建立第35頁Bootloader開啟過程大多數BootLoader開啟都分為stage1和stage2兩大部分。依賴于處理器體系結構和板級初始化代碼,通常都放在stage1中,用匯編語言實現而stage2則通慣用C語言來實現,這么能夠實現更復雜功效,而且代碼會含有更加好可讀性和可移植性。嵌入式系統開發環境的建立第36頁BootLoaderstage1通常包含以下步驟(以執行先后次序):硬件設備初始化。為加載BootLoaderstage2準備RAM空間。拷貝BootLoaderstage2到RAM空間中。設置好堆棧跳轉到stage2C入口點。
Stage1主要工作是硬件初始化,并準備第二階段C語言運行環境關閉處理器內部指令/數據cache等設置CPU速度和時鐘頻率RAM初始化初始化led等為了取得更加快執行速度,通常把階段2代碼加載到RAM空間中來執行。準備RAM空間考慮原因:階段2代碼大小、堆棧、頁大小(4KB倍數)、安排位置等。嵌入式系統開發環境的建立第37頁BootLoaderstage2通常包含以下步驟(以執行先后次序):初始化本階段要使用到硬件設備。檢測系統內存映射(memorymap)。將kernel映像和根文件系統映像從flash上讀到RAM空間中。為內核設置開啟參數。調用內核。stage2代碼通慣用C語言來實現,方便于實現更復雜功效和取得更加好代碼可讀性和可移植性。與普通C語言應用程序不一樣是,在編譯和鏈接bootloader這么程序時,我們不能使用glibc庫中任何支持函數。Stage2主要目標是運行Linux內核,在此之前需要完成硬件和內存初始化工作。Bootloader調用Linuxkernel方法是直接跳轉到內核第一條指令處。在跳轉時必須滿足以下條件:1)、CPU存放器設置:R0為0;R1為機器類型ID;R2為開啟參數,標識列表在RAM中起始基地址。2)、CPU模式:CPU必須設置為SVC模式,必須禁止中止(IRQs和FIQs)。3)、MMU和Cache設置:MMU必須關閉;指令Cache能夠打開也能夠關閉;數據Cache必須關閉。嵌入式系統開發環境的建立第38頁viviBootloader源碼分析vivi是韓國Mizi企業開發Bootloader,適合用于ARM9處理器。vivi有兩種工作模式,在開啟時能夠選擇。在vivi開啟時,經過串行口發出以下信息:PressReturntostarttheLinuxnow,anyotherkeyforvivi按回車鍵開啟LinuxOS,按其它鍵進入vivi命令接口模式,能夠使用vivi提供命令進行一些操作。嵌入式系統開發環境的建立第39頁vivi源代碼目錄結構vivi源代碼包含目錄有:arch、Documentation、drivers、init、include、lib、scripts、test、util等10目錄,共300多個文件。各個目錄內容以下:1、arch(architecture)目錄它下面文件為與CPU硬件相關初始化代碼,此目錄包含了所用vivi支持CPU。普通只包含S3C2410x文件。2、Documentation目錄其下文件為vivi使用指南。3、drivers目錄存放為MTD(memorytechnologydevice內存技術設備)(數據存放媒質)設備讀寫控制文件和串行口操作文件,對串行口支持xmodem和ymodem協議。4、include目錄存放全部頭文件,包含S3C2410微處理器和S3C2410開發板頭文件。嵌入式系統開發環境的建立第40頁5、init目錄該目錄下是系統初始化文件main.c、version.c,后者是vivi版本信息,main.c為vivi整個初始化結構。6、lib目錄該目錄下是公共應用及接口代碼,如時鐘功效文件time.c,堆棧初始化文件heap.c等文件。7、scripts目錄該目錄存放是系統配置需要腳本文件,如menuconfig和configue文件。8、CVS目錄全部目錄下面都有一個CVS目錄,存放是該目錄路徑和它子目錄。嵌入式系統開發環境的建立第41頁vivi源代碼文件與功效結構vivi源代碼文件:1、vivi/arch/s3c2410/head.s2、一段過渡,實現循環調用,main返回后重新復位 LDR SP, DW_STACK_START MOV FP, #0 MOV A2, #0 BL MAIN MOV PC, #FLASH_BASE;main返回后重新復位3、vivi/init/main.c嵌入式系統開發環境的建立第42頁viviBootloader接口命令命令功能Load下載flash或RAM命令PartMTD分區操作命令param設置、查看參數命令Boot開啟系統命令flashFlash管理命令vivi>loadflashkernelxvivi>bootnand0x80000flasherase0x800000xc0000嵌入式系統開發環境的建立第43頁vivi源碼修改移植 vivi移植方法步驟: 對vivi進行修改移植 對vivi進行配置 對vivi進行編譯 下載、運行vivi嵌入式系統開發環境的建立第44頁1、修改vivi/Makefile(1)修改交叉編譯庫和頭文件
1)修改編譯器路徑 CROSS_COMPILE=2)修改編譯器庫文件路徑: ARM_GCC_LIBS=3)增加交叉編譯時頭文件搜索路徑:LIBC_INCLUDE_DIR=(2)Linux內核包含文件LINUX_INCLUDE_DIR=編譯vivi用到交叉編譯工具版本是cross-2.95.3.tar.bz2
嵌入式系統開發環境的建立第45頁
2、修改Flash分區信息(vivi/arch/s3c2410/smdk.c)
#ifdefCONFIG_S3C2410_AMD_BOOTmtd_partition_tdefault_mtd_partitions[]={ { name: "vivi", offset: 0, size: 0x0000, flag: 0 },
{ name: "param", offset: 0x0000, size: 0x00010000, flag: 0 },{ name: "kernel", offset: 0x00030000, size: 0x000C0000, flag: 0 },{ name: "root", offset: 0x00100000, size: 0x00140000, flag: MF_BONFS }};#endif嵌入式系統開發環境的建立第46頁
二、對vivi進行配置 運行vivi配置程序menuconfig: make menuconfig 開啟對vivi配置主菜單,依據自己目標系統逐項進行設置,設置完后退出保留即可。 嵌入式系統開發環境的建立第47頁
三、對vivi進行編譯 在vivi目錄下執行以下命令:
make clean make
makeclean是去除以前編譯時生成全部目標文件和暫時文件。 假如沒有錯誤,編譯后會生成vivi目標文件vivi.bin。嵌入式系統開發環境的建立第48頁 四、對vivi進行下載 利用JTAG口將vivi下載到目標板flash空間(0x00000---0x0)。 然后對目標板加電,使vivi開啟運行,觀察運行情況。Jflash-s3c2410<vivi文件名>/t=<flash_type>其中,Flash類型有以下選項:1:SMDK2410:K9S32084MB2:SMDK2410:K9S64088MB3:SMDK2410:K9S280816MB4:SMDK2410:K9S560832MB5:SMDK2410:K9S120864MB6:SMDK2410:AM29LV800BB嵌入式系統開發環境的建立第49頁在燒寫過程中,有3次提醒,要求用戶選擇:(1)在“Selectthefunctiontotest:”后面輸入“0”,表示對型號為K9S1208Flash芯片進行燒寫,燒寫類型為程序。(2)在“Inputtargetblocknumber:”后面輸入“0”,表示從偏移地址0處開始燒寫。嵌入式系統開發環境的建立第50頁經過數分鐘燒寫之后,將vivi燒寫到Flash之中。再次出現提醒:嵌入式系統開發環境的建立第51頁在“Selectthefunctiontotest:”后面輸入“2”,退出vivi燒寫。并關閉開發板電源,拔下JTAG連接線。在完成vivi燒寫之后,使用串口線,經過串口將宿主機與開發板連接起來。嵌入式系統開發環境的建立第52頁在宿主機上打開超級終端minicom窗口,再按下“Backspace”(回格)鍵不放,接通開發板電源。這時我們經過超級終端minicom窗口能夠觀察到嵌入式系統開發板上Linux系統開啟過程,并在出現提醒符“vivi>”時停住(假如Linux系統有開啟,但沒有“vivi>”提醒符出現,則需要再一次按住鍵盤上“Backspace”(回格)鍵不放,對開發板“Reset”重啟)。進入vivi提醒狀態嵌入式系統開發環境的建立第53頁(1)對Flash分區在“vivi>”提醒符下用命令“bonpart”對Flash進行分區:Bonpart0192k1M其中,從地址0處開始為vivi,地址192k(192*1024=196608)處開始為內核,地址1M(1*1024*1024=1048576)處開始為文件系統。嵌入式系統開發環境的建立第54頁因為對Flash進行了重新分區,原來燒寫在Flash中從地址0處開始引導加載程序vivi亦被擦除了,所以,這時不能掉電,也不能重啟開發板,必須緊接著重新燒寫vivi程序。(2)vivi>loadflashvivix當出現:Readyfordownloadingusingxmodem...Waiting...然后,按下Ctrl+A+S,彈出一個對話框嵌入式系統開發環境的建立第55頁(3)燒寫內核當vivi燒寫完成后,需要重新開啟開發板,使剛才分區及引導程序生效。重新開啟開發板時,操作過程如前所述,按下“Backspace”(回格)鍵不放同時,重新開啟開發板系統,出現提醒符“vivi>”。vivi>loadflashkernelx4)燒寫文件系統緊接著上面操作,在提醒符“vivi>”下,輸入命令:vivi>loadflashrootx嵌入式系統開發環境的建立第56頁Linux內核Linux內核主要功效進程管理內存管理文件管理設備管理網絡管理嵌入式系統開發環境的建立第57頁Linux內核結構嵌入式系統開發環境的建立第58頁Linux配置與編譯編譯內核步驟:下載內核源碼修改內核目錄樹根下Makefile,指明交叉編譯器設置環境變量配置內核產生.config文件輸入內核配置命令(makemenuconfig),進行內核選項選擇編譯內核下載Linux內核嵌入式系統開發環境的建立第59頁1、確定處理器類型Linux內核源代碼支持20各種微處理器類型,在編譯之前要先確定微處理器類型。ARCH:=armCROSS_COMPILE=arm-linux-Linux2.4內核還沒有包含S3C2410處理器Linux2.6內核已經支持。嵌入式系統開發環境的建立第60頁2、確定配置方法內核支持4種不一樣配置方法,每種方法是讀取一個根目錄下隱藏配置文件“.config”。這4種方式以下。makeconfig:基于文本最為傳統配置界面,不推薦使用。makemenuconfig:基于文本選單配置界面,字符終端下推薦使用。makexconfig:基于圖形窗口模式配置界面,Xwindow下推薦使用。makeoldconfig:自動讀入“.config”配置文件,而且只要求用戶設定前次沒有設定過選項。
嵌入式系統開發環境的建立第61頁【例】以makemenuconfig為例進行S3C2410系統內裁剪核配置。#makemenuconfig彈出內核裁剪配置窗口嵌入式系統開發環境的建立第62頁“SystemType---→”子項界面嵌入式系統開發環境的建立第63頁在完成配置之后,就能夠保留退出,如圖所表示。嵌入式系統開發環境的建立第64頁內核編譯makezImagearch/$(ARCH)/boot”目錄中。
嵌入式系統開發環境的建立第65頁文件系統文件系統是嵌入式Linux系統必備一個組成部分,是系統文件和應用文件存放地方。嵌入式系統開發環境的建立第66頁文件目錄/bin 目錄下需要包含慣用用戶命令,如sh等。/sbin 目錄要包含全部系統命令,如reboot等。/etc 目錄下是系統配置文件。/boot 目錄下是內核映像/dev 目錄含有系統全部特殊設備文件/lib 目錄包含系統全部庫文件/mnt 目錄只用于掛接,能夠是空目錄/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 行政組織中的合作創新實踐與成果分析試題及答案
- 數據結構與算法題目試題及答案
- 地產合資公司管理制度
- 賓館安全疏散管理制度
- 衛生保潔安全管理制度
- 醫用耗材酒精管理制度
- 華為體系文件管理制度
- 發動機檢測儀管理制度
- 安全警示標牌管理制度
- 公共衛生資金管理制度
- 資料交接移交確認單
- 風對起飛和著陸影響及修正和風切變完整版課件
- 環網柜基礎知識培訓課程完整版課件
- 大數據時代的互聯網信息安全題庫
- DL∕T 1776-2017 電力系統用交流濾波電容器技術導則
- 浙江省紹興市上虞區2021-2022學年六年級下學期期末質量檢測英語試題(word版無答案無聽力音頻和原文)
- 《交通調查與數據分析》課程教學大綱(本科)
- 兩輪自平衡小車的設計畢業設計論文
- 推進中國法治進程的10大案件
- 下面講上品往生后的情形
- 某日企薪酬制
評論
0/150
提交評論