《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于S3C2410的嵌入式Linux系統(tǒng)構建
基于S3C2410的嵌入式Linux系統(tǒng)構建
搜易科技網
摘要: 通過對嵌入式系統(tǒng)arni平臺的構建,分析bootloadervivj的功能.闡述了linux內核的移植,同時也解釋r制作yaffs2文件系統(tǒng)的步驟和方法.意在給嵌入式系統(tǒng)平臺的搭建有個整體的把握和認識,以降低進入arm嵌入式開發(fā)應用領域的門檻,進一步推進嵌入式軟硬件開發(fā)的進程。
關鍵詞: S3C2410 嵌入式Linux
Abstract:
Key words :

 目前,在嵌入式系統(tǒng)中基于arm微核的嵌入式處理器已經成為市場主流。隨著arm技術的廣泛應用,建立面向arm構架的嵌入式操作系統(tǒng)成為當前研究的熱點問題。
  已經涌現(xiàn)出許多嵌入式操作系統(tǒng),如vxwork,windows-ce,palmos,linux等。在眾多的嵌入式操作系統(tǒng)中,linux以其開源代碼及免費使用倍受開發(fā)人員的喜愛。本文選用的微處理器s3c2410" title="s3c2410">s3c2410是基于32位arm920t內核的微處理器,基于此處理器構造一linux嵌入式操作系統(tǒng),將其移植到基于32位的arm920t內核的系統(tǒng)中,在此基礎上進行應用程序開發(fā)。

l開發(fā)環(huán)境介紹

1.1 基于s3c2410 arm920t的硬件平臺

該系統(tǒng)的硬件平臺為深圳旋極公司提供,硬件的核心部件為三星$3c2410 arm920t芯片,外圍還包括:64 m nand flash和ram外圍存儲芯片;串口、網口和usb外圍接口;cstn lcd和觸摸屏外圍顯示設備;udal34lts的外圍音頻設備。s3c2410處理器和外圍設備共同構成了基于arm920t的開發(fā)板。

1.2嵌入式limlx軟件系統(tǒng)

嵌入式linux" title="嵌入式linux">嵌入式linux的軟件系統(tǒng)包括以下4個部分:引導加載程序vivi;linux2.6.14內核;yaffs2文件系統(tǒng)以及用戶程序。他們的可執(zhí)行映像依次存放在系統(tǒng)存儲設備上.


與通常的嵌入式系統(tǒng)布局有所不同,本系統(tǒng)在引導加載程序和內核映像之間還增加了一個啟動參數(shù)區(qū),在這個區(qū)里存放著系統(tǒng)啟動參數(shù)。引導加載程序通過調用這些參數(shù)來決定啟動模式、啟動等待時間等,這些啟動參數(shù)的增加加強了系統(tǒng)的靈活性。本系統(tǒng)采用64 m nandflash的存儲設備。


  2嵌入式linux系統(tǒng)設計與實現(xiàn)

2.1 引導加載程序vivi

2.1.1 vivi的基本功能

該系統(tǒng)使用的:bootloader是vivi,vivi是韓國miziresearch公司為其開發(fā)的smdk2410開發(fā)板編寫的一款引導程序。vivi是cpu加電后運行的第一段程序,其基本功能是初始化硬件設備、建立內存空間的映射圖,從而為調用嵌入式linux內核做好準備。

vivi由2部分組成:一部分是依賴于cpu體系結構的代碼,用匯編語言實現(xiàn)對硬件環(huán)境的初始化,并為第二部分代碼的執(zhí)行做好準備;另部分是用c語言實現(xiàn)內存空間的映射,并將linux內存映像和根文件系統(tǒng)映像從flash上讀到ram空間中,設置好啟動參數(shù),最后調用內核。

2.1.2 bootloadcrvivi移植

從網站www.mizi.com下載vivi源碼并解壓,按以下步驟進行移植,該系統(tǒng)使用arm-gcc一2.95.2對vivi進行編譯。

(1)指定/vivi/makefile文件中的cross-com-pile,linux-include-dir,arm-gcc-libs,如下面的參考路徑:

