當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]uClinux在Nios II嵌入式平臺上的移植研究

1. Nios II嵌入式處理器

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

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

2. 移植

2.1. uClinux嵌入式操作系統(tǒng)

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

2.1.1. uClinux操作系統(tǒng)的移植

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

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

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

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

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

2.1.2. initramfs文件系統(tǒng)

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

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

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

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

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

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

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

2.3. 引導(dǎo)程序

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

對于作者使用的Nios II應(yīng)用開發(fā)板,引導(dǎo)程序主要完成以下幾項(xiàng)工作:

1) 矢量表初始化。

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

3) 將操作系統(tǒng)內(nèi)核從Flash指定位置拷貝到RAM中。

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

5) 讓CPU轉(zhuǎn)入RAM中指定的位置(即操作系統(tǒng)內(nèi)核)開始執(zhí)行。

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

圖1是作者的bootloader運(yùn)行的主要流程:

圖1 bootloader程序主要流程

2.4. uClinux操作系統(tǒng)映像的構(gòu)建

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

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

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

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

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

圖2 uClinux啟動界面

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

3. 結(jié)束語

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

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

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

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