《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > Linux內核在S3C2410上移植的研究
Linux內核在S3C2410上移植的研究
山西電子技術
荀艷麗
摘要: 以研究將Linux內核移植到嵌入式系統的技術為目的,描述了Linux-2.4.18.-rm7-pxal移植到S3C2410處理器目標板上的方法。詳細介紹了Linux內核移植方法與步驟,并說明了如何搭建移植環境。結果表明,該方法簡單實用,達到了預定目標。
Abstract:
Key words :

嵌入式系統就是以應用為中心,以計算機技術為基礎的軟、硬件可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。Linux操作系統是一種性能優良、源碼公開且被廣泛應用的免費操作系統,由于其體積小,可裁減,運行速度高等優點,因此可以作為研究嵌入式操作系統和非實時操作系統的典范。EL-ARM-830+型教學實驗系統是一種綜合的教學實驗系統,該系統采用了ARM92 0T核,32位微處理器,實現了多模塊的應用實驗。在實驗板上有豐富的外圍擴展資源,可以完成ARM的基礎實驗、算法實驗和數據通信實驗、以太網實驗。

1 Linux的實驗環境搭建
1.1 Redhat9.0操作系統的安裝
安裝Redhat9.0前,先把串口配置好,這是建立Linux系統和試驗箱之間的串口通信。配置完以后在啟動Linux系統時點擊全屏,這樣做的目的是讓Linux系統占取網絡資源。點擊VM→setting在彈出的窗口點擊左下角的Add按鈕,此時選擇serial Port,依次點擊“下一步”,直到配置完串口。
1.2 配置NFS網絡文件系統
首先在Linux主機的終端上執行setup,彈出菜單界面后,選中Firewall configuration,回車,進入系統服務選項菜單,選擇no firew all關閉防火墻(如果安裝了防火墻),按空格鍵就會選中,然后退出。但是,setup里面會照樣顯示防火墻設置是high的,這個可以不必理會。之后選中System services,回車,進入系統服務選項菜單,在其中選中[*]nfs,然后按F12鍵退出,再選擇方向鍵,退出setup界面,返回到命令提示符下。利用編輯器打開/etc/exports文件(輸入命令vi/etc/exports),按A進入文本輸入模式,將這個默認的空文件修改為只有如下一行內容:
/(rw)
/home/nfs
然后,保存退出(按ESC鍵進入命令模式,輸入:進入到最后行模式,輸入wq!保存退出),之后改變目錄到/etc/rc.d/init.d/下(輸入命令cd/etc/rc.d/init.d/),執行如下命令:
./nfs start
終端內輸出:
Starting NFS services:[確定]
Starting NFS quotas:[確定]
Starting NFS daemon:[確定]
Starting NFS mountd:[確定]
(1)安裝交叉編譯器。打開Linux系統下的終端,在里面輸入命令cd/linuette/RPMS/改變目錄到/linuette/RPMS下,輸入如下命令:
#rpm-UVh*.rpm
等待系統安裝,如果所有的RPMS內的文件全部正確安裝,將會在根目錄下的/opt文件夾內生成一個host文件夾,交叉編譯庫就在該目錄下,到此交叉編譯環境就搭建好了。
(2)用交叉網線連接主機和實驗系統。在Linux的開始菜單里啟動終端,在終端[root@localhost root]#minicom-s回車,按S鍵選擇Seri al Port setup回車,彈出串行口設置界面,按A鍵編輯Serial Device:/dev/ttys0回車;按E鍵,再按I鍵,回車,選擇為Bps/Par/Bit s:115200 8N1回車;按F鍵,選擇Hardware Flow Control:No。設置完后回車,然后用上下選擇鍵,選中Modem and dialing,將Initstri ng,Reset string,Hang-up string設置為空,再選中Save setup as df1這一項,回車,保存為默認的配置,下次進入minicom時就不用再設置了。用上下選擇鍵選中Exit回車退出設置,進入minicom。
(3)Linux系統下網絡設置。點擊左下角的小紅帽,選擇系統設置一網絡,然后雙擊設備eth0的藍色區域,進入以太網設置界面,在靜態設置IP地址欄下面輸入與宿主機一個網段的IP地址、網關及子網掩碼,確定后激活網絡設備。
(4)Ping通主機和實驗系統。在minicom下,給系統上電,系統正常起來后,利用ifconfig eth0 xxx.xxx.xxx.xxx來改變實驗系統的IP地址,讓該地址的前三段和主機的前三段一致,最后的一段,可以選擇與主機不重復的小于255的任意值。利用mount命令,掛載主機的nfs系統下的共享目錄。
利用命令chmod 777/home/nfs改變/home/nfs文件夾的屬性,讓其變為可讀可寫,輸入mount-onolock 192.168.0.1:/home/n fs/mnt/yaffs回車,即可完成把主機上的/home/nfs下的文件掛載到實驗系統的/mnt/yaffs目錄下。

