作者簡(jiǎn)介:孫弢(1980-),男,吉林省吉林市人,吉林電子信息職業(yè)技術(shù)學(xué)院,講師,碩士,主要研究方向:網(wǎng)站開(kāi)發(fā),嵌入式軟件開(kāi)發(fā)。
摘要:隨著 ARM芯片以及LINUX操作系統(tǒng)的出現(xiàn),為嵌入式的發(fā)展注入了強(qiáng)勁的活力。本設(shè)計(jì)實(shí)現(xiàn)LINUX操作系統(tǒng)向ARM9平臺(tái)的移植。U-boot是系統(tǒng)的啟動(dòng)引導(dǎo)程序,要移植LIUNX操作系統(tǒng),U-boot是必不可少的。LINUX操作系移植成功后,系統(tǒng)還是不能正常啟動(dòng)的,還需要根文件系統(tǒng)(rootfs)支持,這樣系統(tǒng)就可以正常啟動(dòng)。但是嵌入式系統(tǒng)往往是為某些特定的功能設(shè)計(jì)的,所以,系統(tǒng)要想完成某些功能,還需要頂層應(yīng)用程序的支持。
關(guān)鍵詞:U-boot;內(nèi)核配置;根文件系統(tǒng)
隨著嵌入式技術(shù)的發(fā)展,嵌入式的應(yīng)用領(lǐng)域也越來(lái)越廣泛。隨著IC設(shè)計(jì)的發(fā)展,出現(xiàn)了工業(yè)化ARM芯片,可以說(shuō)ARM是未來(lái)嵌入式開(kāi)發(fā)的主宰。ARM是Advanced RISC Machines的首字母組合,是一類(lèi)微型處理器的統(tǒng)稱(chēng)。
LINUX操作系統(tǒng)是目前嵌入式操作系統(tǒng)中主流的操作系統(tǒng),它不同于WINDOWS,LINUX操作系統(tǒng)是完全開(kāi)源的,這就使嵌入式開(kāi)發(fā)過(guò)程大大降低了成本。另外,LINUX操作系統(tǒng)支持多種文件系統(tǒng),如EXT2、EXT3、MINIX、VFS等等。在ARM開(kāi)發(fā)過(guò)程中LINUX操作系統(tǒng)的開(kāi)發(fā)極為重要,LINUX下ARM的BOOTLOAD、內(nèi)核、文件系統(tǒng)的裁剪、移植、燒錄工作以及針對(duì)文件系統(tǒng)進(jìn)行GUI的編寫(xiě)任務(wù),最終形成一成功的GUI界面,成為ARM-LINUX的開(kāi)發(fā)重點(diǎn)。
一、開(kāi)發(fā)平臺(tái)選擇
本設(shè)計(jì)完成LINUX下ARM的BOOTLOAD、內(nèi)核、文件系統(tǒng)的燒錄工作,同時(shí)主要針對(duì)文件系統(tǒng)進(jìn)行GUI的編寫(xiě)任務(wù),最終形成一成功的GUI界面。本設(shè)計(jì)選用的bootloader 為U-boot,經(jīng)過(guò)編譯后生成二進(jìn)制文件,將其燒寫(xiě)到ARM平臺(tái)的NAND FLASH中。內(nèi)核選用LINUX操作系統(tǒng)LINUX 2.6.14.1版本的內(nèi)核源碼,將其進(jìn)行修改之后移植到ARM9(S3C2410)的芯片上。文件系統(tǒng)采用busybox軟件包經(jīng)過(guò)修改用cramfs 工具生成.img映像文件,燒寫(xiě)到NAND FLASH 中。
ARM9是繼ARM7之后的新一代的處理器,采用了更多的晶體管進(jìn)行全新的設(shè)計(jì),處理能力超過(guò)ARM7處理器達(dá)到兩倍以上于。ARM9的處理能力的提高主要是提高了時(shí)鐘頻率,降低了指令執(zhí)行周期。ARM9 系列包括三種處理器:ARM926EJ-S、ARM946E-S 和 ARM968E-S。本設(shè)計(jì)采用韓國(guó)三星公司生產(chǎn)的ARM9TDMI——s3c2410芯片。
ARM9 處理器系列的核心產(chǎn)品是 ARM9TDMI 處理器,該處理器系列整合了 16 位的 Thumb 指令集。ARM9E 處理器系列能夠?yàn)槲⒖刂破?、DSP 和 Java 應(yīng)用程序提供單處理器解決方案。ARM9E 系列產(chǎn)品是一些 DSP 增強(qiáng)的 32 位 RISC 處理器,適用于需要綜合 DSP 和微控制器性能的應(yīng)用程序。該產(chǎn)品系列包括 ARM926EJ-S、ARM946E-S、ARM966E-S 和 ARM968E-S 處理器宏單元。其包括信號(hào)處理擴(kuò)展以增強(qiáng) 16 位固定點(diǎn)性能,方式是使用單循環(huán) 32 x 16 乘法累積(MAC)單元,并實(shí)現(xiàn)了 16 位的 Thumb 指令集。此外,ARM926EJ-S 處理器還采用了 ARM Jazelle 技術(shù),從而能夠在硬件中直接執(zhí)行 Java 字節(jié)碼。
應(yīng)用程序是簡(jiǎn)單的MP3播放器移植,這里做的工作主要是系統(tǒng)的搭建,應(yīng)用程序只是作為檢測(cè)系統(tǒng)而作的輔助工作。以此證明系統(tǒng)的可靠、安全、穩(wěn)定的性質(zhì)。
二、系統(tǒng)設(shè)計(jì)
U-Boot是系統(tǒng)構(gòu)建的第一步。U-Boot,全稱(chēng)Universal Boot Loader,是遵循GPL條款的開(kāi)放源碼項(xiàng)目。uboot 就是針對(duì)某個(gè)嵌入式環(huán)境特別編譯特別準(zhǔn)備的一級(jí)引導(dǎo)程序。用來(lái)初始化環(huán)境,并且讀取啟動(dòng) Linux 內(nèi)核,當(dāng)然一個(gè)在 Linux 內(nèi)核啟動(dòng)之前就啟動(dòng)的 bootloader 不僅僅有這些功能。U-Boot的其它主要功能還有支持NFS掛載、RAMDISK形式的根文件系統(tǒng)支持NFS掛載、從FLASH中引導(dǎo)壓縮或非壓縮系統(tǒng)內(nèi)核;可靈活設(shè)置、傳遞多個(gè)關(guān)鍵參數(shù)給操作系統(tǒng),適合系統(tǒng)在不同開(kāi)發(fā)階段的調(diào)試要求與產(chǎn)品發(fā)布,尤其對(duì)LINUX支持最為強(qiáng)勁。目前,U-Boot優(yōu)勢(shì)突顯示,對(duì)于研究于開(kāi)放源代碼BOOT LOADER移植工作的嵌入式開(kāi)發(fā)人員正將各個(gè)不同系列嵌入式處理器進(jìn)行不斷地移植并深入展開(kāi),用來(lái)支持更多的嵌入式操作系統(tǒng)的裝載與引導(dǎo)。
因?yàn)槲覀兊哪繕?biāo)板是arm體系的平臺(tái),所以不能只單純的用主機(jī)上的編譯工具直接編譯,那樣就會(huì)造成程序無(wú)法運(yùn)行,最終導(dǎo)致移植工程失敗。所以我們將要GCC編譯工具進(jìn)行改裝,生成交叉工具。
有了U-boot和交叉編譯工具,接下來(lái)就要對(duì)內(nèi)核進(jìn)行配置。今天的LINUX是全球被最廣泛移植的操作系統(tǒng)內(nèi)核。從掌上電腦iPAQ到IBM S/390,甚至于有人成功的將LINUX內(nèi)核在新力出品的游戲機(jī)PS2及PS3和微軟出品的游戲機(jī)Xbox上使用。
LINUX也是IBM “Blue Gene” Blue Gene的操作系統(tǒng)。直至2008年11月,全球前五百大超級(jí)電腦(TOP 500)有高達(dá)87.8%的比例采用LINUX為它們的作業(yè)系統(tǒng),最快的超級(jí)電腦IBM_Roadrunner正是采用LINUX的。
文件系統(tǒng)是LINUX操作系統(tǒng)的精髓所在也是重要的組成部分,LINUX的文件系統(tǒng)的功能是強(qiáng)大的。文件系統(tǒng)不僅包含著文件中的數(shù)據(jù)而且還有文件系統(tǒng)的目錄結(jié)構(gòu),所有LINUX的 用戶(hù)和程序看到的文件、目錄、軟連接及文件保護(hù)信息等都存儲(chǔ)在其中。
三、總結(jié)
linux操作系統(tǒng)為用戶(hù)進(jìn)程與硬件設(shè)備進(jìn)行交互,提供系統(tǒng)服務(wù)并提供了一組接口。在應(yīng)用程序和硬件之間,linux內(nèi)核提供的系統(tǒng)服務(wù)擁有很多優(yōu)點(diǎn),第一,linux內(nèi)核提供的系統(tǒng)服務(wù)讓編程更加簡(jiǎn)單容易,使用戶(hù)從學(xué)習(xí)硬件設(shè)備的低級(jí)編程特性中解放出來(lái);第二,linux內(nèi)核提供的系統(tǒng)服務(wù)具有非常高的系統(tǒng)安全性,內(nèi)核在滿(mǎn)足每個(gè)請(qǐng)求應(yīng)答之前,接口級(jí)都要檢查這種請(qǐng)求的正確性。最后也是最重要的是這些接口使得程序具有可移植性,因?yàn)橹灰獌?nèi)核所提供的一組接口相同,那么在任一內(nèi)核之上就可以正確地編譯和執(zhí)行程序。
在ARM平臺(tái)上移植linux操作系統(tǒng)作為實(shí)現(xiàn)設(shè)備小型化、智能化的一個(gè)重要元素,目前己經(jīng)廣泛應(yīng)用于國(guó)防、工業(yè)、交通、能源、信息技術(shù)以及日常生活等各個(gè)領(lǐng)域,研究和開(kāi)發(fā)linux操作系統(tǒng)在ARM平臺(tái)上的移植具有重要的現(xiàn)實(shí)意義。(作者單位:吉林電子信息職業(yè)技術(shù)學(xué)院)
參考文獻(xiàn):
[1]杜春雷 編著. ARM體系結(jié)構(gòu)與編程.清華大學(xué)出版社. 2003,84~116
[2]馮國(guó)進(jìn).嵌入式Linux驅(qū)動(dòng)程序設(shè)計(jì)從入門(mén)到精通.清華大學(xué)出版社,25~45
[3]李志LINUX 下的C語(yǔ)言程序設(shè)計(jì).清華大學(xué)出版社,2005,69~75