特此说明一下,并不是非得用C++来进行开发。对于绝大部分的应用来说,用C已经足足够了,况且对于一般的NiosII项目来说,硬件上不停的变化,也会导致大部分的代码都是写一次即可,能够完成项目就好。
那么为什么还是要写一下这个东西,就是因为在实际的大型项目的开发中,C++是有独特的优势的,当项目程序越来越大,涉及到的算法和控制流程越来越多的情况下,面向对象的C++更能够体现软件工程的思想。而且随着项目的持续推进,更多的关注点应该是程序流程和应用流程本身,这个时候就稍微需要隐藏一下底层的东西,保持代码的干净,方便后续的开发人员入手。
C++库目录
- GPIO-通用IO
- EXTI-输入IO作为外部中断
- UART-串口
- SPI
- IIC
- 自定义核
- 列表待补充
准备工作
在进行C++开发NiosII之前,需要在Qsys中准备好基本的硬件平台,因为网上有很多教程,这里略过。回头做个链接在下面。
- Quartus中使用Qsys搭建NiosII硬件平台
- 使用Nios SBT(Software Builder Tools)来构建第一个Hello World程序
- 程序的调试和硬件平台变更后的软件重建
理解Nios工程的文件结构
一个典型的NiosII工程如图所示
一个工程,一般情况下包含两个项目,分别是一个以工程名命名,我这里工程名字叫SoftDebug;另一个是工程名带个bsp后缀,表示Board Support Package.这个bsp项目是SBT自动给生成的,它生成的东西是和Qsys中硬件的配置是相关的。
在bsp项目中,文件结构如下
主要包含两个文件夹:
drivers
:这个里面包含的是在Qsys中具有的IP核的寄存器配置以及其自带的API操作函数,在普通编程中,需要大量的查看对应的IP核的API操作函数。
HAL
:HAL文件夹包含的是和硬件无关的函数,也就是NiosII系统提供的各种功能操作和类型定义等。
需要注意的是,在实际开发中,不要动bsp项目中的文件,以免在硬件变化后重新生成bsp导致代码丢失,保持这个项目是自动创建的就好。所有的工程文件都在工程项目中去编辑。