www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,嵌入式科技得到更為廣泛的應(yīng)用,其中FPGA和嵌入式操作系統(tǒng)的組合前景良好,它們的應(yīng)用極大的改變了嵌入式開(kāi)發(fā)的效率。為使得Nios II軟核和RTEMS嵌入式系統(tǒng)相結(jié)合,首先介紹了Nios II的軟件開(kāi)發(fā)環(huán)境,然后詳細(xì)闡述如何在Nios II平臺(tái)下搭建RTEMS嵌入式開(kāi)發(fā)環(huán)境。

隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,嵌入式科技得到更為廣泛的應(yīng)用,其中FPGA和嵌入式操作系統(tǒng)的組合前景良好,它們的應(yīng)用極大的改變了嵌入式開(kāi)發(fā)的效率。為使得Nios II軟核和RTEMS嵌入式系統(tǒng)相結(jié)合,首先介紹了Nios II的軟件開(kāi)發(fā)環(huán)境,然后詳細(xì)闡述如何在Nios II平臺(tái)下搭建RTEMS嵌入式開(kāi)發(fā)環(huán)境。

1.引言

隨著技術(shù)的不斷發(fā)展,嵌入式技術(shù)逐漸成為計(jì)算機(jī)技術(shù)的一個(gè)重要分支。由于嵌入式產(chǎn)品所運(yùn)用場(chǎng)合多種多樣,不同應(yīng)用場(chǎng)景對(duì)嵌入式實(shí)時(shí)響應(yīng)、成本都有著不同的需求。嵌入式開(kāi)發(fā)涉及硬件和軟件設(shè)計(jì),其中硬件開(kāi)發(fā)包括板級(jí)開(kāi)發(fā);而軟件開(kāi)發(fā)則需要在硬件開(kāi)發(fā)完成后才能開(kāi)始,且與硬件有著緊密的關(guān)系。但FPGA的出現(xiàn)將徹底改變傳統(tǒng)嵌入式開(kāi)發(fā)模式,使得嵌入式開(kāi)發(fā)工程師可以像PC端軟件開(kāi)發(fā)一樣開(kāi)發(fā)嵌入式軟件,降低嵌入式開(kāi)發(fā)的成本。

RTEMS(Real - Time Executivefor Multiprocessor Systems)是一個(gè)開(kāi)放源代碼的實(shí)時(shí)嵌入式操作系統(tǒng),對(duì)各類(lèi)主流的嵌入式平臺(tái)都有良好的支持,同時(shí)其也有著良好的開(kāi)發(fā)軟件。目前無(wú)論是航空航天、軍工,還是民用領(lǐng)域RTEMS都有著極為廣泛的應(yīng)用。

Nios II由美國(guó)Altera公司推出的基于Nios的第二代32位RISC軟核,基于FPGA平臺(tái),其性能可達(dá)200MIPS,是一款可定制的高性能嵌入式軟核,配合Altera官方提供的開(kāi)發(fā)者套件,嵌入式工程師可以快捷、高效的進(jìn)行硬件、軟件的開(kāi)發(fā)。

2.基于Nios II的SOPC開(kāi)發(fā)環(huán)境

2.1 Altera SOPC Builder

SOPC Builder是一個(gè)全自動(dòng)的SOPC硬件開(kāi)發(fā)環(huán)境,設(shè)計(jì)者可以通過(guò)Altera提供的IP宏選擇適合自己應(yīng)用的外圍功能模塊,并進(jìn)行內(nèi)存基地址的分配、中斷請(qǐng)求線和內(nèi)部總線的適配。與此同時(shí),還可以通過(guò)HDL文件來(lái)自定義外設(shè)模塊,比如DM9000A以太網(wǎng)控制器。SOPCBuilder使得可以在短暫的時(shí)間內(nèi)完成一個(gè)完整的硬件開(kāi)發(fā)系統(tǒng)。

2.2 SOPC硬件系統(tǒng)

通過(guò)Altera提供的Quartus II和SOPCBuilder可以快速自定應(yīng)硬件系統(tǒng),圖1是針對(duì)Altera颶風(fēng)III代EP3C16Q器件定制的硬件系統(tǒng)nios2rtems示例圖。


圖1 nios2rtems示例圖

