<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è) > 嵌入式系統 > 設計應用 > uClinux在Nios II嵌入式平臺上的移植研究

uClinux在Nios II嵌入式平臺上的移植研究

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

1. 處理器

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

是運行在FPGA上的五級流水線(xiàn)、單指令的RISC處理器,它專(zhuān)門(mén)針對Altera的可編程邏輯器件及片上可編程的設計思想做了相應的優(yōu)化。作為一種可配置的精減的RISC處理器,它可以與用戶(hù)自定義邏輯結合構成SOPC系統,并下載到Altera的可編程器件中。32位的 軟核,結合外部閃存以及大容量存儲器,可以構成一個(gè)功能強大的32位處理器系統。此外,利用Altera提供的IDE(Integrated development envirONment)開(kāi)發(fā)工具 可以方便的在調試模式下調試處理器,提高開(kāi)發(fā)的速度。

作者使用Cyclone II版Nios II應用開(kāi)發(fā)板Nios-DEVKIT-2C35 作為實(shí)現的,開(kāi)發(fā)板主要包括Cyclone II EP2C35器件、EPM7128AE CPLD配置控制邏輯、存儲器、串行配置連接器、FPGA和CPLD的JTAG接口等。

2.

2.1. 操作系統

是Linux的一個(gè)嵌入式版本,它經(jīng)過(guò)小型化改造,形成了一個(gè)高度優(yōu)化、代碼緊湊的嵌入式Linux,并保留了Linux的大多數優(yōu)點(diǎn)。最新的2.6版本在內核主體中加入了提高中斷性能和調度響應時(shí)間的改進(jìn),其中有三個(gè)最顯著(zhù)的改進(jìn):采用可搶占內核、更加有效的調度算法以及同步性的提高 。

2.1.1. 操作系統的

uClinux源代碼絕大部分都是使用的C語(yǔ)言,只有那些直接與處理其硬件相關(guān)的代碼如開(kāi)關(guān)CPU中斷等操作才采用匯編語(yǔ)言編寫(xiě),因此uClinux具有很好的移植性。一般來(lái)說(shuō),uClinux的移植大致分為三類(lèi):

1) 結構層次的移植。如果待移植的處理器結構不同于任何已經(jīng)支持的處理器結構,則需要修改linux/arch目錄下的相關(guān)處理器結構的文件。uClinux內核代碼的大部分是獨立于處理器和其體系結構的,但是其最底層的代碼也是特定于各個(gè)系統的。他們的中斷處理上下文、內存維護、任務(wù)上下文和初始化過(guò)程都是獨特的。對一個(gè)新型的體系,其下層程序可以模仿與其相似的體系程序編寫(xiě)。

2) 層次的移植。待移植處理器是某種uClinux已支持體系的分支處理器,即如果待移植的處理器是基于Nios II內核的,而Nios II內核已經(jīng)被uClinux支持,則需要在相關(guān)體系結構目錄platform下建立相應目錄并編寫(xiě)相應代碼,這些代碼主要是跟蹤程序(實(shí)現用戶(hù)程序到內核函數的接口等功能)、中斷控制調度程序和內存初始化程序等。

3) 板級移植。如果所用處理器(如Cyclone II版本系列)已經(jīng)被uClinux支持的話(huà),就只需要板級移植了。板級移植需要修改或添加linux/arch/Nios2nommu/scripts目錄中的文件,該目錄中主要是與具體硬件相關(guān)的配置,可以利用Nios II自帶的SOPC Builder軟件生成具體平臺對應的配置文件。

對于uClinux已經(jīng)支持的硬件架構,移植的過(guò)程相對較為簡(jiǎn)單,主要考慮修改與硬件開(kāi)發(fā)平臺相關(guān)的具體因素,如內存大小、外圍設備的配置等。一般現在做的大部分移植都是平臺層次移植和板級移植。

2.1.2. initramfs文件系統

作者使用的uClinux 2.6操作系統中,用initramfs文件系統取代了以前的romfs文件系統。

