北航NIOS教程_第1頁
北航NIOS教程_第2頁
北航NIOS教程_第3頁
北航NIOS教程_第4頁
北航NIOS教程_第5頁
已閱讀5頁,還剩114頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、12第第7 7章章 Nios Nios 嵌入式處理器設(shè)計(jì)嵌入式處理器設(shè)計(jì)7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介7.2 Nios 嵌入式處理器軟、硬件開發(fā)流程嵌入式處理器軟、硬件開發(fā)流程7.3 Nios 嵌入式處理器系統(tǒng)的開發(fā)嵌入式處理器系統(tǒng)的開發(fā)7.4 Nios 嵌入式處理器外圍接口嵌入式處理器外圍接口7.5 HAL系統(tǒng)庫系統(tǒng)庫7.6 設(shè)計(jì)實(shí)例設(shè)計(jì)實(shí)例電子鐘電子鐘37.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介一、第一代一、第一代NiosNios嵌入式處理器嵌入式處理器二、第二代二、第二代NiosNios嵌入式處理器嵌入式處理器三、可配置的軟核嵌入式處理器的優(yōu)勢(shì)三、可配

2、置的軟核嵌入式處理器的優(yōu)勢(shì)47.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介一、第一代一、第一代NiosNios嵌入式處理器嵌入式處理器 2000年,年,Altera發(fā)布了發(fā)布了Nios處理器,這是第一款可處理器,這是第一款可用于可編程邏輯器件的可配置的軟核處理器。用于可編程邏輯器件的可配置的軟核處理器?;诨赗ISC技術(shù)技術(shù)16位指令集位指令集16/32位數(shù)據(jù)通道位數(shù)據(jù)通道5級(jí)流水線級(jí)流水線在一個(gè)時(shí)鐘周期內(nèi)完成一條指令的處理在一個(gè)時(shí)鐘周期內(nèi)完成一條指令的處理具有一種基于具有一種基于JTAG的的OCI(片上儀器)芯核(片上儀器)芯核57.1 7.1 Nios 嵌入式處理器簡介嵌入式

3、處理器簡介 2003年,年,Altera發(fā)布了發(fā)布了Nios3.0處理器,它有處理器,它有16位和位和32位兩個(gè)版本,能在低成本的位兩個(gè)版本,能在低成本的Cyclone和高性能的和高性能的Stratrix芯片上實(shí)現(xiàn)。芯片上實(shí)現(xiàn)。 主要特性:主要特性:更多的可配置寄存器更多的可配置寄存器極大的靈活性和可擴(kuò)展性極大的靈活性和可擴(kuò)展性功能強(qiáng)大的開發(fā)工具(功能強(qiáng)大的開發(fā)工具(SOPC Builder)第一代第一代NiosNios處理器的處理器的缺點(diǎn)缺點(diǎn)沒有提供軟件開發(fā)的集成環(huán)境,用戶需要在沒有提供軟件開發(fā)的集成環(huán)境,用戶需要在Nios SDK ShellNios SDK Shell中以命令行的形式執(zhí)行

4、軟件的編譯、運(yùn)行、調(diào)試。程序的編中以命令行的形式執(zhí)行軟件的編譯、運(yùn)行、調(diào)試。程序的編輯、編譯、運(yùn)行都是分離的。輯、編譯、運(yùn)行都是分離的。不支持對(duì)項(xiàng)目的編譯。不支持對(duì)項(xiàng)目的編譯。67.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介二、第二代二、第二代NiosNios嵌入式處理器嵌入式處理器2004年月年月,Altera繼在全球推出繼在全球推出Cyclone和和Stratrix器件系列后,又推出支持這些新款芯片器件系列后,又推出支持這些新款芯片的的Nios嵌入式處理器。嵌入式處理器。 與第一代與第一代NiosNios相比,相比,最大處理性能提高了最大處理性能提高了3 3倍,倍,CPUCPU

5、內(nèi)核部分的面積最大可縮小內(nèi)核部分的面積最大可縮小1/21/2(3232位位Nios Nios 處理處理器占用器占用15001500個(gè)個(gè)LELE, Nios II Nios II 最少只占用最少只占用600600個(gè)個(gè)LELE)。)。廣泛應(yīng)用于嵌入式系統(tǒng)的設(shè)計(jì)中。廣泛應(yīng)用于嵌入式系統(tǒng)的設(shè)計(jì)中。 77.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介種類種類特性特性CPU結(jié)構(gòu)結(jié)構(gòu)32Bit指令集指令集32Bit數(shù)據(jù)寬度線數(shù)據(jù)寬度線32個(gè)通用寄存器個(gè)通用寄存器2G Byte尋址空間尋址空間片內(nèi)調(diào)試片內(nèi)調(diào)試基于邊界掃描測(cè)試基于邊界掃描測(cè)試(JTAG)的調(diào)試邏輯,支的調(diào)試邏輯,支持硬件斷點(diǎn)、數(shù)據(jù)觸發(fā)

6、以及片外和片內(nèi)的調(diào)持硬件斷點(diǎn)、數(shù)據(jù)觸發(fā)以及片外和片內(nèi)的調(diào)試跟蹤試跟蹤定制指令定制指令最多達(dá)到最多達(dá)到256個(gè)用戶定義的個(gè)用戶定義的CPU指令指令軟件開發(fā)工具軟件開發(fā)工具NiosIDE(集成開發(fā)環(huán)境)(集成開發(fā)環(huán)境)基于基于GNU的編譯器的編譯器硬件輔助的調(diào)試模塊硬件輔助的調(diào)試模塊表表7-1Nios 系列處理器的特性系列處理器的特性87.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介 Nios II提供提供3種種不同的內(nèi)核,以滿足系統(tǒng)對(duì)不同性能和成本的需求。不同的內(nèi)核,以滿足系統(tǒng)對(duì)不同性能和成本的需求。最高性能的優(yōu)化最高性能的優(yōu)化平衡性能和尺寸平衡性能和尺寸最小邏輯占用的優(yōu)化最小邏輯占用

7、的優(yōu)化表表7-2Nios 系列處理器的成員系列處理器的成員97.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介Nios vs Nios Nios Nios Pipelined RISC Architecture32-Bit InstructionsFlat Register File32-Bit Data Path32 Prioritized InterruptsOptional Instruction & Data CacheCustom Instructions Branch Prediction Nios NiosPipelined RISC Architecture16-Bit

8、 InstructionsWindowed Register File16 -Bit or 32-Bit Data Path64 Prioritized InterruptsOptional Instruction & Data CacheCustom Instructions 107.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介Nios : Faster & Smaller(Nios /f)117.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介Nios : Faster & Smaller (Nios /s)127.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介Ni

9、os : Faster & Smaller (Nios /e)137.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介High-Performance Interconnect 采用內(nèi)部采用內(nèi)部Avlon總線,連接總線,連接主從構(gòu)件,并進(jìn)行主從構(gòu)件間的通信。主從構(gòu)件,并進(jìn)行主從構(gòu)件間的通信。 主外設(shè)主外設(shè)從外設(shè)從外設(shè)147.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介Some Important Peripherals for Nios II System ID PeripheralUsed to Ensure Hardware/Software Version Synchro