2 BootLoder引導程序的移植
在嵌入式系統中,BootLoader的作用與PC機上的BIOS類似,通過.BootlLoader可以完成對系統板上的主要部件如CPU,SDRAM,FLASH、串行口等進行初始化,也可以下載文件到系統板上,對FLASH進行擦除與編程。當運行操作系統時,它會在操作系統內核運行之前運行,通過它,可以分配內存空間的映射,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用操作系統準備好正確的環境。因此,正確建立Linux移植的前提條件是具備一個與Linux配套、易于使用的Boot Loader,它能夠正確完成硬件系統的初始化和Linux的引導。
系統使用的BootLoader是VIVI。VIVI是CPU加電后運行的第一段程序,其基本功能是初始化硬件設備,建立內存空問的映射圖,從而為調用嵌入式Linux內核做好準備。為能夠實現正確引導Linux系統的運行,以及當編譯完內核后,快速下載內核和文件系統,VIVI首先通過串口下載內核和文件系統,當系統正常運行起來后,網絡驅動正常運行后,VIVI就通過網口下載內核和文件系統。同時,它也具有功能較為完善的命令集,對系統的軟硬件資源進行合理的配置與管理。

當上電或復位后,VIVI啟動,位于NANDFLASH中的前4 KB程序便從NANDFLASH中由S3C2410自動拷貝到一個叫SteppingStone的4 KB的內部RAM中,該RAM之后被映射到地址0x00處。此時,也就是VIVI前4 KB代碼開始運行,進行第一階段的硬件初始化,主要工作為:關Watchdog Timer,關中斷,初始化PLL和時鐘主頻設定,初始化存儲器控制器。VIVI初始化的主要內容:
VIVI初始化階段一(在/arch/s3C2410/head.s文件內):
硬件初始化
配置串口
復制自身到SDRAM中(跳轉到C代碼入口函數)
VIVI初始化階段二(在/init/main.c文件內):
對硬件系統繼續初始化
內存映射初始化、內存管理單元MMU初始化
初始化堆
初始化mtd設備
初始化私有數據
初始化內置命令
啟動VIVI

3 Linux內核的移植
3.1 內核移植
實驗系統運行的Linux版本是針對2.4.18進行移植的Linux-2.4.18.-rm7-pxal版本。本實驗是把該移植好的內核,讓它如何在自己的硬件系統上正常的運轉起來。
Linux內核主要由5個子系統組成:進程調度子系統、進程間通信子系統、內存管理子系統、虛擬文件系統子系統、網絡接口子系統。
(1)設置目標平臺和指定交叉編譯器:在最上層的根目錄/Makefile文件中,首先要指定所移植的硬件平臺,以及所使用的交叉編譯器。改為如下:
ARCH:=arm
CROSS_COMPILE=/opt/host/armv41/bin/armv41-unknown-Linux-
也就是說,所移植的硬件平臺是ARM,所使用的交叉編譯器是存放在目錄/opt/host/armv41/bin/下的armv41-unknown-Linux-xxx等工具。
(2)arch/arm目錄下Makefile修改。系統的啟動代碼是通過這個文件產生的。在Linux-2.4.18內核中要添加如下代碼:
ifeq(MYM(CONFIG_ARCH_S3C2410),y)
TEXTADDR =0 xC0008000
MACHINE =s3c2410
endif
這里TEXTADDR確定內核開始運行的虛擬地址。
(3)arch/arm目錄下config.in修改。配置文件config.in能夠配置運行“make menuconfig”命令時的菜單選項,由于2.4.18內核中沒有S3C2410的相關信息,所以要在該文件中進行有效的配置。
(4)arch/arm/boot目錄下Makefile修改。編譯出來的內核存放在該目錄下,這里指定內核解壓到實際硬件系統上的物理地址。要根據實際的硬件系統修改解壓后,內核開始運行實際的物理地址。
(5)arch/arm/boot/compressed目錄下Makefile修改。該文件從vmLinux中創建一個壓縮的vmlinuz鏡像文件。該文件中用到的SYSTE M,ZTEXTADDR,ZBSSADDR和ZRELADDR是從arch/arm/boot/Makefile文件中得到的。添加如下代碼:
ifeq(MYM(CONFIG_ARCH_S3C2410),y)
OBJS+=head-s3c2410.o
Endif
(6)arch/arm/boot/compressed目錄下添加head-s3c2410.s。該文件主要用來初始化處理器。
(7)arch/arm/def-configs目錄下添加配置好的S3C2410的配置文件。
(8)arch/arm/kernel目錄下Makefile修改。該文件主要用來確定文件類型的依賴關系。
(9)arch/arm/kernel目錄下的文件debug-armv.s修改。在該文件中添加如下代碼,目的是關閉外圍設備的時鐘,以保證系統正常運行。
(10)arch/arm/kernel目錄下的文件entry-armv.s修改,CPU初始化時處理中斷的匯編代碼。
(11)arch/arm/ram目錄下的相關文件。那里面則是移植好的有關arm的內存管理代碼。
(12)arch/arm/mach-s3c2410目錄下的相關文件。
那里面則是針對s3c2410這款處理器編寫的所需代碼。
3.2 制作cramfs文件系統
利用工具軟件MKCRAMFS制作cramfs文件系統,MKCRAMFS工具在/實驗軟件/tools/目錄下,該文件系統是一個只讀壓縮的文件系統,文件系統類型可以是ext2,ext3等。這里提供的一個系統目錄是root_tech,它里面包含將來要用到的所有文件,它在/實驗軟件/source_ code/的目錄內,為root.tar.bz2。把制作工具和root_tech放在同一個文件夾下并對root.tar.bz2進行解壓,在終端下切換到那個文件夾目錄下使用命令MKCRAMFS root_tech rootfs.cramfs,就可把root_tech制作成文件名為rootfs.cramfs的只讀的壓縮的cramfs文件系統了。系統啟動后,內核將把它加載到內存中,解壓。

