版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、12第第7 7章章 Nios Nios 嵌入式处理器设计嵌入式处理器设计7.1 Nios 嵌入式处理器简介嵌入式处理器简介7.2 Nios 嵌入式处理器软、硬件开发流程嵌入式处理器软、硬件开发流程7.3 Nios 嵌入式处理器系统的开发嵌入式处理器系统的开发7.4 Nios 嵌入式处理器外围接口嵌入式处理器外围接口7.5 HAL系统库系统库7.6 设计实例设计实例电子钟电子钟37.1 7.1 Nios 嵌入式处理器简介嵌入式处理器简介一、第一代一、第一代NiosNios嵌入式处理器嵌入式处理器二、第二代二、第二代NiosNios嵌入式处理器嵌入式处理器三、可配置的软核嵌入式处理器的优势三、可配
2、置的软核嵌入式处理器的优势47.1 7.1 Nios 嵌入式处理器简介嵌入式处理器简介一、第一代一、第一代NiosNios嵌入式处理器嵌入式处理器 2000年,年,Altera发布了发布了Nios处理器,这是第一款可处理器,这是第一款可用于可编程逻辑器件的可配置的软核处理器。用于可编程逻辑器件的可配置的软核处理器。基于基于RISC技术技术16位指令集位指令集16/32位数据通道位数据通道5级流水线级流水线在一个时钟周期内完成一条指令的处理在一个时钟周期内完成一条指令的处理具有一种基于具有一种基于JTAG的的OCI(片上仪器)芯核(片上仪器)芯核57.1 7.1 Nios 嵌入式处理器简介嵌入式
3、处理器简介 2003年,年,Altera发布了发布了Nios3.0处理器,它有处理器,它有16位和位和32位两个版本,能在低成本的位两个版本,能在低成本的Cyclone和高性能的和高性能的Stratrix芯片上实现。芯片上实现。 主要特性:主要特性:更多的可配置寄存器更多的可配置寄存器极大的灵活性和可扩展性极大的灵活性和可扩展性功能强大的开发工具(功能强大的开发工具(SOPC Builder)第一代第一代NiosNios处理器的处理器的缺点缺点没有提供软件开发的集成环境,用户需要在没有提供软件开发的集成环境,用户需要在Nios SDK ShellNios SDK Shell中以命令行的形式执行
4、软件的编译、运行、调试。程序的编中以命令行的形式执行软件的编译、运行、调试。程序的编辑、编译、运行都是分离的。辑、编译、运行都是分离的。不支持对项目的编译。不支持对项目的编译。67.1 7.1 Nios 嵌入式处理器简介嵌入式处理器简介二、第二代二、第二代NiosNios嵌入式处理器嵌入式处理器2004年月年月,Altera继在全球推出继在全球推出Cyclone和和Stratrix器件系列后,又推出支持这些新款芯片器件系列后,又推出支持这些新款芯片的的Nios嵌入式处理器。嵌入式处理器。 与第一代与第一代NiosNios相比,相比,最大处理性能提高了最大处理性能提高了3 3倍,倍,CPUCPU
5、内核部分的面积最大可缩小内核部分的面积最大可缩小1/21/2(3232位位Nios Nios 处理处理器占用器占用15001500个个LELE, Nios II Nios II 最少只占用最少只占用600600个个LELE)。)。广泛应用于嵌入式系统的设计中。广泛应用于嵌入式系统的设计中。 77.1 7.1 Nios 嵌入式处理器简介嵌入式处理器简介种类种类特性特性CPU结构结构32Bit指令集指令集32Bit数据宽度线数据宽度线32个通用寄存器个通用寄存器2G Byte寻址空间寻址空间片内调试片内调试基于边界扫描测试基于边界扫描测试(JTAG)的调试逻辑,支的调试逻辑,支持硬件断点、数据触发
6、以及片外和片内的调持硬件断点、数据触发以及片外和片内的调试跟踪试跟踪定制指令定制指令最多达到最多达到256个用户定义的个用户定义的CPU指令指令软件开发工具软件开发工具NiosIDE(集成开发环境)(集成开发环境)基于基于GNU的编译器的编译器硬件辅助的调试模块硬件辅助的调试模块表表7-1Nios 系列处理器的特性系列处理器的特性87.1 7.1 Nios 嵌入式处理器简介嵌入式处理器简介 Nios II提供提供3种种不同的内核,以满足系统对不同性能和成本的需求。不同的内核,以满足系统对不同性能和成本的需求。最高性能的优化最高性能的优化平衡性能和尺寸平衡性能和尺寸最小逻辑占用的优化最小逻辑占用
7、的优化表表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
8、-Bit 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 嵌入
9、式处理器简介嵌入式处理器简介Nios : Faster & Smaller (Nios /e)137.1 7.1 Nios 嵌入式处理器简介嵌入式处理器简介High-Performance Interconnect 采用内部采用内部Avlon总线,连接总线,连接主从构件,并进行主从构件间的通信。主从构件,并进行主从构件间的通信。 主外设主外设从外设从外设147.1 7.1 Nios 嵌入式处理器简介嵌入式处理器简介Some Important Peripherals for Nios II System ID PeripheralUsed to Ensure Hardware/Soft
10、ware Version SynchronizationSimple 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
11、 Memory InterfacesEPCS 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 Inte
12、rface Mass Storage SupportTrue 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
13、II dev kit board Not 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
14、 masters to both slaves Support for PCI and Bursting DMA in SOPC Builder GUIHigher bandwidth transfers through PCI177.1 7.1 Nios 嵌入式处理器简介嵌入式处理器简介Example of a Nios Processor System处理器内核处理器内核内部总线内部总线定时器定时器外设接口外设接口187.1 7.1 Nios 嵌入式处理器简介嵌入式处理器简介Nios II: Hard Numbers197.1 7.1 Nios 嵌入式处理器简介嵌入式处理器简介三、可配置的
15、软核嵌入式处理器的优势三、可配置的软核嵌入式处理器的优势1. 1. 合理的性能组合合理的性能组合使用使用Nios嵌入式处理器和嵌入式处理器和FPGA,用户可以实,用户可以实现在处理器、外设、存储器和现在处理器、外设、存储器和I/O接口方面的合理接口方面的合理组合。组合。3种处理器内核种处理器内核6060余种余种SOPC BuilderSOPC Builder配备的配备的IP核核 无限的无限的DMADMA通道组合通道组合可配置的硬件及软件调试特性可配置的硬件及软件调试特性207.1 7.1 Nios 嵌入式处理器简介嵌入式处理器简介2. 2. 提升系统的性能提升系统的性能 NiosNios系统的
16、性能可根据应用来裁减,与固定系统的性能可根据应用来裁减,与固定的处理器相比,在较低的时钟速率下具备更高的处理器相比,在较低的时钟速率下具备更高的性能。的性能。多多CPU内核内核:可选择最快的内核,或在一片FPGA内采用多个内核支持的支持的FPGA系列系列:Stratix,Stratix, Stratix GX,Cyclone,Cyclone,HardCopy Stratix定制指令定制指令:把用户自定义的功能直接添加到Nios处理器的ALU中,加快专项任务的执行,以提高系统的性能硬件加速硬件加速:专用的硬件加速器添加到FPGA中作为CPU的协处理器217.1 7.1 Nios 嵌入式处理器简介
17、嵌入式处理器简介3. 3. 降低系统成本降低系统成本 主要途径主要途径: 更大规模的系统集成更大规模的系统集成优化优化FPGA/CPU的选择的选择:选择经济型内核应用于低成本、低性能系统,或者在单个FPGA上使用多个内核更好的库存管理更好的库存管理4. 4. 延长产品的生命周期延长产品的生命周期加快产品上市时间:加快产品上市时间:FPGA可编程、可随时验证修改 建立有竞争性的优势建立有竞争性的优势:硬件加速、定制指令、定制外设延长了产品的生存时间延长了产品的生存时间:可对硬件和软件及时进行升级在产品产量增加的情况下减少成本在产品产量增加的情况下减少成本:可将FPGA设计无缝移植到Altera的
18、HardCopy器件(一种结构化的ASIC)中227.2 7.2 Nios 嵌入式处理器软、硬件开发流程嵌入式处理器软、硬件开发流程一、硬件开发流程一、硬件开发流程二、软件开发流程二、软件开发流程237.2 7.2 Nios 嵌入式处理器软、硬件开发流程嵌入式处理器软、硬件开发流程Nios Design FlowSOPC Builder GUIConnect BlocksProcessor LibraryCustom InstructionsPeripheral LibrarySelect & Configure Peripherals, IPIP ModulesConfigure P
19、rocessorGeneratenEDIF NetlistnHDL Source FilesnTestbenchSynthesis &Fitter nUser DesignnOther IP BlocksHardware DevelopmentQuartus IIOn-ChipDebugSoftware TraceHard BreakpointsSignalTap IIAlteraPLD JTAG,Serial, orEthernetExecutableCodeHardwareConfigurationFileVerification& Debug(1 1)(2 2)(3 3)
20、(4 4)nC Header filesnCustom LibrarynPeripheral DriversCompiler,Linker, DebuggerSoftware DevelopmentnUser CodenLibrariesnRTOSGNU ToolsNios II IDE247.2 7.2 Nios 嵌入式处理器软、硬件开发流程嵌入式处理器软、硬件开发流程一、硬件开发流程一、硬件开发流程 下载完硬件配置文件后,软件开发者就可以把此开发板作下载完硬件配置文件后,软件开发者就可以把此开发板作为软件开发的初期硬件平台进行软件功能的开发验证了。为软件开发的初期硬件平台进行软件功能的开发
21、验证了。(1 1)定义定义Nios嵌入式处理器系统:嵌入式处理器系统:使用使用SOPC Builder系统综合软系统综合软件选取合适的件选取合适的CPU、存储器以及外围器件,并定制其功能。、存储器以及外围器件,并定制其功能。(2)指定目标器件、分配引脚、编译硬件指定目标器件、分配引脚、编译硬件:使用:使用Quartus选取选取Altera器件系列,并对器件系列,并对SOPC Builder生成的生成的HDL设计文件进行布设计文件进行布局布线;再选取目标器件,分配管脚,进行硬件编译选项或时序局布线;再选取目标器件,分配管脚,进行硬件编译选项或时序约束的设置。编译,生成网表文件和配置文件。约束的设
22、置。编译,生成网表文件和配置文件。(3)硬件下载:硬件下载:使用使用Quartus软件和下载电缆,将配置文件下载到软件和下载电缆,将配置文件下载到开发板上的开发板上的FPGA中。当校验完当前硬件设计后,还可再次将新中。当校验完当前硬件设计后,还可再次将新的配置文件下载到开发板上的非易失存储器里。的配置文件下载到开发板上的非易失存储器里。 257.2 7.2 Nios 嵌入式处理器软、硬件开发流程嵌入式处理器软、硬件开发流程二、软件开发流程二、软件开发流程(1 1)在使用)在使用SOPC BuilderSOPC Builder进行硬件设计的同时,就可以开始编写独立进行硬件设计的同时,就可以开始编
23、写独立于器件的于器件的C/C+C/C+软件,比如算法或控制程序。用户可以使用现成软件,比如算法或控制程序。用户可以使用现成的软件库和开放的操作系统内核来加快开发过程。的软件库和开放的操作系统内核来加快开发过程。(2 2)在)在NiosIDENiosIDE中建立新的软件工程时,中建立新的软件工程时,IDEIDE会根据会根据SOPC BuilderSOPC Builder对系统的硬件配置自动生成一个定制对系统的硬件配置自动生成一个定制HAL(HAL(硬件抽象层硬件抽象层) )系统库。系统库。这个库能为程序和底层硬件的通信提供接口驱动程序。这个库能为程序和底层硬件的通信提供接口驱动程序。(3 3)使
24、用)使用NiosIDENiosIDE对软件工程进行编译、调试。对软件工程进行编译、调试。(4 4)将硬件设计下载到开发板后,就可以将软件下载到开发板上并)将硬件设计下载到开发板后,就可以将软件下载到开发板上并在硬件上运行。在硬件上运行。267.3 7.3 Nios 嵌入式处理器系统的开发嵌入式处理器系统的开发一、一、Nios Nios 集成开发环境(集成开发环境(IDEIDE)介绍)介绍二、二、Nios Nios 嵌入式处理器系统设计过程嵌入式处理器系统设计过程277.3 7.3 Nios 嵌入式处理器系统的开发嵌入式处理器系统的开发 Nios IDE是是Nios系列嵌入式处理器的基本软件开系
25、列嵌入式处理器的基本软件开发工具,包括程序的编辑、编译、调试和下载运行。发工具,包括程序的编辑、编译、调试和下载运行。 Nios IDE使用方法和使用方法和Visual C+类似。在类似。在7.6节中会节中会结合示例进行讲解。结合示例进行讲解。 Nios IDE为软件开发提供了为软件开发提供了4个功能:个功能:工程管理器;工程管理器;编辑器和编译器;编辑器和编译器;调试器;调试器;闪存编程器。闪存编程器。一、一、NiosNios集成开发环境(集成开发环境(IDEIDE)介绍)介绍287.3 7.3 Nios 嵌入式处理器系统的开发嵌入式处理器系统的开发(1 1)新工程向导)新工程向导自动建立自
26、动建立C/C+C/C+应用程序工程和系统库工程。应用程序工程和系统库工程。(2 2)软件工程模板)软件工程模板提供软件代码实例,帮助用户尽快推出可运行的提供软件代码实例,帮助用户尽快推出可运行的系统系统(3 3)软件组件(系统软件)软件组件(系统软件)Nios Nios 运行库(或称为硬件抽象层运行库(或称为硬件抽象层HALHAL););轻量级轻量级IP TCP/IPIP TCP/IP库;库;C/OS C/OS 实时操作系统(实时操作系统(RTOSRTOS););AlteraAltera压缩文件系统。压缩文件系统。1. 1. 工程管理器工程管理器297.3 7.3 Nios 嵌入式处理器系统的
27、开发嵌入式处理器系统的开发(1 1)文本编辑器)文本编辑器全功能源文件编辑器:全功能源文件编辑器: 语法高亮显示语法高亮显示C/C+C/C+程序代码;程序代码; 全面的搜索工具;全面的搜索工具; 文件管理;文件管理; 快速定位及自动纠错;快速定位及自动纠错; 内置调试功能等内置调试功能等(2 2) C/C+C/C+编译器编译器提供图形化用户界面;提供图形化用户界面;提供按钮式流程;提供按钮式流程;自动生成一个基于特定用户配置的自动生成一个基于特定用户配置的makefilemakefile。2. 2. 编辑器和编译器编辑器和编译器307.3 7.3 Nios 嵌入式处理器系统的开发嵌入式处理器系
28、统的开发(1 1)基本调试功能)基本调试功能运行控制;运行控制;调用堆栈查看;调用堆栈查看;软件断点;软件断点;反汇编代码查看;反汇编代码查看;调试信息查看;调试信息查看;指令集仿真器。指令集仿真器。(2 2) 高级调试功能高级调试功能硬件断点调试硬件断点调试ROMROM或闪存中的代码;或闪存中的代码;数据触发;数据触发;指令跟踪。指令跟踪。3. 3. 调试器调试器(3 3)调试信息查看)调试信息查看使用户可以访问本地变量、使用户可以访问本地变量、寄存器、存储器、断点以及寄存器、存储器、断点以及表达式赋值函数。表达式赋值函数。(4 4) 连接多种目标连接多种目标FPGAFPGA开发板(通过开发
29、板(通过JTAGJTAG););指令集仿真器;指令集仿真器;硬件逻辑仿真器。硬件逻辑仿真器。317.3 7.3 Nios 嵌入式处理器系统的开发嵌入式处理器系统的开发4. 4. 闪存编程器闪存编程器闪存可用来存储闪存可用来存储FPGAFPGA配置数据和配置数据和/ /或或Nios Nios 编程数据。编程数据。NiosIDENiosIDE闪存编程器可对连接到闪存编程器可对连接到FPGAFPGA的兼容通用闪存接口(的兼容通用闪存接口(CFICFI)的闪存器件、或的闪存器件、或AlteraAltera串行配置器件进行编程。串行配置器件进行编程。内容类型内容类型说说 明明系统固定软件系统固定软件用于
30、用于Nios处理器复位时从闪存中导入启处理器复位时从闪存中导入启动程序动程序FPGA配置数据配置数据使用配置控制器,使用配置控制器,FPGA能够在上电复位时能够在上电复位时从闪存获取配置数据从闪存获取配置数据任意二进制数据任意二进制数据开发人员可以将任何二进制数据存储到闪存开发人员可以将任何二进制数据存储到闪存内,如图形、音频等内,如图形、音频等表表7-3编程到闪存中的通用内容类型编程到闪存中的通用内容类型327.3 7.3 Nios 嵌入式处理器系统的开发嵌入式处理器系统的开发1. 1. 硬件设计过程硬件设计过程(1 1)创建一个)创建一个Quqrtus Quqrtus 工程工程(2 2)创
31、建)创建Nios Nios 系统模块系统模块启动启动SOPC BuilderSOPC Builder添加添加CPUCPU和外围器件和外围器件指定基地址指定基地址系统设置系统设置生成系统模块生成系统模块(3 3)将)将Nios Nios 系统模块符号添加到系统模块符号添加到BDFBDF文件中文件中(4 4)编译)编译Quqrtus Quqrtus 工程工程(5 5)配置)配置FPGAFPGA二、二、Nios Nios 嵌入式处理器系统设计过程嵌入式处理器系统设计过程337.3 7.3 Nios 嵌入式处理器系统的开发嵌入式处理器系统的开发(1 1)启动)启动Nios IDENios IDE;(2
32、 2)建立新的软件工程,编写源程序;)建立新的软件工程,编写源程序;(3 3)编译工程;)编译工程;(4 4)运行程序;)运行程序;(5 5)调试程序;)调试程序;(6 6)将程序下载到开发板上的)将程序下载到开发板上的FlashFlash中。中。2. 2. 软件设计过程软件设计过程347.4 7.4 Nios 处理器外围接口处理器外围接口一、标准外围设备一、标准外围设备二、用户定制外围设备二、用户定制外围设备357.4 7.4 Nios 处理器外围接口处理器外围接口一、标准外围设备一、标准外围设备 Nios Nios 包括一个常用外围设备及接口库,在包括一个常用外围设备及接口库,在Alter
33、a Altera FPGAFPGA中可免费使用。中可免费使用。 标准外围设备标准外围设备为即用型设计模块,采用为即用型设计模块,采用Verilog HDL和和VHDL的源代码方式交付使用,其中包括简单系统集的源代码方式交付使用,其中包括简单系统集成所需要的所有软件子程序。成所需要的所有软件子程序。 查看各接口的详细说明:可在查看各接口的详细说明:可在SOPC Builder的元件池的元件池中用右键点击元件,在弹出的菜单中选择中用右键点击元件,在弹出的菜单中选择“Data Sheet”选项。选项。36 7.4 7.4 Nios 处理器外围接口处理器外围接口外围设备接口外围设备接口说说 明明Com
34、pactFlash接口接口提供大容量存储支持提供大容量存储支持用户逻辑接口用户逻辑接口将片内用户逻辑或片外器件连接到将片内用户逻辑或片外器件连接到SOPC Builder生成的系统中生成的系统中UART提供通用串行接口,具有可变波特率、奇偶校验、停止和数据位提供通用串行接口,具有可变波特率、奇偶校验、停止和数据位及可选的流量控制信号及可选的流量控制信号间隔时钟间隔时钟提供提供32位时钟,可作为周期脉冲发生器或系统看门狗时钟位时钟,可作为周期脉冲发生器或系统看门狗时钟并行并行I/O接口接口提供提供1位到位到32位的并行位的并行I/O接口接口(输入、输出、边缘采样输入、输出、边缘采样)串行外围设备
35、接口(串行外围设备接口(SPI) 实现工业标准串行外围设备接口,支持主设备或从设备协议实现工业标准串行外围设备接口,支持主设备或从设备协议DMA控制器控制器与存储器进行批数据交换,减轻与存储器进行批数据交换,减轻CPU的负担的负担SDRAM控制器控制器提供一个简单提供一个简单Avalon接口,与片外的接口,与片外的SDRAM沟通,支持沟通,支持8、16、32和和64位数据宽度位数据宽度存储器接口存储器接口包括:片内包括:片内ROM和和RAM、SDRAM、SSRAM、SRAM和和Flash,Altera的串行配置器件的串行配置器件以太网端口以太网端口包括:包括:10/100兆比特每秒兆比特每秒S
36、MSC LAN91C111单芯片以太网控制单芯片以太网控制器,提供轻量级的器,提供轻量级的IP TCP/IP协议栈的软件支持,已经包含在协议栈的软件支持,已经包含在Nios 开发套件中开发套件中JTAG UART(仅在仅在Nios 中有中有)通过内嵌在通过内嵌在Altera FPGA内部的联合测试行动组内部的联合测试行动组(JTAG)电路,在电路,在PC主机和主机和SOPC Builder系统之间进行串行字符流通信系统之间进行串行字符流通信表表7-4 Nios&Nios 外围设备接口外围设备接口377.4 7.4 Nios 处理器外围接口处理器外围接口二、用户定制外围设备二、用户定制外
37、围设备 用户可以创建自己的外围设备,并通过用户逻辑用户可以创建自己的外围设备,并通过用户逻辑接口向导集成到接口向导集成到Nios Nios 处理器系统中。处理器系统中。 整个过程用户介入很少。整个过程用户介入很少。387.5 7.5 HAL系统库系统库一、一、HALHAL系统库简介系统库简介二、使用二、使用HALHAL开发程序开发程序397.5 7.5 HAL系统库系统库一、一、 HALHAL系统库简介系统库简介 什么是什么是HAL系统库?系统库?用户在进行嵌入式系统的软件开发时,会涉及到与硬件的通信问题。HAL(Hardware Abstraction Layer,硬件抽象层)系统库可为与硬
38、件通信的程序提供简单的设备驱动接口。它是用户在NiosIDE中创建一个新的工程时,由IDE基于用户在SOPC Builder中创建的Nios处理器系统自动生成的。HAL应用程序接口(API)和ANSI C标准库综合在一起,它使用户用类似C语言的库函数来访问硬件设备或文件,如printf()、fopen()、fwrite()等函数。407.5 7.5 HAL系统库系统库 HAL为嵌入式系统中的外围设备提供接口程序。为嵌入式系统中的外围设备提供接口程序。HAL和和SOPC Builder紧密相关,如果硬件配置紧密相关,如果硬件配置有了变化,有了变化,HAL设备驱动配置也会自动随之改动,设备驱动配置
39、也会自动随之改动,从而避免了由于底层硬件的变化而产生的程序错从而避免了由于底层硬件的变化而产生的程序错误。误。 用户不必自己创建或拷贝用户不必自己创建或拷贝HAL文件,也不必编辑文件,也不必编辑HAL中的任何源代码。中的任何源代码。NiosIDE会为用户会为用户自动自动创建和管理创建和管理HAL文件。文件。 417.5 7.5 HAL系统库系统库与与ANSI C合成的标准库合成的标准库提供类似提供类似C语言的标准库函数;语言的标准库函数;设备驱动设备驱动提供访问系统中每个设备的驱动程序;提供访问系统中每个设备的驱动程序;HAL API提供标准的接口程序,如设备访问、中断处理等;提供标准的接口程
40、序,如设备访问、中断处理等;系统初始化系统初始化在在main()函数之前执行对处理器的初始化;函数之前执行对处理器的初始化;设备初始化设备初始化在在main()函数之前执行对系统中外围设备的初始化。函数之前执行对系统中外围设备的初始化。用户程序用户程序C语言标准库语言标准库HAL API硬件硬件设备设备驱动驱动设备设备驱动驱动设备设备驱动驱动图图7-1 HAL所基于的系统层次所基于的系统层次1. HAL1. HAL构成构成427.5 7.5 HAL系统库系统库应用程序开发应用程序开发 是用户软件开发的主要部分,包括系统的主程序和其他子程序。 应用程序与系统设备的通信主要是通过C语言标准库或HA
41、L系统库API来实现。驱动程序开发驱动程序开发 指编写供应用程序访问设备的程序。 驱动程序直接和底层硬件的宏定义打交道。 一旦用户要访问设备的驱动程序编写好,用户的程序开发只要利用HAL提供的各种函数就可以编写各种应用程序了。2.2. 应用程序和驱动应用程序和驱动437.5 7.5 HAL系统库系统库 HAL为嵌入式系统中常见的外围设备提供了通用的设备模型,为嵌入式系统中常见的外围设备提供了通用的设备模型,使用户无需考虑底层硬件,只需利用与之相一致的使用户无需考虑底层硬件,只需利用与之相一致的API编写应编写应用程序即可。用程序即可。字符模式设备字符模式设备发送和接受字符串的外围硬件设备,如发
42、送和接受字符串的外围硬件设备,如UART定时器设备定时器设备对时钟脉冲计数并能产生周期性中断请求的外围对时钟脉冲计数并能产生周期性中断请求的外围硬件设备硬件设备文件子系统文件子系统提供访问存储在物理设备中的文件的操作,如用提供访问存储在物理设备中的文件的操作,如用户可以利用有关户可以利用有关Flash存储器设备的存储器设备的HAL API编写编写Flash文件子系文件子系统驱动来访问统驱动来访问Flash。以太网设备以太网设备对对Altera提供的轻量级的提供的轻量级的IP协议提供访问以太网协议提供访问以太网的连接。的连接。DMA设备设备执行大量数据在数据源和目的地之间传输的外围设执行大量数据
43、在数据源和目的地之间传输的外围设备。数据源和目的地可以是存储器或其他设备,如以太网连接。备。数据源和目的地可以是存储器或其他设备,如以太网连接。Flash存储器设备存储器设备利用专门编程协议存储数据的非易失性存利用专门编程协议存储数据的非易失性存储设备。储设备。3. 3. 通用设备模型通用设备模型447.5 7.5 HAL系统库系统库5. HAL5. HAL支持的外围设备支持的外围设备 Altera提供了许多在提供了许多在Nios 处理器系统中使用的外围设备,大部分处理器系统中使用的外围设备,大部分外围设备都提供了外围设备都提供了HAL驱动,使用户可通过驱动,使用户可通过HAL API访问硬件
44、。访问硬件。字符模式设备字符模式设备定时器设备定时器设备文件子系统文件子系统以太网设备以太网设备DMA设备设备Flash存储器设备存储器设备一些第三方外围设备一些第三方外围设备4. C4. C标准库标准库NewlibNewlibHAL系统库与系统库与ANSI C标准库一起构成标准库一起构成HAL的运行环境的运行环境(Runtime Environment)。HAL使用的使用的Newlib是是C语言标准库的一种开放语言标准库的一种开放源代码的实现,是在嵌入式系统上使用的源代码的实现,是在嵌入式系统上使用的C语言程序库,正好与语言程序库,正好与HAL和和Nios 处理器相匹配。处理器相匹配。457
45、.5 7.5 HAL系统库系统库二、使用二、使用HALHAL开发程序开发程序 HAL和和SOPC Builder紧密相关,如果硬件配置有了变紧密相关,如果硬件配置有了变化,化,HAL设备驱动配置也会自动随之改动,从而避免设备驱动配置也会自动随之改动,从而避免了由于底层硬件的变化而产生的程序错误。了由于底层硬件的变化而产生的程序错误。 用户不用自己创建或拷贝用户不用自己创建或拷贝HAL文件,而且用户也不用文件,而且用户也不用编辑编辑HAL中的任何源代码。中的任何源代码。NiosIDE会为用户自动创会为用户自动创建和管理建和管理HAL文件。文件。467.5 7.5 HAL系统库系统库1. Nios
46、 IDE1. Nios IDE工程结构工程结构软件软件硬件硬件477.5 7.5 HAL系统库系统库2. System.h 2. System.h 系统描述文件系统描述文件 System.hSystem.h文件是文件是HALHAL系统库的基础,它提供了关于系统库的基础,它提供了关于Nios Nios 系统硬件的软件描述。它描述了系统中的每个外围设系统硬件的软件描述。它描述了系统中的每个外围设备,并给出以下一些详细信息:备,并给出以下一些详细信息:外围设备的硬件配置;外围设备的硬件配置;基地址;基地址;中断优先级;中断优先级;外围器件的符号名称。外围器件的符号名称。 用户无须编辑用户无须编辑Sy
47、stem.hSystem.h文件,它是由文件,它是由Nios IDENios IDE自动生自动生成的。成的。 可以到以下目录中查看可以到以下目录中查看System.hSystem.h文件,:文件,:QuartusQuartus工程工程softwaresoftwareNiosNios工程名工程名 _syslibDebugsystem_description_syslibDebugsystem_description487.5 7.5 HAL系统库系统库3. 3. 数据宽度和数据宽度和HALHAL类型定义类型定义 alt_types.halt_types.h头文件定义了头文件定义了HALHAL的数
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有符号有符号8位整数位整数alt_u8无
49、符号无符号8位整数位整数alt_16有符号有符号16位整数位整数alt_u16无符号无符号16位整数位整数alt_32有符号有符号32位整数位整数alt_u32无符号无符号32位整数位整数497.5 7.5 HAL系统库系统库4. 4. 文件系统文件系统 HALHAL提出了文件系统的概念,可以使用户操作提出了文件系统的概念,可以使用户操作字符模式字符模式的的设备和文件。设备和文件。 在整个在整个HALHAL文件系统中将文件子系统注册为载入点,要访文件系统中将文件子系统注册为载入点,要访问这个载入店下的文件就要由这个文件子系统管理。问这个载入店下的文件就要由这个文件子系统管理。 字符模式的设备寄
50、存器常作为字符模式的设备寄存器常作为HALHAL文件系统中的节点。通文件系统中的节点。通常情况下,常情况下,system.hsystem.h文件中将设备节点的名字定义为前文件中将设备节点的名字定义为前缀缀/dev/dev/+ +在在SOPC BuilderSOPC Builder中指定给硬件元件的名称。中指定给硬件元件的名称。 以下例子完成了从一个只读文件的文件子系统以下例子完成了从一个只读文件的文件子系统rozipfsrozipfs中中读取字符的功能。读取字符的功能。507.5 7.5 HAL系统库系统库 例例 从文件子系统中读取字符。从文件子系统中读取字符。#include #includ
51、e #include #include #include #include #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”
52、);printf(“cannot open file.n”);exit(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系统库系统库5. 5. 外围设备的使用外围设备的使用 现以字符模式外围设备为例介绍在用户程序中如何对外围设备进现以字符模式外围设备为例介绍在用户程序中如何对外围设备进行操作。字符模式外围设备在行操作。字符模式外围设备在HALHAL文件系用中被定义为文件系用中被定义为节点节点。一般。一般情况下
53、,程序先将一个情况下,程序先将一个文件文件和和设备名称设备名称联系起来,再通过使用联系起来,再通过使用file.hfile.h中定义的中定义的ANSI CANSI C文件操作向文件写数据或从文件读取数据。文件操作向文件写数据或从文件读取数据。(1 1)标准输入()标准输入(stdinstdin)、标准输出()、标准输出(stdoutstdout)和标准错误)和标准错误(stderrstderr)函数)函数使用这些函数是最简单的控制使用这些函数是最简单的控制I/OI/O的方法;的方法;HALHAL系统库在后台管理系统库在后台管理stdinstdin、stdoutstdout和和stderrstd
54、err函数。函数。 例例 发送发送Hello worldHello world给任何一个和给任何一个和stdoutstdout连接的设备。连接的设备。#include #include int main() int main() printf(“Hello world!/n”);printf(“Hello world!/n”);return 0;return 0; 527.5 7.5 HAL系统库系统库(2 2)字符模式设备的通用访问方法)字符模式设备的通用访问方法除除stdinstdin、stdoutstdout和和stderrstderr函数外,访问字符模式设备还可以通过函数外,访问字符模
55、式设备还可以通过打开和写文件的方式。打开和写文件的方式。 例例 向向UARTUART写入字符写入字符”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”
56、,msg);fprintf(fp,”%s”,msg);fclose(fp);fclose(fp); return 0;return 0; 537.5 7.5 HAL系统库系统库(3 3) /dev/null/dev/null设备设备所有的系统都包括所有的系统都包括/dev/null/dev/null设备。向设备。向/dev/null写数写数据对系统没有什么影响,所写的数据将被丢弃。据对系统没有什么影响,所写的数据将被丢弃。/dev/null用来在系统启动过程中重定向安全用来在系统启动过程中重定向安全I/O,也可,也可以用在应用程序中丢弃不需要的数据。这个设备只是以用在应用程序中丢弃不需要的数据
57、。这个设备只是个软件指令,不与系统中任何一个硬件设备相关。个软件指令,不与系统中任何一个硬件设备相关。547.6 7.6 设计实例设计实例电子钟电子钟一、设计要求与软硬件规划一、设计要求与软硬件规划二、硬件部分设计二、硬件部分设计三、软件部分设计三、软件部分设计557.6 7.6 设计实例设计实例电子钟电子钟一、设计要求与软硬件规划一、设计要求与软硬件规划 本节介绍一个电子钟的软、硬件方案设计以及具本节介绍一个电子钟的软、硬件方案设计以及具体的软件实现。体的软件实现。 1. 1. 系统功能系统功能 1 1)在液晶屏上显示时间、日期、状态提示;)在液晶屏上显示时间、日期、状态提示; 2 2)对时
58、间、日期能够进行设置。)对时间、日期能够进行设置。 2. 2. 硬件系统组成规划硬件系统组成规划本系统需使用的外围器件包括:本系统需使用的外围器件包括: 1)LCD:电子钟显示屏幕;:电子钟显示屏幕; 2)按钮:电子钟设置功能键;)按钮:电子钟设置功能键; 3)Flash存储器:存储硬件和程序;存储器:存储硬件和程序; 4)SRAM存储器:程序运行时将其导入存储器:程序运行时将其导入SRAM。567.6 7.6 设计实例设计实例电子钟电子钟2. 2. 硬件系统组成规划(续)硬件系统组成规划(续)在在SOPC Builder中建立系统要添加的模块包括:中建立系统要添加的模块包括: 1) Nios
59、 32bits CPU; 2)定时器;)定时器; 3)按键)按键PIO; 4)LCD Display ; 5)外部)外部RAM总线总线(Avalon 三态桥三态桥) ; 6)外部)外部RAM接口;接口; 7)外部)外部Flash接口;接口; 8)重新配置请求)重新配置请求PIO; 9)JTAG UART Interface; 10)EPCS Serial Flash Controller。577.6 7.6 设计实例设计实例电子钟电子钟端口定义表端口定义表序序 号号名称名称输入输入/输出输出描述描述1clkIn时钟输入,50MHz2reset_nIn复位输入3in_port_to_the_bu
60、tton_3.0In4个按键输入4be_n_to_the_ext_ram3.0Out字节选择5ext_ram_bus_address22.0OutSRAM地址6ext_ram_bus_data31.0InoutSRAM数据7read_n_to_the_ext_flashOutFLASH输出使能(即读信号)8read_n_to_the_ext_ramOutSRAM输出使能9select_n_to_the_ext_flashOutFLASH片选信号10select_n_to_the_ext_ramOutSRAM片选信号587.6 7.6 设计实例设计实例电子钟电子钟端口定义表(续)端口定义表(续) 序号序号名名 称称输入输入/输出输出描描 述述11write_n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院采购科合同
- 化妆品包销协议书
- 哥俩赡养老人协议书(2篇)
- 二零二四年新能源项目投资合作协议
- 二零二四年度教育培训与人才引进合作协议
- 二零二四年度品牌合作与发展框架协议3篇
- 独家供货商协议
- 销售总代理合同协议
- 供应链物流平台服务合同
- 花岗岩供应商购销合同
- 《花卉栽培技术》课程思政教学案例
- 福乐伟离心机说明书
- 小学科学教育科学五年级上册光《光是怎样传播的》教学设计
- 英国的宗教改革课件
- 二年级数学上册第五单元《观察物体(一)》单元备课(集体备课)
- 二年级上册美术课件-13《回家的路》 人教版(共12张PPT)
- 投标保证金交付证明
- 质量问题投诉登记、处理台账
- 小班健康活动认识五官课件
- 施工单位履约考评检查表
- 中国脓毒症及脓毒性休克急诊治疗指南
评论
0/150
提交评论