10、nizationSimple 2 read-only register peripheral containing hardware ID tags.Register 1 contains random numberRegister 2 contains time and date when system was generated in SOPC BuilderCan be checked at runtime to ensure that the software to be downloaded matches the hardware image Memory InterfacesEP

11、CS Serial Flash ControllerOn-ChipRAM, ROMOff-ChipSRAMCFI Flash157.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介Other Important Peripherals for Nios II LCD Display JTAG UART Single JTAG Connection For: Device ConfigurationCode DownloadDebugTarget STDIO (printing)Flash Programming Compact Flash Interface Mass Storage S

12、upportTrue IDE ModeCompact Flash ModeSoftware SupportsLow-Level APIMicroC/OS- File System SupportCLinux File System167.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介New Peripherals for Nios II 5.0 SSRAM ControllerCypress CY7C1380C Sync SRAM controller Provided to support SSRAM component on Cyclone II dev kit board Not

13、 a fully configurable general purpose controller Support for DDR/DDR2 in SOPC Builder GUIWith burst adapter Sequential master to interleaved slave enhancementSeparate READ/Write duplex slaves Automatically matches address of read/write slaves Arbitration logic connects read/write masters to both sla

14、ves Support for PCI and Bursting DMA in SOPC Builder GUIHigher bandwidth transfers through PCI177.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介Example of a Nios Processor System處理器內(nèi)核處理器內(nèi)核內(nèi)部總線內(nèi)部總線定時(shí)器定時(shí)器外設(shè)接口外設(shè)接口187.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介Nios II: Hard Numbers197.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介三、可配置的軟核嵌入式處理器的優(yōu)勢(shì)三、可配置的軟核嵌

15、入式處理器的優(yōu)勢(shì)1. 1. 合理的性能組合合理的性能組合使用使用Nios嵌入式處理器和嵌入式處理器和FPGA,用戶可以實(shí),用戶可以實(shí)現(xiàn)在處理器、外設(shè)、存儲(chǔ)器和現(xiàn)在處理器、外設(shè)、存儲(chǔ)器和I/O接口方面的合理接口方面的合理組合。組合。3種處理器內(nèi)核種處理器內(nèi)核6060余種余種SOPC BuilderSOPC Builder配備的配備的IP核核 無限的無限的DMADMA通道組合通道組合可配置的硬件及軟件調(diào)試特性可配置的硬件及軟件調(diào)試特性207.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介2. 2. 提升系統(tǒng)的性能提升系統(tǒng)的性能 NiosNios系統(tǒng)的性能可根據(jù)應(yīng)用來裁減,與固定系統(tǒng)的性能可

16、根據(jù)應(yīng)用來裁減,與固定的處理器相比,在較低的時(shí)鐘速率下具備更高的處理器相比,在較低的時(shí)鐘速率下具備更高的性能。的性能。多多CPU內(nèi)核內(nèi)核:可選擇最快的內(nèi)核,或在一片F(xiàn)PGA內(nèi)采用多個(gè)內(nèi)核支持的支持的FPGA系列系列:Stratix,Stratix, Stratix GX,Cyclone,Cyclone,HardCopy Stratix定制指令定制指令:把用戶自定義的功能直接添加到Nios處理器的ALU中,加快專項(xiàng)任務(wù)的執(zhí)行,以提高系統(tǒng)的性能硬件加速硬件加速:專用的硬件加速器添加到FPGA中作為CPU的協(xié)處理器217.1 7.1 Nios 嵌入式處理器簡介嵌入式處理器簡介3. 3. 降低系統(tǒng)成本

17、降低系統(tǒng)成本 主要途徑主要途徑: 更大規(guī)模的系統(tǒng)集成更大規(guī)模的系統(tǒng)集成優(yōu)化優(yōu)化FPGA/CPU的選擇的選擇:選擇經(jīng)濟(jì)型內(nèi)核應(yīng)用于低成本、低性能系統(tǒng),或者在單個(gè)FPGA上使用多個(gè)內(nèi)核更好的庫存管理更好的庫存管理4. 4. 延長產(chǎn)品的生命周期延長產(chǎn)品的生命周期加快產(chǎn)品上市時(shí)間:加快產(chǎn)品上市時(shí)間:FPGA可編程、可隨時(shí)驗(yàn)證修改 建立有競(jìng)爭(zhēng)性的優(yōu)勢(shì)建立有競(jìng)爭(zhēng)性的優(yōu)勢(shì):硬件加速、定制指令、定制外設(shè)延長了產(chǎn)品的生存時(shí)間延長了產(chǎn)品的生存時(shí)間:可對(duì)硬件和軟件及時(shí)進(jìn)行升級(jí)在產(chǎn)品產(chǎn)量增加的情況下減少成本在產(chǎn)品產(chǎn)量增加的情況下減少成本:可將FPGA設(shè)計(jì)無縫移植到Altera的HardCopy器件(一種結(jié)構(gòu)化的ASI

18、C)中227.2 7.2 Nios 嵌入式處理器軟、硬件開發(fā)流程嵌入式處理器軟、硬件開發(fā)流程一、硬件開發(fā)流程一、硬件開發(fā)流程二、軟件開發(fā)流程二、軟件開發(fā)流程237.2 7.2 Nios 嵌入式處理器軟、硬件開發(fā)流程嵌入式處理器軟、硬件開發(fā)流程N(yùn)ios Design FlowSOPC Builder GUIConnect BlocksProcessor LibraryCustom InstructionsPeripheral LibrarySelect & Configure Peripherals, IPIP ModulesConfigure ProcessorGeneratenEDIF Ne

19、tlistnHDL Source FilesnTestbenchSynthesis &Fitter nUser DesignnOther IP BlocksHardware DevelopmentQuartus IIOn-ChipDebugSoftware TraceHard BreakpointsSignalTap IIAlteraPLD JTAG,Serial, orEthernetExecutableCodeHardwareConfigurationFileVerification& Debug(1 1)(2 2)(3 3)(4 4)nC Header filesnCustom Libr

20、arynPeripheral DriversCompiler,Linker, DebuggerSoftware DevelopmentnUser CodenLibrariesnRTOSGNU ToolsNios II IDE247.2 7.2 Nios 嵌入式處理器軟、硬件開發(fā)流程嵌入式處理器軟、硬件開發(fā)流程一、硬件開發(fā)流程一、硬件開發(fā)流程 下載完硬件配置文件后,軟件開發(fā)者就可以把此開發(fā)板作下載完硬件配置文件后,軟件開發(fā)者就可以把此開發(fā)板作為軟件開發(fā)的初期硬件平臺(tái)進(jìn)行軟件功能的開發(fā)驗(yàn)證了。為軟件開發(fā)的初期硬件平臺(tái)進(jìn)行軟件功能的開發(fā)驗(yàn)證了。(1 1)定義定義Nios嵌入式處理器系統(tǒng):嵌入式處理器