硬件系統(tǒng)nios2rtems采用Nios II快速型軟核,為加快其運(yùn)行速率,系統(tǒng)時(shí)鐘為100MHz,外圍模塊有jtag-uart、sdram、epcsflash、interval timer等,使用Avalon總線作為數(shù)據(jù)及控制總線。

2.3 SOPC軟件系統(tǒng)

通過(guò)使用Nios II IDE添加軟件工程,編譯即可生成與硬件相關(guān)聯(lián)的描述性文件,其中最為重要的是system.h文件以及HAL驅(qū)動(dòng)。

system.h文件提供nios2rtems硬件的描述,包含各個(gè)模塊的基址、模塊所使用的中斷號(hào)和中斷優(yōu)先級(jí)及外設(shè)模塊的符號(hào)名。它同SOPCBuilder提供的各個(gè)外設(shè)模塊的寄存器描述構(gòu)成了HAL庫(kù)的基礎(chǔ),同時(shí)也是驅(qū)動(dòng)開(kāi)發(fā)的基礎(chǔ)。而HAL作為硬件抽象層,通過(guò)函數(shù)封裝為上層應(yīng)用提供統(tǒng)一的調(diào)用API接口。

3.RTEMS開(kāi)發(fā)環(huán)境搭建

3.1 Nios II交叉編譯工具

有兩種方式完成交叉編譯工具的安裝,其一是通過(guò)官方提供的定制腳本來(lái)安裝;其二就是通過(guò)獲得各個(gè)組件的源代碼、補(bǔ)丁來(lái)手動(dòng)編譯安裝。由于手動(dòng)編譯安裝可能由于某個(gè)版本的錯(cuò)誤選擇而使得編譯失敗,這里我們采用定制腳本來(lái)進(jìn)行安裝。

3.1.1設(shè)置

為獲得支持Nios II平臺(tái)的嵌入式開(kāi)發(fā)環(huán)境,需要準(zhǔn)備工具包的源碼和定制腳本,以及工程目錄。

首先,為nios2rtems設(shè)置工作目錄:

mkdir-p nios2rtems/rtems/src

然后,獲得RTEMS源碼構(gòu)建套件,其大部分是由python所寫(xiě)的腳本文件。由于托管在git倉(cāng)庫(kù),所以必須有g(shù)it工具并通過(guò)下面代碼獲得工具套件源碼:

$git clone git://git.rtems.org/rtemssource-builder.git

3.1.2檢查

RTEMS源碼構(gòu)建套件為檢查編譯環(huán)境是否已經(jīng)就緒提供了相應(yīng)的工具sb-check:

$source-builder/sb-check

RTEMS Source Builder environment is ok

顯示編譯環(huán)境已經(jīng)準(zhǔn)備就緒3.1.3編譯

源碼構(gòu)建套件中提供了若干平臺(tái)的支持,在編譯之前可以通過(guò)sb-set-builder命令的list-bsets選項(xiàng)查看其支持的平臺(tái)。

$/source-builder/sb-set-builder-list-bsets



4.10/rtems-nios2.bset

4.11/rtems-nios2.bset



從輸出結(jié)果可以知道,RTEMS在4.10版本就已經(jīng)支持nios2平臺(tái)了,這里我們選擇最新的4.11版本。通過(guò)如下命令可以開(kāi)啟nios2平臺(tái)的交叉編譯工具的構(gòu)建:

$sb-set-builder-log=l-nios2.txt-prefix=$HOME/nios2rtems/rtems/4.114.11/rtems-sparc由于構(gòu)建過(guò)程中需要對(duì)所缺文件進(jìn)行在線的下載,整個(gè)過(guò)程可能持續(xù)非常長(zhǎng)在$HOME/nios2rtems/rtems/4.11目錄下的bin/文件夾下可以看到已安裝的nios2-rtems4.11-gcc等工具。

3.2 BSP支持包構(gòu)建

3.2.1 RTEMS BSP結(jié)構(gòu)

RTEMS下關(guān)于nios2平臺(tái)的主要部分有:第一,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.2 Nios II BSP構(gòu)建

Nios II的驅(qū)動(dòng)實(shí)現(xiàn)較為簡(jiǎn)單,對(duì)硬件的操作主要涉及對(duì)外設(shè)硬件所在地址的讀寫(xiě)操作[6].