linux_include_dir=/opt/host/armv41/include/;

cross_compile=/opt/host/armv41/bin/armv41一ud-

known-linux一:

arm-gcc-libs=/opt/host/armv41/lib/gcc-lib/ar-

mv41一unknown-linux/2.95.2:

(2)修改/vivi/arch/s3c2410/smdk.c文件里的mtd-par-tition-t default-mtd-partitions[]分區(qū)內容如表1所示;

(3)增加/vivi/lib/loadyaffs.c文件,實現(xiàn)燒寫yaffs2

映像文件;修改/vivi/lib/config_cmd.in,增加如下一行:bool'load yaffs to flash command'config-load-yaffs,使得loadyaffs命令可作為可選項;

(4)執(zhí)行make distclean:清理vivi編譯環(huán)境;執(zhí)行make menuconfig進行對vivi裁剪,根據實際情況進行選擇,注意要選上"[*]load ya

ffs to flash command"因為這里用的是yaffs2文件系統(tǒng),需要vivi支持yaffs2映像下載;執(zhí)行make生成所需要的文件vivi;

(5)采用jtag燒寫映像到目標板nand flash的零地址處,實現(xiàn)引導程序的裝載。

2.2 linux2.6.14內核的移植

2.2.1 內核的選擇

linux內核版本的更新速度非常快,但linux的內核版本發(fā)行同linux對嵌入式處理器支持程度的發(fā)展是不同步的,因此,需要對特定的處理器體系結構選擇合適的內核,并且根據其硬件功能部件加上相應的補丁。根據$3c2410的體系結構以及外圍硬件特性,該系統(tǒng)采用linux2.6.14內核,所用的編譯器為arm-linux-gcc一3.4.1版本;由于該系統(tǒng)采用的是yaffs2文件系統(tǒng),因此需要從網上下載yaffs2.tar.gz文件,解壓并執(zhí)行"./patch.ker.sh/i.inux2.6.14"命令,對i.inux內核打補丁使其支持yaffs2文件系統(tǒng)。

2.2.2 內核的修改

(1)修改內核源碼中makefile的交義編譯項:

arm?=arm;cross一compile?=/usr/local/arm/3.4.1/bin/arm-linux一;

(2)在arch/arm/mach-s3c2410/devs.c文件中:

①增加頭文件定義:

#include

#include

#inelude

②增加static struct mtd-partition partition-info[]函數(shù),建立分區(qū)表信息,分區(qū)內容如表1所示;

③加入nand flash分區(qū):struet s3c24 1 o-nand-set nandset一{nr_partitions:5,partitions:partition-info,};

④建立nand flash 芯片支持struct s3c24 10-platform-nand superlpplatform={tacls:o,twrph0:30,twrphl:0,sets:&.nandset,nr-sets:1,};

⑤在nand flash驅動里加入nand flash芯片支持:在s3c-device-nand中增加.dev一{.platform一data一&super-lpplatform}。

(3)在arch/arm/machs3c2410/machsmdk2410.c中的一initdata部分增加&s3c-device-nand,使內核啟動時初始化nand flash信息。

(4)為了使內核支持devfs并在啟動時在/sbin/init運行之前自動掛載/dev為devfs文件系統(tǒng).修改fs/kconfig.并在menu"pseudo filesystetns"下添加如下語句:config devfs_fsbooi"/dev flie system support(obolete)default yconfig devfs-mountbool"automatically mount at boot"default ydepends on devfs fs

2.2.3 內核的編譯和加載

(1)執(zhí)行make mrproper:編譯內核前清理編譯環(huán)境。

(2)執(zhí)行make menuconfig:對內核進行配置是量體裁衣的過程.是十分復雜的過程,配置適合自已的內核可能需要多次重復的配置操作。以下根據該系統(tǒng)對部分配置做簡單介紹: boot options一一一>default kernel command st ring

noinitrd root=/dev/mtdblock3 init=/linuxrc

console--ttysac0.1 15200

