nios - 2常见问题解答 联系客服

发布时间 : 星期三 文章nios - 2常见问题解答更新完毕开始阅读

5、IO数据传输尽可能采用DMA。

6、对能并行处理的数据考虑使用多CPU协同处理。 7、典型算法做成用户指令,有256条可以做,足够你用的。

8、能用HDL模块来完成工作吗?能,就用HDL模块做成外设来完成吧 9、采用C2H。

34.如何优化NIOSII里的应用工程?

答:Optimize your Nios II application design!

1.Creat an Blank Project:Select Altera Nios II \ 2. In main.c[your main fuctional c/c++ file]: #i nclude \#i nclude \#......

int main (void) __attribute__ ((weak, alias (\int alt_main (void) { ...... return 0; }

3.\Select \Select \

Select \

Spicify linker script position, to ext_flash, ext_ram or on-chip-ram

35. 关于verify failed的总结 1. SDRAM的时序不对

有时候不正确的pll clock phase shift for sdram_clk_out就会导致SDRAM不能正常工作: 2. SDRAM的连线不对,物理板子的连线问题

3. 在调试的时候,程序下载的空间不是非易丢失存储器(non-volatile memory)或者存储器的空间不够也会导致这个错误 4. QuartusII的默认设置导致的错误

QuartusII默认将所有没有使用的IO口接地,这种时候可能导致某些元器件工作不正常;最好将不用的IO口设置为三态

5. USB-blaster坏了,或者JTAG通信的信号噪声太大 JTAG的端口需要一个弱上拉电阻来抗干扰

6. 确保你的sdram既连接到CPU的指令总线也连接到CPU的数据总线

36.关于DMA传输的几点说明:

1.memory 到 外设的传输,调用alt_dma_txchan_ioctl()时,有一个参数为alt_dma_tx_only_on等

2.调用alt_dma_txchan_send函数时,在传输结束前就返回一个值,如果此值为负的话,说明发送请求失败。正确传输结束后,调用done函数。 3. 接收函数alt_dma_rxthan_prepare类似上面的1和2

4.传输结束,有两种可能:数据传完或者end of packet(要预先使能)

5.Sopc builder中例化时要制定哪些可以访问DMA的主端口,DMA的avalon slave端口要接cpu。实际传输的最大数可以帮助确定设置的位数

6.alt_dma_txchan_ioctl用于控制dma的一些工作性质,使用多的话可以用信号量等来“抢占”

7.dma传输最小应该传4字或者其倍数。

37. 1. 建立CPU时,下面的那个HardWare Multiply里面可以选①Embedded Multipliers,②Logic Elements,③None,这三个选项有什么区别呀?

答: ①Embedded Multipliers,使用专门的内嵌硬件乘法单元(不可编程,仅能做乘法,且乘法速度最快),不是RAM。 ②Logic Elements,使用逻辑单元也就是FPGA中的查找表(速度较慢)。③None,那就是不要声长硬件乘法器了,这是只能通过软件模拟乘法,速度最慢。

38.下载是出现“not responding”错误的又一点发现:

答:在设计的过程中,经常使用板子上内部的两个晶振作为CPU或者有些信号的时钟,而且习惯用osc_27和osc_50命名。在绑定管脚时又经常导入一个 CSV文件,没有手动一一绑定,而在那个CSV文件中晶振管脚名分别为CLOCK_27,CLOCK_50,这样系统的CPU根本就没有绑定管脚,不出错才怪。把名称改为CLOCK_27,CLOCK_50,重新编译下载就可以了。

39. 安装了nios2linux-1.4之后,为什么在New->Project时并没有出现Microtronx NIOS II选项呢?

答:这个问题好像难倒过很多人,其实在运行nios2linux-1.4安装的第一步,里面有个提示: Information Regarding the Installation Procedure

IMPORTANT: Please ensure that you specify the correct path for the Altera Nios II Kit installation directory and the Cygwin root directory. The typical Altera Nios II Kit directory is:c:\\altera\\kits\\nios2 The typical Cygwin root directory is: c:\\altera\\quartus50\\bin\\cygwin

问题的关键就是上面的路径不正确。对于Nios 5.1和6.0的路径分别为nios_51和nios_60,都不是nios2,所以安装后找不到模板工程很正常。但它的一些必要文件又确实是安装在了 nios_51或nios_60中。我也遇到了过同样的问题,想到了一个简单的方法可以解决: 1.把文件夹nios_51或nios_60改为nios2,启动Nios II,就可以看到所需模板工程。 2.退出Nios II,把文件夹名还原。

3.再次启动Nios II,你会发现模板工程依然还在。

40.Nios II汉化解决方案

答:NIOS II IDE实际上是在eclipse平台上的一个应用插件,而Eclipse 是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。可访问如下网站:

1.Eclipse官方网站http://www.eclipse.org/

2.中国Eclipse社区 http://www.eclipseworld.org/bbs/index.php 下面介绍如何汉化NIOS II(实际上只是汉化了eclipse)

1.打开NIOS II,点help->about NIOS II IDE,会看到有关NIOS的版权信息。可以看到NIOS II 5.1的版本上的Eclipse版本是Eclipse 3.0.1 2.在Eclipse官方网站上找到Eclipse 3.0.1多国语言包NLpack-eclipse-SDK-3.0.x-win32.zip 下载地址:

http://sunsite.informatik.rwth-a ... SDK-3.0.x-win32.zip 3.在NIOS II的安装目录中,你可以找到一个eclipse目录,如:

C:\\altera\\kits\\nios2\\bin\\eclipse,在这个目录下新建2个文件夹language和links 4.将NLpack1-eclipse-SDK-3.1.1a-win32.zip解压到language目录下 5.在links文件夹下用记事本新建一个文件,取名为link.link(必须是此扩展名)

6.在language.link 里输入代码如下: path=c:/altera/kits/nios2/bin/eclipse/language 保存此文件。 7.汉化完成。

说明,这种方法只是汉化了eclipse,对NIOS II没有汉化,但这个软件已经大部分为中文了,因为NIOS II 只是eclipse一个插件。对于我们新手来说这还是必要的

41.FLASH下载内容为空

在有SDRAM和FLASH的SOPC中,如果最后要下载程序到FLASH中,在NIOS II 中用FLASH PROGRAMER下载时有 # Programming flash with the project

\--cable='ByteBlas

terII [LPT1]' --sidp=0x04001038 --id=417604522 --timestamp=1257256685 \h.flash\

Empty flash content cannot be programmed or verified的错误。提示说要给flash编程的数据是空的。

答:原因是RESET VECTOR指向了SDRAM,应该指向FLASH。因为这里要下载的是一个工程,下载的是工程内容,reset vector指向了SDRAM与flash就没有关系了,也就不会下载到flash中。

42.Verifying 000xxxxx ( 0%)

Verify failed between address 0xxxxxx and 0xxxxxx Leaving target processor paused

论坛和网络上关于这个问题问的特别多,也是新手常见的一个问题,下面我就这个问题稍微总结一下:

1. 首先要根据address后面的两个地址判断出错的到底是什么器件。一般情况出现错误的大多是存储器。

判断的方法是根据sopc中的地址,或者是system.h中的地址,查找相应出错的器件。 2. 检查硬件焊接是否正常。

很多时候有些问题是硬件焊接造成的,这个主要针对的是自己焊接的板子,一旦地址数据总线有任何焊接问题,都会出现verify failed错误。 3. 检查sopc中的componet是否正常。

如果是自己加入的接口逻辑,这个部分要确认其正常与否。 4. 检查Quartus中的设计:

检查引脚锁定是否正确,必须一一对应,不能有一个错误;

地址对齐问题:针对8、16、32位的外部存储器,对应地址最低位的应该是0、1、2。也就是说如果用16位的外部存储器,那么它的最低位是ADD[1],而ADD[0]是不用的,其他同理。

数据总线必须是双向IO口,这点很容易忽略。