quartus ii 11.0+SOPC builder 11.0+ nios ii 11.0走一遍程序遇到的问题

标签:
sopcniosii |
分类: iFPGA |
1.新建一个工程目录sopc_led,在此目录下建立一个quartus
ii的工程,工程命名为sopc_led,并建立一个顶层原理图,保存于工程中。(编译只编译顶层文件,如果顶层文件是一个顶层图,内有很多symbol,当然编译是几个文件一起编译,如果在调试程序过程中想只编译当前文件,可以设置为top
entity,当然最后要换回来,将顶层图设置为top).
2.在quartus ii11.0中调用sopc builder定制nios ii处理器及其外设,系统命名为niosii_c
接下来就是选择CPU,clk,target,memory,PIO等等,网上有很多教程就不说了,本文主要注重过程中遇到的问题。设置完成之后,system genenation点击genenate.此时遇到问题Error: Generation skipped because the system has validation errors.网上查阅,有两个原因会报这样的错误,一是:工程名不能含有中文字符和空格。二是:设置nios processor setting的时候,没有选择设置复位向量和异常向量。就是说在还没有选择on chip memory的时候还不能设置向量,但选择完必须设置向量。重新设置向量,编译通过。
3.类似往quartus ii添加功能模块一样,在.bdf中将niosii_c添加进顶层图,即project包含下的symbol中可以找到。再在quartus ii中添加其他LPM功能模块,连接线成整体,功能模块的设置不提。检查编译--分配管脚(有些人用tcl文件分配)--全编译,如果你有硬件板的话可以下载程序至板上,为了建立FPGA硬件系统,为接下来的软件调试做好准备。
4.在quartus ii 11.0中调用nios ii
11.0,新建工程hello_led_0,输入niosii_c.sopcinfo文件(老版本输入nios_c.qtf文件)设置其他一些,工程建立完毕。build
project出现问题
网上查阅,很少类同资料,大多数是在msdn上咨询的英文,看懂了一些,也许是因为win7系统下要以管理员身份打开软件,果然重新打开可以编译成功。选择debug
configuration,C/C++
application选中alt_sys_init.o文件运行debug,到94%时出现警告,不知道啥意思,最后出现一条
,上网查阅大多数是调试嵌入式系统出现的问题,很可能nios
ii只支持目标系统实验板调试,不支持虚拟环境调试?(nios ii 11.0开发环境跟TI的CCS4.0很像,
CCS4.0支持虚拟空间调试和仿真器调试。)
5.其实nios ii 11.0编译过程中有很多错误,像是重复定义,未声明函数,找不到main函数,函数返回值类型不对,这些都是比较基本的问题,大多数人摸索下都能解决,还有就是很关键的alt_main()与main()的问题,参见转载的一篇文章详解。
6.我不是按template来建立nios ii工程,alt_sys_init.c内容如下:
#include
<stdio.h>
#include <stdlib.h>
#include "system.h"
#include "sys/alt_irq.h"
#include "sys/alt_sys_init.h"
#include "priv/alt_file.h"
#include <stddef.h>
#include "altera_nios2_irq.h"
ALTERA_NIOS2_IRQ_INSTANCE ( CPU_0, cpu_0);
int main (void) __attribute__ ((weak, alias ("alt_main")));
void alt_irq_init ( const void* base )
{
}
void alt_sys_init(void)
{
int alt_main(void)
{
}
如果是模板生成工程,
主函数在hello_world中,其实alt_sys_init.c中应该写的是系统初始化的命令,一般给出来是空函数,便于用户自己添加,无论是不是使用模板,他开始都是个空函数。系统如何调用各个文件、函数以及顺序等参见alt_main()与main()的问题。