隨著技術(shù)的不斷發(fā)展,嵌入式技術(shù)逐漸成為計算機(jī)技術(shù)的一個重要分支。由于嵌入式產(chǎn)品所運(yùn)用場合多種多樣,不同應(yīng)用場景對嵌入式實(shí)時響應(yīng)、成本都有著不同的需求。嵌入式開發(fā)涉及硬件和軟件設(shè)計,其中硬件開發(fā)包括板級開發(fā);而軟件開發(fā)則需要在硬件開發(fā)完成后才能開始,且與硬件有著緊密的關(guān)系。但FPGA的出現(xiàn)將徹底改變傳統(tǒng)嵌入式開發(fā)模式,使得嵌入式開發(fā)工程師可以像PC端軟件開發(fā)一樣開發(fā)嵌入式軟件,降低嵌入式開發(fā)的成本。
【摘要】隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,嵌入式科技得到更為廣泛的應(yīng)用,其中FPGA和嵌入式操作系統(tǒng)的組合前景良好,它們的應(yīng)用極大的改變了嵌入式開發(fā)的效率。為使得NiosII軟核和RTEMS嵌入式系統(tǒng)相結(jié)合,首先介紹了NiosII的軟件開發(fā)環(huán)境,然后詳細(xì)闡述如何在NiosII平臺下搭建RTEMS嵌入式開發(fā)環(huán)境。
【關(guān)鍵詞】嵌入式,Nios2,RTEMS
1.引言
RTEMS(Real-TimeExecutiveforMultiprocessorSystems)是一個開放源代碼的實(shí)時嵌入式操作系統(tǒng),對各類主流的嵌入式平臺都有良好的支持,同時其也有著良好的開發(fā)軟件。目前無論是航空航天、軍工,還是民用領(lǐng)域RTEMS都有著極為廣泛的應(yīng)用[1]。
NiosII由美國Altera公司推出的基于Nios的第二代32位RISC軟核,基于FPGA平臺,其性能可達(dá)200MIPS,是一款可定制的高性能嵌入式軟核,配合Altera官方提供的開發(fā)者套件,嵌入式工程師可以快捷、高效的進(jìn)行硬件、軟件的開發(fā)。
2.基于NiosII的SOPC開發(fā)環(huán)境
2.1AlteraSOPCBuilder
SOPCBuilder是一個全自動的SOPC硬件開發(fā)環(huán)境,設(shè)計者可以通過Altera提供的IP宏選擇適合自己應(yīng)用的外圍功能模塊,并進(jìn)行內(nèi)存基地址的分配、中斷請求線和內(nèi)部總線的適配。與此同時,還可以通過HDL文件來自定義外設(shè)模塊[2],比如DM9000A以太網(wǎng)控制器。SOPCBuilder使得可以在短暫的時間內(nèi)完成一個完整的硬件開發(fā)系統(tǒng)。
2.2SOPC硬件系統(tǒng)
通過Altera提供的QuartusII和SOPCBuilder可以快速自定應(yīng)硬件系統(tǒng),圖1是針對Altera颶風(fēng)III代EP3C16Q器件定制的硬件系統(tǒng)nios2rtems示例圖。
硬件系統(tǒng)nios2rtems采用NiosII快速型軟核,為加快其運(yùn)行速率,系統(tǒng)時鐘為100MHz,外圍模塊有jtag-uart、sdram、epcsflash、intervaltimer等,使用Avalon總線作為數(shù)據(jù)及控制總線。
2.3SOPC軟件系統(tǒng)
通過使用NiosIIIDE添加軟件工程,編譯即可生成與硬件相關(guān)聯(lián)的描述性文件,其中最為重要的是system.h文件以及HAL驅(qū)動。system.h文件提供nios2rtems硬件的描述,包含各個模塊的基址、模塊所使用的中斷號和中斷優(yōu)先級及外設(shè)模塊的符號名[3]。它同SOPCBuilder提供的各個外設(shè)模塊的寄存器描述構(gòu)成了HAL庫的基礎(chǔ),同時也是驅(qū)動開發(fā)的基礎(chǔ)。而HAL作為硬件抽象層,通過函數(shù)封裝為上層應(yīng)用提供統(tǒng)一的調(diào)用API接口[4]。
3.RTEMS開發(fā)環(huán)境搭建
3.1NiosII交叉編譯工具
有兩種方式完成交叉編譯工具的安裝,其一是通過官方提供的定制腳本來安裝;其二就是通過獲得各個組件的源代碼、補(bǔ)丁來手動編譯安裝。由于手動編譯安裝可能由于某個版本的錯誤選擇而使得編譯失敗,這里我們采用定制腳本來進(jìn)行安裝。
3.1.1設(shè)置
為獲得支持NiosII平臺的嵌入式開發(fā)環(huán)境,需要準(zhǔn)備工具包的源碼和定制腳本,以及工程目錄。
首先,為nios2rtems設(shè)置工作目錄:
mkdir-pnios2rtems/rtems/src
然后,獲得RTEMS源碼構(gòu)建套件,其大部分是由python所寫的腳本文件。由于托管在git倉庫,所以必須有g(shù)it工具并通過下面代碼獲得工具套件源碼:
$gitclonegit://git.rtems.org/rtems-source-builder.git
3.1.2檢查
RTEMS源碼構(gòu)建套件為檢查編譯環(huán)境是否已經(jīng)就緒提供了相應(yīng)的工具sb-check:
$source-builder/sb-check
RTEMSSourceBuilderenvironmentisok
顯示編譯環(huán)境已經(jīng)準(zhǔn)備就緒
3.1.3編譯
源碼構(gòu)建套件中提供了若干平臺的支持,在編譯之前可以通過sb-set-builder命令的list-bsets選項(xiàng)查看其支持的平臺。
$../source-builder/sb-set-builder--list-bsets
...
4.10/rtems-nios2.bset
4.11/rtems-nios2.bset
...
從輸出結(jié)果可以知道,RTEMS在4.10版本就已經(jīng)支持nios2平臺了,這里我們選擇最新的4.11版本。通過如下命令可以開啟nios2平臺的交叉編譯工具的構(gòu)建:
$sb-set-builder--log=l-nios2.txt\
--prefix=$HOME/nios2rtems/rtems/4.11\
4.11/rtems-sparc
由于構(gòu)建過程中需要對所缺文件進(jìn)行在線的下載,整個過程可能持續(xù)非常長在$HOME/nios2rtems/rtems/4.11目錄下的bin/文件夾下可以看到已安裝的nios2-rtems4.11-gcc等工具。3.2BSP支持包構(gòu)建
3.2.1RTEMSBSP結(jié)構(gòu)
RTEMS下關(guān)于nios2平臺的主要部分有:第一,CPU相關(guān),該部分包含和CPU功能相關(guān)的代碼,主要涉及CPU上下文切換以及CPU中斷異常處理等代碼;第二,外設(shè)相關(guān),該部分包含外設(shè)硬件的寄存器信息等和CPU內(nèi)部功能相關(guān)功能代碼;第三,BSP相關(guān),該部分包含硬件系統(tǒng)中外設(shè)相關(guān)代碼,例如console、timer以及硬件初始化等[5]。
3.2.2NiosIIBSP構(gòu)建
NiosII的驅(qū)動實(shí)現(xiàn)較為簡單,對硬件的操作主要涉及對外設(shè)硬件所在地址的讀寫操作[6]。在RTEMS中添加NiosII支持可以分為以下三個步驟。
首先,構(gòu)建cpu對NiosII支持,主要是提供CPU進(jìn)程上下文切換和中斷異常處理相關(guān)代碼,具體需要實(shí)現(xiàn)以下功能:
1)_CPU_Context_switch()以及_CPU_Context_restore(),函數(shù)主要功能用于保存和恢復(fù)當(dāng)前上下文相關(guān)的寄存器值。
2)_exception_vector(),處理CPU異常函數(shù),用于檢查硬件當(dāng)前狀態(tài),并根據(jù)異常類型跳轉(zhuǎn)至異常處理服務(wù)程序或者中斷處理程序中。
3)_Exception_Handler(),異常處理服務(wù)程序。
4)_ISR_Handler(),中斷服務(wù)程序。
5)其它輔助函數(shù),例如中斷注冊、使能及禁止中斷等功能。
其次,添加外設(shè)對NiosII支持,主要是提供與CPU異常等相關(guān)的代碼,具體需要實(shí)現(xiàn)以下功能:
1)中斷的管理,包括中斷的注冊、中斷使能以及中斷禁止等功能,這是對cpu的進(jìn)一步封裝(可選)
2)Timer和Clock的等驅(qū)動服務(wù)程序。
3)外圍設(shè)備的寄存器相關(guān)信息,都可以在SOPCBuilder中找到,例如jtag-uart的寄存器信息可在altera_avalon_jtag_uart_regs.h文件中找到,將所有外設(shè)的寄存器相關(guān)頭文件信息放入c\src\lib\libcpu目錄中。
4)添加其他可能需要的Cache操作相關(guān)代碼。
最后,添加BSP對NiosII支持,該部分以RTEMS中nios2_iss為模板,提供基本的驅(qū)動程序,一般包括以下基本內(nèi)容:
1)Clock驅(qū)動,Timer驅(qū)動,jtag-uart驅(qū)動。這一部分代碼涉及對底層硬件的讀寫操作,非常依賴于Nios2eds生成的system.h文件及相關(guān)寄存器頭文件。
2)start.S及bspstart.c,操作系統(tǒng)啟動文件。文件start.S包含RTEMS的啟動代碼,包括初始化處理器和單板,為之后的C程序運(yùn)行提供棧空間,使之可以進(jìn)入bspstart.c進(jìn)一步初始化BSP。
3)其他外設(shè)驅(qū)動,網(wǎng)絡(luò)驅(qū)動,攝像頭驅(qū)動等都在此處添加。
3.2.3編譯下載
準(zhǔn)備好NiosII的BSP之后既可以按照RTEMS官方提供的內(nèi)核編譯流程編譯,之后即可編譯鏈接用戶應(yīng)用程序。通過命令行的nios2-download即可實(shí)現(xiàn)程序下載。
4.結(jié)論
本文首先介紹了如何使用QuartusII、SOPCBuilder工具進(jìn)行系統(tǒng)開發(fā)的一般流程,并簡要分析NiosII硬件系統(tǒng)及其軟件系統(tǒng)的架構(gòu)。接著詳細(xì)講述如何為RTEMS構(gòu)建支持NiosII的板級支持包以及使用Nios2eds進(jìn)行應(yīng)用軟件的開發(fā)。全文從底層硬件到上層軟件,詳細(xì)描述了如何為基于NiosII軟核構(gòu)建基于RTEMS的板級支持包。本文同時給出了基于NiosII軟核的RTEMS移植方法和實(shí)驗(yàn)平臺構(gòu)建的一般方法。
參考文獻(xiàn)
[1]RTEMSSteeringCommittee.RTEMSHomePage[J].2010.
[2]鄭建.基于NIOS2軟核CPU的嵌入式系統(tǒng)設(shè)計[A].第十三屆全國核電子學(xué)與核探測技術(shù)學(xué)術(shù)年會論文140集(下冊),2006:30-32.
[3]侯建軍.SOPC技術(shù)基礎(chǔ)教程[M].北京:清華大學(xué)出版社,2008.
[4]蔡偉綱.NiosII軟件架構(gòu)解析[M].西安:西安電子科技大學(xué)出版社,2007.
[5]張娟,蘇海冰,蔣和松,王鵬.基于FPGA片上PowerPC的RTEMS移植分析[J].微計算機(jī)信息,2009(32).
[6]訾國偉.基于軟核處理器的嵌入式操作系統(tǒng)的研究與應(yīng)用[D].北京:北京交通大學(xué),2008.
相關(guān)期刊推薦:《自然與科技》
《自然與科技》雜志是由上海市科委主管、上?萍拣^主辦的科普雜志,是一本面向全國讀者的大眾化綜合類科學(xué)傳播雜志。以欣賞自然,傳播科學(xué),關(guān)注技術(shù),品味生活為辦刊宗旨。其前身是創(chuàng)辦于1979年的《博物》,為了更好地適應(yīng)科普事業(yè)發(fā)展的需要,雜志2006年第4期更名為當(dāng)前的刊名。
《自然與科技》辦刊宗旨
《自然與科技》以反映、凸顯和宣傳“自然、人、科技”的主題,推動三者的和諧發(fā)展,體現(xiàn)科技是第一生產(chǎn)力,提高全民族的科學(xué)文化水平為辦刊宗旨。
《自然與科技》欄目設(shè)置
自然探險、環(huán)球博覽、人獸之間、人性之探、生活求知、科技博覽、健身與美容、水族大世界、奇錄珍聞、信息薈萃、伴您走天涯等。
《自然與科技》期刊收錄
中國知網(wǎng)、維普中文期刊全文收錄、《中國核心期刊(遴選)數(shù)據(jù)庫》、《中國期刊全文數(shù)據(jù)庫》、《中文科技期刊數(shù)據(jù)庫》、《中國期刊網(wǎng)》等數(shù)據(jù)庫全文收錄期刊。
《自然與科技》投稿須知
。1)稿件需用計算機(jī)打印,并寄軟盤。用字要規(guī)范,字跡和圖要清晰;打印的稿件需加大字號和行距。作者可通過E-mail投稿,但不要和文字稿重復(fù)。
。2)題名(含中英文)。應(yīng)符合索引要求,一般不超過20個字。以簡明、確切的詞語反映文章的內(nèi)容,并符合題錄。
。3)作者姓名(含中英文)。英譯名用漢語拼音,姓全部大寫,名字第一字母大寫,雙名間加連字符。
。4)作者單位。包括部門、單位、省市名,郵編。英文郵編之后加列國名。
。5)摘要(含中英文)應(yīng)盡量寫成報道性,內(nèi)容包括研究目的、方法和結(jié)論等。應(yīng)具有獨(dú)立性和自明性、并采用第三人稱表述,一般以300字內(nèi)為宜。
(6)關(guān)鍵詞(含中英文)。是反映文章主題內(nèi)容的名詞和術(shù)語,應(yīng)盡量從漢語主題詞表中選取,第一關(guān)鍵詞應(yīng)能體現(xiàn)出文章的學(xué)科分類,每篇文章給出3-8個關(guān)鍵詞,寫在摘要下方。
轉(zhuǎn)載請注明來自:http://www.jinnzone.com/gongyeshejilw/31635.html