嵌入式系統(tǒng)實驗一_第1頁
嵌入式系統(tǒng)實驗一_第2頁
嵌入式系統(tǒng)實驗一_第3頁
嵌入式系統(tǒng)實驗一_第4頁
嵌入式系統(tǒng)實驗一_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、實驗一 嵌入式系統(tǒng)開發(fā)環(huán)境搭建(1)嵌入式虛擬開發(fā)環(huán)境的搭建以及內(nèi)核編譯1、 實驗?zāi)康暮鸵? 熟悉ARM虛擬平臺Skyeye的搭建2 熟悉交叉編譯開發(fā)環(huán)境的搭建3 熟悉編譯ARM-Linux4 熟悉在Skyeye平臺上仿真ARM-Linux5 拓展:嘗試移植其他版本的Linux,并且在Skyeye上運行2、 實驗內(nèi)容和原理本實驗是通過在PC機(jī)上搭建嵌入式開發(fā)環(huán)境虛擬環(huán)境(Skyeye),熟悉嵌入式交叉編譯開發(fā)環(huán)境以及ARM-Linux系統(tǒng)移植的主要步驟。實驗虛擬平臺SMDK2410v CPU三星S3C2410(ARM920T),核心頻率為62.400MHz,I-Cache 16K,D-Cac

2、he 16Kv 內(nèi)存32MB,內(nèi)存頻率62.400MHz實驗軟件介紹SkyEye是一個開源軟件(OpenSource Software)項目,中文名字是“天目”,SkyEye的目標(biāo)是在通用的Linux和Windows平臺上實現(xiàn)一個純軟件集成開發(fā)環(huán)境,模擬常見的嵌入式計算機(jī)系統(tǒng)(這里假定“仿真”和“模擬”的意思基本相同);可在SkyEye上運行u CLinux以及u C/OS-II等多種嵌入式操作系統(tǒng)和各種系統(tǒng)軟件(如TCP/IP,圖形子系統(tǒng),文件子系統(tǒng)等),并可對它們進(jìn)行源碼級的分析和測試。SkyEye是一個指令級模擬器,可以模擬多種嵌入式開發(fā)板,可支持多種CPU指令集,在SkyEye上運行的

3、操作系統(tǒng)意識不到它是在一個虛擬的環(huán)境中運行,而且開發(fā)人員可以通過SkyEye調(diào)試操作系統(tǒng)和系統(tǒng)軟件。由于SkyEye的目標(biāo)不是驗證硬件邏輯,而是協(xié)助開發(fā),調(diào)試和學(xué)習(xí)系統(tǒng)軟件,所以在實現(xiàn)上SkyEye與真實的硬件環(huán)境相比還是有一定差別的。編譯ARM-Linux內(nèi)核,熟悉ARM-Linux的移植過程。編譯成功后,同學(xué)們需要將ARM內(nèi)核在SkyEye的ARM硬件模擬環(huán)境運行測試。具體步驟見后文。3、 主要儀器設(shè)備硬件:a. PC機(jī)軟件:a. VMware workstation9.0b. Ubuntu 10.04LTSc. skyeye-1.2.5_REL.tar.gzd. skyeye-tests

4、uite-1.2.5.tar.bz2e. arm-linux-gcc-3.4.1.tar.bz2f. linux-2.6.14.tar.gzg. cpp-4.1_4.1.2-27ubuntu1_i386.debh. g+-4.1_4.1.2-27ubuntu1_i386.debi. gcc-4.1_4.1.2-27ubuntu1_i386.debj. gcc-4.1-base_4.1.2-27ubuntu1_i386.debk. libstdc+6-4.1-dev_4.1.2-27ubuntu1_i386.deb4、 操作方法與實驗步驟1. 安裝虛擬機(jī)VMware workstation8.0

5、2. 安裝ubuntu10A. 可以選用Typical Install方式建立ubuntuB. 安裝VMToolC. 設(shè)置host computer共享的目錄3. 安裝使用gcc4.1版本編譯器(編譯Skyeye需要低版本gcc)A.在安裝之前先看看ubuntu10.04的gcc是哪個版本B.下載相關(guān)文件a. cpp-4.1_4.1.2-27ubuntu1_i386.debb. g+-4.1_4.1.2-27ubuntu1_i386.debc. gcc-4.1_4.1.2-27ubuntu1_i386.debd. gcc-4.1-base_4.1.2-27ubuntu1_i386.debe.

6、libstdc+6-4.1-dev_4.1.2-27ubuntu1_i386.deb執(zhí)行命令sudo dpkg -i *.deb就可以安裝好gcc4.1.C.設(shè)置默認(rèn)gcc版本updatels /usr/bin/gcc*sudo update-alternatives -install /usr/bin/gcc gcc /usr/bin/gcc-4.1 40sudo update-alternatives -install /usr/bin/gcc gcc /usr/bin/gcc-4.? 20update-alternatives -config gccupdate-alternatives