說明:mtdblock3代表nand fash第4個分區(qū),他足該系統(tǒng)的root分區(qū);

floating point emulation一一一>

[*]nwfpe math emulation

#選擇在內核中使用nwfpe浮點模擬

file systems一一一>

<>second extended fs support

#去除對ext2的支持

pseudo file
[*]/proc file system support

[*]virtual memory file system support(former

shm fs)

[*]/dev file system support(obsolete)

[*]automatically mount at boot(new)

這里會看到前面修改fs/kconfig的結果,devfs已經被支持。

miscellaneous filesystems一-- >

#選擇yaffs2根文件系統(tǒng)

<*>yaffs2 file system support

------51 2 byte/page devices

[*]lets yaffs do its own ecc

[ ]use the same ecc byte order as steven hill's nand-ecc.c

一一一2048 byte (or larger)/page devices

[*]autoselect yaffs2 format

[*]disable lazy loading

(1 0)reserved blocks for checkpointing

[*]turn off wide tnodes

[]force chunk erase check

[]cache short names in ram

network file systems---〉

<*〉nfs file system support

(3)執(zhí)行make bzlmage,成功編譯后將在arch/arm/boot/下生成需要的文件zimage。

(4)在vivi提示符下,輸入"load flash kernel x"命令通過串口下載內核映像到nand flash的kernel分區(qū)中。

2.3 文件系統(tǒng)

linux采用文件系統(tǒng)組織系統(tǒng)中的文件和設備,為設備和用戶程序提供統(tǒng)一接口。他支持cramfs,jffs2.ramdisk等多種文件系統(tǒng)。本系統(tǒng)使用可讀寫的yaffs2根文件系統(tǒng)。

2.3.1 yaffs2文件系統(tǒng)簡介

yaffs2是yaffs(yet another flash file sys tem)的升級版,能更好地支持nand flash,是一種類似于jffs的專門為flash設計的嵌入式文件系統(tǒng)。與jffs相比,他減少了一些功能,因此速度更快、占用內存更少。nand flash大多采用mtd+yaffs的模式,通過yaffs文件系統(tǒng),可以像操作硬盤上的文件一樣操作flash中的數(shù)據,在系統(tǒng)斷電后數(shù)據仍然存儲在flash芯片中.

2.3.2 根文件制作

(1)建立根文件系統(tǒng)目錄root,在root目錄下建訌子日錄bin,sbin,dev,etc,proc,lib,user;

/bin:保存大多數(shù)如init.busybox,shell.文件管理實用程序等二進制文件;

/sbin:保存系統(tǒng)啟動過程通常需要的命令;

/dev:包含用在設備中的所有沒備節(jié)點;

/etc:包含系統(tǒng)的所有配置文件;

/proc:這是一個必須設置的特殊目錄,在系統(tǒng)運行之后他下面有許多內容,在某些情況下,可以通過他進行系統(tǒng)設置,許多工具能從這里獲得信息。在編譯內核時要選擇文件系統(tǒng)proc的支持; /lib:包含所有必要的庫;

/user:存放用戶程序。

(2)編譯busybox.busyh。x足一個著名的開源軟件.他以極小型的應用程序集成了一百多個最常用的linux命令,閃此享有"嵌入式linux的瑞士軍刀"的美臀。首先,從網上下載busybox源碼.該系統(tǒng)使用的是1.1.3版本;其次,執(zhí)行nlakemenuconfig命令.根據實際需求進行功能配置,該系統(tǒng)將busybox編詳為靜態(tài)連接;最后:執(zhí)行filakc a11 install進行編譯、安裝;編譯器為:arm-linux-gcc一3.4.1,安裝路徑與上述root為同一路徑。這樣在root目錄下將有腳本linuxrc.在/bin,/sbin日錄下將訂busvbox提供的指向busybox的符號連接命令集。

