<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM的Linux系統移植研究與實(shí)現

基于A(yíng)RM的Linux系統移植研究與實(shí)現

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

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

本文引用地址:http://dyxdggzs.com/article/148080.htm

a.JPG


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

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

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

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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>