7、 -install /usr/bin/g+ g+ /usr/bin/g+-4.1 404. 安裝SKyeyea. 鍵入tar -xzvf skyeye-1.2.5_REL.tar.gz 解壓b. 依次鍵入cd skyeye-1.2.5_REL回車,./configure回車,make 回車,sudo make install 回車5. 測試Skyeyea. 鍵入tar -xvjf skyeye-testsuite-1.2.5.tar.bz2回車b. 鍵入 cd skyeye-testsuite-1.2.5/linux/s3c2410/s3c2410-2.6.14/回車c. 鍵入skyeye -

8、e vmlinux回車6. 安裝交叉編譯環(huán)境a. 鍵入tar -xvjf arm-linux-gcc-3.4.1.tar.bz2回車b. 記住arm-gcc的目錄,即/usr/local/arm/3.4.1/bin7. 編譯內(nèi)核a. 鍵入tar -xzvf linux-2.6.14.tar.gz回車b. 鍵入 cd linux-2.6.14回車c. 鍵入vi Makefile 回車修改Makefile:ARCH ?=$(SUBARCH)CROSS_COMPILE ?=改為:ARCH ?=armCROSS_COMPILE ?=/usr/local/3.4.1/bin/arm-linux-d. 生

9、成默認(rèn)的內(nèi)核配置文件,鍵入cp arch/arm/configs/smdk2410_defconfig .回車,繼續(xù)鍵入 sodu make smdk2410_defconfig回車e. 參照 修改內(nèi)核文件1 修改include/asm-arm/arch-s3c2410/map.h#define S3C2410_CS6(0x30000000)改為:#define S3C2410_CS6(0xC0000000)鍵入vi include/asm-arm/arch-s3c2410/map.h2 修改include/asm-arm/arch-s3c2410/memory.h#define PHYS_O

10、FFSET(0x30000000UL)改為:#define PHYS_OFFSET(0xC0000000UL)鍵入vi include/asm-arm/arch-s3c2410/memory.hf. 裁剪/定制內(nèi)核1) 鍵入sodu make menuconfig回車2) 設(shè)置內(nèi)核啟動參數(shù)Boot option->Default kernel command string:mem=32M console=ttySAC0 root=/dev/ram initrd=0xc0800000,0x00800000 ramdisk_size=8192rw3) 設(shè)置initrd的支持Device Dr

11、ivers->Block devices->*RAM disk support(4096) Default RAM disk size (kbytes)改為:8192*Initial RAM disk (initrd) support4) 設(shè)置ROM file system 的支持File system->*ROM file system support5) 設(shè)置ext2的支持File system->*Second extended fs suppordg. 編譯,鍵入make鍵編譯完成后會有vmlinux在當(dāng)前目錄下,這就是我們要的arm-linux內(nèi)核了h. 驗證

12、l 將skeeye-testsuite-1.2.5/linux/s3c2410/s3c2410-2.6.14中的skyeye. conf和initrd.img復(fù)制到linux-2.6.14目錄中l(wèi) 鍵入skyeye -e vmlinux出現(xiàn)了ARMLinux字樣說明成功!5、 實驗結(jié)果與分析六、討論、心得 通過本次實驗完成了內(nèi)核的編譯,這次實驗沒有什么太大的難度,只要按照實驗指導(dǎo)書的步驟并且細(xì)心的話,實驗是很快就可以完成的。(2) 嵌入式程序的開發(fā)與根文件系統(tǒng)的搭建1、 實驗?zāi)康暮鸵? 熟悉利用busybox建立ARM-Linux根文件系統(tǒng)(initrd)2 熟悉修改現(xiàn)有根文件系統(tǒng)(init

13、rd)的方法3 熟悉利用交叉編譯環(huán)境編譯簡單的C 語言程序4 將自己寫好的C 語言程序,進(jìn)行交叉編譯,寫入根文件系統(tǒng),并在實驗一中搭建的虛擬環(huán)境中運行,顯示正確的結(jié)果5 回答后面遇到的4個問題2、 實驗內(nèi)容和原理根文件系統(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)。利用BusyBox搭建根文件系統(tǒng)。BusyB

14、ox 是一個集成了一百多個最常用linux命令和工具的軟件。BusyBox 包含了一些簡單的工具,例如ls、cat和echo等等,還包含了一些更大、更復(fù)雜的工具,例如grep、find、mount以及telnet。這樣的集合可以替代大部分常用工具比如的GNU fileutils , shellutils等工具,BusyBox提供了一個比較完善的環(huán)境,可以適用于任何小的或嵌入式系統(tǒng)。將自己編譯的程序保存到根文件系統(tǒng)中的目錄下,就可以在嵌入式虛擬環(huán)境中運行。3、 主要儀器設(shè)備硬件:a. PC機(jī)軟件:a. 實驗一搭建好的嵌入式虛擬平臺b. busybox-1.19.4.tar.bz2c. hello

