加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2011-10-30 19:55:03)
标签:

sopc

nios

ii

分类: iFPGA

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

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

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出现问题quartus <wbr>ii <wbr>11.0+SOPC <wbr>builder <wbr>11.0+ <wbr>nios <wbr>ii <wbr>11.0走一遍程序遇到的问题
网上查阅,很少类同资料,大多数是在msdn上咨询的英文,看懂了一些,也许是因为win7系统下要以管理员身份打开软件,果然重新打开可以编译成功。选择debug configuration,C/C++ application选中alt_sys_init.o文件运行debug,到94%时出现警告quartus <wbr>ii <wbr>11.0+SOPC <wbr>builder <wbr>11.0+ <wbr>nios <wbr>ii <wbr>11.0走一遍程序遇到的问题,不知道啥意思,最后出现一条quartus <wbr>ii <wbr>11.0+SOPC <wbr>builder <wbr>11.0+ <wbr>nios <wbr>ii <wbr>11.0走一遍程序遇到的问题,上网查阅大多数是调试嵌入式系统出现的问题,很可能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内容如下:

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

#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 )
{
    ALTERA_NIOS2_IRQ_INIT ( CPU_0, cpu_0);
    alt_irq_cpu_enable_interrupts();
}


void alt_sys_init(void)
{
 }

int alt_main(void)
{
 alt_irq_init (ALT_IRQ_BASE);
 alt_sys_init();
 alt_io_redirect (ALT_STDOUT, ALT_STDIN, ALT_STDERR);


 alt_u8  led=0x2;
   volatile int i;
    while(1)
 {for(i=0;i<300000;i++);
  led=0x1;
   *(unsigned int *)PIO_0_BASE=led;
    for(i=0;i<300000;i++);
  led=0x2;
   *(unsigned int *)PIO_0_BASE=led;
 }
  return 0;
}

如果是模板生成工程,

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

主函数在hello_world中,其实alt_sys_init.c中应该写的是系统初始化的命令,一般给出来是空函数,便于用户自己添加,无论是不是使用模板,他开始都是个空函数。系统如何调用各个文件、函数以及顺序等参见alt_main()与main()的问题。

 

 





 





 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有