(3)編寫啟動腳本:一般系統(tǒng)啟動時都會按要求執(zhí)行相應的初始化操作。寫住命令仃的init=/liunxrc·這個linuxrc足指向/etc/init.d/rcs文件的一個符號連接。在rcs文件中列出了 linux仞始化要執(zhí)行的文件.例如.初始化進程init、掛載根系統(tǒng)、掛載模塊化設備驅動等。rcs的作用相當于windows中的autocxec.bat文什,由于對于不同的應用rcs的內容變化很大,因此應根據實際需要編寫rcs的內容。

(4)制作yaffs2映象:利用實用程序nlkyaffsinlage(mkvaffmage與root 目錄在同一路徑下)制作yaffs2映像root.img命令為:

#./inkyaffsimage root root. inlgroot.img就是所需要的yaffs2文件系統(tǒng);

(5)文件系統(tǒng)映像下載:在vivi提示符下,執(zhí)仃"loadyaffs root x"選擇root.inlg將文件通過串口下載到nand flash的root分區(qū)中.然后復化或重啟開發(fā)板,就可以啟動linux系統(tǒng)。

3 結 語

  通過對嵌入式系統(tǒng)arni平臺的構建,分析bootloadervivj的功能.闡述了linux內核的移植,同時也解釋r制作yaffs2文件系統(tǒng)的步驟和方法.意在給嵌入式系統(tǒng)平臺的搭建有個整體的把握和認識,以降低進入arm嵌入式開發(fā)應用領域的門檻,進一步推進嵌入式軟硬件開發(fā)的進程。