21、系統(tǒng):使用使用SOPC Builder系統(tǒng)綜合軟系統(tǒng)綜合軟件選取合適的件選取合適的CPU、存儲(chǔ)器以及外圍器件,并定制其功能。、存儲(chǔ)器以及外圍器件,并定制其功能。(2)指定目標(biāo)器件、分配引腳、編譯硬件指定目標(biāo)器件、分配引腳、編譯硬件:使用:使用Quartus選取選取Altera器件系列,并對(duì)器件系列,并對(duì)SOPC Builder生成的生成的HDL設(shè)計(jì)文件進(jìn)行布設(shè)計(jì)文件進(jìn)行布局布線;再選取目標(biāo)器件,分配管腳,進(jìn)行硬件編譯選項(xiàng)或時(shí)序局布線;再選取目標(biāo)器件,分配管腳,進(jìn)行硬件編譯選項(xiàng)或時(shí)序約束的設(shè)置。編譯,生成網(wǎng)表文件和配置文件。約束的設(shè)置。編譯,生成網(wǎng)表文件和配置文件。(3)硬件下載:硬件下載:使用

22、使用Quartus軟件和下載電纜,將配置文件下載到軟件和下載電纜,將配置文件下載到開發(fā)板上的開發(fā)板上的FPGA中。當(dāng)校驗(yàn)完當(dāng)前硬件設(shè)計(jì)后,還可再次將新中。當(dāng)校驗(yàn)完當(dāng)前硬件設(shè)計(jì)后,還可再次將新的配置文件下載到開發(fā)板上的非易失存儲(chǔ)器里。的配置文件下載到開發(fā)板上的非易失存儲(chǔ)器里。 257.2 7.2 Nios 嵌入式處理器軟、硬件開發(fā)流程嵌入式處理器軟、硬件開發(fā)流程二、軟件開發(fā)流程二、軟件開發(fā)流程(1 1)在使用)在使用SOPC BuilderSOPC Builder進(jìn)行硬件設(shè)計(jì)的同時(shí),就可以開始編寫?yīng)毩⑦M(jìn)行硬件設(shè)計(jì)的同時(shí),就可以開始編寫?yīng)毩⒂谄骷挠谄骷腃/C+C/C+軟件,比如算法或控制程序。

23、用戶可以使用現(xiàn)成軟件,比如算法或控制程序。用戶可以使用現(xiàn)成的軟件庫和開放的操作系統(tǒng)內(nèi)核來加快開發(fā)過程。的軟件庫和開放的操作系統(tǒng)內(nèi)核來加快開發(fā)過程。(2 2)在)在NiosIDENiosIDE中建立新的軟件工程時(shí),中建立新的軟件工程時(shí),IDEIDE會(huì)根據(jù)會(huì)根據(jù)SOPC BuilderSOPC Builder對(duì)系統(tǒng)的硬件配置自動(dòng)生成一個(gè)定制對(duì)系統(tǒng)的硬件配置自動(dòng)生成一個(gè)定制HAL(HAL(硬件抽象層硬件抽象層) )系統(tǒng)庫。系統(tǒng)庫。這個(gè)庫能為程序和底層硬件的通信提供接口驅(qū)動(dòng)程序。這個(gè)庫能為程序和底層硬件的通信提供接口驅(qū)動(dòng)程序。(3 3)使用)使用NiosIDENiosIDE對(duì)軟件工程進(jìn)行編譯、調(diào)試。對(duì)

24、軟件工程進(jìn)行編譯、調(diào)試。(4 4)將硬件設(shè)計(jì)下載到開發(fā)板后,就可以將軟件下載到開發(fā)板上并)將硬件設(shè)計(jì)下載到開發(fā)板后,就可以將軟件下載到開發(fā)板上并在硬件上運(yùn)行。在硬件上運(yùn)行。267.3 7.3 Nios 嵌入式處理器系統(tǒng)的開發(fā)嵌入式處理器系統(tǒng)的開發(fā)一、一、Nios Nios 集成開發(fā)環(huán)境(集成開發(fā)環(huán)境(IDEIDE)介紹)介紹二、二、Nios Nios 嵌入式處理器系統(tǒng)設(shè)計(jì)過程嵌入式處理器系統(tǒng)設(shè)計(jì)過程277.3 7.3 Nios 嵌入式處理器系統(tǒng)的開發(fā)嵌入式處理器系統(tǒng)的開發(fā) Nios IDE是是Nios系列嵌入式處理器的基本軟件開系列嵌入式處理器的基本軟件開發(fā)工具,包括程序的編輯、編譯、調(diào)試和下

25、載運(yùn)行。發(fā)工具,包括程序的編輯、編譯、調(diào)試和下載運(yùn)行。 Nios IDE使用方法和使用方法和Visual C+類似。在類似。在7.6節(jié)中會(huì)節(jié)中會(huì)結(jié)合示例進(jìn)行講解。結(jié)合示例進(jìn)行講解。 Nios IDE為軟件開發(fā)提供了為軟件開發(fā)提供了4個(gè)功能:個(gè)功能:工程管理器;工程管理器;編輯器和編譯器;編輯器和編譯器;調(diào)試器;調(diào)試器;閃存編程器。閃存編程器。一、一、NiosNios集成開發(fā)環(huán)境(集成開發(fā)環(huán)境(IDEIDE)介紹)介紹287.3 7.3 Nios 嵌入式處理器系統(tǒng)的開發(fā)嵌入式處理器系統(tǒng)的開發(fā)(1 1)新工程向?qū)В┬鹿こ滔驅(qū)ё詣?dòng)建立自動(dòng)建立C/C+C/C+應(yīng)用程序工程和系統(tǒng)庫工程。應(yīng)用程序工程和系

26、統(tǒng)庫工程。(2 2)軟件工程模板)軟件工程模板提供軟件代碼實(shí)例,幫助用戶盡快推出可運(yùn)行的提供軟件代碼實(shí)例,幫助用戶盡快推出可運(yùn)行的系統(tǒng)系統(tǒng)(3 3)軟件組件(系統(tǒng)軟件)軟件組件(系統(tǒng)軟件)Nios Nios 運(yùn)行庫(或稱為硬件抽象層運(yùn)行庫(或稱為硬件抽象層HALHAL););輕量級(jí)輕量級(jí)IP TCP/IPIP TCP/IP庫;庫;C/OS C/OS 實(shí)時(shí)操作系統(tǒng)(實(shí)時(shí)操作系統(tǒng)(RTOSRTOS););AlteraAltera壓縮文件系統(tǒng)。壓縮文件系統(tǒng)。1. 1. 工程管理器工程管理器297.3 7.3 Nios 嵌入式處理器系統(tǒng)的開發(fā)嵌入式處理器系統(tǒng)的開發(fā)(1 1)文本編輯器)文本編輯器全功能

27、源文件編輯器:全功能源文件編輯器: 語法高亮顯示語法高亮顯示C/C+C/C+程序代碼;程序代碼; 全面的搜索工具;全面的搜索工具; 文件管理;文件管理; 快速定位及自動(dòng)糾錯(cuò);快速定位及自動(dòng)糾錯(cuò); 內(nèi)置調(diào)試功能等內(nèi)置調(diào)試功能等(2 2) C/C+C/C+編譯器編譯器提供圖形化用戶界面;提供圖形化用戶界面;提供按鈕式流程;提供按鈕式流程;自動(dòng)生成一個(gè)基于特定用戶配置的自動(dòng)生成一個(gè)基于特定用戶配置的makefilemakefile。2. 2. 編輯器和編譯器編輯器和編譯器307.3 7.3 Nios 嵌入式處理器系統(tǒng)的開發(fā)嵌入式處理器系統(tǒng)的開發(fā)(1 1)基本調(diào)試功能)基本調(diào)試功能運(yùn)行控制;運(yùn)行控制;

