NIOS Ⅱ系统实例
目录
2.创建BSP工程
2.1 创建BSP工程
进行Nios Ⅱ嵌入式软件开发
点击Tool->Nios Ⅱ Software Buid Tools for Eclipse,创建工作空间

点击File->New->Nios Ⅱ Application and BSP from Template新建项目
点击Target hardware information中的[...] 按钮选择Quartus工程下的.sopcinfo文件,Nios II SBT for Eclipse软件会自动识别Qsys系统中CPU的名称
然后给创建的 Nios Ⅱ工程命名(名称需要以英文字母开头,可以包含字母、数字和下划线,不能有中文及特殊字符)
在取消勾选Use default location后可以修改然后将工程存放的位置
在Project template一栏中列出了一些工程模板,也可以选择创建空白工程 (Bland Project)
点击下方Next系统会自动创建一个BSP(Board Support Package,板级支持包)工程,提供了访问底层硬件(Qsys 系统)的函数库

.sopcinfo文件是Qsys系统生成时一同产生,包含了所有Qsys系统的硬件信息,将它导入到BSP工程使得BSP获得全部硬件信息
在Project Explorer下出现了nios2bsp_bsp工程,可以看到这个文件夹下包含了各种和当前Qsys系统相关的板级动源文件和头文件,供应用软件调用。
头文件system.h将Qsys系统中的 Nios Ⅱ处理器和所有外设的名称、基地址、中断有无以及优先级号码等相关硬件信息进行了定义。
其中nios2bsp是C/C++应用工程,nios2bsp_bsp是函数库

2.2 BSP Editor
在BSPEditor中可以对板级驱动层进行一些定制化的配置,比如代码裁剪、标准输入/输出外设和定时器外设的设置等。
在Project Explorer下工程名右键点击Nios Ⅱ->BSP Editor
在左侧一栏选中Common,然后在右侧勾选两个选项:
enable_reduced_device_drivers: BSP为处理器的外设提供了两个版本的驱动库:一种是执行速度快但代码量比较大的版本:另一种是封装小的版本。默认使用的是代码量大的版本,这里通过[enable reduced device drivers]选项来选择封装小的版本,从而减少代码量。
enalbe_small_c_library: 完整的ANSIC标准库通常不适用于嵌入式系统,BSP提供了一系列经过裁剪的ANSIC标准库,占用资源比较少,通过[enalbe small c lbrary]选项来选择精简的ANSIC标准库。

在左侧一栏选中Settings,将右侧两个选项(默认勾选) 取消勾选:
enable_c_plus_plus: 使用 C 语言来编写软件程序,因此不需要使能 C+。
enable clean exit: 当选中该选项时,系统库在主函数main()返回时会调用exit()。调用 exit0时,首先会清理I/O的缓冲区,然后再调用exit()。当不选中该选项时,系统库会只调用exit(),这样将会节省程序空间。对于嵌入式系统程序来说,一般都不会从 main()返回,所以可以不勾选该选项。
设置完成后先点击Generate然后再点击Exit

2.3 创建C代码文件
在Project Explorer下工程名右键点击New->Source File新建C代码源文件

在Project Explorer下工程名右键Build Project (CTRL+B)进行软件工程编译
3.Nios Ⅱ实例
3.1 Hello NIOS Ⅱ
通过JTAG UART在Nios Console中每隔3s打印一串“Hello NIOS II”的字符串
#include "system.h" //定义Qsys中各个外设的地址、中断优先级等基本硬件信息
#include <stdio.h> //定义标准输入、输出函数
#include <unistd.h> //包含了延时函数usleep()函数的生命
///////////////////////////
//功能:每隔3s通过JTAG UART打印一条字符串“Hello NIOS Ⅱ”
///////////////////////////
int main(void)
{
while(1)
{
printf("Hello NIOS II!\n");
usleep(3000000);
}
return 0;
}
printf对应的设备在BSP Editor中设定

文章详细介绍了如何创建NiosⅡBSP工程,包括通过NiosⅡSoftwareBuildToolsforEclipse创建项目,设置BSPEditor以优化驱动和库,以及创建C代码文件。接着展示了几个NiosⅡ实例,如HelloNIOSⅡ、读取SystemID和Timestamp、蜂鸣器定时鸣叫以及拨码开关控制。最后,文章讲解了FPGA器件的代码固化过程,包括生成HEX文件、加载程序存储器初始化文件和生成JIC文件以实现固件烧录。
最低0.47元/天 解锁文章
2672

被折叠的 条评论
为什么被折叠?