此內容為AET網站原創(chuàng),未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美日本在线播放| 狠狠88综合久久久久综合网| 久久成人综合视频| 亚洲综合导航| 夜夜爽av福利精品导航 | 一区二区三区精品久久久| 在线精品视频一区二区| 欧美激情精品久久久久久大尺度| 亚洲无吗在线| 日韩亚洲欧美中文三级| 亚洲精品乱码久久久久久日本蜜臀| 在线观看亚洲视频啊啊啊啊| 1000部国产精品成人观看| 在线观看欧美一区| 亚洲福利一区| 亚洲人成在线观看一区二区| 亚洲精品久久久久久久久久久久久| 亚洲欧洲在线看| 亚洲另类自拍| 亚洲视频网站在线观看| 亚洲一区二区在线| 午夜一区不卡| 亚洲福利专区| 99re热这里只有精品免费视频| 亚洲毛片av在线| 一区二区三区导航| 亚洲欧美日韩另类精品一区二区三区| 欧美一级播放| 麻豆成人综合网| 欧美人与性禽动交情品| 欧美图区在线视频| 国产欧美日韩免费| 在线成人激情黄色| 亚洲精品视频一区| 中日韩美女免费视频网站在线观看| 亚洲综合三区| 久久精品视频在线| 夜夜夜精品看看| 欧美一区二区女人| 免费不卡中文字幕视频| 欧美日本韩国在线| 国产乱码精品| 激情五月***国产精品| 亚洲精品网址在线观看| 亚洲午夜高清视频| 欧美一区二区黄色| 日韩视频三区| 欧美在线关看| 欧美成人亚洲| 国产精品久久久久久户外露出| 国产自产精品| 亚洲另类视频| 久久xxxx| 亚洲小视频在线观看| 久久精品人人做人人综合| 欧美激情一区二区三区蜜桃视频| 国产精品久久久久9999高清| 一区在线电影| 亚洲一级特黄| 亚洲精品日产精品乱码不卡| 午夜精品亚洲一区二区三区嫩草| 欧美/亚洲一区| 国产精品毛片在线看| 影音先锋亚洲电影| 亚洲图片欧洲图片av| 亚洲国产成人av| 亚洲欧美一区二区精品久久久| 久久夜色精品国产亚洲aⅴ| 欧美调教vk| 亚洲国产成人午夜在线一区| 亚洲欧美资源在线| 宅男噜噜噜66一区二区| 久久手机免费观看| 国产精品理论片| 亚洲精品一区久久久久久| 欧美一区二区三区久久精品茉莉花 | 你懂的亚洲视频| 国产毛片精品视频| 99ri日韩精品视频| 亚洲国产成人porn| 欧美一区二区三区的| 欧美日韩在线免费视频| 亚洲电影在线播放| 欧美在线免费观看视频| 亚洲摸下面视频| 欧美日韩精品一区二区天天拍小说| 国内精品模特av私拍在线观看| 亚洲天堂视频在线观看| 日韩亚洲国产精品| 开心色5月久久精品| 国产欧美亚洲精品| 在线亚洲精品| 亚洲视频中文| 欧美激情中文不卡| 影音先锋中文字幕一区二区| 欧美在线视频观看| 欧美在线不卡视频| 国产精品一区二区三区成人| 一区二区三区四区蜜桃| 99成人在线| 欧美激情日韩| 亚洲国产精品久久久久婷婷884 | 亚洲狼人精品一区二区三区| 最近中文字幕日韩精品| 浪潮色综合久久天堂| 国产在线播放一区二区三区| 亚洲欧美日韩爽爽影院| 新片速递亚洲合集欧美合集| 欧美视频精品一区| 99国产精品国产精品久久| 99国产精品久久久久老师| 欧美成人一区在线| 亚洲电影中文字幕| 亚洲精品国产精品国自产观看| 免费在线日韩av| 亚洲电影下载| 99riav国产精品| 欧美日韩www| 亚洲乱码国产乱码精品精天堂 | 亚洲第一主播视频| 亚洲日本在线视频观看| 嫩草成人www欧美| 亚洲高清视频在线观看| 亚洲精品永久免费精品| 欧美精品日韩一区| 亚洲靠逼com| 亚洲午夜激情| 国产精品三区www17con| 亚洲女人天堂成人av在线| 欧美一区二区在线视频| 国产一区二区精品久久91| 久久精品夜色噜噜亚洲aⅴ| 久久综合五月天婷婷伊人| 在线观看精品一区| 99在线精品观看| 欧美日韩在线播放| 亚洲在线免费观看| 久久精品综合| 亚洲大片在线| 亚洲视屏在线播放| 国产日韩欧美二区| 久久精品一二三| 欧美激情一区二区三区成人| 一区二区高清视频| 欧美在线free| 亚洲高清在线| 亚洲午夜精品视频| 国产午夜精品全部视频播放| 亚洲电影专区| 欧美日韩精品欧美日韩精品| 亚洲影院色在线观看免费| 久久久亚洲精品一区二区三区| 亚洲国产精品久久91精品| 亚洲一区二区免费看| 国产农村妇女毛片精品久久莱园子| 久久国产精品99精品国产| 欧美精品国产| 亚洲欧美国产精品桃花| 美女网站在线免费欧美精品| 日韩亚洲精品电影| 久久精品电影| 亚洲精品乱码| 久久狠狠亚洲综合| 亚洲国产婷婷香蕉久久久久久| 亚洲视频免费看| 国产在线观看91精品一区| 99热这里只有精品8| 国产精品日日摸夜夜摸av| 亚洲国产婷婷综合在线精品 | 亚洲成色精品| 亚洲自拍都市欧美小说| 极品中文字幕一区| 亚洲一区二区av电影| 韩日欧美一区二区三区| 一区二区三区欧美在线观看| 国内外成人免费激情在线视频| 99国产麻豆精品| 国产一区二区三区四区在线观看| 99人久久精品视频最新地址| 国产日韩欧美中文在线播放| 一区二区不卡在线视频 午夜欧美不卡在 | 最近中文字幕日韩精品| 西瓜成人精品人成网站| 亚洲福利在线视频| 欧美制服丝袜第一页| 亚洲三级免费电影| 久久久噜噜噜久久| 在线视频日韩精品| 欧美国产91| 久久精彩免费视频| 国产精品免费电影| 亚洲精品色婷婷福利天堂| 国产欧美一区二区三区久久| 亚洲美女网站| 狠狠综合久久av一区二区小说| 亚洲欧美第一页| 91久久精品一区| 久久日韩粉嫩一区二区三区| 亚洲五月婷婷| 欧美三级视频在线|