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