<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)T91SAM9G20構建嵌入式Linux系統

基于A(yíng)T91SAM9G20構建嵌入式Linux系統

作者: 時(shí)間:2013-10-23 來(lái)源:網(wǎng)絡(luò ) 收藏
本文中使用的目標平臺是Atmel公司使用ARM926EJ-S處理器內核開(kāi)發(fā)的一塊SoC嵌入式微處理器,主頻達到400MHz,具有Atmel 先進(jìn)的外設DMA 和分布式存儲器架構,連同6層總線(xiàn)矩陣,可實(shí)現存儲器、外設和外部接口之間的多重數據同時(shí)傳送,而無(wú)需耗費CPU的時(shí)鐘周期。與引腳兼容的200 MHz AT91SAM9260相比,提供多達4倍的高速緩存和片上 SRAM 內存,并具有增強的外接 NAND 閃存錯誤校正功能,以及更大的以太網(wǎng) FIFO,能夠減少傳輸延遲。其外部總線(xiàn)接口(EBI)的時(shí)鐘頻率為133 MHz,用于片外存儲器的高速數據傳送。這些特性使得開(kāi)發(fā)人員可以將WindowsCE和Linux等移植到基于這塊微處理器的目標系統中。

也是嵌入式系統的重要組成部分。當今的嵌入式各種各樣,有VxWorks、QNX、Palm OS,Windows CE、Linux, uClinux,ucos ii等,每種操作系統都有其與眾不同之處,本文移植的嵌入式操作系統為L(cháng)inux。廣泛開(kāi)放源代碼的Linux應用已經(jīng)被移植到嵌入式的運行環(huán)境中,可以任意剪裁和修改后將其移植入自己的硬件平臺上,因此使用Linux開(kāi)發(fā)嵌入式操作系統,可以加快嵌入式系統的開(kāi)發(fā)速度,縮短產(chǎn)品進(jìn)入市場(chǎng)的時(shí)間。

本文的工作主要包括Boot loader實(shí)現,Linux內核移植、文件系統的實(shí)現三個(gè)部分。

搭建交叉開(kāi)發(fā)環(huán)境

在移植操作系統之前,首先要在一臺裝有Linux的PC機上搭建好開(kāi)發(fā)環(huán)境,例如我們的宿主機為Ubuntu10.04,為獲得所有操作權限,以root身份登錄宿主機。在 usr/local/目錄下建立arm路徑,下載交叉編譯工具arm-linux-gcc-4.3.2.tgz,將之復制到文件夾/usr/local/arm/下,并將其解壓;最后需要修改環(huán)境變量,設置默認交叉編譯工具為arm-linux-gcc-4.3.2。利用Linux下編輯工具(如vim)打開(kāi)/root/.bashrc文件,在文件末尾添加如下代碼:

if

[ -d /usr/local/arm ] ;

then PATH=/usr/local/arm/4.3.2/bin:"${PATH}"

fi

到此交叉編譯工具搭建完畢,為驗證交叉編譯工具是否搭建成功,可以在終端下輸入命令 arm-linux-gcc -v,搭建成功后會(huì )在終端下顯示arm-linux-gcc的版本。注意此處必須注銷(xiāo)用戶(hù),重新登錄系統后設置才會(huì )生效。

引導程序

系統上電之后,需要一段程序來(lái)進(jìn)行初始化:關(guān)閉看門(mén)狗、改變系統時(shí)鐘、初始化存儲控制器、將更多的代碼復制到內存中等,這段程序被稱(chēng)為Boot loader。簡(jiǎn)言之Boot loader就是在系統上電后開(kāi)始執行,初始化硬件設備、準備好軟件環(huán)境、最后調用操作系統內核。Boot loader的實(shí)現非常依賴(lài)與具體的硬件,在嵌入式系統中硬件配置千差萬(wàn)別,即使是相同的CPU,外設資源也不盡相同,因此需要根據特定的硬件進(jìn)行移植。

Boot Loader包含兩種不同的操作模式:?jiǎn)?dòng)加載模式和下載模式。上電后,Boot loader從板子上的某個(gè)固態(tài)存儲設備上將操作系統加載到RAM中運行,整個(gè)過(guò)程沒(méi)有用戶(hù)的介入,一般用于最終產(chǎn)品。下載模式下則在開(kāi)發(fā)過(guò)程中使用,開(kāi)發(fā)人員可以使用各種命令,通過(guò)串口或網(wǎng)絡(luò )等通信手段從宿主機下載文件(比如內核映像,文件系統映像),將它們直接放入內存或是燒入flash類(lèi)固態(tài)存儲設備中。

為了在上實(shí)現嵌入式操作系統運行,AT91SAM9G20采用了三.級引導方式,其Boot Loader程序由三部分組成,即RomBoot、Bootstrap和U-Boot,三.級引導程序的流程如圖1所示。

基于A(yíng)T91SAM9G20構建嵌入式Linux系統
圖1:三.級引導程序的流程圖

第一級引導程序Romboot固化在A(yíng)T9lSAM9G20內部,上電或復位后先運行這段引導代碼,其作用是將存儲于外部FLASH第二級引導程序Bootstrap加載到CPU內部的SRAM中執行。Bootstrap存儲在外部FLASH的前4KB空間,其功能包括初始化時(shí)鐘、SDRAM控制器以及DEBUG串口等硬件資源,并將第三 級引導程序U-Boot從FLASH加載到SDRAM執行。U-Boot將嵌入式Linux操作系統從FLASH引導和加載到SDRAM中,并將CPU的控制權交給Linux。

本次移植使用的U-boot的版本為1.3.4,限于篇幅,本文不做詳細的介紹。

內核的裁剪編譯

1.準備工作

從Linux官網(wǎng)下載linux內核源碼linux-2.6.30.tar.bz2,并從Atmel官網(wǎng)下載at91sam9g20的補丁文件(2.6.30-at91.patch.gz 和2.6.30-at91-exp.3.tar.gz)。在宿主機Linux開(kāi)發(fā)環(huán)境下,建立自己的工作目錄,例如工作目錄為home/work/,將上述三個(gè)文件拷貝至工作目錄下,解壓Linux2.6.30,并將2.6.30-at91.patch.gz和2.6.30-at91-exp.3.tar.gz拷貝至Linux2.6.30根目錄下,同時(shí)解壓2.6.30-at91-exp.3.tar.gz。完成此部分工作如下圖2所示。

基于A(yíng)T91SAM9G20構建嵌入式Linux系統
圖2:準備工作完成

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

linux相關(guān)文章:linux教程




關(guān)鍵詞: AT91SAM9G20 Linux系統 操作系統

評論


相關(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>