1. romfs文件系統。romfs文件系統是在uClinux 2.4以及之前版本廣泛用到的文件系統,這種文件系統相對于一般的ext2/ext3文件系統要求更少的空間。romfs文件系統不支持動(dòng)態(tài)擦寫(xiě)保存,對于系統需要動(dòng)態(tài)保存的數據采用虛擬RAM盤(pán)的方法進(jìn)行處理(RAM盤(pán)采用ext2/ext3文件系統)。

2. initramfs文件系統[2]。initramfs是在2.5版本內核中引入的技術(shù),它的基本思想是:在內核鏡像中附加一個(gè)cpio包,cpio包中包含了一個(gè)小型的文件系統,當內核啟動(dòng)時(shí),內核將cpio包解開(kāi),并且將其中包含的文件系統作為初始的根文件系統,內核中的一部分初始化代碼會(huì )放到這個(gè)文件系統中作為用戶(hù)層進(jìn)程來(lái)執行。這樣帶來(lái)的明顯的好處是精簡(jiǎn)了內核的初始化代碼,例如尋找真正的啟動(dòng)盤(pán)、啟動(dòng)時(shí)的網(wǎng)絡(luò )安裝、ACPI的安裝等,這些代碼都可以從內核中移出,把它們都轉移到用戶(hù)空間完成,這樣使得開(kāi)發(fā)者在用戶(hù)層就可以定制自己的啟動(dòng)過(guò)程,而不需要去修改內核代碼,使定制啟動(dòng)過(guò)程變得更加容易。

2.2. 開(kāi)發(fā)環(huán)境的建立

1. 建立交叉編譯環(huán)境??梢栽趗Clinux官方網(wǎng)站下載支持Nios II的交叉編譯開(kāi)發(fā)工具包,包括Nios2-linux-uclibc-gcc、Nios2-linux-uclibc-ld、Nios2-linux-uclibc-objdump等。

安裝好交叉編譯工具包后,要在宿主PC上的Linux系統的環(huán)境變量中(一般修改~/.bash_profile文件),添加對Nios II交叉編譯環(huán)境的支持,這樣在以后的開(kāi)發(fā)中,就可以正常編譯在Nios II嵌入式平臺下運行的程序了。

2. 內核的下載和燒寫(xiě)。在最初的調試中,是通過(guò)JTAG把內核下載到開(kāi)發(fā)板,Nios II平臺的硬件邏輯也是通過(guò)JTAG燒進(jìn)開(kāi)發(fā)板,等到最后硬件邏輯測試沒(méi)有問(wèn)題,以及uClinux操作系統調試運行正常后,就可以制作帶bootloader的內核,燒入flash中。

2.3. 引導程序

引導程序(即bootloader)就是在操作系統內核運行之前運行的一段小程序,它在硬件復位后首先被執行。主要工作是初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調用操作系統內核準備合適的環(huán)境。通常引導程序嚴重地依賴(lài)于硬件,每種CPU體系結構都用不同的啟動(dòng)代碼。此外,引導程序還依賴(lài)于具體的嵌入式板級設備的配置,如硬件地址分配,RAM芯片類(lèi)型等。bootloader擔負著(zhù)初始化硬件和引導操作系統的雙重責任,也是在特定硬件平臺操作系統移植至關(guān)重要的一步。

對于作者使用的Nios II應用開(kāi)發(fā)板,引導程序主要完成以下幾項工作:

1) 矢量表初始化。

2) 初始化硬件(I/O口和控制器、存儲器、時(shí)鐘)。

3) 將操作系統內核從Flash指定位置拷貝到RAM中。

4) 軟件初始化:建立堆棧和初始化數據段,建立C的運行環(huán)境。

5) 讓CPU轉入RAM中指定的位置(即操作系統內核)開(kāi)始執行。

其中,第二步主要初始化處理器的一些控制或狀態(tài)寄存器、時(shí)鐘、I/O口、RAM等這些內核必須用到的設備。第三步中uClinux內核加載可以直接從flash某個(gè)地址開(kāi)始逐句執行或者加載到內存中運行。作者采用的是后一種方法,即先把flash中的操作系統內核全部復制到內存中,再從內存中運行操作系統,因為內核大小一共不到1.5M字節,從flash復制到RAM中花的時(shí)間很少(幾百毫秒),很快就會(huì )完成,該方法也比較容易實(shí)現。

