歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

基於S3C2410處理器目標板的Linux移植

本文描述了將Linux移植到基於S3C2410處理器目標板上的方法與過程。介紹了目標平台和Linux,並說明了如何搭建移植環境,著重介紹了Bootloader的架構和功能以及Linux內核的移植。結果證明該方法是可行的。移植後Linux在嵌入式系統中運行良好。

關鍵詞 :嵌入式系統 ;移植 ;Linux內核 ;S3C2410處理器

引言

嵌人式系統就是以應用為中心、以計算機技術為基礎,軟硬件可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。ARM嵌人式芯片是一種高性能、低功耗的RISC芯片。它由英國ARM公司設計,世界上幾乎所有的主要半導體生產商都生產基於ARM體系機構的通用芯片,或在其專用芯片中應用相關ARM技術。在2001年基於ARM內核的處理器占市場份額的75%,成為業界的龍頭。

Linux是免費發行的、快速高效的操作系統 ,Linux的出現在計算機世界引發了一場革命。Linux操作系統以代碼開放、功能強大又易於移植成為嵌入式操作新興力量。嵌人式Linux是按照嵌人式操作系統的要求設計的一種小型操作系統,由一個內核以及一些根據需要進行定制的系統模塊組成。其內核很小 ,一般只有幾百kb,即使加上其他必要的模塊和應用程序,所需的存儲空間也很小。它非常適合於移植到嵌入式系統中去 ,同時它具有多任務多進程的系統特征 ,有些還具有實時特征。

1 目標平台介紹

文中使用的目標平台S3C2410是SAMSUNG公司使用920T處理器內核開發的一款嵌入式處理器。S3C2410是Samsung公司專門為PDA、Intenet設備和手持設備等專門開發的微處理器。該芯片還包含有16kB一體化的Cache/MMU,這一特性使開發人員能夠將Linux和VXwork移植到基於該處理器的目標系統中。該目標板的系統資源如下 :

(1)CPU:S3C2410微處理器,工作頻率為200MHz。

(2)Flash:16MB。

(3)SDRAM:64MB SDRAM。

(4)UART:RS-232串行接口。

(5)其他 :14針ARM JTAG接口等。

2 交叉編譯環境的建立

基於Linux操作系統的應用開發環境一般是由目標系統硬件(開發板)和宿主PC機所構成。目標硬件開發板用於運行操作系統和系統應用軟件,而目標板所用到的操作系統的內核編譯、應用程序的開發和調試則需要通過宿主PC機來完成(所以稱為交叉編譯)。雙方之間一般通過串口、並口或以太網接口建立連接關系。單獨拿出一台PC機,在該PC上安裝桌面的Linux操作系統(如RedHatLinux9.0),可以采用默認的安裝選項(注意要包含FTP服務),這台PC作為Linux服務器,除管理員以外,一般不直接讓其他人去操作。

將該Linux服務器接入局域網,並新建一些合法用戶,以便其他的PC機(在此將其稱為工作站)的合法用戶能訪問到Linux服務器。而其他的PC機(工作站)仍然使用Windows操作系統。

需要的軟件工具包括 :

(1)ftp客戶端程序。

(2)Telnet工具。

(3)移植到某一特定ARM平台的Linux操作系統內核源碼。

(4)GNU編譯工具,可由相關網站下載。

在某工作站PC上安裝ftp客戶端程序和Telnet工具 ,安裝完畢後應該可以在該工站PC和Linux服務器之間進行文件的傳輸,並在工作站PC可以通過Telnet登陸到Linux服務器(可能需要將Linux服務器 的防火牆服務關閉才能完成)。

Linux服務器的安裝:將工作站PC上的Linux操作系統內核源碼壓縮包和GNU編譯工具通過ftp傳送到Linux服務器的某個目錄(如合法的用戶目錄),然後在該目錄下解壓,並將GNU編譯工具安裝到默認的工作目錄即可,以上工作通過在工作站PC使用Telnet工具完成,而不需要在Linux服務器上進行。Linux操作系統內核的編譯一般有一個比較固定的步驟,會根據MakeFile文件的不同而略有差異,可參考相關文檔,編譯的工作在工作站PC使用Telnet工具完成。按固定的步驟編譯內核完成以後,會在相應目錄生成可執行的二進制文件,通過ftp將該可執行的二進制文件傳回工作站PC,然後通過ADS或SDT下的燒寫工具寫入開發板的Flash即可。

3 Bootloader的架構和功能

Bootloader引導程序是嵌入式開發很重要的組成部分。它是嵌入式系統上電後執行的第一個程序,並由它最終將操作系統啟動起來並將控制權交給操作系統。Bootloader引導程序最基本的功能是對硬件系統的初始化和內核啟動參數設置並啟動內核。Bootloader的主要功能有:

(1)初始化CPU 的主頻、SDRAM、中斷、串口等硬件;

(2)啟動Linux內核並提供一個RAMDISK;

