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

下載本文檔

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

文檔簡介

1、合肥學(xué)院嵌入式系統(tǒng)設(shè)計實驗報告(20 13- 2014第2學(xué)期)專 業(yè): 11級自動化卓越班 實驗項目: linux內(nèi)核移植實驗 實驗成員: 指導(dǎo)老師: 干 開 峰 實驗時間: 2014 年 5 月 15 日 電子信息與電氣工程系2014年4月制實驗四 linux內(nèi)核移植實驗 一、實驗?zāi)康?、熟悉嵌入式linux的內(nèi)核相關(guān)代碼分布情況。2、掌握linux內(nèi)核移植過程。3、學(xué)會編譯和測試linux內(nèi)核。二、實驗內(nèi)容本實驗了解linux2.6.32代碼結(jié)構(gòu),基于s3c2440處理器,完成linux2.6.32內(nèi)核移植,并完成編譯和在目標開發(fā)板上測試通過。 三、實驗步驟1、使用光盤自帶源碼默認配置l

2、inux內(nèi)核 拷貝解壓源碼linux--mini2440.tar.gz。 本開發(fā)板為了方便編譯出和光盤燒寫文件完全一致的內(nèi)核,針對不同的 lcd 輸出分別做了相應(yīng)的內(nèi)核配置文件: config_mini2440_t35適用于統(tǒng)寶 3.5” lcd的內(nèi)核配置文件 config_mini2440_l80適用于 sharp 8” lcd(或兼容)的內(nèi)核配置文件 config_mini2440_n35適用于nec3.5” lcd 的內(nèi)核配置文件 config_mini2440_a70適用于群創(chuàng)7” lcd 的內(nèi)核配置文件 config_mini2440_vga1024x768適用于vg

3、a顯示輸出(分辨率1024x768模塊的內(nèi)核配置文件) 執(zhí)行以下命令來使用缺省配置文件config_x35 #cp config_mini2440_x35 .config;注意:x35后面有個空格,然后有個“.”開頭的 config 然后執(zhí)行“make menuconfig”,出現(xiàn)配置內(nèi)核界面,不用做任何更改,在主菜單里選擇<exit>退出,并選“yes”保存設(shè)置返回到剛命令行界面,生成相應(yīng)配置的頭文件。 編譯內(nèi)核: #make clean #make zimage 編譯完成后,會在內(nèi)核目錄arch/arm/boot/下生成zimage內(nèi)核映像文件。 2、官網(wǎng)下載源碼移植2.1 移

4、植前準備(1)下載內(nèi)核 在網(wǎng)站鏈接/pub/linux/kernel/v2.6/linux-2.6.32.tar.bz2,下載linux-2.6.32.tar.bz2。新建一個工作目錄s3c2440,將內(nèi)核源碼包拷貝至工作目錄下。(2)下載yaffs2代碼 在網(wǎng)站鏈接http:/www.aleph1.co.uk/cgi-bin/viewcvs.cgi/cvs-root.tar.gz?parent=1&view=ta,下載cvs-root.tar.gz壓縮包,拷貝至工作目錄s3c2440下。(3)安裝交叉編譯環(huán)境 下載arm-linux-gcc 4

5、.3.2,然后安裝并配置環(huán)境變量,最后執(zhí)行: #arm-linux-gcc -v查看2.2 建立自己的目標平臺 (1)解壓內(nèi)核源碼 tar xvzf linux-.tar.gz(2)進入內(nèi)核目錄,修改makefile,并對內(nèi)核進行默認配置進行修改183行,修改: arch ?=arm cross_compile ?=arm-linux- 接下來,要測試一下linux 的編譯是否能正常通過。執(zhí)行:#make s3c2410_defconfig ;使用缺省內(nèi)核配置文件,s3c2410_defconfig 是smdk2440 的缺省配置文件#make ;編譯時間較長。經(jīng)過漫長的等待后

6、編譯成功了(3)修改機器碼 由于bootloader傳遞給linux內(nèi)核的機器號為1999,為與bootloader傳遞參數(shù)一致,修改linux內(nèi)核的機器號。友善之臂已經(jīng)為 mini2440 申請了自己的機器碼為 1999,它位于linux-/arch/arm/tools/mach_types文件中。(4)修改時鐘源頻率 在 mach-mini2440.c(刪除原來的mach-mini2440.c,通過復(fù)制mach-smdk2440.c 得到的新的mach-mini2440.c)的第 160 行static void _init smdk2440_map_io(void)函數(shù)中

7、,把其中的 16934400(代表原 smdk2440 目標板上的晶振是 16.9344mhz)改為 mini2440 開發(fā)板上實際使用的 12000000(代表 mini2440 開發(fā)板上的晶振 12mhz)。刪除原來的mach-mini2440.c(5)從 smdk2440 到 mini2440 因為我們要制作自己的 mini2440 平臺體系,因此把 mach-mini2440.c 中所有的smdk2440 字樣改為 mini2440。 除此之外,還有一個地方需要改動,在 mini2440_machine_init(void)函數(shù)中,把smdk_machine_init()函數(shù)調(diào)用注釋掉

8、,因為我們后面會編寫自己的初始化函數(shù),不需要調(diào)用該函數(shù)。2.3 定制內(nèi)核配置(1) 使用 linux 官方自帶的 mini2440 配置,在 linux 源代碼根目錄下執(zhí)行 #make mini2440_defconfig; (2)移植 nand 驅(qū)動并更改分區(qū)信息在 mach-mini2440.c 中加入以下代碼: static struct mtd_partition mini2440_default_nand_part = 0 = .name = "supervivi", .size = 0x00040000, .offset = 0, , 1 = .name = &