28、調(diào)用堆棧查看;調(diào)用堆棧查看;軟件斷點(diǎn);軟件斷點(diǎn);反匯編代碼查看;反匯編代碼查看;調(diào)試信息查看;調(diào)試信息查看;指令集仿真器。指令集仿真器。(2 2) 高級(jí)調(diào)試功能高級(jí)調(diào)試功能硬件斷點(diǎn)調(diào)試硬件斷點(diǎn)調(diào)試ROMROM或閃存中的代碼;或閃存中的代碼;數(shù)據(jù)觸發(fā);數(shù)據(jù)觸發(fā);指令跟蹤。指令跟蹤。3. 3. 調(diào)試器調(diào)試器(3 3)調(diào)試信息查看)調(diào)試信息查看使用戶可以訪問本地變量、使用戶可以訪問本地變量、寄存器、存儲(chǔ)器、斷點(diǎn)以及寄存器、存儲(chǔ)器、斷點(diǎn)以及表達(dá)式賦值函數(shù)。表達(dá)式賦值函數(shù)。(4 4) 連接多種目標(biāo)連接多種目標(biāo)FPGAFPGA開發(fā)板(通過開發(fā)板(通過JTAGJTAG););指令集仿真器;指令集仿真器;硬件

29、邏輯仿真器。硬件邏輯仿真器。317.3 7.3 Nios 嵌入式處理器系統(tǒng)的開發(fā)嵌入式處理器系統(tǒng)的開發(fā)4. 4. 閃存編程器閃存編程器閃存可用來存儲(chǔ)閃存可用來存儲(chǔ)FPGAFPGA配置數(shù)據(jù)和配置數(shù)據(jù)和/ /或或Nios Nios 編程數(shù)據(jù)。編程數(shù)據(jù)。NiosIDENiosIDE閃存編程器可對(duì)連接到閃存編程器可對(duì)連接到FPGAFPGA的兼容通用閃存接口(的兼容通用閃存接口(CFICFI)的閃存器件、或的閃存器件、或AlteraAltera串行配置器件進(jìn)行編程。串行配置器件進(jìn)行編程。內(nèi)容類型內(nèi)容類型說說 明明系統(tǒng)固定軟件系統(tǒng)固定軟件用于用于Nios處理器復(fù)位時(shí)從閃存中導(dǎo)入啟處理器復(fù)位時(shí)從閃存中導(dǎo)入啟

30、動(dòng)程序動(dòng)程序FPGA配置數(shù)據(jù)配置數(shù)據(jù)使用配置控制器,使用配置控制器,F(xiàn)PGA能夠在上電復(fù)位時(shí)能夠在上電復(fù)位時(shí)從閃存獲取配置數(shù)據(jù)從閃存獲取配置數(shù)據(jù)任意二進(jìn)制數(shù)據(jù)任意二進(jìn)制數(shù)據(jù)開發(fā)人員可以將任何二進(jìn)制數(shù)據(jù)存儲(chǔ)到閃存開發(fā)人員可以將任何二進(jìn)制數(shù)據(jù)存儲(chǔ)到閃存內(nèi),如圖形、音頻等內(nèi),如圖形、音頻等表表7-3編程到閃存中的通用內(nèi)容類型編程到閃存中的通用內(nèi)容類型327.3 7.3 Nios 嵌入式處理器系統(tǒng)的開發(fā)嵌入式處理器系統(tǒng)的開發(fā)1. 1. 硬件設(shè)計(jì)過程硬件設(shè)計(jì)過程(1 1)創(chuàng)建一個(gè))創(chuàng)建一個(gè)Quqrtus Quqrtus 工程工程(2 2)創(chuàng)建)創(chuàng)建Nios Nios 系統(tǒng)模塊系統(tǒng)模塊啟動(dòng)啟動(dòng)SOPC B

31、uilderSOPC Builder添加添加CPUCPU和外圍器件和外圍器件指定基地址指定基地址系統(tǒng)設(shè)置系統(tǒng)設(shè)置生成系統(tǒng)模塊生成系統(tǒng)模塊(3 3)將)將Nios Nios 系統(tǒng)模塊符號(hào)添加到系統(tǒng)模塊符號(hào)添加到BDFBDF文件中文件中(4 4)編譯)編譯Quqrtus Quqrtus 工程工程(5 5)配置)配置FPGAFPGA二、二、Nios Nios 嵌入式處理器系統(tǒng)設(shè)計(jì)過程嵌入式處理器系統(tǒng)設(shè)計(jì)過程337.3 7.3 Nios 嵌入式處理器系統(tǒng)的開發(fā)嵌入式處理器系統(tǒng)的開發(fā)(1 1)啟動(dòng))啟動(dòng)Nios IDENios IDE;(2 2)建立新的軟件工程,編寫源程序;)建立新的軟件工程,編寫源程

32、序;(3 3)編譯工程;)編譯工程;(4 4)運(yùn)行程序;)運(yùn)行程序;(5 5)調(diào)試程序;)調(diào)試程序;(6 6)將程序下載到開發(fā)板上的)將程序下載到開發(fā)板上的FlashFlash中。中。2. 2. 軟件設(shè)計(jì)過程軟件設(shè)計(jì)過程347.4 7.4 Nios 處理器外圍接口處理器外圍接口一、標(biāo)準(zhǔn)外圍設(shè)備一、標(biāo)準(zhǔn)外圍設(shè)備二、用戶定制外圍設(shè)備二、用戶定制外圍設(shè)備357.4 7.4 Nios 處理器外圍接口處理器外圍接口一、標(biāo)準(zhǔn)外圍設(shè)備一、標(biāo)準(zhǔn)外圍設(shè)備 Nios Nios 包括一個(gè)常用外圍設(shè)備及接口庫,在包括一個(gè)常用外圍設(shè)備及接口庫,在Altera Altera FPGAFPGA中可免費(fèi)使用。中可免費(fèi)使用。

33、標(biāo)準(zhǔn)外圍設(shè)備標(biāo)準(zhǔn)外圍設(shè)備為即用型設(shè)計(jì)模塊,采用為即用型設(shè)計(jì)模塊,采用Verilog HDL和和VHDL的源代碼方式交付使用,其中包括簡單系統(tǒng)集的源代碼方式交付使用,其中包括簡單系統(tǒng)集成所需要的所有軟件子程序。成所需要的所有軟件子程序。 查看各接口的詳細(xì)說明:可在查看各接口的詳細(xì)說明:可在SOPC Builder的元件池的元件池中用右鍵點(diǎn)擊元件,在彈出的菜單中選擇中用右鍵點(diǎn)擊元件,在彈出的菜單中選擇“Data Sheet”選項(xiàng)。選項(xiàng)。36 7.4 7.4 Nios 處理器外圍接口處理器外圍接口外圍設(shè)備接口外圍設(shè)備接口說說 明明CompactFlash接口接口提供大容量存儲(chǔ)支持提供大容量存儲(chǔ)支持用