在RTEMS中添加Nios II支持可以分為以下三個(gè)步驟。

首先,構(gòu)建cpu對(duì)Nios II支持,主要是提供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ù)異常類(lèi)型跳轉(zhuǎn)至異常處理服務(wù)程序或者中斷處理程序中。

3)_Exception_Handler(),異常處理服務(wù)程序。

4)_ISR_Handler(),中斷服務(wù)程序。

5)其它輔助函數(shù),例如中斷注冊(cè)、使能及禁止中斷等功能。

其次,添加外設(shè)對(duì)Nios II支持,主要是提供與CPU異常等相關(guān)的代碼,具體需要實(shí)現(xiàn)以下功能:

1)中斷的管理,包括中斷的注冊(cè)、中斷使能以及中斷禁止等功能,這是對(duì)cpu的進(jìn)一步封裝(可選)。

2)Timer和Clock的等驅(qū)動(dòng)服務(wù)程序。

3)外圍設(shè)備的寄存器相關(guān)信息,都可以在SOPC Builder中找到,例如jtag-uart的寄存器信息可在altera_avalon_jtag_uart_regs.h文件中找到,將所有外設(shè)的寄存器相關(guān)頭文件信息放入csrcliblibcpu目錄中。

4)添加其他可能需要的Cache操作相關(guān)代碼。

最后,添加BSP對(duì)Nios II支持,該部分以RTEMS中nios2_iss為模板,提供基本的驅(qū)動(dòng)程序,一般包括以下基本內(nèi)容:

1)Clock驅(qū)動(dòng),Timer驅(qū)動(dòng),jtag-uart驅(qū)動(dòng)。這一部分代碼涉及對(duì)底層硬件的讀寫(xiě)操作,非常依賴(lài)于Nios2eds生成的system.h文件及相關(guān)寄存器頭文件。

2)start.S及bspstart.c,操作系統(tǒng)啟動(dòng)文件。文件start.S包含RTEMS的啟動(dòng)代碼,包括初始化處理器和單板,為之后的C程序運(yùn)行提供??臻g,使之可以進(jìn)入bspstart.c進(jìn)一步初始化BSP.


3)其他外設(shè)驅(qū)動(dòng),網(wǎng)絡(luò)驅(qū)動(dòng),攝像頭驅(qū)動(dòng)等都在此處添加。

3.2.3編譯下載

準(zhǔn)備好Nios II的BSP之后既可以按照RTEMS官方提供的內(nèi)核編譯流程編譯,之后即可編譯鏈接用戶(hù)應(yīng)用程序。通過(guò)命令行的nios2-download即可實(shí)現(xiàn)程序下載。

4.結(jié)論

本文首先介紹了如何使用Quartus II、SOPC Builder工具進(jìn)行系統(tǒng)開(kāi)發(fā)的一般流程,并簡(jiǎn)要分析NiosII硬件系統(tǒng)及其軟件系統(tǒng)的架構(gòu)。接著詳細(xì)講述如何為RTEMS構(gòu)建支持NiosII的板級(jí)支持包以及使用Nios2eds進(jìn)行應(yīng)用軟件的開(kāi)發(fā)。全文從底層硬件到上層軟件,詳細(xì)描述了如何為基于NiosII軟核構(gòu)建基于RTEMS的板級(jí)支持包。本文同時(shí)給出了基于Nios II軟核的RTEMS移植方法和實(shí)驗(yàn)平臺(tái)構(gòu)建的一般方法。

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

控制寄存器(Control Register)是中央處理器(CPU)中用于管理系統(tǒng)級(jí)操作的特殊寄存器,它為操作系統(tǒng)和硬件提供對(duì)處理器行為的精細(xì)控制。本文從計(jì)算機(jī)體系結(jié)構(gòu)角度系統(tǒng)闡述控制寄存器的設(shè)計(jì)原理、功能分類(lèi)、操作機(jī)制...

關(guān)鍵字: 寄存器 處理器

在嵌入式系統(tǒng)開(kāi)發(fā)中,硬件抽象層(Hardware Abstraction Layer,HAL)起著至關(guān)重要的作用。它為上層軟件提供了統(tǒng)一的硬件訪問(wèn)接口,隱藏了底層硬件的細(xì)節(jié),使得軟件具有更好的可移植性和可維護(hù)性。C++作...

