通信原理大綜合課件高頻全_第1頁
通信原理大綜合課件高頻全_第2頁
通信原理大綜合課件高頻全_第3頁
通信原理大綜合課件高頻全_第4頁
通信原理大綜合課件高頻全_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

6.1Linux內(nèi)核移植的概述Linux系統(tǒng)移植包括3個部分:引導(dǎo)程序移植、內(nèi)核移植和文件系統(tǒng)制作。內(nèi)核移植包括修改內(nèi)核[0]代碼和配置內(nèi)核選項(xiàng)兩部分。修改內(nèi)核[0]代碼主要是選定內(nèi)核對處理器的支持和修改與外部設(shè)備相關(guān)的內(nèi)核代碼。配置內(nèi)核主要是將Linux系統(tǒng)中多余的設(shè)備驅(qū)動和一些不必要的操作系統(tǒng)功能去掉,并根據(jù)實(shí)際開發(fā)板配置對一些外部設(shè)備進(jìn)行設(shè)置。第6章Linux內(nèi)核向ARM平臺的移植6.2修改內(nèi)核代碼

由于Linux2.6.10以后版本支持的處理器和外部設(shè)備逐漸增多,內(nèi)核代碼的修改也變得相對簡單。以含有Flash存儲器的最小系統(tǒng)為例來說明。一、選定處理器支持修改內(nèi)核目錄樹根下的的Makefile,指明交叉編譯器找到ARCH和CROSS_COMPILE,修改ARCH?=$(SUBARCH)CROSS_COMPILE?=改為:

ARCH:=armCROSS_COMPILE:=/usr/local/arm/3.4.1/bin/arm-linux-指定了處理器類型時ARM,編譯器是arn-linux-gcc-3.4.1。二、修改與Flash存儲器相關(guān)的內(nèi)核代碼

Linux2.6內(nèi)核已有Flash的程序代碼,但不同的開發(fā)平臺需要的Flash存儲器的分區(qū)信息不同,在實(shí)際移植內(nèi)核時要加入對Flash存儲器分區(qū)的支持。

devs.c位于arch/arm/mach-s3c2410/devs.c,該文件主要是對開發(fā)平臺設(shè)備的定義,包括USB、LCD、I2C、SPI、I2S和看門狗等設(shè)備。設(shè)開發(fā)平臺的NandFlash總共64MB,分區(qū)信息如下:分區(qū)起始地址分區(qū)大小分區(qū)作用Part00x000000000x00038000224kbootloaderPart10x000380000x0004000032kbootloaderparamsPart20x000400000x002000001.75mlinuxkernelPart30x002000000x0100000030mrootfilesystemPart40x010000000x0200000016mExt-fs1Part50x020000000x0300000016mExt-fs21、在devs.c中增加頭文件#include<linux/mtd/partitions.h>#include<linux/mtd/nand.h>#include<asm/arch/nand.h>2、增加NandFlash分區(qū)信息根據(jù)表中列寫的地址在devs.c后半部分增加NandFlash分區(qū)信息添加分區(qū)結(jié)構(gòu):

staticstructmtd_partitionpartition_info[]={{name:"bootloader",//分區(qū)名字,任意

size:0x00038000,//分區(qū)大小

offset:0x0,//分區(qū)的起始地址,相對于0x0的偏移

},{name:"parameter",size:0x00008000,offset:0x00038000,},{name:"kernel",size:0x001c0000,offset:0x00040000,},{name:"rootfs",size:0x01E00000,offset:0x00200000,},{name:"Ext-fs1",size:0x01000000,offset:0x02000000,}{name:"Ext-fs2",size:0x01000000,offset:0x03000000,},};3、加入NandFlash分區(qū)structs3c2410_nand_setnandset.={nr_partitions:.6,//分區(qū)數(shù)量

partitions:partition_info,//分區(qū)表};4、建立NandFlash芯片支持structs3c2410_platform_nandsuperlpplatform={//NANDFlash芯片支持

//參數(shù)意義可參考S3C2410手冊

tacls:0,twrph0:30,twrph1:0,sets:.&nandset,nr_sets:1,};Tacls、twrph0、twrph1:芯片參數(shù)Sets:支持的分區(qū)集。nr_sets:分區(qū)集的個數(shù)。5、加入NandFlash芯片支持前邊定義了Flash分區(qū)的信息,需要把此設(shè)備的信息加進(jìn)去,修改此文件的s3c-device-nand結(jié)構(gòu)體變量,添加對dev成員的賦值。structs3c2410_platform_nands3c_nand_info;//新增加的代碼structplatform_devices3c_device_nand={.name="s3c2410-nand",//設(shè)備名稱

.id=1,//有效設(shè)備編號,1表示唯一設(shè)備

.num_resources=ARRAY_SIZE(s3c_nand_resource),//寄存器區(qū)的個數(shù)

