




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.科技學院計算機學院綜合性實驗報告科技學院計算機學院綜合性實驗結 課 論 文 論文題目 在ARM平臺上移植linux操作系統 實驗學期 2016 至 2017 學年 第 1 學期學生所在學院部 計算機學院 年級 專業班級 學生姓名 學號 任課教師 實驗成績 計算機學院制課程結課論文評價教 師 評 價序號評定項目ABCDE1課程學習的態度與紀律2結課論文的格式規范和字數3結課論文內容翔實與完整程度4結課論文研究內容與課程的關聯度5結課論文研究的深度6總評評價標準:1.表格第一行中的A、B、C、D、E分別對應優、良、中、及格、不及格。2.學生結課論文的總評成績分為優、良、中、及格、不及格5個等級,
2、分別對應95、85、75、65、55。優秀:所有評價項目中都是B以上,且至少獲得4個A;良好:所有評價項目中都是C以上,且至少獲得4個B或A;中等:所有評價項目中都是D以上,且至少獲得4個C或以上;及格:所有評價項目中都是D以上;不及格:符合以下條件之一的:(1)評價項目中只要有一項是E;(2)課程學習期間無視課程紀律,未能參加課程學習的時間超過全部時間的三分之一以上;(3)課程學習目的不明確,結課論文報告馬虎潦草或內容與課程學習內容不符,未達到課程學習中規定的基本要求;(4)大部分內容抄襲別人或網上的內容。在ARM平臺上移植linux操作系統摘要:在ARM平臺上移植linux操作系統作為實現
3、設備小型化、智能化的一個重要元素,目前己經廣泛應用于國防、工業、交通、能源、信息技術以及日常生活等各個領域,研究和開發linux操作系統在ARM平臺上的移植具有重要的現實意義。本文主要介紹了將公開源代碼的linux3.3.3內核移植到S3C6410(arm1172 核)的關鍵技術分析以及具體的移植過程,建立嵌入式Linux交叉開發環境,移植BootLoader引導程序,配置、編譯、移植Linux內核,制作文件系統并對文件系統進行移植到開發板。我們可以根據內核所支持的文件系統類型制作文件系統本論文選擇制作yaffs文件系統并移植。并且vim,arm-linux-gcc開發環境下設計了一個簡單的測
4、試程序。另外,基于此平臺的開發也將使軟件缺陷大幅度減少,從而為程序員開發此平臺上進行二次開發。關鍵字:linux 嵌入式 移植 內核 配置目錄1 緒 論31.1課題研究的背景、目的和意義32 嵌入式 Linux系統構成和軟件開發環境32.1嵌入式Linux系統的體系結構32.2嵌入式Linux開發軟件平臺建立32.2.1軟件開發平臺的二種平臺的介紹43 嵌入式Linux的引導BootLoader程序44.Linux內核的編譯、移植44.1 Linux內核啟動流程44.2內核移植的實現54.3配置、編譯內核75文件系統制作95.1內核支持YAFFS文件系統106測試136.1編寫簡單C程序測試移
5、植的系統136.2在開發板執行測試程序137結論與展望141 緒 論1.1課題研究的背景、目的和意義隨著各種芯片技術的發展,各種嵌入式產品也如雨后春筍一般地出現了。目前,嵌入式產品應用領域涉及移動通信、汽車、醫療、家電等很多領域。而且,如今的嵌入式硬件的速度和容量越來越接近于PC,因此在這些嵌入式產品上運行操作系統就成為了可能。一直以來,很多企業花費了巨大成本研發了大量運行在PC上的軟件產品。如果將這些優秀的軟件應用在嵌入式系統中,將會成為快速開發嵌入式系統,降低嵌入式產品開發成本,提高軟件穩定性和安全性的重要途徑。2 嵌入式 Linux系統構成和軟件開發環境進行嵌入式操作系統以及驅動程序的移
6、植,需要對目標硬件平臺和軟件結構有深入的理解。本章介紹嵌入式Linux系統的體系結構、硬件平臺構成和嵌入式軟件開發環境。2.1嵌入式Linux系統的體系結構除了硬件系統外,嵌入式Linux系統需要有下面三個基本元素:系統引導程序BootLoader(用于設備加電后的系統定位引導)、Linux微內核(內存管理、程序管理)、初始化進程。但如果要它成為完整的操作系統并繼續保持小型化還必須加上硬件驅動程序、硬件接口程序和應用程序組。最終可用的嵌入式Linux系統體系結構如表所示:表2-1嵌入式Linux系統體系結構應用軟件應用層BOOTLOADER、LINUX KERNEL、DRIVERS系統層嵌入式
7、開發板實驗板(本論文使用SAMSUNG S3C6410)硬件層2.2嵌入式Linux開發軟件平臺建立軟件開發平臺是嵌入式開發的關鍵,嵌入式軟件開發平臺建立的目的是為了進行BootLoader移植、Linux內核移植以及GUI系統開發。由于嵌入式硬件平臺的存儲空間有限、處理器頻率較低,很難直接在嵌入式硬件式平臺上建立Linux系統、安裝嵌入式開發軟件,因此只能采用嵌入式交叉開發環境來解決這個問題。2.2.1軟件開發平臺的二種平臺的介紹嵌入式Linux系統開發需要一臺裝有Linux操作系統的PC機,在此機器上運行交叉編譯工具,Linux系統采用FC5,具體有以下幾種方案:l)采用VMWare。2)
8、按通常的方法,在獨立的分區上安裝Linux操作系統。但是安裝2個系統需要用的grub,需要配置修改啟動項,而且刪除此Linux操作系統很麻煩。3 嵌入式Linux的引導BootLoader程序引導BootLoader程序是為了初始化ARM平臺上的硬件設備,引導內核,給內核提供ARM平臺的硬件參數,還有為操作系統引導根文件系統。4.Linux內核的編譯、移植內核是操作系統的核心組件。使用內核的目的是希望以一致的方式管理硬件,以及為用戶軟件提供高層抽象層。Linux 會驅動設備、管理I/O 的存取、調度進程、共享存儲空間、管理信號的配送以及處理其他管理工作。4.1 Linux內核啟動流程在移植的調
9、試階段,在沒有在線仿真器的情況下,可以通過板上LED的狀態輸出或串口輸出的調試信息進行錯誤定位,所以有必要了解一下內核的啟動流程,圖4-1對此做來解釋。 內核在啟動的過程中按下圖步驟一步一步啟動,了解啟動的順序,有利于掌握好內核移植的工作安排過程。圖4-1內核啟動流程圖4.2內核移植的實現在Linux內核移植的初始階段,應盡可能屏蔽不相關的設備驅動以及內核功能配置選項,使內核支持的選項盡可能的少,構造最小內核。在確保己經進行的內核移植操作正確的情況下逐步的添加相應的硬件支持和功能支持。1)Makefile文件介紹Make是用來自動編譯、鏈接程序的實用工具,Make命令將根據 Makefile文
10、件的規則來決定如何編譯和連接程序。Makefile文件描述程序之間的依賴關系,以及提供更新文件的命令。Makefile文件貫穿內核代碼目錄,所有Makefile中的CROSS_COMPILE關鍵字用于指定要進行交叉編譯工具鏈,ARCH關鍵字用于指定目標平臺,所以這里改為: CROSS_COMPILE ? = arm-linux-ARCH ? = arm2)arch/ARM/config.in文件config.in是配置文件,運行 make menuconfig命令時出現的菜單就是config配置的。config文件決定了menuconfig菜單的內容。把使用的平臺加在需要的地方,這樣在配置Li
11、nux內核時就能夠選擇是否支持新添加的平臺了。 3)arch/arm/Makefile根目錄下的Makefile,指定了交叉編譯器arch/ARM/Makefile更具針對性,系統啟動代碼是通過這個文件產生的。在內核添加對S3C2410處理器的支持。其代碼如下:ifeq (#(CONFIG_ARCH_S3C2410),y)TEXTADDR= 0xC0008000MACHINE= s3c2410endifTEXTADDR為內核解壓的起始地址,決定內核起始運行地址,即內核映像應下載的位置,根據開發板的電路設計,這個地址是OxC0008000。這里0xC0008000的含義是,從地址0xC00000
12、00開始,總共32M字節的空間。4)compressed/Makefile添加對本文開發板的支持。通過這個文件,將從vmLinux創建一個壓縮的vmlinuz鏡像。ifeq(#(CONFIG_ARCH_S3C6410),y)objs += head-s3c6410.oEndif5)compressed/head_s3c641O.S這個文件是依據S3C6410的芯片手冊編寫的,主要用來初始化處理器。主要完成到對系統主要模塊的配置、運行環境的建立、系統時鐘、MMU等模塊的配置等。6)arch/arm/kernel/MakefileMakefile的作用是根據配置的情況,構造出需要編譯的源文件列表,
13、然后分別編譯,并把目標代碼鏈接到一起,最終形成Linux內核二進制文件。7)debug_armv.S在此文件中定義串口打印函數,關閉全部外圍設備的時鐘,從而保證系統正確運行。8)setup.c這個文件中一個非常重要的函數是setup_arch。這個函數用來完成和體系相關的初始化工作,比如對物理內存結構meminfo的初始化。這個結構在內存初始化中有很重要的作用。其中,nBanks指定了內存塊的數量,bank指定了每塊內存的范圍。在這里用來指定塊開始和長度的PAGE_OFFSET和MEM_SIZE,都定義在includelasm-ARM/arch-s3c6410/memory.h中,PAGE_O
14、FFSET是內存的開始地址,往后函數就將根據meminfo進行內存結構初始化。9)arch/ARM/mach-s3c6410發布的代碼只對處理器的基本信息提供了支持,有關開發板的外設,例如USB、電源管理等都需要自己添加。4.3配置、編譯內核編譯內核之前首先要配置內核,配置內核的命令包括: 1)make s3c6400_defconfig這種方法將配置選項以命令行的形式列出,會恢復內核的默認配置。如果己經存在有.config的配置文件,那么就會以該文件中的配置選項作為默認配置設置。2)make menuconfig與 make config類似,不過這種方法的顯示方式是以菜單模式進行顯示的。M
15、ake xconfig使用鼠標選擇對應的選項, make menuconfig使用空格選擇相應的選項,每個選項前的括號可以是、<>和()。中括號中要么是空格,要么是*,尖括號里可以是空格、*和M;小括號里的內容是在所提供的幾個選項里選擇一個??崭癖硎静粚⒃摴δ芫幾g進內核,*表示將該功能編譯進內核,M表示將該功能編譯成模塊,在需要時將其動態插入到內核。 3)make xconfig(不推薦使用)用于X Window下的配置,將配置選項以圖形菜單的形式顯示出來。在進行相應的配置的時候,有三種方式選擇:Y:將該功能編譯進內核;N:不將該功能編譯進內核;M:將該功能編譯成可譯載需要時動態插
16、入到內核的模塊。make xconfig使用鼠標選擇對應的選項,make menuconfig使用空格選擇相應的選項,每個選項前的括號可以是、<>和()。中括號中要么是空格,要么是*,尖括號里可以是空格、*和M;小括號里的內容是在所提供的幾個選項里選擇一個??崭癖硎静粚⒃摴δ芫幾g進內核,*表示將該功能編譯進內核,M表示將該功能編譯成模塊,在需要時將其動態插入到內核。1) 執行make -j2 zImage生成可以移植到開發板的zImage。其中 j2 表示使用雙核編譯,加快編譯速度。使用zImage 自解壓內核鏡像。圖4-3 內核zImage生成的界面 2)make modules
17、此命令可以完成對所選的內核選項進行組件化編譯,所需時間取決于所選的內核組件選項的多少。還可以使用命令:# make modules SUBDIRS = drivers/x將編譯好的U-Boot.bin、zImage、rootfs文件系統放在linux系統下的tftpboot下面以便燒寫,tftp和nfs配置在第二章已經講過,配置好可以執行下面操作進行對內核、文件系統的燒寫:1) 移植uboot 連接好JTAG并口線,用./JLASH_2410EP_Nor /f:u-boot.bin;2) 移植內核tftp 0x500080000 zImage /*下載內核到開發板*/bootm 0x50008
18、0000 /*啟動內核*/ 3) 移植文件系統 tftp 0x50000000 rootfs /*下載文件系統到開發板*/nand 0x50000000 0x200000 /*將rootfs燒入開發板*/移植好的內核啟動在超級終端會可以看到如下所示: 圖4-4 內核啟動界面5文件系統制作文件系統是操作系統的一個重要組成部分, 通過對操作系統所管理的存儲空間的抽象,向用戶提供統一的、對象化的訪問接口,屏蔽對物理設備的直接操作和資源管理。5.1內核支持YAFFS文件系統下載下來源碼之后,在根目錄下存在一個patch-ker.sh,這是一個給linux打補丁的腳本,打上這個補丁之后,內核的源代碼就支
19、持yaffs2了,我們來看一下這個腳本的最后部分。腳本中每個命令行必須以TAB鍵開始,這是基本常識。首先,解壓安裝busybox修改Makefile,執行以下命令:# tar jxvf busybox-1.9.2.tar.bz2# cd busybox-1.9.2# vim Makefile對其做如下修改: ARCH ?= armCROSS_COMPILE ? = arm-linux-退出Makefile。然后通過make menuconfig圖形界面根據你的要求進行修改。# make menuconfig圖5-1 menuconfig目錄下的修改下面是根據文件選項往下一步一步設置的說明:Bu
20、sybox setting -> build option -> *build busybox as a static binary Init Utilities -> *init *Support reading as inittab file Shells -> choose your devifault shell(ash) -> (X) ash Linux Module Utilities-> *Support version 2.2.x to 2.6.x Linux kernels*表示選上,空格表示不選,M表示用到的時候調用。然后修改文件appl
21、ets/applets.c 將第21行如下代碼注釋掉/* # error Aborting compilation */ 否則出現錯誤: applets/applets.c:21:2: error: # error Aborting compilation。執行 # make .# make CONFIG_PREFIX=/root_01 install busybox 就被安裝到根目錄/root_01下了(/root_01下生成 bin linuxrc sbin usr) /root_01是自己在主機根目錄下建的一空文件。圖5-2 表示根文件下生成的root_01在/root_01中 創建文件
22、dev、/etc、/home、/home、/usr、/lib、/mnt、/var、/tmp、/proc、/opt# mkdir dev etc home lib mnt var tmp proc sys opt將庫文件拷到/lib下,這里是在4.3.2的目錄里的庫,別的編譯器庫行丌行沒試過。 # cd /home/wyx/usr/local/arm/4.3.2/arm-linux/lib # cp *.so* /root_01/lib -d 注意這兩裝載器對應的庫文件(ld.so和ld-linux.so)沒有到主機里的lib找。 創建etc目錄下文件 在root_01/etc目錄下創建一個in
23、ittab文件 內容如下: :sysinit:/etc/init.d/rcS :respawn:-/bin/sh tty2:askfirst:-/bin/sh :restart:/sbin/init :ctrlaltdel:/sbin/reboot :shutdown:/bin/umount -a -r :shutdown:/sbin/swapoff -a 創建etc/mdev.conf文件,內容為空。同樣的方法創建etc/init.d/rcS文件: #!/bin/sh (相當于windows下的批處理文件.bat)ifconfig eth0 22mount -a mkd
24、ir /dev/pts mount -t devpts devpts/dev/pts echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s 最后還要改變它的屬性使它能夠執行。# chmod 777 etc/init.d/rcS (777表示所有用戶有權限執行)創建etc/fstab文件:proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0 tmpfs /dev tmpfs defaults 0 0 在/root_01/
25、dev 建立節點文件:# mknod console c 5 1 # mknod null c 1 3 下載cramfs-1.1.tar.gz解壓后在其頂層make得到mkcramfs 把mkcramfs 和root_01放在一起。 執行 # mkcramfs root_01 myroot01.cramfs 生成可以燒寫的根文件myroot.cramfs 將myroot.cramfs改名為 root # mv myroot.cramfs root將root文件拷貝到tftpboot文件下以便燒寫。6測試6.1編寫簡單C程序測試移植的系統在終端執行vim hello.c編寫一個簡單的C程序如下:# include <stdio.h>int main(void)printf("hello arm!n");printf("Thanks Erveybody!n");return 0 ;編寫好之后保存退出hello.c,執行以下命令:# arm-linux-gcc o hello.c hello (生成可運行的二進制hello文件)# cp hello /udisk將會生成一個可以在開發板運行的二進制文件hello,將hello拷貝到
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國電開水器行業發展研究與產業戰略規劃分析評估報告
- 2025至2030中國生物玻璃行業產業運行態勢及投資規劃深度研究報告
- 2025至2030中國玄武巖纖維袖行業市場占有率及投資前景評估規劃報告
- 2025至2030中國特種物流行業發展趨勢分析與未來投資戰略咨詢研究報告
- 智慧城市公共安全監控的法律問題研究
- 企業培訓中的在線教育應用與實踐案例分析
- 心理引導與學生學習動力的關系研究
- 教育心理學在青少年教育中的運用
- 學生心理健康與學習成效的關聯性分析
- 探索個性化教育模式下的游戲化和情感支持融合策略
- 2025年北京市高考化學試卷真題(含答案)
- 2025年重慶市中考化學試卷真題(含標準答案)
- JG/T 202-2007工程管道用聚氨酯、蛭石絕熱材料支吊架
- T/CEMIA 026-2021濕電子化學品技術成熟度等級劃分及定義
- 訴前調解協議書模板
- 房建項目施工組織設計
- 熱帶作物品種審定規范 葛編制說明
- 安徽省2024年普通高校招生普通高職(???批院校投檔分數及名次(歷史科目組合)
- TSZJL 10-2024 機動車污染物排放檢測設備運行和保養技術規范
- 智能溫室環境控制-第2篇-深度研究
- LS/T 1235-2024糧食倉房分類分級
評論
0/150
提交評論