34、戶邏輯接口用戶邏輯接口將片內(nèi)用戶邏輯或片外器件連接到將片內(nèi)用戶邏輯或片外器件連接到SOPC Builder生成的系統(tǒng)中生成的系統(tǒng)中UART提供通用串行接口,具有可變波特率、奇偶校驗(yàn)、停止和數(shù)據(jù)位提供通用串行接口,具有可變波特率、奇偶校驗(yàn)、停止和數(shù)據(jù)位及可選的流量控制信號(hào)及可選的流量控制信號(hào)間隔時(shí)鐘間隔時(shí)鐘提供提供32位時(shí)鐘,可作為周期脈沖發(fā)生器或系統(tǒng)看門狗時(shí)鐘位時(shí)鐘,可作為周期脈沖發(fā)生器或系統(tǒng)看門狗時(shí)鐘并行并行I/O接口接口提供提供1位到位到32位的并行位的并行I/O接口接口(輸入、輸出、邊緣采樣輸入、輸出、邊緣采樣)串行外圍設(shè)備接口(串行外圍設(shè)備接口(SPI) 實(shí)現(xiàn)工業(yè)標(biāo)準(zhǔn)串行外圍設(shè)備接口,

35、支持主設(shè)備或從設(shè)備協(xié)議實(shí)現(xiàn)工業(yè)標(biāo)準(zhǔn)串行外圍設(shè)備接口,支持主設(shè)備或從設(shè)備協(xié)議DMA控制器控制器與存儲(chǔ)器進(jìn)行批數(shù)據(jù)交換,減輕與存儲(chǔ)器進(jìn)行批數(shù)據(jù)交換,減輕CPU的負(fù)擔(dān)的負(fù)擔(dān)SDRAM控制器控制器提供一個(gè)簡單提供一個(gè)簡單Avalon接口,與片外的接口,與片外的SDRAM溝通,支持溝通,支持8、16、32和和64位數(shù)據(jù)寬度位數(shù)據(jù)寬度存儲(chǔ)器接口存儲(chǔ)器接口包括:片內(nèi)包括:片內(nèi)ROM和和RAM、SDRAM、SSRAM、SRAM和和Flash,Altera的串行配置器件的串行配置器件以太網(wǎng)端口以太網(wǎng)端口包括:包括:10/100兆比特每秒兆比特每秒SMSC LAN91C111單芯片以太網(wǎng)控制單芯片以太網(wǎng)控制器,提

36、供輕量級(jí)的器,提供輕量級(jí)的IP TCP/IP協(xié)議棧的軟件支持,已經(jīng)包含在協(xié)議棧的軟件支持,已經(jīng)包含在Nios 開發(fā)套件中開發(fā)套件中JTAG UART(僅在僅在Nios 中有中有)通過內(nèi)嵌在通過內(nèi)嵌在Altera FPGA內(nèi)部的聯(lián)合測(cè)試行動(dòng)組內(nèi)部的聯(lián)合測(cè)試行動(dòng)組(JTAG)電路,在電路,在PC主機(jī)和主機(jī)和SOPC Builder系統(tǒng)之間進(jìn)行串行字符流通信系統(tǒng)之間進(jìn)行串行字符流通信表表7-4 Nios&Nios 外圍設(shè)備接口外圍設(shè)備接口377.4 7.4 Nios 處理器外圍接口處理器外圍接口二、用戶定制外圍設(shè)備二、用戶定制外圍設(shè)備 用戶可以創(chuàng)建自己的外圍設(shè)備,并通過用戶邏輯用戶可以創(chuàng)建自己的外圍

37、設(shè)備,并通過用戶邏輯接口向?qū)Ъ傻浇涌谙驅(qū)Ъ傻絅ios Nios 處理器系統(tǒng)中。處理器系統(tǒng)中。 整個(gè)過程用戶介入很少。整個(gè)過程用戶介入很少。387.5 7.5 HAL系統(tǒng)庫系統(tǒng)庫一、一、HALHAL系統(tǒng)庫簡介系統(tǒng)庫簡介二、使用二、使用HALHAL開發(fā)程序開發(fā)程序397.5 7.5 HAL系統(tǒng)庫系統(tǒng)庫一、一、 HALHAL系統(tǒng)庫簡介系統(tǒng)庫簡介 什么是什么是HAL系統(tǒng)庫?系統(tǒng)庫?用戶在進(jìn)行嵌入式系統(tǒng)的軟件開發(fā)時(shí),會(huì)涉及到與硬件的通信問題。HAL(Hardware Abstraction Layer,硬件抽象層)系統(tǒng)庫可為與硬件通信的程序提供簡單的設(shè)備驅(qū)動(dòng)接口。它是用戶在NiosIDE中創(chuàng)建一個(gè)新

38、的工程時(shí),由IDE基于用戶在SOPC Builder中創(chuàng)建的Nios處理器系統(tǒng)自動(dòng)生成的。HAL應(yīng)用程序接口(API)和ANSI C標(biāo)準(zhǔn)庫綜合在一起,它使用戶用類似C語言的庫函數(shù)來訪問硬件設(shè)備或文件,如printf()、fopen()、fwrite()等函數(shù)。407.5 7.5 HAL系統(tǒng)庫系統(tǒng)庫 HAL為嵌入式系統(tǒng)中的外圍設(shè)備提供接口程序。為嵌入式系統(tǒng)中的外圍設(shè)備提供接口程序。HAL和和SOPC Builder緊密相關(guān),如果硬件配置緊密相關(guān),如果硬件配置有了變化,有了變化,HAL設(shè)備驅(qū)動(dòng)配置也會(huì)自動(dòng)隨之改動(dòng),設(shè)備驅(qū)動(dòng)配置也會(huì)自動(dòng)隨之改動(dòng),從而避免了由于底層硬件的變化而產(chǎn)生的程序錯(cuò)從而避免了由

39、于底層硬件的變化而產(chǎn)生的程序錯(cuò)誤。誤。 用戶不必自己創(chuàng)建或拷貝用戶不必自己創(chuàng)建或拷貝HAL文件,也不必編輯文件,也不必編輯HAL中的任何源代碼。中的任何源代碼。NiosIDE會(huì)為用戶會(huì)為用戶自動(dòng)自動(dòng)創(chuàng)建和管理創(chuàng)建和管理HAL文件。文件。 417.5 7.5 HAL系統(tǒng)庫系統(tǒng)庫與與ANSI C合成的標(biāo)準(zhǔn)庫合成的標(biāo)準(zhǔn)庫提供類似提供類似C語言的標(biāo)準(zhǔn)庫函數(shù);語言的標(biāo)準(zhǔn)庫函數(shù);設(shè)備驅(qū)動(dòng)設(shè)備驅(qū)動(dòng)提供訪問系統(tǒng)中每個(gè)設(shè)備的驅(qū)動(dòng)程序;提供訪問系統(tǒng)中每個(gè)設(shè)備的驅(qū)動(dòng)程序;HAL API提供標(biāo)準(zhǔn)的接口程序,如設(shè)備訪問、中斷處理等;提供標(biāo)準(zhǔn)的接口程序,如設(shè)備訪問、中斷處理等;系統(tǒng)初始化系統(tǒng)初始化在在main()函數(shù)之前