圖1是作者的bootloader運行的主要流程:

搜狗截圖120906_11.jpg

圖1 bootloader程序主要流程

2.4. uClinux操作系統映像的構建

引導程序執行完畢后,處理器就開(kāi)始執行真正的操作系統,操作系統內核的運行跟開(kāi)發(fā)板的硬件配置有著(zhù)緊密的聯(lián)系。只有正確的配置操作系統內核,它才會(huì )正確利用硬件資源。由于2.6版本的uClinux已經(jīng)支持了Nios II處理器,所以移植過(guò)程主要是板級移植。

首先,利用Nios II的配套開(kāi)發(fā)軟件Quartus II新建一個(gè)工程,用SOPC builder設計好自己的硬件邏輯,編譯后會(huì )生成兩個(gè)跟硬件平臺相對應的硬件邏輯的文件,其中,*.sof文件是燒入開(kāi)發(fā)板中并運行于其中的硬件邏輯,另外一個(gè)*.ptf文件是用于生成跟硬件平臺相適應的uClinux內核。

然后,在宿主PC的Linux環(huán)境下,把*.ptf文件通過(guò)相關(guān)命令導入內核配置中,硬件平臺的配置內容就會(huì )在linux/arch/Nios2nommu/scripts文件夾下生成,接著(zhù)就可以通過(guò)make menuconfig 命令配置uClinux操作系統內核,具體相關(guān)選項的選擇,要跟自己的硬件平臺相同。

最后,在配置好內核后,就可以直接編譯生成uClinux操作系統內核映像文件,把*.sof文件通過(guò)JTAG燒入開(kāi)發(fā)板中,把內核映像文件通過(guò)JTAG燒入SDRAM中,一個(gè)uClinux操作系統就可以在Nios II開(kāi)發(fā)板上運行起來(lái)了。

圖2是正確配置uClinux內核后的操作系統啟動(dòng)信息,打印信息是通過(guò)串口輸出到屏幕上的:

搜狗截圖120906_12.jpg

圖2 uClinux啟動(dòng)界面

至此,一個(gè)簡(jiǎn)單的uClinux操作系統在Nios II嵌入式平臺上移植完成,這個(gè)操作系統經(jīng)過(guò)裁減,去掉了Linux內核中一些不是必須的功能,但是具有一個(gè)Linux操作系統的幾乎所有的特征。接下來(lái),就可以在建好的開(kāi)發(fā)環(huán)境中,開(kāi)發(fā)在此平臺上運行的程序了。

3. 結束語(yǔ)

Altera的Nios II軟核處理器性能超過(guò)200DMIPS,在A(yíng)ltera FPGA中實(shí)現僅需35美分,并且開(kāi)發(fā)者能從無(wú)限的系統配置組合中選擇滿(mǎn)足性能和成本目標的方案,而不必為系統級設計考慮采用ASIC。并且,Nios II處理器還具有完善的軟件開(kāi)發(fā)套件。

此嵌入式平臺最終應用于有線(xiàn)數字電視接收系統,主要完成對加密數字電視傳輸流的實(shí)時(shí)接收和解擾工作,在實(shí)際的測試中,uClinux 2.6操作系統運行良好并且穩定,完全能勝任此類(lèi)工作。本項目產(chǎn)生經(jīng)濟效益800萬(wàn)元。

本文作者創(chuàng )新點(diǎn):在Nios II嵌入式平臺上,實(shí)現了最新的uClinux 2.6嵌入式操作系統的移植,并對移植過(guò)程中的關(guān)鍵部分進(jìn)行分析,對在Nios II嵌入式平臺上的嵌入式系統移植有一定的指導和參考價(jià)值。

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


關(guān)鍵詞: 移植 研究 平臺 嵌入式 Nios II uClinux

評論


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