<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ARM的Linux系統(tǒng)移植研究與實現(xiàn)

          基于ARM的Linux系統(tǒng)移植研究與實現(xiàn)

          作者: 時間:2013-03-14 來源:網(wǎng)絡(luò) 收藏

          2.3 引導(dǎo)程序移植bootloader
          引導(dǎo)程序bootloader是與體系結(jié)構(gòu)緊密相關(guān)的部分,是操作系統(tǒng)內(nèi)核和應(yīng)用程序運行之前運行的一小段程序,用于完成系統(tǒng)的啟動和加載。它類似于PC機(jī)中的BIOS程序。bootloade嚴(yán)重依賴于硬件實現(xiàn),一般在中建立一個通用的bootloader是不可能的。用戶必須自己編寫這一小段程序,從而完成硬件設(shè)備的初始化,建立內(nèi)存空間的映射圖,將系統(tǒng)的軟硬件帶到一個合適的狀態(tài),為操作系統(tǒng)內(nèi)核的運行做準(zhǔn)備。
          通常bootloader移植分為兩步:
          第一步常用匯編語言實現(xiàn)依賴于CPU體系結(jié)構(gòu)的代碼。主要包括硬件設(shè)備初始化;為加載bootloader準(zhǔn)備RAM空間;拷貝bootloader到RAM空間中;設(shè)置好堆棧。
          第二步常用C語言來實現(xiàn)。即:初始化本階段要使用到的硬件設(shè)備;檢測系統(tǒng)內(nèi)存映射(memory map);將kernel映像和根文件系統(tǒng)映像從flash上讀到ram空間中;為內(nèi)核設(shè)置啟動參數(shù);調(diào)用內(nèi)核。圖1所示是bootloader的工作流程圖。

          本文引用地址:http://www.ex-cimer.com/article/148080.htm

          a.JPG


          2.4 內(nèi)核移植
          內(nèi)核移植首先應(yīng)當(dāng)啟動操作系統(tǒng),完成內(nèi)存管理、任務(wù)調(diào)度、進(jìn)程管理、加載驅(qū)動程序、網(wǎng)絡(luò)等功能,然后執(zhí)行應(yīng)用程序或等待用戶命令。雖然各功能之間存在復(fù)雜的調(diào)度關(guān)系,但由于Linux分層結(jié)構(gòu)的特點,已將其中硬件相關(guān)的代碼獨立了出來,因此,移植過程中只需要改動進(jìn)程管理、內(nèi)存管理和設(shè)備管理中與硬件相關(guān)的那部分代碼。
          一般情況下,從官方網(wǎng)站上下載的內(nèi)核不能直接在硬件平臺上運行,而要跟據(jù)具體的硬件平臺重新裁剪、編譯內(nèi)核,并根據(jù)硬件平臺特性編寫相應(yīng)的硬件相關(guān)的代碼,將Linux移植到硬件平臺。對內(nèi)核代碼的修改包括以下部分:
          (1)修改內(nèi)核目錄樹根下的Makefile,找到ARCH和CROSS_COMPILE,修改ARCH=arm,CROSS_COMPILE=armlinux,然后設(shè)置PATH環(huán)境變量,在文件bashrc中添加expor PATH=/usr/local/arm/3.4.4/bin:$PATH,使其可以找到交叉編譯工具鏈,然后重新登陸。
          (2)設(shè)置flash分區(qū),修改arch/arm/machSBC2410/devs.c用以指明分區(qū)信息,該文件的內(nèi)容建立nand flash分區(qū)表;修改arch/arm /machSBC2410/machsmdk2410.c文件指定啟動時初始化,并在kernel啟動時依據(jù)對分區(qū)的設(shè)置進(jìn)行初始配置。在Linux源文件目錄下,執(zhí)行makemenuconfig命令,配置內(nèi)核產(chǎn)生config文件,選擇處理器類型為SBC2410,選擇串口驅(qū)動設(shè)備,完成后保存config文件。
          在完成內(nèi)核的裁減之后,執(zhí)行命令make clean,編譯內(nèi)核之前先把環(huán)境給清理干凈,也可以用makerealclean或makemrproper來徹底清除相關(guān)依賴,保證沒有不正確的文件存在,最后將zimage下載到開發(fā)板。

          3 結(jié)語
          經(jīng)過移植,Uboot和Linux在SBC2410平臺就能運行,在此基礎(chǔ)上,還可以進(jìn)一步開發(fā)各類驅(qū)動程序及應(yīng)用軟件。用串口線將SBC2410和PC機(jī)相連,通過超級終端可以看到移植成功。系統(tǒng)成功啟動后,就可以進(jìn)入根文件系統(tǒng)。本文通過分析Linux的特點和移植方法,總結(jié)出了一種基于ARM的Linux的方法,并實現(xiàn)了Linux系統(tǒng)內(nèi)核在SBC2410處理器平臺上的移植。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();