40、執(zhí)行對(duì)處理器的初始化;函數(shù)之前執(zhí)行對(duì)處理器的初始化;設(shè)備初始化設(shè)備初始化在在main()函數(shù)之前執(zhí)行對(duì)系統(tǒng)中外圍設(shè)備的初始化。函數(shù)之前執(zhí)行對(duì)系統(tǒng)中外圍設(shè)備的初始化。用戶程序用戶程序C語言標(biāo)準(zhǔn)庫語言標(biāo)準(zhǔn)庫HAL API硬件硬件設(shè)備設(shè)備驅(qū)動(dòng)驅(qū)動(dòng)設(shè)備設(shè)備驅(qū)動(dòng)驅(qū)動(dòng)設(shè)備設(shè)備驅(qū)動(dòng)驅(qū)動(dòng)圖圖7-1 HAL所基于的系統(tǒng)層次所基于的系統(tǒng)層次1. HAL1. HAL構(gòu)成構(gòu)成427.5 7.5 HAL系統(tǒng)庫系統(tǒng)庫應(yīng)用程序開發(fā)應(yīng)用程序開發(fā) 是用戶軟件開發(fā)的主要部分,包括系統(tǒng)的主程序和其他子程序。 應(yīng)用程序與系統(tǒng)設(shè)備的通信主要是通過C語言標(biāo)準(zhǔn)庫或HAL系統(tǒng)庫API來實(shí)現(xiàn)。驅(qū)動(dòng)程序開發(fā)驅(qū)動(dòng)程序開發(fā) 指編寫供應(yīng)用程序訪問設(shè)備

41、的程序。 驅(qū)動(dòng)程序直接和底層硬件的宏定義打交道。 一旦用戶要訪問設(shè)備的驅(qū)動(dòng)程序編寫好,用戶的程序開發(fā)只要利用HAL提供的各種函數(shù)就可以編寫各種應(yīng)用程序了。2.2. 應(yīng)用程序和驅(qū)動(dòng)應(yīng)用程序和驅(qū)動(dòng)437.5 7.5 HAL系統(tǒng)庫系統(tǒng)庫 HAL為嵌入式系統(tǒng)中常見的外圍設(shè)備提供了通用的設(shè)備模型,為嵌入式系統(tǒng)中常見的外圍設(shè)備提供了通用的設(shè)備模型,使用戶無需考慮底層硬件,只需利用與之相一致的使用戶無需考慮底層硬件,只需利用與之相一致的API編寫應(yīng)編寫應(yīng)用程序即可。用程序即可。字符模式設(shè)備字符模式設(shè)備發(fā)送和接受字符串的外圍硬件設(shè)備,如發(fā)送和接受字符串的外圍硬件設(shè)備,如UART定時(shí)器設(shè)備定時(shí)器設(shè)備對(duì)時(shí)鐘脈沖計(jì)

42、數(shù)并能產(chǎn)生周期性中斷請(qǐng)求的外圍對(duì)時(shí)鐘脈沖計(jì)數(shù)并能產(chǎn)生周期性中斷請(qǐng)求的外圍硬件設(shè)備硬件設(shè)備文件子系統(tǒng)文件子系統(tǒng)提供訪問存儲(chǔ)在物理設(shè)備中的文件的操作,如用提供訪問存儲(chǔ)在物理設(shè)備中的文件的操作,如用戶可以利用有關(guān)戶可以利用有關(guān)Flash存儲(chǔ)器設(shè)備的存儲(chǔ)器設(shè)備的HAL API編寫編寫Flash文件子系文件子系統(tǒng)驅(qū)動(dòng)來訪問統(tǒng)驅(qū)動(dòng)來訪問Flash。以太網(wǎng)設(shè)備以太網(wǎng)設(shè)備對(duì)對(duì)Altera提供的輕量級(jí)的提供的輕量級(jí)的IP協(xié)議提供訪問以太網(wǎng)協(xié)議提供訪問以太網(wǎng)的連接。的連接。DMA設(shè)備設(shè)備執(zhí)行大量數(shù)據(jù)在數(shù)據(jù)源和目的地之間傳輸?shù)耐鈬O(shè)執(zhí)行大量數(shù)據(jù)在數(shù)據(jù)源和目的地之間傳輸?shù)耐鈬O(shè)備。數(shù)據(jù)源和目的地可以是存儲(chǔ)器或其他設(shè)備

43、,如以太網(wǎng)連接。備。數(shù)據(jù)源和目的地可以是存儲(chǔ)器或其他設(shè)備,如以太網(wǎng)連接。Flash存儲(chǔ)器設(shè)備存儲(chǔ)器設(shè)備利用專門編程協(xié)議存儲(chǔ)數(shù)據(jù)的非易失性存利用專門編程協(xié)議存儲(chǔ)數(shù)據(jù)的非易失性存儲(chǔ)設(shè)備。儲(chǔ)設(shè)備。3. 3. 通用設(shè)備模型通用設(shè)備模型447.5 7.5 HAL系統(tǒng)庫系統(tǒng)庫5. HAL5. HAL支持的外圍設(shè)備支持的外圍設(shè)備 Altera提供了許多在提供了許多在Nios 處理器系統(tǒng)中使用的外圍設(shè)備,大部分處理器系統(tǒng)中使用的外圍設(shè)備,大部分外圍設(shè)備都提供了外圍設(shè)備都提供了HAL驅(qū)動(dòng),使用戶可通過驅(qū)動(dòng),使用戶可通過HAL API訪問硬件。訪問硬件。字符模式設(shè)備字符模式設(shè)備定時(shí)器設(shè)備定時(shí)器設(shè)備文件子系統(tǒng)文件子

44、系統(tǒng)以太網(wǎng)設(shè)備以太網(wǎng)設(shè)備DMA設(shè)備設(shè)備Flash存儲(chǔ)器設(shè)備存儲(chǔ)器設(shè)備一些第三方外圍設(shè)備一些第三方外圍設(shè)備4. C4. C標(biāo)準(zhǔn)庫標(biāo)準(zhǔn)庫NewlibNewlibHAL系統(tǒng)庫與系統(tǒng)庫與ANSI C標(biāo)準(zhǔn)庫一起構(gòu)成標(biāo)準(zhǔn)庫一起構(gòu)成HAL的運(yùn)行環(huán)境的運(yùn)行環(huán)境(Runtime Environment)。HAL使用的使用的Newlib是是C語言標(biāo)準(zhǔn)庫的一種開放語言標(biāo)準(zhǔn)庫的一種開放源代碼的實(shí)現(xiàn),是在嵌入式系統(tǒng)上使用的源代碼的實(shí)現(xiàn),是在嵌入式系統(tǒng)上使用的C語言程序庫,正好與語言程序庫,正好與HAL和和Nios 處理器相匹配。處理器相匹配。457.5 7.5 HAL系統(tǒng)庫系統(tǒng)庫二、使用二、使用HALHAL開發(fā)程序開發(fā)

