當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]Linux內(nèi)核在S3C2410上移植的研究

摘要:以研究將Linux內(nèi)核移植到嵌入式系統(tǒng)的技術(shù)為目的,描述了Linux-2.4.18.-rm7-pxal移植到S3C2410處理器目標(biāo)板上的方法。詳細(xì)介紹了Linux內(nèi)核移植方法與步驟,并說明了如何搭建移植環(huán)境。結(jié)果表明,該方法簡單實(shí)用,達(dá)到了預(yù)定目標(biāo)。
關(guān)鍵詞:嵌入式系統(tǒng);Linux;S3C2410;移植

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

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

2 BootLoder引導(dǎo)程序的移植
    在嵌入式系統(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í),它會在操作系統(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)境。因此,正確建立Linux移植的前提條件是具備一個(gè)與Linux配套、易于使用的Boot Loader,它能夠正確完成硬件系統(tǒng)的初始化和Linux的引導(dǎo)。
    系統(tǒng)使用的BootLoader是VIVI。VIVI是CPU加電后運(yùn)行的第一段程序,其基本功能是初始化硬件設(shè)備,建立內(nèi)存空問的映射圖,從而為調(diào)用嵌入式Linux內(nèi)核做好準(zhǔn)備。為能夠?qū)崿F(xiàn)正確引導(dǎo)Linux系統(tǒng)的運(yùn)行,以及當(dāng)編譯完內(nèi)核后,快速下載內(nèi)核和文件系統(tǒng),VIVI首先通過串口下載內(nèi)核和文件系統(tǒng),當(dāng)系統(tǒng)正常運(yùn)行起來后,網(wǎng)絡(luò)驅(qū)動正常運(yùn)行后,VIVI就通過網(wǎng)口下載內(nèi)核和文件系統(tǒng)。同時(shí),它也具有功能較為完善的命令集,對系統(tǒng)的軟硬件資源進(jìn)行合理的配置與管理。[!--empirenews.page--]
    當(dāng)上電或復(fù)位后,VIVI啟動,位于NANDFLASH中的前4 KB程序便從NANDFLASH中由S3C2410自動拷貝到一個(gè)叫SteppingStone的4 KB的內(nèi)部RAM中,該RAM之后被映射到地址0x00處。此時(shí),也就是VIVI前4 KB代碼開始運(yùn)行,進(jìn)行第一階段的硬件初始化,主要工作為:關(guān)Watchdog Timer,關(guān)中斷,初始化PLL和時(shí)鐘主頻設(shè)定,初始化存儲器控制器。VIVI初始化的主要內(nèi)容:
    VIVI初始化階段一(在/arch/s3C2410/head.s文件內(nèi)):
    硬件初始化
    配置串口
    復(fù)制自身到SDRAM中(跳轉(zhuǎn)到C代碼入口函數(shù))
    VIVI初始化階段二(在/init/main.c文件內(nèi)):
    對硬件系統(tǒng)繼續(xù)初始化
    內(nèi)存映射初始化、內(nèi)存管理單元MMU初始化
    初始化堆
    初始化mtd設(shè)備
    初始化私有數(shù)據(jù)
    初始化內(nèi)置命令
    啟動VIVI