(3)通過串口下載內核或RAMDISK到目標板上;

(4)將修改過的內核或RAMDISK寫入到Flash內;

(5)為用戶提供一個命令接口。

在嵌入式系統開發過程中,Bootloader還與主機通信,不斷檢測從主機傳來的控制信息和數據信息,完成相應的操作。

Linux運行在保護模式下,但是當機器啟動復位的時候卻處於實模式下。所以寫Bootloader的工作也是在實模式之下的。

Botloader的實現除了依賴於CPU的體系結構,還依賴於目標板的設置,本系統的Bootloader引導程序分為stagel和stage2兩個階段。依賴於CPU的體系機構的代碼 ,比如設備初始化等,放在stagel中,采用ARM匯編語言來實現,這樣可以達到短小精悍的目的。stage2用C語言來實現,可以實現復雜的功能,同時代碼具有更好的可讀性和可移植性。

●Bootloader的stage1

stage1是Bootloader一開始就執行的操作,其目的是為了stage2的執行以及隨後的內核的執行,設置好一些基本的硬件環境。

包括以下步驟 :

①屏蔽所有的中斷 。為中斷提供服務的通常是操作系統,因此在執行Bootloader的過程中可以不響應任何中斷。中斷屏蔽通過寫CPU的中斷屏蔽寄存器來完成。

②設置CPU的時鐘頻率和速度。

③初始化RAM設置系統的內存控制器的功能寄存器和各內存庫控制寄存器等。

④為加載stage2准備RAM空間。

⑤拷貝stage2到RAM中。

⑥跳轉到stage2的入口點。

●Bootloader的stage2

stage2的主要的功能是通過串口下載Linux內核到目標板上。

包括以下幾個步驟:

①初始化本階段要使用到的硬件設備。這通常包括:初始化至少一個串口,以便和終端用戶進行I/O輸出信息;初始化計時器等。

②檢測系統的內存映射。所謂內存映射就是指在整個4GB物理地址空間中有哪些地址范圍被分配用來尋址系統的RAM單元。

③加載內核映像和根文件系統從Flash讀入到Rom中。這裡包括兩個方面:a.內核映像所占用的內存范圍;b.根文件系統所占用的內存范圍。在規劃內存占用的布局時,主要考慮基地址和映像的大小兩個方面。

④設置內核的啟動參數。

⑤調用內核。Bootloader調用Linux內核的方法是直接跳轉到內核的第一條指令處。

4 Linux內核的構建和移植

1)設置軟件開發環境。

為了和目標板進行通訊,必須要在主機上終端運行仿真程序DNW。建議在宿主機上安裝REDHATLinux9.0版本。以下以在SHELL模式下安裝編譯器和源代碼為例介紹安裝過程 :

首先以ROOT身份進入系統。把REDHATLinux90的安裝光盤放入光驅中,執行裝載光驅命令:

moumt/dev/cdrom /nmt/cdrom

如果系統不能識別/mnt/cdrom,可以使用如下命令(假設cdrom為/dev/had),則用mount -t iso9660 /dev/hdb/mnt。

如果在安裝REDHATLinux9.0的時候已經默認安裝了CDROM,以上命令不需執行,直接進入CDROM所在目錄。

mkdir /usr/local/arm mount /dev/cdrom /mnt/cdrom cd/ cp /mnt/cdrom/bin/cross-2.95.3.tar.bz2 /usr/local/arm/ cp /mnt/cdrom/bin/Linux_for_s3c2410.gz tar zxvf Linux_for_s3c2410.gz cd /usr/local/arm/ tar -jxvf cross-2.95.3.tar.bz2

程序執行完後,Linux源代碼和編譯環境都已建立起來了。

2)Linux內核編譯。

首先以ROOT身份進入系統。然後完成下列步驟,就可以在http://Linux.chinaitlab.com/arch/arm/boot/得到內核的映像文件zImage。

在shell命令下輸入命令進行內核配置:

make menUConfig

該命令執行之後生成文件.config。它保存這個配置信息,下一次再執行make menuconfig的時候將生成新的.config文件。

輸入命令 :make dep

輸入命令 :make clean

輸入命令 :make zImage

通過各個目錄的Makefile進行,將會在各個目錄下生成一系列目標文件,上述步驟完成後,就完成了對Linux的編譯工作。

Linux內核的編譯、修改、移植實際上與上層的應用程序,如命令解釋器shell、登陸程序login相關。這些程序應根據需要重新定制。

利用終端仿真程序DNW和Bootloader引導程序通過串口就可以把Linux內核移植到目標系統板。移植完成後,Linux就可以在目標系統板上運行了。

5 結束語

討論了Linux向目標系統S3C2410移植的過程中的關鍵技術及其實現。移植後的Linux保留了原有的工作穩定的特點。並可以根據需要,在該系統中編寫應用程序和運行應用程序。




Copyright © Linux教程網 All Rights Reserved