關(guān)鍵字: 嵌入式C++ HAL 寄存器 封裝

采用51單片機(jī)最小開(kāi)發(fā)板,由8位自制獨(dú)立按鍵控制。單片機(jī)芯片為STC89C52RC,晶振為@12.000 mhz。8X8LED點(diǎn)陣屏模塊由MAX7219驅(qū)動(dòng),MAX7219包含一個(gè)自動(dòng)掃描電路。你只需要把要顯示的數(shù)據(jù)發(fā)送...

關(guān)鍵字: 51單片機(jī) MAX7219 寄存器

電源管理集成電路(PMIC)有益于簡(jiǎn)化最終應(yīng)用并縮小其尺寸,也因此備受青睞。然而,當(dāng)默認(rèn)啟動(dòng)時(shí)序和輸出電壓與應(yīng)用要求不符時(shí),就需要定制上電設(shè)置。大多數(shù)情況下,電路沒(méi)有可以存儲(chǔ)這些設(shè)置的非易失性存儲(chǔ)器(NVM)。對(duì)此,低功...

關(guān)鍵字: 電源管理 集成電路 寄存器

我從Digilent公司拿出了我的Arty Z7板,并在Vivado/Vitis 2021.2中創(chuàng)建了一個(gè)項(xiàng)目來(lái)讓它工作,你可以在我的上一個(gè)項(xiàng)目帖子中閱讀,我在QDSP-6061的5位數(shù)上顯示滾動(dòng)文本,上面寫(xiě)著“Hell...

關(guān)鍵字: 寄存器 AXI4 QDSP-6061 RTL模塊

在單片機(jī)系統(tǒng)的設(shè)計(jì)中,復(fù)位電路是確保單片機(jī)正常工作的關(guān)鍵組成部分。它能夠在系統(tǒng)啟動(dòng)時(shí)將單片機(jī)的內(nèi)部寄存器和狀態(tài)設(shè)置為初始值,保證單片機(jī)從一個(gè)確定的狀態(tài)開(kāi)始運(yùn)行。與門(mén)芯片作為一種常見(jiàn)的數(shù)字邏輯芯片,有時(shí)會(huì)被應(yīng)用于單片機(jī)復(fù)位...

關(guān)鍵字: 復(fù)位電路 寄存器 單片機(jī)

在數(shù)字電路設(shè)計(jì)中,計(jì)數(shù)器是一種基礎(chǔ)的數(shù)字電路組件,用于記錄并顯示脈沖信號(hào)的數(shù)量或頻率。4進(jìn)制計(jì)數(shù)器,即模4計(jì)數(shù)器,是一種特殊的計(jì)數(shù)器,其計(jì)數(shù)范圍從0到3,共4個(gè)狀態(tài)。本文將深入探討如何結(jié)合D觸發(fā)器與寄存器來(lái)實(shí)現(xiàn)一個(gè)4進(jìn)制...

關(guān)鍵字: D觸發(fā)器 寄存器 計(jì)數(shù)器

寄存器是CPU內(nèi)部存儲(chǔ)單元,即寄存器是CPU的組成部份。寄存器是有限存貯容量的高速存貯部件,它們可用來(lái)暫存指令、數(shù)據(jù)和位址等。

關(guān)鍵字: 寄存器 CPU

隨著電子技術(shù)的迅速發(fā)展,計(jì)算機(jī)已深入地滲透到我們的生活中,許多電子愛(ài)好者開(kāi)始學(xué)習(xí)單片機(jī)知識(shí),但單片機(jī)的內(nèi)容比較抽象,相對(duì)電子愛(ài)好者已熟悉的模擬電路、數(shù)字電路,單片機(jī)中有一些新的概念,這些概念非常基本以至于一般作者不屑去談...

關(guān)鍵字: 單片機(jī) 寄存器

今天,小編將在這篇文章中為大家?guī)?lái)基于移位寄存器TDM的實(shí)現(xiàn)方式的有關(guān)報(bào)道。

關(guān)鍵字: 寄存器 移位寄存器
關(guān)閉