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

          新聞中心

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

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

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

          摘要:Linux具有源代碼開(kāi)放、效率高、可裁剪等優(yōu)點(diǎn),在的開(kāi)發(fā)中具有廣泛的應(yīng)用。文章介紹了嵌入式Linux操作系統(tǒng)、移植目標(biāo)平臺(tái)SBC2410及Linux內(nèi)核源代碼的目錄結(jié)構(gòu),分析了Linux移植到SBC2410平臺(tái)的實(shí)現(xiàn)過(guò)程,闡述了Linux內(nèi)核、u-boot的裁剪和編譯以及根文件系統(tǒng)的制作過(guò)程,最后在SBC2410平臺(tái)上成功移植了嵌入式Linux系統(tǒng)。
          關(guān)鍵詞:;;

          0 引言
          是一個(gè)專(zhuān)用的計(jì)算機(jī)系統(tǒng)。該系統(tǒng)以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁減,但對(duì)功能、可靠性、成本等都有嚴(yán)格的要求。今天,一些專(zhuān)用系統(tǒng)需要處理大量的信息,由于傳統(tǒng)的計(jì)算機(jī)系統(tǒng)很難實(shí)現(xiàn)硬件可裁減,因而已經(jīng)不能滿(mǎn)足專(zhuān)用系統(tǒng)的需要。伴隨著我國(guó)汽車(chē)、家電等產(chǎn)業(yè)的快速發(fā)展,嵌入式系統(tǒng)的應(yīng)用與開(kāi)發(fā)已成為目前IT產(chǎn)業(yè)的一個(gè)新的熱點(diǎn)?;贏RM的嵌入式系統(tǒng)的開(kāi)發(fā),首先要解決的問(wèn)題是嵌入式操作系統(tǒng)的移植。Linux操作系統(tǒng)作為一種源代碼開(kāi)放、同時(shí)可支持多種處理器結(jié)構(gòu)的多任務(wù)操作系統(tǒng),具有內(nèi)核小、易裁剪、可移植性好等優(yōu)點(diǎn),是目前嵌入式系統(tǒng)應(yīng)用與開(kāi)發(fā)的主流操作系統(tǒng)。本文主要研究在ARM9平臺(tái)上搭建嵌入式Linux系統(tǒng)的實(shí)現(xiàn)方法。

          1 嵌入式Linux操作系統(tǒng)及特點(diǎn)
          目前,在嵌入式系統(tǒng)開(kāi)發(fā)中,52%的項(xiàng)目選擇Linux作為嵌入式操作系統(tǒng),這與Linux自身的優(yōu)良特性有不可分割的關(guān)系。
          Linux操作系統(tǒng)內(nèi)核源代碼開(kāi)放,并具有豐富的軟件資源。不同的應(yīng)用領(lǐng)域可以根據(jù)需要對(duì)內(nèi)核進(jìn)行修改,每一種通用程序在Linux都能找到。在Linux上開(kāi)發(fā)程序不需要從頭做起,可以選擇一個(gè)類(lèi)似的軟件進(jìn)行二次開(kāi)發(fā),因而能夠低成本地開(kāi)發(fā)出滿(mǎn)足自己需要的嵌入式系統(tǒng)。
          另外,Linux系統(tǒng)能支持多種硬件設(shè)備,而且驅(qū)動(dòng)豐富,能支持多種主流硬件設(shè)備和最新硬件技術(shù)。隨著Linux的廣泛應(yīng)用,許多芯片生產(chǎn)廠家也已經(jīng)開(kāi)始為L(zhǎng)inux提供驅(qū)動(dòng),這為L(zhǎng)inux在各種硬件平臺(tái)上的應(yīng)用奠定了基礎(chǔ)。
          Linux可支持多種體系結(jié)構(gòu),具有較好的可移植性。目前,Linux已經(jīng)移植到絕大多數(shù)硬件平臺(tái)上,能夠支持ARM、MIPS、LPHA、SPARC等多種體系,Linux支持幾乎所有流行的CPU。Linux具備一整套工具鏈,容易建立嵌入式系統(tǒng)的開(kāi)發(fā)環(huán)境和交叉運(yùn)行環(huán)境,可跨越嵌入式系統(tǒng)開(kāi)發(fā)中仿真工具的障礙。由于其符合IEEE POSIX.1標(biāo)準(zhǔn),因而應(yīng)用程序具有較好的可移植性。
          Linux具有完善的網(wǎng)絡(luò)通信和文件管理機(jī)制。實(shí)際上,Linux從一開(kāi)始就與網(wǎng)絡(luò)密不可分,網(wǎng)絡(luò)是Linux的最為顯著的特征。Linux具有ARM9上的嵌入式Linux的特性,從而保證了它支持所有標(biāo)準(zhǔn)因特網(wǎng)協(xié)議,可以利用Linux的網(wǎng)絡(luò)協(xié)議棧開(kāi)發(fā)嵌入式TCP/IP網(wǎng)絡(luò)協(xié)議棧。同時(shí),Linux支持ext2、fat16、fat32、romfs等文件系統(tǒng),從而為嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)打下了很好的基礎(chǔ)。

          2 Linux在ARM平臺(tái)上的移植
          2.1 SBC2410硬件平臺(tái)介紹
          SBC2410硬件平臺(tái)是具有基于ARM9處理器SBC2410A,可支持ARM—Linux、WindowsCE等操作系統(tǒng)的嵌入式硬件平臺(tái)。主要硬件資源有一片64 MB SDRAM,一片64 MBNandFlash,一片1 MB Nor Flash,一個(gè)串口COM0,一個(gè)USB Host A型接口,一個(gè)USB Slave B型接口,以及一個(gè)標(biāo)準(zhǔn)的JTAG接口等。
          2.2 Linux在ARM平臺(tái)上的移植準(zhǔn)備
          首先是要建立交叉編譯環(huán)境。交叉編譯環(huán)境是一個(gè)由編譯器、連接器和解釋器組成的綜合開(kāi)發(fā)環(huán)境。交叉編譯工具主要包括編譯器gcc,二進(jìn)制工具binutils,目標(biāo)系統(tǒng)的標(biāo)準(zhǔn)c庫(kù)glibc和目標(biāo)系統(tǒng)的Linux內(nèi)核頭文件。宿主機(jī)要選好做嵌入式開(kāi)發(fā)的Linux操作系統(tǒng),配置好網(wǎng)絡(luò)、NFS服務(wù)等。因?yàn)槟繕?biāo)機(jī)沒(méi)有足夠的資源運(yùn)行開(kāi)發(fā)工具和調(diào)試工具,所以要在宿主機(jī)上建立交叉編譯環(huán)境,然后由交叉編譯工具生成可執(zhí)行二進(jìn)制代碼(并不能在宿主機(jī)上運(yùn)行),再下載到目標(biāo)板上調(diào)試和運(yùn)行。交叉編譯標(biāo)準(zhǔn)c環(huán)境的生成步驟包括以下四步:
          (1)獲得binutils、gcc、glibc的源碼;
          (2)配置編譯binutils,得到匯編器和連接器;
          (3)配置編譯gcc源碼,生成gcc編譯器;
          (4)配置glibc編譯生成glibc的c庫(kù)函數(shù)。

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

          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();