<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 現場(chǎng)總線(xiàn)的開(kāi)關(guān)量I/O模塊設計:操作系統移植與驅動(dòng)開(kāi)發(fā)

現場(chǎng)總線(xiàn)的開(kāi)關(guān)量I/O模塊設計:操作系統移植與驅動(dòng)開(kāi)發(fā)

作者: 時(shí)間:2013-05-27 來(lái)源:網(wǎng)絡(luò ) 收藏

5.3.3嵌入式Linux的

在同一個(gè)硬件平臺上可以嵌入不同的嵌入式,就好比PC既可以安裝Windows又 可以安裝Linux一樣。同樣,有些經(jīng)過(guò)后可以運行在不同的硬件平臺上。如果一個(gè)系統可以在不同硬件平臺上運行,那么這個(gè)系統就是可的。 使某一個(gè)平臺的代碼運行在其他平臺上的。過(guò)程叫做移植。

在Linux系統內核代碼中有arch目錄,其中包含了不同平臺(包括i386、 ARM)的代碼,arch目錄中的代碼是為多平臺并使用的,與體系結構相關(guān)的代碼都存放在arch//和 include/asm-/目錄中,architecture是Linux支持的體系結構的簡(jiǎn)稱(chēng)。例如,ARM體系結構對應的簡(jiǎn)稱(chēng)是arm.與這種體系結 構相關(guān)的代碼都存放在arch/arm/以及include/asm-arm /目錄下。嵌入式系統是“硬件可剪裁”的,因此工程師的硬件電路會(huì )有所不同,從而這些代碼可能無(wú)法正確運行(比如內核解壓的地址不同)。因此,在剪裁 系統內核是必須結合硬件電路對內核代碼進(jìn)行修改移植。

本系統采用Linux2.6.12,Samsung S3C2440已經(jīng)成為L(cháng)inux的一個(gè)標準支持平臺,對內核做簡(jiǎn)單的修改和配置后,無(wú)需任何其他的patch就可以在S3C2440的目標板上運行得很好。

(1)針對內核源碼的修改

設置flash分區

內核對flash分區的支持是內核移植成功的一個(gè)關(guān)鍵步驟,一共要修改三個(gè)文件,分別如下:

指明分區信息

在arch/arm/machs3c2410/devs.c文件中,添加如下內容:

/**************增加的頭文件**************/

# include linux/mtd/partitions.h>

#include asm/arch/nand.h>

#include linux/mtd/nand.h>

/**************建立NANDFlash分區表**************/

●指定啟動(dòng)時(shí)初始化在

arch/arm/machs3c2410/machsmdk2410.c目錄,kernel啟動(dòng)時(shí)依據對分區的設置進(jìn)行初始配置,修改smdk_devices[]:指明初始化時(shí)包括前面所設置的flash分區信息,

static struct platform_device*smdk2410_devices[]__initdata={

3c_device_usb,

3c_device_lcd,

3c_device_wdt,

3c_device_i2c,

3c_device_iis,

3c_device_nand,/*添加該語(yǔ)句即可*/

};

●禁止Flash ECC校驗kernel是通過(guò)bootloader寫(xiě)到Nand Flash的,bootloader通過(guò)軟件ECC算法產(chǎn)生ECC校驗碼。這與內核校驗的ECC碼不一樣,內核中的ECC碼是由S3C2440中的Nand Flash控制器產(chǎn)生的。

修改drivers/mtd/nand/s3c2410.c文件:找到s3c2410_nand_init_chip( )函數,在該函數體最后加上如下語(yǔ)句。

chip ->eccmode = NAND_ECC_NONE ;

(2)內核配置及編譯

主要是在make menuconfig中設置CPU以及設備相關(guān)的配置信息,可以參考SMKD2410平臺上的有關(guān)配置,除了自定義的文件系統以及命令行參數外,基本上有關(guān)S3C2410處理器平臺上的配置均相同,在虛擬機上配置界面如圖5.2所示。

根目錄下只需修改Makefile文件。這個(gè)Makefile文件的任務(wù)有兩個(gè):產(chǎn)生vmlinux件和產(chǎn)生內核。為了達到此目的,Makefile將遞歸進(jìn)入到內核的各個(gè)子目錄中,分別調用位于這些子目錄中的Makefile.

指定目標平臺

ARCH:=arm

指定交叉編譯器

CROSS_COMPILE=arm-linux-gcc

設置好交叉編譯器之后,執行make clean、makeu Image,生成在IO上運行的內核映象文件uImage,通過(guò)網(wǎng)口或串口進(jìn)行燒寫(xiě)。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>