基於S3C2410的Linux移植

2021-09-30 03:38:42 字數 3215 閱讀 1171

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

引言嵌人式系統就是以應用為中心、以計算機技術為基礎,軟硬體可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。arm嵌人式晶元是一種高效能、低功耗的risc晶元。它由英國arm公司設計,世界上幾乎所有的主要半導體生產商都生產基於arm體系機構的通用晶元,或在其專用晶元中應用相關arm技術。在2023年基於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作業系統。

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的入口點。

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身份進入系統。然後完成下列步驟,就可以在/linux/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保留了原有的工作穩定的特點。並可以根據需要,在該系統中編寫應用程式和執行應用程式。

基於S3C2410的通用IO程式設計

蒙洋,華清遠見嵌入式學院 講師。一 通用io的定義 gpio general purpose io ports 通用的io口。一般的微控制晶元都提供通用的可程式設計介面。按照它們的功能分成 通用io控制暫存器 通過io資料暫存器 很多mcu的gpio介面出去了標準的暫存器必須外,還會提供上拉暫存器,...

S3C2410讀寫Nand Flash分析

2009 01 15 16 51 321人閱讀 收藏舉報 s3c2410讀寫nand flash分析 一 結構分析 s3c2410處理器整合了8位nandflash控制器。目前市場上常見的8位nandflash有三星公司的k9f1208 k9f1g08 k9f2g08等。k9f1208 k9f1g0...

s3c2410的nand flash的驅動分析

以前都是把別人寫好的 直接拿過來用,而沒有去關心裡面到底怎麼實現的,昨晚對照著samsung 2410和k 9f1208的晶元資料把這些 讀了一遍,終於明白了對nand flash的操作一步步是怎麼實現的了。以下的這些 可以在vivi或者kernel裡面找到 對乙個nand flash的操作,總體上...