3 Linux內(nèi)核的移植
3.1 內(nèi)核移植
    實(shí)驗(yàn)系統(tǒng)運(yùn)行的Linux版本是針對2.4.18進(jìn)行移植的Linux-2.4.18.-rm7-pxal版本。本實(shí)驗(yàn)是把該移植好的內(nèi)核,讓它如何在自己的硬件系統(tǒng)上正常的運(yùn)轉(zhuǎn)起來。
    Linux內(nèi)核主要由5個(gè)子系統(tǒng)組成:進(jìn)程調(diào)度子系統(tǒng)、進(jìn)程間通信子系統(tǒng)、內(nèi)存管理子系統(tǒng)、虛擬文件系統(tǒng)子系統(tǒng)、網(wǎng)絡(luò)接口子系統(tǒng)。
    (1)設(shè)置目標(biāo)平臺和指定交叉編譯器:在最上層的根目錄/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修改。系統(tǒng)的啟動代碼是通過這個(gè)文件產(chǎn)生的。在Linux-2.4.18內(nèi)核中要添加如下代碼:
    ifeq(MYM(CONFIG_ARCH_S3C2410),y)
    TEXTADDR =0 xC0008000
    MACHINE =s3c2410
    endif
    這里TEXTADDR確定內(nèi)核開始運(yùn)行的虛擬地址。
    (3)arch/arm目錄下config.in修改。配置文件config.in能夠配置運(yùn)行“make menuconfig”命令時(shí)的菜單選項(xiàng),由于2.4.18內(nèi)核中沒有S3C2410的相關(guān)信息,所以要在該文件中進(jìn)行有效的配置。
    (4)arch/arm/boot目錄下Makefile修改。編譯出來的內(nèi)核存放在該目錄下,這里指定內(nèi)核解壓到實(shí)際硬件系統(tǒng)上的物理地址。要根據(jù)實(shí)際的硬件系統(tǒng)修改解壓后,內(nèi)核開始運(yùn)行實(shí)際的物理地址。
    (5)arch/arm/boot/compressed目錄下Makefile修改。該文件從vmLinux中創(chuàng)建一個(gè)壓縮的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修改。該文件主要用來確定文件類型的依賴關(guān)系。
    (9)arch/arm/kernel目錄下的文件debug-armv.s修改。在該文件中添加如下代碼,目的是關(guān)閉外圍設(shè)備的時(shí)鐘,以保證系統(tǒng)正常運(yùn)行。
    (10)arch/arm/kernel目錄下的文件entry-armv.s修改,CPU初始化時(shí)處理中斷的匯編代碼。
    (11)arch/arm/ram目錄下的相關(guān)文件。那里面則是移植好的有關(guān)arm的內(nèi)存管理代碼。
    (12)arch/arm/mach-s3c2410目錄下的相關(guān)文件。
    那里面則是針對s3c2410這款處理器編寫的所需代碼。
3.2 制作cramfs文件系統(tǒng)
    利用工具軟件MKCRAMFS制作cramfs文件系統(tǒng),MKCRAMFS工具在/實(shí)驗(yàn)軟件/tools/目錄下,該文件系統(tǒng)是一個(gè)只讀壓縮的文件系統(tǒng),文件系統(tǒng)類型可以是ext2,ext3等。這里提供的一個(gè)系統(tǒng)目錄是root_tech,它里面包含將來要用到的所有文件,它在/實(shí)驗(yàn)軟件/source_ code/的目錄內(nèi),為root.tar.bz2。把制作工具和root_tech放在同一個(gè)文件夾下并對root.tar.bz2進(jìn)行解壓,在終端下切換到那個(gè)文件夾目錄下使用命令MKCRAMFS root_tech rootfs.cramfs,就可把root_tech制作成文件名為rootfs.cramfs的只讀的壓縮的cramfs文件系統(tǒng)了。系統(tǒng)啟動后,內(nèi)核將把它加載到內(nèi)存中,解壓。

4 結(jié)語
    本文針對一個(gè)特定的目標(biāo)平臺,提供了構(gòu)建一個(gè)基本嵌入式Linux系統(tǒng)的過程與方法。對Linux 2.4內(nèi)核版本進(jìn)行裁減、移植,編譯生成的內(nèi)核S3C2410處理器的目標(biāo)板上成功運(yùn)行,且保留了Linux原有的工作穩(wěn)定的特點(diǎn)。將Linux操作系統(tǒng)移植于嵌入式系統(tǒng)中作為嵌入式系統(tǒng)的底層研發(fā)平臺是一個(gè)復(fù)雜的問題,移植后系統(tǒng)的實(shí)時(shí)性、穩(wěn)定性、安全性和精簡程度等方面問題還需要在以后的設(shè)計(jì)中進(jìn)一步研究。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