張彥
作為計算機網(wǎng)絡(luò)技術(shù)與經(jīng)濟共同發(fā)展的產(chǎn)物,消費類電子產(chǎn)品的產(chǎn)生和流通有效帶動了電子產(chǎn)業(yè)的發(fā)展。本文以消費類電子產(chǎn)品中Linux系統(tǒng)移植作為研究對象,通過引入S3C2440平臺,在對交叉編譯環(huán)境搭建進行分析的基礎(chǔ)上,從Linux移植與U-boot移植兩方面對基于S3C2440平臺下Linux系統(tǒng)的搭建環(huán)境展開了深入研究。
【關(guān)鍵詞】S3C2440平臺 Linux環(huán)境 U-boot
基于S3C2440平臺下的Linux系統(tǒng)主要是由主機中的交叉編譯環(huán)境進行編譯和實現(xiàn)的,作為啟動Linux系統(tǒng)的引導(dǎo)系統(tǒng),U-boot在進行移植后,可以使整個Linux系統(tǒng)在S3C2440的硬件平臺下得以良好運行。而作為Linux系統(tǒng)與應(yīng)用程序的銜接橋梁,文件系統(tǒng)則可以為Linux系統(tǒng)提供應(yīng)用程序的存儲和運行環(huán)境。為了使Linux系統(tǒng)可以應(yīng)用并運行到各類計算機或電子產(chǎn)品中,本文對基于S3C2440平臺下的Linux系統(tǒng)移植進行了詳細分析。
1 交叉編譯器移植簡述
1.1 交叉編譯工具
嵌入式系統(tǒng)的開發(fā)利用的是交叉開發(fā)的模式,即程序是在A機器中編譯生成并在B機器上運行的系統(tǒng)實現(xiàn)模式。簡單來說,交叉編譯則是在一個平臺上生成的可以在另一個平臺上運行的代碼。交叉工具鏈是指在進行交叉編譯過程中,系統(tǒng)進行編譯、匯編和鏈接的一整套工具,其作用是彌補gcc(編譯器套裝)編譯程序無法在目標平臺上運行的不足,即使系統(tǒng)編譯器的程序可以良好運行在目標機器上。
1.2 交叉編譯器移植方法
交叉編譯器的移植需要兩套工具鏈,一套是在開發(fā)系統(tǒng)的內(nèi)核時使用,另一套則是在U-boot(開放源碼項目)中使用。交叉編譯器主要存在兩個版本(3.4.5版本與4.4.3版本),高版本主要勇于編譯內(nèi)核,而低版本則用于編譯U-boot。交叉編譯器的移植過程便是交叉編譯的實現(xiàn)過程,具體的移植步驟為:
(1)將已下載的編譯器版本拖到Linux系統(tǒng)中。
(2)將交叉編譯器進行解壓。
(3)向Linux中添加環(huán)境變量使編譯器生效。編譯器生效的方式主要有兩種,分別為:a)source/root/brashrc。b)source/ect/profile。
(4)編譯器生效的檢驗,其檢驗命令為ECHO或PATH。在交叉編譯器完成移植后,若在今后的使用中,需要查看其具體版本,則可以輸入命令arm-linux-gcc-v。
2 Linux移植
2.1 內(nèi)核簡介
作為任何一個操作系統(tǒng)的核心,內(nèi)核不僅可以對系統(tǒng)的內(nèi)存、文件、進程以及設(shè)備驅(qū)動程序網(wǎng)絡(luò)系統(tǒng)進行高效管理,而且對于整個系統(tǒng)的穩(wěn)定性與具有決定性的作用。Linux系統(tǒng)內(nèi)核的特點為:穩(wěn)定性高、功能強大、源代碼完全開放并可以對多種類型的硬件平臺進行支持。
2.2 移植步驟
根據(jù)Linux系統(tǒng)自身特點,本文將其移植的硬件平臺選為S3C2440平臺,將其內(nèi)核版本選為當前版本稍低的3.4.5 Linux系統(tǒng)內(nèi)核。Linux系統(tǒng)的移植步驟為:首先,對makefile文件進行修改。具體的修改步驟為:先進行3.4.5版本的Linux系統(tǒng)下載,并在計算機虛擬機中建立一個文件用以存放Linux;修改makefile,具體修改過程如下:
export KBUILD_BUILDHOST:=$( SUBARCH)
ARCH = arm
CROSS COMPILE = arm-linux-
其次,進行系統(tǒng)默認配置的選擇。由于系統(tǒng)的內(nèi)核配置具有較多選項,通常大部分選項均可以選用默認方式進行配置。因此,并不需要各個選項所代表的具體含義。但是在某些應(yīng)用程序當中,需要將Linux系統(tǒng)內(nèi)核進行裁剪,從而使其滿足系統(tǒng)移植條件,此時,便需要對相關(guān)選項的意義進行掌握和了解。具體操作為:輸入命令cd arch/arm/configs,并鍵入ls對各選項中的配置進行查看,由于系統(tǒng)硬件平臺為S3C2440,因此,需要先查看是否存在2440的相關(guān)配置,即ls *2440*。最后,生成Linux移植系統(tǒng)的鏡像文件,輸入命令為make uImage。
3 U-boot移植
3.1 U-boot的功能簡述
U-boot是一種遵循GPL條款的開放源碼項目,Boot即為Bootloader,表示在Linux系統(tǒng)運行前的一段引導(dǎo)程序,此種引導(dǎo)程序可以將硬件設(shè)備進行初始化,進而完成計算機或相關(guān)電子產(chǎn)品由硬件啟動到系統(tǒng)啟動的過度。簡單來說,就是為系統(tǒng)運行的硬件提供一個適宜運行的狀態(tài),進而為后續(xù)操作系統(tǒng)的調(diào)用打下良好的基礎(chǔ)。
3.2 U-boot移植流程
本文所選取的U-boot版本為2012.04.01.tar.bzr,基于此版本的U-boot移植流程為:首先,下載并建立source insight工程,并對其進行編譯和燒寫,如果程序無法運行,對其進行原因分析。具體配置流程為:解壓——進入目錄——默認配置——編譯。U-boot經(jīng)過上述配置后,若無法啟動,則需要對相關(guān)代碼進行分析;其次,分析U-boot借助鏈接命令對其組成文件進行分析,并根據(jù)閱讀代碼分析U-boot的啟動過程。最后,對U-boot代碼進行修改和完善,具體做法為:建立一個單板cp smdk2410 smdk2440 -rf;cp smdk2410.hsmdk2440.H,若配置通過,則對U-boot進行調(diào)試并查看串口波特率的設(shè)置,即亂碼,進而使U-boot實現(xiàn)正常運行。
4 結(jié)論
本文以基于S3C2440平臺下Linux系統(tǒng)的搭建環(huán)境作為研究對象,在對交叉編譯環(huán)境進行搭建的基礎(chǔ)上,分別對Linux系統(tǒng)移植與U-boot移植的方法展開了深入探討。可見,未來加強對基于S3C2440平臺下Linux系統(tǒng)環(huán)境搭建與移植方法的研究力度,對于促進我國計算機技術(shù)的發(fā)展和電子消費類產(chǎn)品的流通具有重要的作用和意義。
參考文獻
[1]張凱.基于S3C2440的Linux嵌入式視頻監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)[D].西安科技大學(xué),2013.
[2]張騰.基于S3C2440遠程監(jiān)控系統(tǒng)設(shè)計[D].長安大學(xué),2012.
[3]高文輝,師奕兵,張偉.基于S3C2440的U-Boot雙啟動實現(xiàn)[J].測控技術(shù),2012,02(12):87-91.
作者單位
石家莊職業(yè)技術(shù)學(xué)院信息工程系 河北省石家莊市 050081endprint