15、word.c4、 操作方法與實驗步驟1. 編譯busyboxa. 修改Makefile中的arch和編譯工具鏈頭為:ARCH ?=armCROSS_COMPILE ?=/usr/local/3.4.1/bin/arm-linux-b. make menuconfig 修改編譯配置選項選擇動態(tài)編譯busyboxBusybox Setting->build option-> Build BusyBox as a static binary (no shared libs)* Build shared libbusybox* Produce a binary for each apple

16、t, linked against libbusybox* Produce additional busybox binary linked against libbusybox Build with Large File Support (for accessing files > 2 GB)General Configuration->* Don't use /usrinstallation option->Applets links (as soft-links) ->(./_install) BusyBox installation prefixc. 鍵

17、入maked. 編譯鍵入make install(應(yīng)該是生成必要的可執(zhí)行文件)e. 修改busybox的屬性 鍵入chmod 4755 ./_install/bin/busybox注意:必須要修改屬性,否則在busybox中很多命令會受限制:比如:$su su:must be suid to work properlyf. 查看busybox需要的動態(tài)庫2. 制作initrd.imga. 創(chuàng)建映像文件并掛到 initrd 目錄Ø 鍵入mkdir initrdØ 鍵入dd if=/dev/zero of=initrd.img bs=1k count=8192Ø 鍵入

