董晶晶

摘 要:文章描述了將標準Linux系統移植到基于S3C2410微處理器的開發板上的方法,包括安裝交叉編譯環境、引導程序的移植、Linux內核的裁減和編譯。移植后的linux內核雖然減小了軟件的開發難度,但是仍具有良好的穩定性和安全性,也降低了開發成本。
關鍵詞:嵌入式Linux;內核;S3C2410處理器;移植
1 概述
S3C2410是基于ARM920T內核的微處理器,具有支持多任務、高效、穩定、內核簡單等特點。嵌入式Linux是在標準Linux的基礎上對內核進行裁減和編譯后的小型操作系統,且占存儲空間小。
2 移植前準備工作
嵌入式Linux基于S3C2410處理器上移植首先需要采用交叉編譯調試的方式。而交叉編譯調試環境建立在PC 機上對應的開發平臺,但是可執行的二進制代碼只能在開發平臺上執行,因此在移植前要建立交叉編譯環境。準備工作包括建立交叉編譯工具鏈,配置主機網絡接口的IP地址和TFTP服務。
安裝Linux的交叉編譯環境, 應包括binutils,gcc.gnuc和glibc三部分的工具鏈。從Linux的官方網站可以下載免費的工具鏈。其中binutils是用于處理二進制文件的程序集合,gcc.gnuc是編譯工具,glibc是保證用戶鏈接C庫。交叉編譯工具鏈的安裝順序如下:
(1)下載Crosstol-3.4.1.tar.bz2包,在/usr/local/arm目錄下解壓縮。
在export之前添加# PATH: /usr / local/arm /,修改PATH環境變量,從而添加交叉編譯器的路徑。
(2)通過ifconfig 命令查看主機的網絡接口驅動是否安裝成功后,配置主機網絡接口的IP地址。
(3)TFTP 服務:Linux下的TFTP服務在默認情況下處于關閉狀態,需要以root 身份登錄,修改TFTP的配置文件,開啟TFTP服務。
使用命令/etc/init.d/xinetd restart,使TFTP服務重新啟動。
3 嵌入式Linux 的移植過程
3.1 引導程序Bootloader的移植
引導程序類似于PC機中的BIOS程序,它可以進行硬件設備的初始化(時鐘的設置、內存的映射等), 方便調用系統內核。引導程序是依賴于硬件平臺來實現的。而每種cpu芯片的引導程序不可能是通用的,不同的處理器架構都有不同的引導程序。而且系統的板級設備的配置也限制著引導程序。如果在不同的兩塊嵌入式板上使用同一種cpu,而引導程序在兩塊板子上運行,就需要修改Bootloader的源程序。u-boot移植主要過程如下:
(1)從Linux官方網址下載u-boot 1. 1. 2包。
在指定目錄解壓縮后,編譯S3C2410板的u-boot:
(2)配制Makefile,修改工具鏈前綴:
把CROSS _COMP ILE=arm-linux改為:=/usr/local/arm/3.3.2/bin/arm-linux-gcc
(3)配置編譯smdk2410 板,執行# make smdk2410 config=/path/from/root install
(4)建立U- Boot開發板,配置開發板。
在configs目錄下復制smdk2410
(5)測試系統能否正常運行:
如果系統正常運行,在u-boot-1.1.2目錄下生成u-boot.bin文件;但是如果系統運行不成功時,可以將example文件夾下的Makefile中的 %.srec: % 改為: %.srec:%.0。
(6)通過fs2410的nand FLASH,將u- Boot燒寫到Flash上,引導程序就可以從FLASH上直接啟動了 。
3.2 嵌入式Linux的內核的裁減和編譯
對于嵌入式系統來說標準Linux的內核過去龐大,因此要將Linux移植到嵌入式系統上,就需要將Linux內核進行裁減和編譯。
3.2.1 裁減Linux內核
(1)進入Linux內核的編輯菜單,運行如下命令:
# make config (進入命令行)
# make mrproper (刪除解壓縮軟件包中的冗余文件)
# make xconfig (進入xconfig配置菜單)
(2)在Linux內核的配置菜單中,對嵌入式系統進行配置。xconfig 配置菜單如圖1所示。
圖1 xconfig 配置菜單
在配制時,Linux內核配置中只有一部分根據用戶不同需要選擇或是去掉不需要的模塊,添加必須的模塊或是驅動程序,但是大部分選項可以選擇默認值。(選項中Y表示該功能加入內核;N表示該功不能加入內核;M表示該功可以在需要時動態內核。)
3.2.2 內核的編譯
在內核配置完后,需要對內核創建源碼樹,壓縮的內核映像。內核編譯命令如下:
#make dep (讀取配置文件,并創建源碼關系樹);
#make clean 命令 (用于清除程序的冗余文件)
#make zImage ( 使用壓縮方法,生成更小linux內核)
4 制作RAMdisk(根文件系統)
嵌入式Linux 系統通過根文件系統為設備和用戶程序提供接口,調用系統中所有的文件和設備。因此移植Linux系統還需要制作RAMdisk。在RAMdisk的塊設備上建立根文件系統的目錄一般由下幾個組成:
/bin目錄 存儲文件管理程序的文件;
/lib目錄 存儲系統的庫文件;
/dev目錄 存儲系統設備文件;
/etc目錄 存儲系統配置文件。
在文章中基于S3C2410微處理器,創建Cramfs格式的根文件系統。RAMdisk使用壓縮映像存放在Flash的地址空間中后,就把RAMdisk設備加載成根文件系統,最終將嵌入式操作系統移植到開發板上,生成可視化操作系統。
5 結束語
文章針對嵌入式系統基于S3C2410處理器上的移植方法,分別介紹了如何建立交叉編譯環境、引導程序和根文件系統的移植、對處理器內核的裁減、編譯的過程,并且保證移植后的Linux系統的穩定性、實時性、可視性和安全性的特點。生成嵌入式Linux系統,用戶可以根據需要,編寫開發應用程序。
參考文獻
[1]廖日坤.ARM嵌入式應用開發技術白金手冊[M].北京:中國電力出版社,2005.
[2]倪繼利.Linux內核分析與編程[M].北京:電子工業出版社,2005.
[3]張杰,吳敏,曹衛華.基于S3C2410的Linux移植[J].微型電腦應用,2005.