www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于ARM的Linux系統(tǒng)移植研究與實(shí)現(xiàn)

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

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

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

2 Linux在ARM平臺上的移植
2.1 SBC2410硬件平臺介紹
   
SBC2410硬件平臺是具有基于ARM9處理器SBC2410A,可支持ARM—Linux、WindowsCE等操作系統(tǒng)的嵌入式硬件平臺。主要硬件資源有一片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平臺上的移植準(zhǔn)備
   
首先是要建立交叉編譯環(huán)境。交叉編譯環(huán)境是一個(gè)由編譯器、連接器和解釋器組成的綜合開發(fā)環(huán)境。交叉編譯工具主要包括編譯器gcc,二進(jìn)制工具binutils,目標(biāo)系統(tǒng)的標(biāo)準(zhǔn)c庫glibc和目標(biāo)系統(tǒng)的Linux內(nèi)核頭文件。宿主機(jī)要選好做嵌入式開發(fā)的Linux操作系統(tǒng),配置好網(wǎng)絡(luò)、NFS服務(wù)等。因?yàn)槟繕?biāo)機(jī)沒有足夠的資源運(yùn)行開發(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庫函數(shù)。[!--empirenews.page--]
2.3 引導(dǎo)程序移植bootloader
   
引導(dǎo)程序bootloader是與體系結(jié)構(gòu)緊密相關(guān)的部分,是操作系統(tǒng)內(nèi)核和應(yīng)用程序運(yùn)行之前運(yùn)行的一小段程序,用于完成系統(tǒng)的啟動和加載。它類似于PC機(jī)中的BIOS程序。bootloade嚴(yán)重依賴于硬件實(shí)現(xiàn),一般在嵌入式系統(tǒng)中建立一個(gè)通用的bootloader是不可能的。用戶必須自己編寫這一小段程序,從而完成硬件設(shè)備的初始化,建立內(nèi)存空間的映射圖,將系統(tǒng)的軟硬件帶到一個(gè)合適的狀態(tài),為操作系統(tǒng)內(nèi)核的運(yùn)行做準(zhǔn)備。
    通常bootloader移植分為兩步:
    第一步常用匯編語言實(shí)現(xiàn)依賴于CPU體系結(jié)構(gòu)的代碼。主要包括硬件設(shè)備初始化;為加載bootloader準(zhǔn)備RAM空間;拷貝bootloader到RAM空間中;設(shè)置好堆棧。
    第二步常用C語言來實(shí)現(xiàn)。即:初始化本階段要使用到的硬件設(shè)備;檢測系統(tǒng)內(nèi)存映射(memory map);將kernel映像和根文件系統(tǒng)映像從flash上讀到ram空間中;為內(nèi)核設(shè)置啟動參數(shù);調(diào)用內(nèi)核。圖1所示是bootloader的工作流程圖。


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)的特點(diǎn),已將其中硬件相關(guān)的代碼獨(dú)立了出來,因此,移植過程中只需要改動進(jìn)程管理、內(nèi)存管理和設(shè)備管理中與硬件相關(guān)的那部分代碼。
    一般情況下,從官方網(wǎng)站上下載的內(nèi)核不能直接在硬件平臺上運(yùn)行,而要跟據(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文件指定啟動時(shí)初始化,并在kernel啟動時(shí)依據(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平臺就能運(yùn)行,在此基礎(chǔ)上,還可以進(jìn)一步開發(fā)各類驅(qū)動程序及應(yīng)用軟件。用串口線將SBC2410和PC機(jī)相連,通過超級終端可以看到移植成功。系統(tǒng)成功啟動后,就可以進(jìn)入根文件系統(tǒng)。本文通過分析Linux的特點(diǎn)和移植方法,總結(jié)出了一種基于ARM的Linux系統(tǒng)移植的方法,并實(shí)現(xiàn)了Linux系統(tǒng)內(nèi)核在SBC2410處理器平臺上的移植。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計(jì)工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