9、quot;param", .offset = 0x00040000, .size = 0x00020000, , 2 = .name = "kernel", ; 對應(yīng)/dev/mtdblock2 .offset = 0x00060000, .size = 0x00500000, , 3 = .name = "root", .offset = 0x00560000, .size = 1024 * 1024 * 1024, , 4 = .name = "nand",; .offset = 0x00000000, .size =

10、1024 * 1024 * 1024, ; static struct s3c2410_nand_set mini2440_nand_sets = 0 = .name = "nand", .nr_chips = 1, .nr_partitions = array_size(mini2440_default_nand_part), .partitions = mini2440_default_nand_part, , ; static struct s3c2410_platform_nand mini2440_nand_info = .tacls = 20, .twrph0

11、= 60, .twrph1 = 20, .nr_sets = array_size(mini2440_nand_sets), .sets = mini2440_nand_sets, .ignore_unset_ecc = 1, ; (部分截圖)還需要把 nand flash 設(shè)備注冊到系統(tǒng)中, static struct platform_device *mini2440_devices _initdata = &s3c_device_usb, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c0, &s3

12、c_device_iis, &s3c_device_nand, ;把nand flash設(shè)備添加到開發(fā)板的設(shè)備列表結(jié)構(gòu) ; (3)移植 yaffs2 1)獲取 yaffs2 源代碼 #tar xvzf cvs-root.tar.gz 2)為內(nèi)核打上 yaffs2 補丁 #cd /micro2440/cvs/yaffs2/ #./patch-ker.sh c /microi2440/linux- 3)配置和編譯帶 yaffs2 支持的內(nèi)核 #make menuconfig執(zhí)行上述指令時出錯參考了移動上下按鍵找到 file systems,如圖 按回車進入該子菜單,再找到“

13、miscellaneous filesystems”菜單項,按回車進入該子菜單出現(xiàn)如下圖菜單,找到“yaffs2 file system support”, 并按空格選中它,這樣我們就在內(nèi)核中添加了yaffs2 文件系統(tǒng)的支持按“exit”退出內(nèi)核配置。在命令行執(zhí)行:#make zimage參考 zimage即可找到相應(yīng)路徑的zimage文件(4)其他功能移植和配置Ø 移植 dm9000網(wǎng)卡驅(qū)動 設(shè)備資源初始化linux- 已經(jīng)自帶了完善的dm9000 網(wǎng)卡驅(qū)動驅(qū)動(源代碼位置:linux-/drivers/net/dm9000.c),它也是一個平臺設(shè)

14、備,因此在目標平臺初始化代碼中,只要填寫好相應(yīng)的結(jié)構(gòu)表即可,具體步驟如下:首先添加驅(qū)動所需的頭文件 dm9000.h:再定義dm9000 網(wǎng)卡設(shè)備的物理基地址,以便后面用到:再填充該平臺設(shè)備的資源設(shè)置,以便和 dm9000 網(wǎng)卡驅(qū)動接口配合起來,如下(部分截圖)這樣,dm9000 平臺設(shè)備的接口就填完了。調(diào)整dm9000 所用的位寬寄存器因為 linux- 的dm9000 網(wǎng)卡驅(qū)動并不是專門為mini2440 準備的,所以還要在其源代碼中做一些移植工作,如下步驟。打開 linux-/ drivers/net/dm9000.c,頭文件處添加2410 相關(guān)的配置定義

15、,如下在dm9000 設(shè)備的初始化函數(shù)中添加如下紅色部分,這里是配置dm9000 所用片選總線的時序,因為mini2440 目前只有一個通過總線外擴的設(shè)備,在此設(shè)備驅(qū)動中直接修改相關(guān)的寄存器配置會更加容易理解一些,當(dāng)然這部分也可以放到mach-mini2440.c 中。配置內(nèi)核加入dm9000,并編譯運行測試此時會帶內(nèi)核源代碼目錄,執(zhí)行:#make menuconfig即可出現(xiàn)以下界面 開始在內(nèi)核中配置網(wǎng)卡驅(qū)動,依次選擇如下菜單項device drivers ->network device support -> ethernet (10 or 100mbit) ->即可找到

16、dm9000 的配置項,可以看到dm9000 已經(jīng)被選中,這是因為linux-默認的內(nèi)核配置已經(jīng)加入了dm9000 的支持然后執(zhí)行:#make zimage進入相應(yīng)目錄即可看到已經(jīng)生成的zimage文件3、下載測試(1)測試內(nèi)核將最后會生成 linux-/arch/arm/boot/zimage,使用supervivi 的“k“功能把它燒寫到nand flash,按“b“啟動系統(tǒng),出現(xiàn)如下界面(2) 測試dm9000網(wǎng)卡驅(qū)動最后生成arch/arm/boot/zimage 文件,使用”k”命令把它燒寫到開發(fā)板,并使用默認的件系統(tǒng)啟動在命令行終端運行ifconfig 命令可以看到如圖所示。由于無文件系統(tǒng)故無法進行輸入命令等,只能見到如下圖所示的界面。五、思考題linux內(nèi)核有哪些模塊組成?答:linux內(nèi)核由進程管理、內(nèi)存管理、文件系統(tǒng)、網(wǎng)絡(luò)接口、進程間通信、設(shè)備驅(qū)動等模塊組成。2、簡述生成內(nèi)核映像文件zimage的步驟答:(1)使用命令make config進入命令行(2) 使用make meunconfig命令進行內(nèi)核裁剪(3)使用make clean命令,清理之前生成的目標文件(

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論