4 結語
本文針對一個特定的目標平臺,提供了構建一個基本嵌入式Linux系統的過程與方法。對Linux 2.4內核版本進行裁減、移植,編譯生成的內核在S3C2410處理器的目標板上成功運行,且保留了Linux原有的工作穩定的特點。將Linux操作系統移植于嵌入式系統中作為嵌入式系統的底層研發平臺是一個復雜的問題,移植后系統的實時性、穩定性、安全性和精簡程度等方面問題還需要在以后的設計中進一步研究。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
99天天综合性| 蜜桃久久av一区| 亚洲精品国精品久久99热一 | 亚洲经典自拍| 狠狠88综合久久久久综合网| 国产精品久久久久久福利一牛影视| 欧美日韩国产精品一区| 欧美理论片在线观看| 欧美激情亚洲自拍| 欧美日本国产精品| 欧美日韩成人综合天天影院| 欧美巨乳在线| 欧美日韩中文字幕日韩欧美| 欧美视频在线观看一区二区| 国产精品久久77777| 国产精品你懂的在线| 国产精品一级| 国产亚洲精品bt天堂精选| 国产一区二区三区日韩| 黑人一区二区| 亚洲国内欧美| 一本色道久久综合亚洲二区三区| 亚洲视频在线观看视频| 亚洲一区在线播放| 性娇小13――14欧美| 亚洲成在人线av| 亚洲免费观看| 亚洲资源在线观看| 欧美一区日本一区韩国一区| 久久免费视频这里只有精品| 欧美 日韩 国产精品免费观看| 欧美久久久久久蜜桃| 欧美性大战xxxxx久久久| 国产精品素人视频| 国产一区深夜福利| 在线观看亚洲专区| 一区二区91| 欧美在线观看一区二区三区| 亚洲精品乱码久久久久久黑人| 亚洲午夜日本在线观看| 欧美专区18| 欧美激情视频网站| 国产精品v欧美精品v日本精品动漫 | 一区二区三区四区在线| 午夜精品免费| 狂野欧美激情性xxxx欧美| 欧美日韩激情小视频| 国产精品夜夜夜| 亚洲国产成人91精品| 正在播放亚洲| 久久精品国产v日韩v亚洲 | 狠狠综合久久| 日韩性生活视频| 欧美伊人久久| 一区二区三区不卡视频在线观看| 欧美在线免费看| 欧美大片专区| 国产精品免费小视频| 在线观看亚洲一区| 亚洲一区二区在线免费观看视频| 亚洲国产精品一区二区www在线| 国产精品99久久99久久久二8| 久久久久久成人| 欧美日韩免费观看一区三区| 国产在线观看91精品一区| 日韩一区二区免费看| 欧美伊人影院| 亚洲午夜在线观看| 美女视频黄a大片欧美| 国产精品久久婷婷六月丁香| 在线看片第一页欧美| 亚洲综合色婷婷| 一本色道久久综合亚洲精品小说| 久久精品国产99国产精品澳门 | 欧美色道久久88综合亚洲精品| 国产一区二区三区丝袜| 日韩网站在线看片你懂的| 久久精品亚洲精品国产欧美kt∨| 亚洲一区二区三区国产| 欧美chengren| 国内精品久久久久久久果冻传媒| 一区二区三区|亚洲午夜| 亚洲三级电影全部在线观看高清| 久久成人羞羞网站| 欧美私人网站| 亚洲欧洲午夜| 亚洲黄色一区| 久久久一二三| 国产午夜精品理论片a级大结局 | 亚洲巨乳在线| 久久最新视频| 国产亚洲激情| 亚洲欧美在线播放| 亚洲欧美成人在线| 欧美日韩国产综合新一区| 亚洲电影免费在线观看| 性做久久久久久| 欧美亚洲一区二区在线| 国产精品成人一区二区| 亚洲美女啪啪| 日韩视频不卡| 欧美激情亚洲国产| 亚洲国产精品第一区二区三区| 久久精品99无色码中文字幕| 久久国内精品视频| 国产女优一区| 午夜欧美精品| 久久国产精品一区二区三区| 国产精品毛片a∨一区二区三区|国| 亚洲精一区二区三区| 亚洲毛片在线| 欧美国产一区二区在线观看| 亚洲第一久久影院| 亚洲欧洲综合另类在线| 免费在线观看日韩欧美| 亚洲大胆视频| 亚洲精品久久久久久久久| 美女视频黄免费的久久| 在线精品视频一区二区| 亚洲大胆女人| 蘑菇福利视频一区播放| 亚洲国产91色在线| 99国产精品久久久久久久| 欧美精品久久99久久在免费线| 亚洲国产婷婷综合在线精品| 亚洲欧洲在线看| 欧美激情中文不卡| 99riav久久精品riav| 亚洲免费在线观看视频| 国产精品视频久久久| 午夜亚洲性色福利视频| 久久成人精品| 韩日视频一区| 亚洲黄色性网站| 欧美日产国产成人免费图片| 日韩亚洲欧美一区二区三区| 亚洲主播在线观看| 国产日韩欧美夫妻视频在线观看| 欧美一激情一区二区三区| 老司机一区二区三区| 亚洲人精品午夜| 亚洲午夜高清视频| 国产精品五月天| 久久精品电影| 欧美国产日韩一区二区| 999亚洲国产精| 午夜亚洲福利在线老司机| 国产日韩专区| 亚洲精品日韩在线| 欧美色精品天天在线观看视频 | 裸体歌舞表演一区二区| 亚洲激情视频网站| 亚洲欧美另类在线观看| 国产一区二区视频在线观看| 亚洲人成在线观看网站高清| 欧美日韩亚洲一区在线观看| 亚洲欧美国产精品va在线观看| 久久精品国产在热久久| 亚洲国产精品一区在线观看不卡| 中文在线不卡视频| 国产日韩欧美视频| 亚洲美洲欧洲综合国产一区| 国产精品久久久久久久浪潮网站 | 免费成人黄色片| 一区二区三区精品视频在线观看 | 亚洲国产美女精品久久久久∴| 中文有码久久| 国产自产精品| 亚洲天堂久久| 国产一区二区无遮挡| 一区二区av在线| 国产日本欧美在线观看| 日韩视频在线免费观看| 国产三区精品| 一区二区三区免费网站| 国产一二三精品| 亚洲视频一区在线观看| 国内精品久久久| 亚洲永久字幕| 亚洲国产激情| 久久精品成人欧美大片古装| 亚洲精品婷婷| 久久伊人一区二区| 亚洲一区三区电影在线观看| 欧美高清不卡| 欧美亚洲一区| 欧美午夜在线一二页| 亚洲日本无吗高清不卡| 国产精品一区二区视频| 一本色道久久综合一区| 激情久久影院| 欧美一区2区三区4区公司二百| 亚洲精品乱码久久久久久| 久久一区二区三区国产精品 | 国内自拍视频一区二区三区| 亚洲欧美国产精品专区久久| 亚洲日本va午夜在线影院| 久久久人成影片一区二区三区观看| 99re热这里只有精品视频 | 欧美日韩精品不卡|