45、程序 HAL和和SOPC Builder緊密相關(guān),如果硬件配置有了變緊密相關(guān),如果硬件配置有了變化,化,HAL設(shè)備驅(qū)動(dòng)配置也會(huì)自動(dòng)隨之改動(dòng),從而避免設(shè)備驅(qū)動(dòng)配置也會(huì)自動(dòng)隨之改動(dòng),從而避免了由于底層硬件的變化而產(chǎn)生的程序錯(cuò)誤。了由于底層硬件的變化而產(chǎn)生的程序錯(cuò)誤。 用戶不用自己創(chuàng)建或拷貝用戶不用自己創(chuàng)建或拷貝HAL文件,而且用戶也不用文件,而且用戶也不用編輯編輯HAL中的任何源代碼。中的任何源代碼。NiosIDE會(huì)為用戶自動(dòng)創(chuàng)會(huì)為用戶自動(dòng)創(chuàng)建和管理建和管理HAL文件。文件。467.5 7.5 HAL系統(tǒng)庫系統(tǒng)庫1. Nios IDE1. Nios IDE工程結(jié)構(gòu)工程結(jié)構(gòu)軟件軟件硬件硬件477.5

46、 7.5 HAL系統(tǒng)庫系統(tǒng)庫2. System.h 2. System.h 系統(tǒng)描述文件系統(tǒng)描述文件 System.hSystem.h文件是文件是HALHAL系統(tǒng)庫的基礎(chǔ),它提供了關(guān)于系統(tǒng)庫的基礎(chǔ),它提供了關(guān)于Nios Nios 系統(tǒng)硬件的軟件描述。它描述了系統(tǒng)中的每個(gè)外圍設(shè)系統(tǒng)硬件的軟件描述。它描述了系統(tǒng)中的每個(gè)外圍設(shè)備,并給出以下一些詳細(xì)信息:備,并給出以下一些詳細(xì)信息:外圍設(shè)備的硬件配置;外圍設(shè)備的硬件配置;基地址;基地址;中斷優(yōu)先級(jí);中斷優(yōu)先級(jí);外圍器件的符號(hào)名稱。外圍器件的符號(hào)名稱。 用戶無須編輯用戶無須編輯System.hSystem.h文件,它是由文件,它是由Nios IDENi

47、os IDE自動(dòng)生自動(dòng)生成的。成的。 可以到以下目錄中查看可以到以下目錄中查看System.hSystem.h文件,:文件,:QuartusQuartus工程工程softwareNiossoftwareNios工程名工程名 _syslibDebugsystem_description_syslibDebugsystem_description487.5 7.5 HAL系統(tǒng)庫系統(tǒng)庫3. 3. 數(shù)據(jù)寬度和數(shù)據(jù)寬度和HALHAL類型定義類型定義 alt_types.halt_types.h頭文件定義了頭文件定義了HALHAL的數(shù)據(jù)類型。在以下路徑的數(shù)據(jù)類型。在以下路徑可以查看該文件:可以查看該文件:

48、Nios 安裝路徑安裝路徑componentsaltera_nios2HALinc 部分代碼摘抄如下:部分代碼摘抄如下:typedef signed char alt_8;typedef unsigned char alt_u8;typedef signed short alt_16;typedef unsigned short alt_u16;typedef signed long alt_32;typedef unsigned long alt_u32;類型類型說明說明alt_8有符號(hào)有符號(hào)8位整數(shù)位整數(shù)alt_u8無符號(hào)無符號(hào)8位整數(shù)位整數(shù)alt_16有符號(hào)有符號(hào)16位整數(shù)位整數(shù)alt_

49、u16無符號(hào)無符號(hào)16位整數(shù)位整數(shù)alt_32有符號(hào)有符號(hào)32位整數(shù)位整數(shù)alt_u32無符號(hào)無符號(hào)32位整數(shù)位整數(shù)497.5 7.5 HAL系統(tǒng)庫系統(tǒng)庫4. 4. 文件系統(tǒng)文件系統(tǒng) HALHAL提出了文件系統(tǒng)的概念,可以使用戶操作提出了文件系統(tǒng)的概念,可以使用戶操作字符模式字符模式的的設(shè)備和文件。設(shè)備和文件。 在整個(gè)在整個(gè)HALHAL文件系統(tǒng)中將文件子系統(tǒng)注冊(cè)為載入點(diǎn),要訪文件系統(tǒng)中將文件子系統(tǒng)注冊(cè)為載入點(diǎn),要訪問這個(gè)載入店下的文件就要由這個(gè)文件子系統(tǒng)管理。問這個(gè)載入店下的文件就要由這個(gè)文件子系統(tǒng)管理。 字符模式的設(shè)備寄存器常作為字符模式的設(shè)備寄存器常作為HALHAL文件系統(tǒng)中的節(jié)點(diǎn)。通文件

50、系統(tǒng)中的節(jié)點(diǎn)。通常情況下,常情況下,system.hsystem.h文件中將設(shè)備節(jié)點(diǎn)的名字定義為前文件中將設(shè)備節(jié)點(diǎn)的名字定義為前綴綴/dev/dev/+ +在在SOPC BuilderSOPC Builder中指定給硬件元件的名稱。中指定給硬件元件的名稱。 以下例子完成了從一個(gè)只讀文件的文件子系統(tǒng)以下例子完成了從一個(gè)只讀文件的文件子系統(tǒng)rozipfsrozipfs中中讀取字符的功能。讀取字符的功能。507.5 7.5 HAL系統(tǒng)庫系統(tǒng)庫 例例 從文件子系統(tǒng)中讀取字符。從文件子系統(tǒng)中讀取字符。#include #include #include #include #include #includ

51、e #define BUF_SIZE (10)#define BUF_SIZE (10)int main() int main() FILE FILE * * fp; fp;char bufferBUF_SIZE;char bufferBUF_SIZE;fp = fopen(“/mount/rozipfs/test”,”r”);fp = fopen(“/mount/rozipfs/test”,”r”);if ( fp = NULL ) if ( fp = NULL ) printf(“cannot open file.n”);printf(“cannot open file.n”);exit(

52、1);exit(1); fread(buffer,BUF_SIZE,1,fp);fread(buffer,BUF_SIZE,1,fp);Fclose();Fclose();return 0;return 0; 517.5 7.5 HAL系統(tǒng)庫系統(tǒng)庫5. 5. 外圍設(shè)備的使用外圍設(shè)備的使用 現(xiàn)以字符模式外圍設(shè)備為例介紹在用戶程序中如何對(duì)外圍設(shè)備進(jìn)現(xiàn)以字符模式外圍設(shè)備為例介紹在用戶程序中如何對(duì)外圍設(shè)備進(jìn)行操作。字符模式外圍設(shè)備在行操作。字符模式外圍設(shè)備在HALHAL文件系用中被定義為文件系用中被定義為節(jié)點(diǎn)節(jié)點(diǎn)。一般。一般情況下,程序先將一個(gè)情況下,程序先將一個(gè)文件文件和和設(shè)備名稱設(shè)備名稱聯(lián)系起來,