.resource=s3c_nand_resource,//寄存器區(qū)的首地址};6、指定啟動時初始化為了使內(nèi)核啟動時能夠初始化NandFlash,需要在arch/arm/mach-s3c2410/mach-smdk2410.c中的._initdata部分增加&s3c_device_nand。其中smdk2410_devices[]指明初始化時包括前面所設(shè)置的Flash分區(qū)信息。staticstructplatform_device*smdk2410_devices[]__initdata={s3c_device_usb,s3c_device_lcd,s3c_device_wdt,s3c_device_i2c,s3c_device_iis,//添加如下信息

s3c_device_nand,};6.3配置內(nèi)核選項(xiàng)一、配置系統(tǒng)的基本結(jié)構(gòu)Linux2.6內(nèi)核配置系統(tǒng)由以下3個部分組成:Makefile:分布在各個層次目錄中的Makefile,定義Linux內(nèi)核的編譯規(guī)則。配置文件(Kconfig):給用戶提供配置選擇的功能,Kconfig分布在各層目錄中。配置工具:包括配置命令解釋器(對配置腳本中使用的配置命令進(jìn)行解釋)和配置用戶界面(提供基于字符界面、基于Ncurses圖形界面以及基于Xwindows圖形界面的用戶配置界面,各自對應(yīng)于Makeconfig、Makemenuconfig和makexconfig)。二、內(nèi)核配置選項(xiàng)1、內(nèi)核配置命令#makeconfig:基于文本的最為傳統(tǒng)的配置界面,不推薦使用。#makemenuconfig:基于文本選單的配置界面,字符終端下推薦使用。#makexconfig:基于圖形窗口模式的配置界面,Xwindow下推薦使用。#makeoldconfig:在原內(nèi)核配置基礎(chǔ)上做修改。如果你不能使用Xwindow,那么就使用make

menuconfig好了。界面雖然比上面一個差點(diǎn),總比make

config的要好多了。這三個命令中,make

xconfig的界面最為友好,如果你可以使用Xwindow,那么就推薦你使用這個命令。2、選擇Y:將該功能編輯進(jìn)內(nèi)核。N:不將該功能編輯進(jìn)內(nèi)核。M:將該功能編輯成可以在需要時動態(tài)插入到內(nèi)核中的模塊。Makemenuconfig界面如果使用的是make

xconfig,使用鼠標(biāo)就可以選擇對應(yīng)的選項(xiàng)。如果使用的是make

menuconfig,則需要使用空格鍵進(jìn)行選取。你會發(fā)現(xiàn)在每一個選項(xiàng)前都有個括號,

但有的是中括號有的是尖括號,還有一種圓括號。

用空格鍵選擇時可以發(fā)現(xiàn),中括號里要么是空,要么是"*",而尖括號里可以是空,"*"和"M"這表示前者對應(yīng)的項(xiàng)要么不要,要么編譯到內(nèi)核里;后者則多一樣選擇,可以編譯成模塊。而圓括號的內(nèi)容是要你在所提供的幾個選項(xiàng)中選擇一項(xiàng)。

6.4Linux2.6內(nèi)核移植實(shí)例1、準(zhǔn)備Linux2.6.14內(nèi)核源代碼1)下載內(nèi)核代碼下載地址:。2)復(fù)制內(nèi)核代碼至/usr/src目錄下在終端輸入命令#cplinux_2.6.14.tar.bz2/usr/src3)解壓內(nèi)核代碼在終端輸入命令#tar–xzvflinux-2.6.14.tar.gz解壓完成后,在/usr/src目錄中添加了一個Linux2.6.14文件夾。2、安裝交叉編譯工具安裝Linux2.6.14內(nèi)核需要用arm-linux-gcc-3.4.1編譯器。1)下載arm-linux-gcc-3.4.1編譯器下載地址:/prog/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2。2)建立文件夾/usr/local/arm在終端輸入命令:#mkdir/usr/local/arm3)復(fù)制文件至/usr/local/arm下在終端輸入命令:#cpcross-3.4.4.tar.gz/usr/local/arm4)解壓文件在終端輸入命令:#cd/usr/local/arm#tar–xjvfcross-3.4.4.tar.gz5)建立環(huán)境變量在終端輸入命令:#exportPATH=/usr/local/arm/2.95.3/bin:$PATH3、修改Makefile文件修改內(nèi)核目錄樹根下的的Makefile,指明交叉編譯器找到ARCH和CROSS_COMPILE,修改ARCH?=$(SUBARCH)CROSS_COMPILE?=改為:

ARCH:=armCROSS_COMPILE:=/usr/local/arm/3.4.1/bin/arm-linux-4、修改內(nèi)核代碼,增加Linux內(nèi)核對NandFlash的支持如果直接編譯下載的內(nèi)核

溫馨提示

  • 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

提交評論