亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式Linux系統(tǒng)的移植技巧

        2008-04-12 00:00:00趙小強范九倫
        現(xiàn)代電子技術(shù) 2008年24期

        摘 要:Linux被廣泛的應(yīng)用在嵌入式領(lǐng)域,根據(jù)實際需要構(gòu)建一個自己的嵌入式Linux變得尤為重要。根據(jù)實際需要介紹嵌入式Linux系統(tǒng)的構(gòu)建,框架及其移植技巧,并以三星公司的S3C2410處理器芯片為例,將開源Linux操作系統(tǒng)移植到此ARM處理器上,詳細(xì)闡述開發(fā)環(huán)境的搭建,Bootloader的架構(gòu)及功能,內(nèi)核及文件系統(tǒng)的編譯及移植技巧。實驗證明,移植后的系統(tǒng)運行穩(wěn)定且高效,對構(gòu)建其他嵌入式操作系統(tǒng)具有參考意義。

        關(guān)鍵詞:S3C2410;嵌入式系統(tǒng);Bootloader;內(nèi)核;文件系統(tǒng)

        中圖分類號:TP316文獻(xiàn)標(biāo)識碼:B

        文章編號:1004-373X(2008)24-040-03

        Method of Porting on the Embedded Linux System

        LI Jing,ZHAO Xiaoqiang,F(xiàn)AN Jiulun

        (Xi′an Institute of Posts and Telecommunication,Xi′an,710061,China)

        Abstract:Linux is used widely in the embedded field,it is important to build our embedded Linux system,according to the project,this paper introduces the method of building the embedded Linux system.Taking the Linux transplanted onto the target board based on the process or of S3C2410 as an example.Method of embedded Linux is transplanted,then,how to build up an environment is described,focusing on the framework and functionality of Bootloader and transplant of Linux kernel.This method proves high effective,the transplanted Linux in the embedded system runs well and a good reference to the others embedded operator system is given.

        Keywords:S3C2410;embedded system;Bootloader;kernel;file system

        嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟硬件可裁剪,適用于對功能、可靠性、成本、體積、功耗等有嚴(yán)格要求的專用計算機系統(tǒng)。嵌入式Linux是按照嵌入式操作系統(tǒng)的要求設(shè)計的一種小型操作系統(tǒng),非常適合于移植到嵌入式系統(tǒng)中。嵌入式Linux應(yīng)用最廣泛的地方就是基于ARM地應(yīng)用,ARM芯片是一種高性能、低功耗地RISC芯片,被廣泛地應(yīng)用于各個領(lǐng)域[1,2]。

        目前,基于ARM核的處理器成為市場的主流,建立面向ARM架構(gòu)的操作系統(tǒng)成為人們研究的熱點,而Linux由于它的開源性,被廣泛地應(yīng)用于嵌入式系統(tǒng)中,任何人都可以根據(jù)自己的需要來對其進(jìn)行裁減,以適應(yīng)自己的系統(tǒng)。根據(jù)實際需要將Linux移植到基于ARM920T核的s3c2410處理器芯片上,在總結(jié)現(xiàn)有方法存在的問題的基礎(chǔ)上,詳細(xì)介紹了移植的原理與方法技巧,對于構(gòu)建其他的嵌入式Linux有一定的參考意義。

        1 開發(fā)環(huán)境構(gòu)建

        1.1 嵌入式硬件平臺

        系統(tǒng)硬件平臺核心部件為三星S3C2410 ARM920T芯片,其工作頻率最高達(dá)200 MHz。外圍包括64 MB的NAND FLASH 和64 MB的RAM,鍵盤接口、串口、CPLD譯碼單元、網(wǎng)絡(luò)單元、語音單元、LCD及觸摸屏等。

        1.2 嵌入式軟件平臺

        軟件平臺一般包括Bootloader、內(nèi)核、文件系統(tǒng)以及用戶程序4大部分,它們的可執(zhí)行映像存放在系統(tǒng)的存儲設(shè)備上。在FLASH空間上存儲的順序如下:0~128 kB用于存儲啟動代碼(VIVI);128~192 kB用于存儲啟動參數(shù);192 kB~3 MB用于存儲內(nèi)核映像,3 MB以上用于存儲文件系統(tǒng),其余為用戶程序。FLASH存儲結(jié)構(gòu)如圖1所示。

        1.3 交叉開發(fā)環(huán)境搭建

        基于Linux 操作系統(tǒng)的應(yīng)用開發(fā)環(huán)境一般是由目標(biāo)系統(tǒng)的硬件系統(tǒng)和宿主PC機構(gòu)成。目標(biāo)硬件系統(tǒng)用于運行操作系統(tǒng)和系統(tǒng)應(yīng)用軟件,而目標(biāo)硬件系統(tǒng)所用到的操作系統(tǒng)的內(nèi)核編譯、應(yīng)用程序的開發(fā)需要通過宿主PC機來編譯完成。雙方之間可以通過建立以太網(wǎng)接口、USB等來調(diào)試編譯好的驅(qū)動或應(yīng)用程序。當(dāng)編譯、調(diào)試通過后,再添加到內(nèi)核中去。首先要正確安裝Linux操作系統(tǒng),下面介紹用Crosstool制作交叉工具鏈。

        首先下載所需要的資源文件[3]

        Crosstol-0.4.2.tar.gz,binutils-2.15.tar.bz2,gcc-3.3.6.tar.gz,glibc-2.3.2.tar.gz,linux-lib-header-2.6.12.0.tar.bz2,glibc-linxuthreads-2.3.2.tar.gz。準(zhǔn)備好這些資源之后需要在crosstool-0.42目錄下創(chuàng)建配置文件arm.sh,指出工具鏈源碼所在位置和安裝的目錄,再修改配置文件arm.dat和gcc-3.3.6-glibc-2.3.2.dat文件,最后執(zhí)行arm.sh腳本就可以在指定目錄生成所需要的交叉編譯工具。

        2 嵌入式Linux的移植

        2.1 BootLoader的移植

        在嵌入式系統(tǒng)中,BootLoader的作用與PC 機上的BIOS 類似,通過BootlLoader可以完成對系統(tǒng)板上的主要部件如CPU,SDRAM,F(xiàn)LASH,串行口等進(jìn)行初始化,也可以下載文件到系統(tǒng)板上,對FLASH進(jìn)行擦除與編程。當(dāng)運行操作系統(tǒng)時,Bootloader會在操作系統(tǒng)內(nèi)核運行之前運行,通過它可以分配內(nèi)存空間的映射,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)準(zhǔn)備好正確的環(huán)境[4]。

        2.2 BootLoader的架構(gòu)功能

        系統(tǒng)使用的BootLoader是VIVI,VIVI是CPU加電后運行的第一段程序,其基本功能是初始化硬件設(shè)備,建立內(nèi)存空間的映射圖,從而為調(diào)用嵌入式 Linux內(nèi)核做好準(zhǔn)備。VIVI由2部分組成:一部分是依賴于CPU體系結(jié)構(gòu)的代碼,用匯編語言實現(xiàn)對硬件環(huán)境的初始化,并為第二部分代碼的執(zhí)行做好準(zhǔn)備;另一部分是用C語言實現(xiàn)內(nèi)存空間的映射,并將內(nèi)存映像和根文件系統(tǒng)映像從FLASH中讀取到RAM中,設(shè)置好啟動參數(shù)后啟動內(nèi)核。

        VIVI的stage1是BootLoader一開始就執(zhí)行的操作,其目的是為了stage2的執(zhí)行以及隨后的內(nèi)核的執(zhí)行設(shè)置好一些基本的硬件環(huán)境。其步驟如下所示:

        (1) 硬件初始化:當(dāng)上電或復(fù)位后,VIVI啟動,位于NAND中的前4 kB程序便從NANDFLASH中由S3C2410自動拷貝到SteppingStone的前4kB的內(nèi)部RAM中該RAM之后被映射到地址0x00處。此時VIVI的前4 kB代碼開始運行,關(guān)閉Watchdog,關(guān)閉中斷,初始化PLL和時鐘主頻設(shè)定,初始化存儲器設(shè)定;

        (2) 配置串口:初始化串口控制器;

        (3) 復(fù)制自身到SDRAM中:當(dāng)初始化串口結(jié)束后,VIVI開始把自身從NANDFLASH中復(fù)制到SDRAM中;

        (4) 跳轉(zhuǎn)到 stage2的入口點。VIVI的stage2階段,包括以下步驟:

        ① 繼續(xù)初始化系統(tǒng)硬件;

        ② 內(nèi)存影射初始化,內(nèi)存管理單元初始化;

        ③ 初始化堆棧;

        ④ 初始化mtd 設(shè)備;

        ⑤ 初始化私有數(shù)據(jù);

        ⑥ 初始化內(nèi)置命令;

        ⑦ 啟動VIVI。

        2.3 BootLoader的移植

        (1) 修改Malkefile,指定交叉編譯:

        ARCH = arm

        CROSS_COMPILE=/opt/crosstool/gcc-3.3.6-glibc-2.3.2/arm-linux/bin/arm-linux-

        (2) 修改/arch/s3c2410/smdk..c文件,按照上面所指定大小指定NAND分區(qū);

        (3) 編譯生成VIVI。

        2.4 Linux內(nèi)核的移植

        本實驗系統(tǒng)運行的Linux版本是針對2.6.14.1進(jìn)行移植,下載內(nèi)核代碼在/linux下,移植按照以下步驟:

        (1) 設(shè)置目標(biāo)平臺和指定交叉編譯器:

        在最上層的根目錄/Makefile文件中,首先要指定所移植的硬件平臺,以及所使用的交叉編譯器。改為如下:

        ARCH = arm CROSS_COMPILE =/opt/crosstool/gcc-3.3.6-glibc-2.3.2/arm-linux/bin/arm-linux-

        (2) 設(shè)置NAND FLASH分區(qū):

        在arch/arm/mach-s3c2410/devs.c中添加頭文件:

        #include

        #include

        #include

        (3) 將static struct mtd_partition partition_info[]中的分區(qū)和VIVI中的分區(qū)分成一樣大小。

        (4) 加入 NAND FLASH分區(qū):

        struct s3c2410_nand_set nandset = {nr_partitions:5,partitions:partition_info,};

        (5) 建立芯片支持

        struct s3c2410_platform_nand superlpplatform =

        {tacls:0,twrph0:30,twrph1:0,sets:nandset,nr_set s:1,};

        (6) 在NAND FLASH驅(qū)動里加入NAND FLASH 芯片支持:

        在s3c_device_ nand中增加dev = {.platform_data =super-lpplatform}。

        (7) 在 arch/arm/machs3c2410/ machsmdk2410.c 中的__initdata 部分增加 s3c_device_ nand,使內(nèi)核啟動時初始化 NAND FLASH信息。

        (8)去掉NADD FLASH的ECC,修改drivers/mtd/nand/s3c2410.c,在s3c2410_nand_init_chip函數(shù)里修改NAND_ECC_SOFT為NAND_ECC_NON。

        (9) 配置編譯項,通過在終端下輸入命令make menuconfig來對Linux進(jìn)行配置,配置完成后通過輸入命令:make 即可在/arch/arm/boot下生成所需要的內(nèi)核文件zImage。

        2.5 制作文件系統(tǒng)

        Cramfs被設(shè)計為簡單的較小的可壓縮的文件系統(tǒng),它主要用于較小ROM的嵌入式系統(tǒng),它是一個壓縮的文件系統(tǒng),本系統(tǒng)采用Cramfs文件系統(tǒng)。

        可以利用工具軟件Busboy和MKCRAMFS制作CRAMFS文件系統(tǒng)。首先在本地建立根文件系統(tǒng)myroot,然后在其目錄下建立所需要的子目錄,如bin,dev,etc,lib,mnt,proc,sbin,usr等。建立好目錄之后要給各相應(yīng)的目錄復(fù)制相應(yīng)的文件或庫,可以通過BusyBox來實現(xiàn)。BusyBox是一個可配置的工具。通過make menuconfig 配置完成BusyBox后,修改BusyBox的Makefile內(nèi)容,使用交叉編譯環(huán)境。然后通過make 命令進(jìn)行編譯,make install進(jìn)行安裝,再將生成的目錄下的相應(yīng)文件復(fù)制到所構(gòu)建的文件系統(tǒng)的相應(yīng)目錄下,然后編寫相應(yīng)的linuxrc等文件。完成這些步驟后,利用MKCRAMFS工具來制作所需要的文件系統(tǒng),只需要在終端通過命令mkcramfs myroot myroot.crarmfs就可以把myroot制作成只讀的壓縮的cramfs文件系統(tǒng)。

        2.6 內(nèi)核及文件系統(tǒng)的下載

        利用VIVI通過超級終端重新下載VIVI,內(nèi)核和root,在Windows下啟動超級終端,或者Linux下啟動Minicom設(shè)置其為(115200,8位數(shù)據(jù),1位停止位,無奇偶校驗),用串口線連接實驗系統(tǒng)和 PC 機的串口。系統(tǒng)上電后,在VIVI命令行下操作:

        下載VIVI:輸入vivi> load FLASH vivi x,之后,通過 xmodem 協(xié)議發(fā)送vivi 文件;

        下載內(nèi)核:輸入vivi> load FLASH kernel x,通過 xmodem 協(xié)議發(fā)送內(nèi)核文件;

        下載文件系統(tǒng):輸入vivi> load FLASH root x,通過 xmodem 協(xié)議發(fā)送root文件系統(tǒng)。

        3 結(jié) 語

        針對嵌入式Linux的構(gòu)建,以S3C2410處理器為例,詳細(xì)闡述整個Linux系統(tǒng)構(gòu)建的原理框架和移植的方法,對移植中的關(guān)鍵技術(shù)和重要步驟給出了詳細(xì)的說明。移植后的Linux 系統(tǒng)在開發(fā)板上運行穩(wěn)定,性能良好。操作過程對嵌入式Linux系統(tǒng)在其他處理器上的移植也具有參考意義。

        參考文獻(xiàn)

        [1]劉振綱,劉成安,盧劍翔.移植標(biāo)準(zhǔn)Linux到S3C2410[J].微計算機信息,2006(11):152-153.

        [2]陶列駿,潘金貴.Linux的可移植性[J].小型微型計算機系統(tǒng),2002(1):50-53.

        [3]李亞鋒,歐文盛.ARM嵌入式Linux系統(tǒng)開發(fā)[M].北京:清華大學(xué)出版社,2007.

        [4]張杰,吳敏,曹衛(wèi)華.基于S3C2410的Linux移植[J].微型電腦應(yīng)用,2005(3):57-59.

        [5]章曉明,杜春燕,陸建德.HHPPC8245上的嵌入式Linux移植及VPN開發(fā)[J].計算機工程,2007(1):274-276.

        [6]陳峰,李濱滔,戈志華.基于S3C2410的嵌入式 Linux系統(tǒng)構(gòu)建[J].現(xiàn)代電子技術(shù),2007,30(24):55-57.

        [7]劉明博,鄧中亮.基于ARM的嵌入式操作系統(tǒng)移植的研究[J].計算機系統(tǒng)應(yīng)用,2006(11):87-88.

        [8]許榮.基于AT91RM9200的嵌入式Linux系統(tǒng)移植[J].電子技術(shù),2006(3):64-68.

        [9]Daniel P.Bovel Understanding the Linux Kernel[M].2ndEdition.OReilly,2002.

        [10]CPU:Samsung Electronics Co.Ltd.User′ManuaL S3C2410X 32-Bit RISC Micro-processor Revision1.2.2004

        作者簡介 李 晶 男,1983年出生,碩士研究生。主要研究方向為嵌入式系統(tǒng)。

        国产日产韩国av在线| 中文字幕永久免费观看| 亚洲av午夜福利精品一区二区| 国产一区二区三区的区| 国产精品白浆在线观看免费| 九月婷婷人人澡人人添人人爽| 手机看片福利日韩国产| 国产成人亚洲综合二区| 久久亚洲av成人无码电影| 亚洲av无码之国产精品网址蜜芽| 98在线视频噜噜噜国产| 中文字幕一区二区三区喷水| 蜜桃传媒免费在线播放| 久久久久香蕉国产线看观看伊| 亚州AV无码乱码精品国产| 亚洲一区二区三区av无| av网站免费线看精品| 熟妇的荡欲色综合亚洲| 日韩最新在线不卡av| 色婷婷精品大在线视频| 人妻丰满熟av无码区hd| 丰满爆乳无码一区二区三区| 成美女黄网站18禁免费| 男女射精视频在线观看网站| 亚洲精品久久久久avwww潮水| 999国产一区在线观看| 国产精品亚洲一区二区三区正片 | 亚洲AV无码成人品爱| 色综合中文字幕综合网| 精品免费国产一区二区三区四区| 搡老熟女老女人一区二区| 亚洲xx视频| 人妖一区二区三区在线| 日韩欧美亚洲综合久久影院ds| 91精品国产91久久久无码95| 女同另类专区精品女同| 人人妻人人做人人爽| 区二区欧美性插b在线视频网站| 开心五月婷婷综合网站| 娇小女人被黑人插免费视频| 毛片24种姿势无遮无拦|