19. 在NIOS II IDE编译时出现如下错误是怎么回事?
Pausing target processor: not responding.
Resetting and trying again: FAILED
Leaving target processor paused
答:以下是一位FAE的回答:
1. 关于USB-Blaster在Nios II IDE下载时会发生偶发性错误,这种现象主要是IDE software与Nios II CPU透过USB-Blaster在做通讯时发生错误,若是确认FPG上配置没有错误,连续发生错误的机率应该是相当的低,您只需要重新下载即可。
2. 若您使用Nios II IDE 6.0,请尽量配合SOPC Builder 6.0重新build您的system,并且使用Quartus II 6.0重新compile您的project,以减少CPU与IDE software不兼容的情形。
20.在NIOS II IDE中工程的System Library选项中的这几个选项代表什么意思?.text .rodata .rwdata 与reset .exception这几个地址之间的关系是什么?
答:.text : 代码区 .rodata:只读数据区,一般存放静态全局变量 .rwdata:可读写变量数据区另外还有.bss:存放未被初始化的变量。
■ .text — the actual executable code
■ .rodata — any read only data used in the execution of the code
■ .rwdata — where read/write variables and pointers are stored
■ heap — where dynamically allocated memory is located
■ stack — where call parameters and other temporary data is stored
21. 怎样在NIOSII中操作PIO,提供一种参考方法。
答:hello_led.c是这样写IO口的:
IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, led);
首先在altera_avalon_pio_regs.h找到定义
#i nclude
#define IORD_ALTERA_AVALON_PIO_DATA(base) IORD(base, 0)
#define IOWR_ALTERA_AVALON_PIO_DATA(base, data) IOWR(base, 0, data)
因此在NIOSII中可以调用#i nclude 库函数IORD/IOWR来操作PIO。
在small\software\hello_led_0_syslib\Debug\system_deion下的system.h
中,有以下内容:
#define LED_PIO_TYPE "altera_avalon_pio"
#define LED_PIO_BASE 0x00004000
其中LED_PIO_BASE(IO寄存器地址?)为0x00004000同SopcBuilder中设置一致!
(其实在SopcBuilder中有关NiosII的配置,就是通过system.h来传送给IDE的!)
最后用IOWR(0x00004000, 0, led);替代
IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, led);编译,下载到开发板上,运行成功!
22.怎样让SDRAM和FLASH,SRAM的地址公用?
答: sdram可以和sram,flash共用数据总线和地址总线.在sopc builder中添加SDRAM控制器时,在其share pins via tristate选择项上勾上Controller shares dq/dqm/addr IO pins选项,这样sdram可以和sram,flash共用数据总线和地址总线.但是ATERA不推荐这样做,因为这样会降低SDRAM控制器的性能,在FPGA芯片管脚资源比较紧张的时候迫不得已才这样做。
23.怎样使用DE2板上的数码管,绑定管脚时需要注意什么?请举一个例子说明。
答: DE2板上的数码管只用了7位,小数点位默认为高电平。例如,在做例程count_binary时,需要用到两个数码管,以实现00到FF的计数,在 SOPC添加一个16位的PIO SEVEN_SEG[15..0],绑定管脚时注意:使SEVEN_SEG[0..6]帮定到数码管HEX0[6..0]位,SEVEN_SEG[8.. 14]绑定到数码管HEX1[6..0]位,SEVEN_SEG[7]和SEVEN_SEG[15]直接接VCC,这样才能让两个数码管正常显示并计数。
24. 在NIOS II IDE 中调试,编译通过的软件时,出现了下面的提示,是什么原因?
Using cable "ByteBlasterII [LPT1]", device 1, instance 0x00
Processor is already paused
Downloading 00000000 ( 0%)
Downloaded 57KB in 1.2s (47.5KB/s)
Verifying 00000000 ( 0%)
Verify failed
Leaving target processor paused
答: Verify failed这个问题说明板子的复位电路可能有问题,或装载程序的外部SRAM或SDRAM和CPU 的连接或时序有问题,也有可能是软件偶尔的错误。若是软件偶尔的错误,可以先复位一下CPU,然后再下载程序;或者断电后重新下载.sof和NIOS II 程序
25.在练习C:\altera\kits\nios2_51\examples\verilog\ niosII_cycloneII_2c35的工程时,里面有很多元件DE2板上都没有对应的管脚,比如网络元件lan91c111,使用的IP核,还有 24位的ext_flash,而DE2板上的FLASH只有22位。是不是SOPC中只能让DE2板上有对应管脚的元件存在,其它的只能删除?
答:这个目录下的example是针对altera自己的板子的,和DE2硬件不能对应,只能作为参考,或者做一些修改后用。
26.在SOPC中加了一个200KB的onchip_memory ,为什么在Quartus II 编译时出现这个错误?
Error: Selected device has 105 RAM location(s) of type M4K RAM. However, the current design needs more than 105 to successfully fit
答:SOPC中的onchip_memory和M4K RAM根本就不是一个概念。Quartus II中编译出现这个错误,是由于设计中用到了太多的M4K。
27. 关于sopc-builder 中reset address 的设置,一直搞得不是很明白。
答:SOPC中的reset address 指定的是最终全部软件程序代码下载到的地方,并且程序从reset address 启动。
SOPC 中的exception address 指定的是系统异常处理代码存放的地方。如果exception address 和reset address 不一样,那么程序从reset address 启动后将把放在reset address 处的系统异常处理代码拷贝到exception address 。
NIOS II软件中的text address指定的是程序运行的地方。如果text address和reset address 不一样,那么程序从reset address 启动后将把放在reset address 处的普通只读程序代码拷贝到text address 。NIOS II软件中的rodata address指定的是只读数据的存放地方。如果rodata address和reset address 不一样,那么程序从reset address 启动后将把放在reset address 处的只读数据拷贝到rodata address 。
NIOS II软件中的rwdata address指定的是可读写数据的存放地方。如果rwdata address和reset address 不一样,那么程序从reset address 启动后将初始化rwdata address 处的可读写数据。
28. 如何提高NIOS II系统的性能?
答:主要可以从这几个方面入手:
1、使用fast CPU类型。
2、提高系统主频。
3、优先在SRAM中运行程序,SDRAM次之,最后选择FLASH中运行。
4、使用片内RAM作为数据缓冲,片外SRAM次之,最后选SDRAM。
5、IO数据传输尽可能采用DMA。
6、对能并行处理的数据考虑使用多CPU协同处理。
7、典型算法做成用户指令,有256条可以做,足够你用的。
8、能用HDL模块来完成工作吗?能,就用HDL模块做成外设来完成吧
9、采用C2H。
29.如何优化NIOSII里的应用工程?
答:Optimize your Nios II application design!
1.Creat an Blank Project:Select Altera Nios II " C/C++ Application"
2. In main.c[your main fuctional c/c++ file]:
#i nclude "system.h"
#i nclude "alt_types.h"
#......
int main (void) __attribute__ ((weak, alias ("alt_main")));
int alt_main (void)
{
......
return 0;
}
3."System Library Properties" Options
Select "Clean EXIT"
Select "Small C Library"
Select "Reduced Device Drivers"
Spicify linker position, to ext_flash, ext_ram or on-chip-ram