18、mke2fs -F -v initrd.imgØ 鍵入mount -o loop initrd.img initrdb. 將添加 busybox 到此映像文件l 鍵入cd initrdl 鍵入cp -r ./_install/* .c. 拷貝busybox 需要的動態(tài)庫arm-linux/libv mkdir proc lib etc dev root home var tmpv 鍵入cp /usr/local/arm/3.4.1/arm-linux/lib/ld* libv 鍵入cp /usr/local/arm/3.4.1/arm-linux/lib/libc-2.3.2.so

19、libv 鍵入cp /usr/local/arm/3.4.1/arm-linux/lib/libc.so.6 libv 鍵入cp /usr/local/arm/3.4.1/arm-linux/lib/libm * libv 鍵入cp /usr/local/arm/3.4.1/arm-linux/lib/libcrypt* libd. 建立必要的文件² 鍵入chmod 777 tmp² 建立設(shè)備文件,鍵入cd dev回車mknod -m 644 console c 5 1mknod -m 644 null c 1 3mknod -m 640 ram b 1 1mknod -m

20、 644 mem c 1 1cd .² 創(chuàng)建腳本文件 etc/inittab并且改變權(quán)限chmod 644 etc/inittab² 創(chuàng)建腳本文件etc/init.d/rcS并且改變權(quán)限chmod 755 init.d/rcSe. 將helloworld.c 文件經(jīng)過交叉編譯后復(fù)制到home 目錄下交叉編譯過程如下:/usr/local/arm/3.4.1/bin/arm-linuc-gcc helloworld.c -o helloworldcp helloworld initrd/home/f. 最后,生成initrd.imgcd .umount initrd3. 測試

21、initrd.imga. 將生成initrd.img文件復(fù)制到實驗一的linux-2.6.14目錄下,執(zhí)行skyeye -e vmlinuxb. Skyeye啟動成功后,在home目錄下執(zhí)行./helloworldc. 出現(xiàn)Hello ARM World表示成功5、 實驗結(jié)果與分析在對busybox進(jìn)行make時會遇到很多問題,以下是具體的解決方法:1. 出現(xiàn)如下圖錯誤解決方法:繼續(xù)鍵入make menuconfigBusybox Setting->Miscellaneous Utilities -> ionice修改之后繼續(xù)鍵入make2.出現(xiàn)如下錯誤解決方法:在當(dāng)前目錄下的in

22、clude目錄下建立一個mtd目錄,把事先下載好的ubi-user.h拷貝到mtd目錄下。具體操作如下:cp /home/yewanjaly/busybox/ubi-user.h include/mtd(注意先下載ubi-user.h)修改之后繼續(xù)鍵入make3.出現(xiàn)如下錯誤解決方法1:鍵入make menuconfigBusybox Settings->Busybox Library Tuning->Support infiniband HW修改之后繼續(xù)鍵入make解決方法2:通過查看內(nèi)核源代碼目錄中的“include/linux/ifarp.h”文件可知“ARPHRD_INFI

23、NIBAND”的值為“32”,然后修改“networking/interface.c”文件,在其中添加:#define ARPHRD_INIFINIBAND 32。在本實驗中采用的是解決方法1,但是做過之后第二種解決的方法較好!4.出現(xiàn)如下錯誤解決方法:鍵入vi /usr/local/arm/3.4.1/arm-linux/sys-include/linux/filter.h在最開始加上 #include <linux/types.h>修改之后繼續(xù)鍵入make5.出現(xiàn)錯誤如下解決方法:鍵入make menuconfigLinux System Utilities -> mkf

24、s_ext2修改之后繼續(xù)鍵入make6.出現(xiàn)如下錯誤解決方法:鍵入make menuconfigLinux System Utilities -> mkfs_vfat修改之后繼續(xù)鍵入make以下是實驗過程中的其他截圖部分6、 討論、心得本次實驗對于我個人而言,還是很難的,而且很復(fù)雜,就在改正busybox的make是遇到的問題,廢了很多的時間,開始時不知道要怎么修改,把提示出錯的文件的代碼從頭到尾看了一遍,沒有什么進(jìn)展,后來才知道只要關(guān)閉相關(guān)的功能即可,但是找這個功能在什么地方也是很費事的??傊?,這次實驗完成后,感覺自己學(xué)到了很多。 (3) ARM-Linux添加網(wǎng)絡(luò)驅(qū)動程序與實現(xiàn)NFS

25、訪問1、 實驗?zāi)康暮鸵? 熟悉虛擬平臺添加網(wǎng)卡驅(qū)動程序的步驟2 通過在虛擬機(jī)下實現(xiàn)SkyEye虛擬平臺的NFS 訪問,驗證添加的驅(qū)動程序正確性2、 實驗內(nèi)容和原理通過在ARM-Linux中添加CS8900a網(wǎng)卡驅(qū)動程序,實現(xiàn)嵌入式虛擬環(huán)境具備網(wǎng)絡(luò)功能。驗證網(wǎng)卡工作是否正常。在虛擬機(jī)中增加NFS Server,并且添加共享目錄。通過ARM-Linux映射NFS Server的共享目錄,實現(xiàn)讀、寫和執(zhí)行等操作。如果讀、寫以及執(zhí)行操作正常說明網(wǎng)卡驅(qū)動程序添加成功。NFS 是一種使用于分散式文件系統(tǒng)的協(xié)定,由SUN Microsystems 公司開發(fā),于1984年向外公布。NFS 的功能是通過網(wǎng)絡(luò)讓

26、不同的機(jī)器、不同的操作系統(tǒng)能夠彼此分享個別的數(shù)據(jù)。通過NFS,應(yīng)用和程序可以像訪問本地文件一樣訪問遠(yuǎn)端系統(tǒng)上的文件。實現(xiàn)NFS 對于調(diào)試嵌入式環(huán)境下的應(yīng)用程序有很大幫助。3、 主要儀器設(shè)備硬件:a. PC機(jī)軟件:a. VMware workstation9.0b. Ubuntu 10.04LTSc. skyeye-1.2.5_REL.tar.gzd. skyeye-testsuite-1.2.5.tar.bz2e. arm-linux-gcc-3.4.1.tar.bz2f. linux-2.6.14.tar.gzg. cpp-4.1_4.1.2-27ubuntu1_i386.debh. g+-

27、4.1_4.1.2-27ubuntu1_i386.debi. gcc-4.1_4.1.2-27ubuntu1_i386.debj. gcc-4.1-base_4.1.2-27ubuntu1_i386.debk. libstdc+6-4.1-dev_4.1.2-27ubuntu1_i386.debl. busybox-1.19.4.tar.bz24、 操作方法與實驗步驟1、內(nèi)核的編譯過程已在前面的實驗中進(jìn)行過,這里就不在敘述了。D.為內(nèi)核添加 cs8900(見附件) 網(wǎng)卡驅(qū)動,以支持 NFS 掛接1) 復(fù)制 cs8900 驅(qū)動到 drivers/net/arm 目錄#cp cs8900.c dr

28、ivers/net/arm#cp cs8900.h drivers/net/arm2) 修改 drivers/net/arm 目錄下的 Kconfig 文件3) 修改 drivers/net/arm 目錄下的Makefile文件4) 修改 arch/arm/mach-s3c2410/mach-smdk2410.c5) 在 include/asm-arm/arch-s3c2410 目錄下創(chuàng)建文件 smdk2410.hE.參照http:/skyeye.wiki.sourceforge.het/Linux修改內(nèi)核文件F.裁剪/定制內(nèi)核1) 鍵入make menuconfig2) 設(shè)置內(nèi)核啟動參數(shù)3) 設(shè)置 CS8900 的支持Device Drivers ->Network device support ->Ethernet (10 or 100Mbit) -> * CS8900 support4) 設(shè)置init

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論