资料介绍
随着物联网技术的不断发展,嵌入式科技得到更为广泛的应用,其中FPGA和嵌入式操作系统的组合前景良好,它们的应用极大的改变了嵌入式开发的效率。为使得Nios II软核和RTEMS嵌入式系统相结合,首先介绍了Nios II的软件开发环境,然后详细阐述如何在Nios II平台下搭建RTEMS嵌入式开发环境。
1.引言
随着技术的不断发展,嵌入式技术逐渐成为计算机技术的一个重要分支。由于嵌入式产品所运用场合多种多样,不同应用场景对嵌入式实时响应、成本都有着不同的需求。嵌入式开发涉及硬件和软件设计,其中硬件开发包括板级开发;而软件开发则需要在硬件开发完成后才能开始,且与硬件有着紧密的关系。但FPGA的出现将彻底改变传统嵌入式开发模式,使得嵌入式开发工程师可以像PC端软件开发一样开发嵌入式软件,降低嵌入式开发的成本。
RTEMS(Real - Time Executivefor Multiprocessor Systems)是一个开放源代码的实时嵌入式操作系统,对各类主流的嵌入式平台都有良好的支持,同时其也有着良好的开发软件。目前无论是航空航天、军工,还是民用领域RTEMS都有着极为广泛的应用。
Nios II由美国Altera公司推出的基于Nios的第二代32位RISC软核,基于FPGA平台,其性能可达200MIPS,是一款可定制的高性能嵌入式软核,配合Altera官方提供的开发者套件,嵌入式工程师可以快捷、高效的进行硬件、软件的开发。
2.基于Nios II的SOPC开发环境
2.1 Altera SOPC Builder
SOPC Builder是一个全自动的SOPC硬件开发环境,设计者可以通过Altera提供的IP宏选择适合自己应用的外围功能模块,并进行内存基地址的分配、中断请求线和内部总线的适配。与此同时,还可以通过HDL文件来自定义外设模块,比如DM9000A以太网控制器。SOPCBuilder使得可以在短暂的时间内完成一个完整的硬件开发系统。
2.2 SOPC硬件系统
通过Altera提供的Quartus II和SOPCBuilder可以快速自定应硬件系统,图1是针对Altera飓风III代EP3C16Q器件定制的硬件系统nios2rtems示例图。
图1 nios2rtems示例图
硬件系统nios2rtems采用Nios II快速型软核,为加快其运行速率,系统时钟为100MHz,外围模块有jtag-uart、sdram、epcsflash、interval timer等,使用Avalon总线作为数据及控制总线。
2.3 SOPC软件系统
通过使用Nios II IDE添加软件工程,编译即可生成与硬件相关联的描述性文件,其中最为重要的是system.h文件以及HAL驱动。
system.h文件提供nios2rtems硬件的描述,包含各个模块的基址、模块所使用的中断号和中断优先级及外设模块的符号名。它同SOPCBuilder提供的各个外设模块的寄存器描述构成了HAL库的基础,同时也是驱动开发的基础。而HAL作为硬件抽象层,通过函数封装为上层应用提供统一的调用API接口。
3.RTEMS开发环境搭建
3.1 Nios II交叉编译工具
有两种方式完成交叉编译工具的安装,其一是通过官方提供的定制脚本来安装;其二就是通过获得各个组件的源代码、补丁来手动编译安装。由于手动编译安装可能由于某个版本的错误选择而使得编译失败,这里我们采用定制脚本来进行安装。
3.1.1设置
为获得支持Nios II平台的嵌入式开发环境,需要准备工具包的源码和定制脚本,以及工程目录。
首先,为nios2rtems设置工作目录:
mkdir-p nios2rtems/rtems/src
然后,获得RTEMS源码构建套件,其大部分是由python所写的脚本文件。由于托管在git仓库,所以必须有git工具并通过下面代码获得工具套件源码:
$git clone git://git.rtems.org/rtemssource-builder.git
3.1.2检查
RTEMS源码构建套件为检查编译环境是否已经就绪提供了相应的工具sb-check:
$source-builder/sb-check
RTEMS Source Builder environment is ok
显示编译环境已经准备就绪3.1.3编译
源码构建套件中提供了若干平台的支持,在编译之前可以通过sb-set-builder命令的list-bsets选项查看其支持的平台。
$/source-builder/sb-set-builder-list-bsets
…
4.10/rtems-nios2.bset
4.11/rtems-nios2.bset
…
从输出结果可以知道,RTEMS在4.10版本就已经支持nios2平台了,这里我们选择最新的4.11版本。通过如下命令可以开启nios2平台的交叉编译工具的构建:
$sb-set-builder-log=l-nios2.txt\-prefix=$HOME/nios2rtems/rtems/4.11\4.11/rtems-sparc由于构建过程中需要对所缺文件进行在线的下载,整个过程可能持续非常长在$HOME/nios2rtems/rtems/4.11目录下的bin/文件夹下可以看到已安装的nios2-rtems4.11-gcc等工具。
3.2 BSP支持包构建
3.2.1 RTEMS BSP结构
RTEMS下关于nios2平台的主要部分有:第一,CPU相关,该部分包含和CPU功能相关的代码,主要涉及CPU上下文切换以及CPU中断异常处理等代码;第二,外设相关,该部分包含外设硬件的寄存器信息等和CPU内部功能相关功能代码;第三,BSP相关,该部分包含硬件系统中外设相关代码,例如console、timer以及硬件初始化等[5]。
3.2.2 Nios II BSP构建
Nios II的驱动实现较为简单,对硬件的操作主要涉及对外设硬件所在地址的读写操作[6]。
在RTEMS中添加Nios II支持可以分为以下三个步骤。
首先,构建cpu对Nios II支持,主要是提供CPU进程上下文切换和中断异常处理相关代码,具体需要实现以下功能:
1)_CPU_Context_switch()以及_CPU_Context_restore(),函数主要功能用于保存和恢复当前上下文相关的寄存器值。
2)_exception_vector(),处理CPU异常函数,用于检查硬件当前状态,并根据异常类型跳转至异常处理服务程序或者中断处理程序中。
3)_Exception_Handler(),异常处理服务程序。
4)_ISR_Handler(),中断服务程序。
5)其它辅助函数,例如中断注册、使能及禁止中断等功能。
其次,添加外设对Nios II支持,主要是提供与CPU异常等相关的代码,具体需要实现以下功能:
1)中断的管理,包括中断的注册、中断使能以及中断禁止等功能,这是对cpu的进一步封装(可选)。
2)Timer和Clock的等驱动服务程序。
3)外围设备的寄存器相关信息,都可以在SOPC Builder中找到,例如jtag-uart的寄存器信息可在altera_avalon_jtag_uart_regs.h文件中找到,将所有外设的寄存器相关头文件信息放入c\src\lib\libcpu目录中。
4)添加其他可能需要的Cache操作相关代码。
最后,添加BSP对Nios II支持,该部分以RTEMS中nios2_iss为模板,提供基本的驱动程序,一般包括以下基本内容:
1)Clock驱动,Timer驱动,jtag-uart驱动。这一部分代码涉及对底层硬件的读写操作,非常依赖于Nios2eds生成的system.h文件及相关寄存器头文件。
2)start.S及bspstart.c,操作系统启动文件。文件start.S包含RTEMS的启动代码,包括初始化处理器和单板,为之后的C程序运行提供栈空间,使之可以进入bspstart.c进一步初始化BSP.
3)其他外设驱动,网络驱动,摄像头驱动等都在此处添加。
3.2.3编译下载
准备好Nios II的BSP之后既可以按照RTEMS官方提供的内核编译流程编译,之后即可编译链接用户应用程序。通过命令行的nios2-download即可实现程序下载。
4.结论
本文首先介绍了如何使用Quartus II、SOPC Builder工具进行系统开发的一般流程,并简要分析NiosII硬件系统及其软件系统的架构。接着详细讲述如何为RTEMS构建支持NiosII的板级支持包以及使用Nios2eds进行应用软件的开发。全文从底层硬件到上层软件,详细描述了如何为基于NiosII软核构建基于RTEMS的板级支持包。本文同时给出了基于Nios II软核的RTEMS移植方法和实验平台构建的一般方法。
12阅读更多
1.引言
随着技术的不断发展,嵌入式技术逐渐成为计算机技术的一个重要分支。由于嵌入式产品所运用场合多种多样,不同应用场景对嵌入式实时响应、成本都有着不同的需求。嵌入式开发涉及硬件和软件设计,其中硬件开发包括板级开发;而软件开发则需要在硬件开发完成后才能开始,且与硬件有着紧密的关系。但FPGA的出现将彻底改变传统嵌入式开发模式,使得嵌入式开发工程师可以像PC端软件开发一样开发嵌入式软件,降低嵌入式开发的成本。
RTEMS(Real - Time Executivefor Multiprocessor Systems)是一个开放源代码的实时嵌入式操作系统,对各类主流的嵌入式平台都有良好的支持,同时其也有着良好的开发软件。目前无论是航空航天、军工,还是民用领域RTEMS都有着极为广泛的应用。
Nios II由美国Altera公司推出的基于Nios的第二代32位RISC软核,基于FPGA平台,其性能可达200MIPS,是一款可定制的高性能嵌入式软核,配合Altera官方提供的开发者套件,嵌入式工程师可以快捷、高效的进行硬件、软件的开发。
2.基于Nios II的SOPC开发环境
2.1 Altera SOPC Builder
SOPC Builder是一个全自动的SOPC硬件开发环境,设计者可以通过Altera提供的IP宏选择适合自己应用的外围功能模块,并进行内存基地址的分配、中断请求线和内部总线的适配。与此同时,还可以通过HDL文件来自定义外设模块,比如DM9000A以太网控制器。SOPCBuilder使得可以在短暂的时间内完成一个完整的硬件开发系统。
2.2 SOPC硬件系统
通过Altera提供的Quartus II和SOPCBuilder可以快速自定应硬件系统,图1是针对Altera飓风III代EP3C16Q器件定制的硬件系统nios2rtems示例图。
图1 nios2rtems示例图
硬件系统nios2rtems采用Nios II快速型软核,为加快其运行速率,系统时钟为100MHz,外围模块有jtag-uart、sdram、epcsflash、interval timer等,使用Avalon总线作为数据及控制总线。
2.3 SOPC软件系统
通过使用Nios II IDE添加软件工程,编译即可生成与硬件相关联的描述性文件,其中最为重要的是system.h文件以及HAL驱动。
system.h文件提供nios2rtems硬件的描述,包含各个模块的基址、模块所使用的中断号和中断优先级及外设模块的符号名。它同SOPCBuilder提供的各个外设模块的寄存器描述构成了HAL库的基础,同时也是驱动开发的基础。而HAL作为硬件抽象层,通过函数封装为上层应用提供统一的调用API接口。
3.RTEMS开发环境搭建
3.1 Nios II交叉编译工具
有两种方式完成交叉编译工具的安装,其一是通过官方提供的定制脚本来安装;其二就是通过获得各个组件的源代码、补丁来手动编译安装。由于手动编译安装可能由于某个版本的错误选择而使得编译失败,这里我们采用定制脚本来进行安装。
3.1.1设置
为获得支持Nios II平台的嵌入式开发环境,需要准备工具包的源码和定制脚本,以及工程目录。
首先,为nios2rtems设置工作目录:
mkdir-p nios2rtems/rtems/src
然后,获得RTEMS源码构建套件,其大部分是由python所写的脚本文件。由于托管在git仓库,所以必须有git工具并通过下面代码获得工具套件源码:
$git clone git://git.rtems.org/rtemssource-builder.git
3.1.2检查
RTEMS源码构建套件为检查编译环境是否已经就绪提供了相应的工具sb-check:
$source-builder/sb-check
RTEMS Source Builder environment is ok
显示编译环境已经准备就绪3.1.3编译
源码构建套件中提供了若干平台的支持,在编译之前可以通过sb-set-builder命令的list-bsets选项查看其支持的平台。
$/source-builder/sb-set-builder-list-bsets
…
4.10/rtems-nios2.bset
4.11/rtems-nios2.bset
…
从输出结果可以知道,RTEMS在4.10版本就已经支持nios2平台了,这里我们选择最新的4.11版本。通过如下命令可以开启nios2平台的交叉编译工具的构建:
$sb-set-builder-log=l-nios2.txt\-prefix=$HOME/nios2rtems/rtems/4.11\4.11/rtems-sparc由于构建过程中需要对所缺文件进行在线的下载,整个过程可能持续非常长在$HOME/nios2rtems/rtems/4.11目录下的bin/文件夹下可以看到已安装的nios2-rtems4.11-gcc等工具。
3.2 BSP支持包构建
3.2.1 RTEMS BSP结构
RTEMS下关于nios2平台的主要部分有:第一,CPU相关,该部分包含和CPU功能相关的代码,主要涉及CPU上下文切换以及CPU中断异常处理等代码;第二,外设相关,该部分包含外设硬件的寄存器信息等和CPU内部功能相关功能代码;第三,BSP相关,该部分包含硬件系统中外设相关代码,例如console、timer以及硬件初始化等[5]。
3.2.2 Nios II BSP构建
Nios II的驱动实现较为简单,对硬件的操作主要涉及对外设硬件所在地址的读写操作[6]。
在RTEMS中添加Nios II支持可以分为以下三个步骤。
首先,构建cpu对Nios II支持,主要是提供CPU进程上下文切换和中断异常处理相关代码,具体需要实现以下功能:
1)_CPU_Context_switch()以及_CPU_Context_restore(),函数主要功能用于保存和恢复当前上下文相关的寄存器值。
2)_exception_vector(),处理CPU异常函数,用于检查硬件当前状态,并根据异常类型跳转至异常处理服务程序或者中断处理程序中。
3)_Exception_Handler(),异常处理服务程序。
4)_ISR_Handler(),中断服务程序。
5)其它辅助函数,例如中断注册、使能及禁止中断等功能。
其次,添加外设对Nios II支持,主要是提供与CPU异常等相关的代码,具体需要实现以下功能:
1)中断的管理,包括中断的注册、中断使能以及中断禁止等功能,这是对cpu的进一步封装(可选)。
2)Timer和Clock的等驱动服务程序。
3)外围设备的寄存器相关信息,都可以在SOPC Builder中找到,例如jtag-uart的寄存器信息可在altera_avalon_jtag_uart_regs.h文件中找到,将所有外设的寄存器相关头文件信息放入c\src\lib\libcpu目录中。
4)添加其他可能需要的Cache操作相关代码。
最后,添加BSP对Nios II支持,该部分以RTEMS中nios2_iss为模板,提供基本的驱动程序,一般包括以下基本内容:
1)Clock驱动,Timer驱动,jtag-uart驱动。这一部分代码涉及对底层硬件的读写操作,非常依赖于Nios2eds生成的system.h文件及相关寄存器头文件。
2)start.S及bspstart.c,操作系统启动文件。文件start.S包含RTEMS的启动代码,包括初始化处理器和单板,为之后的C程序运行提供栈空间,使之可以进入bspstart.c进一步初始化BSP.
3)其他外设驱动,网络驱动,摄像头驱动等都在此处添加。
3.2.3编译下载
准备好Nios II的BSP之后既可以按照RTEMS官方提供的内核编译流程编译,之后即可编译链接用户应用程序。通过命令行的nios2-download即可实现程序下载。
4.结论
本文首先介绍了如何使用Quartus II、SOPC Builder工具进行系统开发的一般流程,并简要分析NiosII硬件系统及其软件系统的架构。接着详细讲述如何为RTEMS构建支持NiosII的板级支持包以及使用Nios2eds进行应用软件的开发。全文从底层硬件到上层软件,详细描述了如何为基于NiosII软核构建基于RTEMS的板级支持包。本文同时给出了基于Nios II软核的RTEMS移植方法和实验平台构建的一般方法。
12阅读更多
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- VScode嵌入式开发之入门教程
- python做嵌入式开发_Python和嵌入式的区别是什么?可以做嵌入式开发吗?
- 嵌入式开发(一):嵌入式开发新手入门(转载后续需要修改补充)
- 嵌入式开发资料免费分享
- 嵌入式系统移植-01嵌入式基本概念,嵌入式开发环境搭建,目标机搭建,TFTP服务搭建,NFS服务搭建
- 嵌入式开发(一):嵌入式开发新手入门
- 如何快速熟练掌握嵌入式开发嵌入式开发工程师需要做哪些事情
- FPGA视频教程之NIOS II开发流程的详细资料说明 11次下载
- 基于嵌入式开发平台的搭建与软件移植 7次下载
- 嵌入式开发平台的搭建与软件移植 67次下载
- Nios II入门起步-创建一个嵌入式处理器系统 87次下载
- Nios II 嵌入式处理器 7.1 的新特性
- 基于Nios II和eCos的串口通信程序开发
- 基于ARM的嵌入式开发
- 嵌入式开发圣经
- fpga是嵌入式开发吗 698次阅读
- STM32嵌入式开发中的RTOS,你用过哪些? 1683次阅读
- 嵌入式开发中串口通讯方案 2249次阅读
- 嵌入式开发的产品有哪些_嵌入式开发的流程 1w次阅读
- 基于Nios II和uClinux实现远程测控服务器的设计 653次阅读
- 基于Mac上做嵌入式开发简析 3829次阅读
- 解析嵌入式开发中的一些硬件相关概念 856次阅读
- 在Nios II平台下搭建RTEMS嵌入式开发简析 1510次阅读
- 嵌入式开发好学吗_嵌入式开发职业发展方向是什么 8950次阅读
- 什么是嵌入式开发板_学嵌入式用什么开发板 6944次阅读
- 嵌入式开发和单片机开发有什么区别和联系 3.5w次阅读
- 嵌入式开发工具有哪些_五款嵌入式开发工具推荐 4w次阅读
- 学嵌入式开发入门_学嵌入式开发需要看哪些书籍 2.4w次阅读
- 嵌入式开发环境的搭建 8304次阅读
- 嵌入式开发就业前景分析_嵌入式领域的职业发展方向 1.8w次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 6基于FPGA的C8051F单片机开发板设计
- 0.70 MB | 2次下载 | 免费
- 751单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21548次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183278次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多