53、再通過使用聯(lián)系起來,再通過使用file.hfile.h中定義的中定義的ANSI CANSI C文件操作向文件寫數(shù)據(jù)或從文件讀取數(shù)據(jù)。文件操作向文件寫數(shù)據(jù)或從文件讀取數(shù)據(jù)。(1 1)標(biāo)準(zhǔn)輸入()標(biāo)準(zhǔn)輸入(stdinstdin)、標(biāo)準(zhǔn)輸出()、標(biāo)準(zhǔn)輸出(stdoutstdout)和標(biāo)準(zhǔn)錯(cuò)誤)和標(biāo)準(zhǔn)錯(cuò)誤(stderrstderr)函數(shù))函數(shù)使用這些函數(shù)是最簡單的控制使用這些函數(shù)是最簡單的控制I/OI/O的方法;的方法;HALHAL系統(tǒng)庫在后臺(tái)管理系統(tǒng)庫在后臺(tái)管理stdinstdin、stdoutstdout和和stderrstderr函數(shù)。函數(shù)。 例例 發(fā)送發(fā)送Hello worldHello wo

54、rld給任何一個(gè)和給任何一個(gè)和stdoutstdout連接的設(shè)備。連接的設(shè)備。#include #include int main() int main() printf(“Hello world!/n”);printf(“Hello world!/n”);return 0;return 0; 527.5 7.5 HAL系統(tǒng)庫系統(tǒng)庫(2 2)字符模式設(shè)備的通用訪問方法)字符模式設(shè)備的通用訪問方法除除stdinstdin、stdoutstdout和和stderrstderr函數(shù)外,訪問字符模式設(shè)備還可以通過函數(shù)外,訪問字符模式設(shè)備還可以通過打開和寫文件的方式。打開和寫文件的方式。 例例 向向UA

55、RTUART寫入字符寫入字符”hello world”hello world”。 #include #include #include #include int main() int main() charchar* * msg = “hello world”; msg = “hello world”;FILEFILE* * fp; fp;fp = fopen(“/dev/uart1”,”w”);fp = fopen(“/dev/uart1”,”w”);if ( fp ) if ( fp ) fprintf(fp,”%s”,msg);fprintf(fp,”%s”,msg);fclose(fp

56、);fclose(fp); return 0;return 0; 537.5 7.5 HAL系統(tǒng)庫系統(tǒng)庫(3 3) /dev/null/dev/null設(shè)備設(shè)備所有的系統(tǒng)都包括所有的系統(tǒng)都包括/dev/null/dev/null設(shè)備。向設(shè)備。向/dev/null寫數(shù)寫數(shù)據(jù)對(duì)系統(tǒng)沒有什么影響,所寫的數(shù)據(jù)將被丟棄。據(jù)對(duì)系統(tǒng)沒有什么影響,所寫的數(shù)據(jù)將被丟棄。/dev/null用來在系統(tǒng)啟動(dòng)過程中重定向安全用來在系統(tǒng)啟動(dòng)過程中重定向安全I(xiàn)/O,也可,也可以用在應(yīng)用程序中丟棄不需要的數(shù)據(jù)。這個(gè)設(shè)備只是以用在應(yīng)用程序中丟棄不需要的數(shù)據(jù)。這個(gè)設(shè)備只是個(gè)軟件指令,不與系統(tǒng)中任何一個(gè)硬件設(shè)備相關(guān)。個(gè)軟件指令,不

57、與系統(tǒng)中任何一個(gè)硬件設(shè)備相關(guān)。547.6 7.6 設(shè)計(jì)實(shí)例設(shè)計(jì)實(shí)例電子鐘電子鐘一、設(shè)計(jì)要求與軟硬件規(guī)劃一、設(shè)計(jì)要求與軟硬件規(guī)劃二、硬件部分設(shè)計(jì)二、硬件部分設(shè)計(jì)三、軟件部分設(shè)計(jì)三、軟件部分設(shè)計(jì)557.6 7.6 設(shè)計(jì)實(shí)例設(shè)計(jì)實(shí)例電子鐘電子鐘一、設(shè)計(jì)要求與軟硬件規(guī)劃一、設(shè)計(jì)要求與軟硬件規(guī)劃 本節(jié)介紹一個(gè)電子鐘的軟、硬件方案設(shè)計(jì)以及具本節(jié)介紹一個(gè)電子鐘的軟、硬件方案設(shè)計(jì)以及具體的軟件實(shí)現(xiàn)。體的軟件實(shí)現(xiàn)。 1. 1. 系統(tǒng)功能系統(tǒng)功能 1 1)在液晶屏上顯示時(shí)間、日期、狀態(tài)提示;)在液晶屏上顯示時(shí)間、日期、狀態(tài)提示; 2 2)對(duì)時(shí)間、日期能夠進(jìn)行設(shè)置。)對(duì)時(shí)間、日期能夠進(jìn)行設(shè)置。 2. 2. 硬件系統(tǒng)

58、組成規(guī)劃硬件系統(tǒng)組成規(guī)劃本系統(tǒng)需使用的外圍器件包括:本系統(tǒng)需使用的外圍器件包括: 1)LCD:電子鐘顯示屏幕;:電子鐘顯示屏幕; 2)按鈕:電子鐘設(shè)置功能鍵;)按鈕:電子鐘設(shè)置功能鍵; 3)Flash存儲(chǔ)器:存儲(chǔ)硬件和程序;存儲(chǔ)器:存儲(chǔ)硬件和程序; 4)SRAM存儲(chǔ)器:程序運(yùn)行時(shí)將其導(dǎo)入存儲(chǔ)器:程序運(yùn)行時(shí)將其導(dǎo)入SRAM。567.6 7.6 設(shè)計(jì)實(shí)例設(shè)計(jì)實(shí)例電子鐘電子鐘2. 2. 硬件系統(tǒng)組成規(guī)劃(續(xù))硬件系統(tǒng)組成規(guī)劃(續(xù))在在SOPC Builder中建立系統(tǒng)要添加的模塊包括:中建立系統(tǒng)要添加的模塊包括: 1) Nios 32bits CPU; 2)定時(shí)器;)定時(shí)器; 3)按鍵)按鍵PIO;

59、 4)LCD Display ; 5)外部)外部RAM總線總線(Avalon 三態(tài)橋三態(tài)橋) ; 6)外部)外部RAM接口;接口; 7)外部)外部Flash接口;接口; 8)重新配置請(qǐng)求)重新配置請(qǐng)求PIO; 9)JTAG UART Interface; 10)EPCS Serial Flash Controller。577.6 7.6 設(shè)計(jì)實(shí)例設(shè)計(jì)實(shí)例電子鐘電子鐘端口定義表端口定義表序序 號(hào)號(hào)名稱名稱輸入輸入/輸出輸出描述描述1clkIn時(shí)鐘輸入,50MHz2reset_nIn復(fù)位輸入3in_port_to_the_button_3.0In4個(gè)按鍵輸入4be_n_to_the_ext_ram

60、3.0Out字節(jié)選擇5ext_ram_bus_address22.0OutSRAM地址6ext_ram_bus_data31.0InoutSRAM數(shù)據(jù)7read_n_to_the_ext_flashOutFLASH輸出使能(即讀信號(hào))8read_n_to_the_ext_ramOutSRAM輸出使能9select_n_to_the_ext_flashOutFLASH片選信號(hào)10select_n_to_the_ext_ramOutSRAM片選信號(hào)587.6 7.6 設(shè)計(jì)實(shí)例設(shè)計(jì)實(shí)例電子鐘電子鐘端口定義表(續(xù))端口定義表(續(xù)) 序號(hào)序號(hào)名名 稱稱輸入輸入/輸出輸出描描 述述11write_n_to

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論