999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

摘 要:Linux被廣泛的應(yīng)用在嵌入式領(lǐng)域,根據(jù)實(shí)際需要構(gòu)建一個(gè)自己的嵌入式Linux變得尤為重要。根據(jù)實(shí)際需要介紹嵌入式Linux系統(tǒng)的構(gòu)建,框架及其移植技巧,并以三星公司的S3C2410處理器芯片為例,將開源Linux操作系統(tǒng)移植到此ARM處理器上,詳細(xì)闡述開發(fā)環(huán)境的搭建,Bootloader的架構(gòu)及功能,內(nèi)核及文件系統(tǒng)的編譯及移植技巧。實(shí)驗(yàn)證明,移植后的系統(tǒng)運(yùn)行穩(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)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適用于對功能、可靠性、成本、體積、功耗等有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式Linux是按照嵌入式操作系統(tǒng)的要求設(shè)計(jì)的一種小型操作系統(tǒng),非常適合于移植到嵌入式系統(tǒng)中。嵌入式Linux應(yīng)用最廣泛的地方就是基于ARM地應(yīng)用,ARM芯片是一種高性能、低功耗地RISC芯片,被廣泛地應(yīng)用于各個(gè)領(lǐng)域[1,2]

目前,基于ARM核的處理器成為市場的主流,建立面向ARM架構(gòu)的操作系統(tǒng)成為人們研究的熱點(diǎn),而Linux由于它的開源性,被廣泛地應(yīng)用于嵌入式系統(tǒng)中,任何人都可以根據(jù)自己的需要來對其進(jìn)行裁減,以適應(yīng)自己的系統(tǒng)。根據(jù)實(shí)際需要將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用于存儲啟動(dòng)代碼(VIVI);128~192 kB用于存儲啟動(dòng)參數(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機(jī)構(gòu)成。目標(biāo)硬件系統(tǒng)用于運(yùn)行操作系統(tǒng)和系統(tǒng)應(yīng)用軟件,而目標(biāo)硬件系統(tǒng)所用到的操作系統(tǒng)的內(nèi)核編譯、應(yīng)用程序的開發(fā)需要通過宿主PC機(jī)來編譯完成。雙方之間可以通過建立以太網(wǎng)接口、USB等來調(diào)試編譯好的驅(qū)動(dòng)或應(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 機(jī)上的BIOS 類似,通過BootlLoader可以完成對系統(tǒng)板上的主要部件如CPU,SDRAM,F(xiàn)LASH,串行口等進(jìn)行初始化,也可以下載文件到系統(tǒng)板上,對FLASH進(jìn)行擦除與編程。當(dāng)運(yùn)行操作系統(tǒng)時(shí),Bootloader會(huì)在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行,通過它可以分配內(nèi)存空間的映射,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)準(zhǔn)備好正確的環(huán)境[4]

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

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

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

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

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

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

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

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

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

③ 初始化堆棧;

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

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

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

⑦ 啟動(dòng)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)核的移植

本實(shí)驗(yàn)系統(tǒng)運(yùn)行的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ū)動(dòng)里加入NAND FLASH 芯片支持:

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

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

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

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

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

Cramfs被設(shè)計(jì)為簡單的較小的可壓縮的文件系統(tǒng),它主要用于較小ROM的嵌入式系統(tǒng),它是一個(gè)壓縮的文件系統(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來實(shí)現(xiàn)。BusyBox是一個(gè)可配置的工具。通過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下啟動(dòng)超級終端,或者Linux下啟動(dòng)Minicom設(shè)置其為(115200,8位數(shù)據(jù),1位停止位,無奇偶校驗(yàn)),用串口線連接實(shí)驗(yàn)系統(tǒng)和 PC 機(jī)的串口。系統(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ì)闡述整個(gè)Linux系統(tǒng)構(gòu)建的原理框架和移植的方法,對移植中的關(guān)鍵技術(shù)和重要步驟給出了詳細(xì)的說明。移植后的Linux 系統(tǒng)在開發(fā)板上運(yùn)行穩(wěn)定,性能良好。操作過程對嵌入式Linux系統(tǒng)在其他處理器上的移植也具有參考意義。

參考文獻(xiàn)

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

[2]陶列駿,潘金貴.Linux的可移植性[J].小型微型計(jì)算機(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].計(jì)算機(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].計(jì)算機(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年出生,碩士研究生。主要研究方向?yàn)榍度胧较到y(tǒng)。

主站蜘蛛池模板: 日韩高清中文字幕| 极品av一区二区| 精品撒尿视频一区二区三区| 精品国产成人av免费| 日韩av无码DVD| 国产产在线精品亚洲aavv| 黄色网页在线播放| 四虎精品黑人视频| 无码精品一区二区久久久| 91娇喘视频| 天堂在线视频精品| 无码一区中文字幕| 有专无码视频| 欧美日韩一区二区三| 熟女成人国产精品视频| 在线观看国产小视频| 久久精品国产91久久综合麻豆自制| 亚洲一本大道在线| 亚洲欧洲美色一区二区三区| 澳门av无码| 久草视频一区| 男人天堂亚洲天堂| 午夜激情婷婷| 114级毛片免费观看| 国产jizz| 97se亚洲| 欧美亚洲一区二区三区在线| 国产99久久亚洲综合精品西瓜tv| 日韩无码真实干出血视频| 国产xx在线观看| 免费a级毛片18以上观看精品| 1024你懂的国产精品| 国产精品99在线观看| 99久久免费精品特色大片| 99热亚洲精品6码| 亚洲欧美日韩中文字幕一区二区三区| 欧美激情成人网| 午夜少妇精品视频小电影| 九九九精品视频| 色噜噜在线观看| 亚洲日本中文综合在线| 99热最新网址| 国内精自线i品一区202| 久久精品这里只有国产中文精品| 国产一在线观看| 直接黄91麻豆网站| 欧美在线天堂| 国产福利一区二区在线观看| 热这里只有精品国产热门精品| 2019国产在线| 国产精品永久不卡免费视频| 欧美性色综合网| 日本一区二区三区精品AⅤ| 综合久久久久久久综合网| 东京热一区二区三区无码视频| 亚洲香蕉久久| 中文字幕亚洲精品2页| 国产欧美日韩va| 欧美成人精品在线| www.av男人.com| 在线欧美日韩国产| 国产精品 欧美激情 在线播放| 在线欧美日韩国产| 亚洲精品视频免费| 国产亚洲高清视频| 黄色在线不卡| 毛片网站在线看| 男女精品视频| 国产一级精品毛片基地| 免费不卡视频| 国产一二三区在线| 亚洲天堂网2014| 日本免费福利视频| 国产免费自拍视频| 91青草视频| 97国产在线观看| 日韩在线视频网站| 亚洲欧美成人在线视频| 国产特一级毛片| 五月激情综合网| av午夜福利一片免费看| 亚洲婷婷在线视频|