張先杰
(山東科技大學電氣與自動化工程學院,山東 青島 266510)
嵌入式Linux在ARM9(TQ)上的移植
張先杰
(山東科技大學電氣與自動化工程學院,山東青島266510)
【摘要】微處理器技術的發展使得小型、實時、性能良好的嵌入式操作系統得到廣泛的應用。分析了Linux操作系統的結構,描述了將Linux內核移植到ARM9開發板TQ2440上的方法和完整過程。介紹目標平臺以及移植環境的構建,重點介紹Bootloader的架構和功能以及Linux內核的移植,移植后運行結果良好可行。
【關鍵詞】TQ2440;ARM9;系統移植;Boot loader;Linux內核
本文中使用的TQ2440開發板CPU是三星公司生產的S3C2440,內核為ARM 920T,采用0.13um CMOS標準單元和存儲器編譯器開發。以此作為硬件平臺來實現Linux系統的完整移植。而嵌入式系統其本身具有結構較小、穩定性好等優點,因為Linux本身具有良好的可移植性,通過構建相應的開發環境,能夠進行獨立的產品開發,使得它被廣泛應用于多種硬件平臺。
1.1Linux系統的基本體系結構
Linux系統主要由內核、shell、文件系統和應用程序4個部分組成。用戶通過它們來運行程序、管理文件和使用系統。
1.2Linux內核
內核是操作系統的核心,負責管理系統的進程、內存、設備驅動程序、文件和網絡系統,決定著系統的性能和穩定性。
Linux內核由如下幾部分組成:內存管理、進程管理、硬件驅動程序、文件系統和網絡管理等。

圖1 Linux內核結構圖

圖2 交叉編譯環境圖
2.1交叉編譯環境的搭建
硬件環境構建采用的是主機與目標板結合的交叉開發模式,TQ2440開發板配有S3C2440處理器,64MB的SDRAM內存,256MB的Nand lash,2MB的NOR LASH,串口,網絡接口,USB接口等強大的硬件系統。
軟件環境的搭建是由GNU 庫(glibc),GNU inutils以及GNU編譯器gee等一系列交叉開發工具組成,如下圖2所示。
2.2引導加載程序Boot oader
Bootloader是這么是一段系統上電時候開始執行,并初始化硬件設備,預備軟件環境,然后調用操作系統的程序。TQ2440開發板中ARM上電CPU是從0x0000000開始執行,Bootloader存放在此處。根據開發板的需要,我們適當的修改CPU的頻率、支持NOR LASH的支持和SDRAM的配置及大小、環境變量的位置等相關數據。
3.1Linux移植準備
載內核源文件linux-2.6.22.tar.bz2、補丁文件patch-2.6.22.6.bz2,將兩個文件放在同一個目錄下面解壓如下:
$tar jf inux-2.6.22.tar.bz2
結論:C、D泊位靠泊5000DWT油船時,A、B泊位可靠泊2000DWT及以下噸級雜貨船,5000DWT及3000DWT雜貨船不能在A、B泊位進行靠泊作業。
$tar jf atch-2.6.22.6.bz2.22.6
$cd inux-2.6.22
$patch p1< ./patch-2.6.22.6
由此我們得到了內核源碼。
Makef e由配置文件.confg確定部分文件與內核、模塊和子目錄的關系。在內核目錄下執行“make enuconfg RCH=arm ROSS_ OMPILE=arm-linux-”得到內核配置界面,通過配置界,我們可以選擇我們所需要的芯片類型,文件類型等。
3.2Linux內核移植
修改內核以支持TQ2440開發板,首先修改頂層(即是根目錄下)的Makefle文件,修改為ARCH=arm,cross_COMPILE=arm-linux-;修改時鐘:amdk2440_map_io()中的s3c24xx_init_(12000000);修改機器碼為168;通過內核的配置單按用戶需求配置好內核并保存為.confg,即可編譯。
使用命令:vim arch/arm/plat-s3c24xx/common-smdk.c修改文件內容,將NAND FLASH分為uboot,ysffs2和kernel這3個分區,并修改相關偏移量。
YAFFS是專門為NAND FLASH存儲器設計的嵌入式文件系統,遵循GPL協議。添加YAFFS2文件系統的支持,就是在內核上打支持YAFFS2的補丁,之后對內核添加YAFFS的相關配置。
內核配置完畢后保存退出,最后編譯內核,輸入命令#make zImage,成功編譯后,生成zlmage內核映像文件,該文件在arch/arm/boot目錄下產生,完成內核的配置編譯,只需要將編譯好的內核映像文件zllnage下載到開發板的Flash中就可以了,使用以下命令:
set bootcmd 'nboot 0x32000000 0 0; bootm 0x32000000'
saveenv
開發板上電后內核自動啟動,到此我們就完成了Linux在TQ2440開發板上的移植工作。
本文通過TQ2440開發板,研究了將Linux移植到ARM9統上的整個移植流程。ARM平臺下嵌入式Linux的移植,包括熟悉硬件平臺,構建嵌入式Linux系統的軟件平臺,建立交叉編譯環境,Bootioader的移植,Linux內核的配置與編譯等許多相關內容,對于學習ARM的人員來書具有很好的指導和實踐意義。
【參考文獻】
[1]李延鵬.嵌入式開發工程師入行手冊[M].北京:中國鐵道出版社,2013-8.
[2]韋東山.嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2012-1.
[3]曾福振,閔聯營.基于ARM和Linux的嵌入式平臺的構建[J].微型機與應用,2011,30(12).