移植Linux到SAMSUNG S3C2410開發板

【S3C2410簡介】 
S3C2410裝備有SAMSUNG產ARM920T核、一體化16kB Cache/MMU能輕鬆奔跑Linux。
該板資源以下:
(1) CPU : ARM920T 工做頻率爲 200MHz 。 
(2) Flash : 16MB 
(3) SDRAM : 64MB SDRAM 
(4) UART : RS-232串行接口 
(5) 其餘 : 14針ARM JTAG接口等。 



【交叉編譯環境的創建】
基於 Linux 操做系統的應用開發環境通常是由目標系統硬件(開發板) 和宿主 PC 機所構成。
目標硬件開發板用於運行操做系統和系統應用軟件,而目標板所用到的操做系統的內核編譯、
應用程序的開發和調試則須要經過宿主 PC 機來完成 (因此稱爲交叉編譯) 。
雙方之間通常經過串口、並口或以太網接口創建鏈接關係, 其結構圖以下所示。

               

單獨拿出一臺 PC 機, 在該 PC 上安裝桌面的 Linux操做系統(如 Red Hat Linux 9. 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 服務器的安裝】
將工做站 PC 上的 Linux 操做系統內核源碼壓縮包和 GNU 編譯工具經過 ftp 傳送到
Linux 服務器的某個目錄(如合法的用戶目錄), 
而後在該目錄下解壓,並將 GNU 編譯工具安裝到默認的工做目錄便可,
以上工做經過在工做站 PC 使用 Telnet 工具完成,而不須要在 Linux 服務器上進行。 
Linux 操做系統內核的編譯通常有一個比較固定的步驟, 會根據 MakeFile 文件的不一樣而略有差別,
可參考相關文檔,編譯的工做在工做站 PC 使用 Telnet 工具完成。
按固定的步驟編譯內核完成之後, 會在相應目錄生成可執行的二進制文件, 
經過 ftp將該可執行的二進制文件傳回工做站 PC, 
而後再經過ADS 或 SDT 下的燒寫工具寫入開發板的 Flash 便可。






【Bootloader 的架構和功能】
Bootloader 引導程序是嵌入式開發很重要的組成部分。
它是嵌入式系統上電後執行的第一個程序,並由它最終將操做系統啓動起來並將控制權交給操做系統。
Bootloader 引導程序最基本的功能是對硬件系統的初始化和內核啓動參數設置並啓動內核。
Bootloader 的主要功能有 :
(1) 初始化 CPU 的主頻、 SDRAM 、中斷、串口等硬件 ;
(2) 啓動 Linux 內核並提供一個 RAMDISK;
(3) 經過串口下載內核或 RAMDISK 到目標板上 ;
(4) 將修改過的內核或 RAMDISK 寫入到 Flash 內 ;
(5) 爲用戶提供一個命令接口。

在嵌入式系統開發過程當中,
Bootloader 還與主機通訊,不斷檢測從主機傳來的控制信息和數據信息,完成相應的操做。
Linux 運行在保護模式下, 可是當機器啓動復位的時候卻處於實模式下。
因此寫 Bootloader 的工做也是在實模式之下的。
Bootloader 的實現除了依賴於 CPU 的體系機構,還依賴於目標板的設置,
本系統的 Bootloader 引導程序分爲stage1 和 stage2 兩個階段。
依賴於CPU的體系機構的代碼,好比設備初始化等,放在ARM彙編寫的stage1中,
stage2用C語言來實現,能夠實現複雜的功能,同時代碼具備更好的可讀性和可移植性。

§Bootloader Stage1 
①屏蔽全部的中斷。爲中斷提供服務的一般是操做系統,
所以在執行 Bootloader 的過程當中能夠不響應任何中斷。中斷屏蔽經過寫 CPU 的中斷屏蔽寄存器來完成。
②設置 CPU 的時鐘頻率和速度。
③初始化 RAM 設置系統的內存控制器的功能寄存器和各內存庫控制寄存器等。
④爲加載 stage2 準備 RAM 空間。
⑤拷貝 stage2 到 RAM 中。
⑥跳轉到 stage2 的入口點。

§Bootloader Stage2
①初始化本階段要使用到的硬件設備,好比初始化至少一個串口以便 I/ O,初始化計時器等。
②檢測系統的內存映射。
所謂內存映射就是指在整個4 GB物理地址空間中有哪些地址範圍被分配用來尋址系統的 RAM 單元。
③加載內核映像和根文件系統從 Flash 讀入到 Rom中,這裏包括兩個方面 :
a. 內核映像所佔用的內存範圍 ;
b. 根文件系統所佔用的內存範圍。
在規劃內存佔用的佈局時,主要考慮基地址和映像的大小兩個方面。
stage2 執行映像剛被拷貝到 RAM 空間時的系統內存佈局以下圖所示。

④設置內核的啓動參數。
⑤調用內核。 Bootloader 調用 Linux 內核的方法是直接跳轉到內核的第一條指令處。




【Linux 內核的構建和移植】
1) 設置軟件開發環境。
爲了和目標板進行通信,必需要在主機上終端運行仿真程序 DNW。
建議在宿主機上安裝 RED HAT Linux 9. 0版本。
如下以在 SHELL 模式下安裝編譯器和源代碼爲例:
首先以 ROOT 身份進入系統。把 RED HAT Linux
9. 0 的安裝光盤放入光驅中,執行裝載光驅命令 :
mount / dev/ cdrom . / mnt/ cdrom
若是系統不能識別. / mnt/ cdrom, 可使用以下命令 (假設 cdrom 爲/ dev/ had ),
則用 mount - t iso9660 / dev/ hdb / mnt 。
若是在安裝 RED HAT Linux 9. 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
該命令執行以後生成文件. comfig它保存這個配置
信息,下一次再執行 ake menuconfig 的時候將生成新的.
comfig文件。
輸入命令 :make dep
輸入命令 :make clean
輸入命令 :make zlamge
經過各個目錄的Makefile進行,將會在各個目錄下生成一系列目標文件,此時完成了對Linux的編譯工做。

3 ) Linux應用程序。 Linux 內核的編譯、修改、移植實際上與上層的應用程序, 如命令解釋器 shell、登錄程序login相關,這些程序應根據須要從新定製。  利用終端仿真程序 DNW 和 Bootloader 引導程序經過串口就能夠把 Linux 內核移植到目標系統板。  移植完成後,Linux 就能夠在目標系統板上運行了。 
相關文章
相關標籤/搜索