我是靠谱客的博主 老迟到水池,最近开发中收集的这篇文章主要介绍FPGA的EDA工具常见报错分析8. 关于Nios II中Verify failed between address 0xxxx and 0xxxx错误的解决,错误一般的提示为:Verifying 000xxxxx ( 0%)% C; Q0 H2 R  J7 W* Z9 O  R* r Verify failed between address 0xxxxxx and 0xxxxxx( O" ^0 u; e9 E: E7 X Leaving target processor paused网上的人,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

以下是网上找到的一些关于FPGA的EDA工具常见报错分析:

  1. 在用verilog编程时出现错误:“Can't resolve multiple constant drivers  for net ....”说明同一信号不能在不同 的进程中赋值,这是代码可综合方面的要求。
  2.  在用verilog编写代码的时候出现错误提示:“mixed single- and double-edge expressions are not supported”:在敏感驱动信号中,不能既有单边沿的驱动又有双边沿的驱动,如always@(posedge Clk50Mhz or negedge RstN or StartFlag),即只能同意用一种,不能混合。
  3. 当编译出现如下错误时: Error: Clock input port inclk[0] of PLL "PLL:inst1|altpll:altpll_component|pll" must be driven by a non-inverted input clock pin.是因为pll的输入需要直接和时钟相连接,在顶层文件中连接.看看是否相连了,或者说是名称的大小写是否写对了.
  4. 在编译niosii时出现如下两个错误,同时出现的:

/cygdrive/c/altera/90/nios2eds/components/altera_hal/build/system_rules.mk /components/altera_hal/build/gnu_rules.mk: No such file or directory     hello_world line 120 1300086018362   2

已经如下错误:make[1]:/cygdrive/c/altera/90/nios2eds/components/altera_hal/build/common.mk fork: Resource temporarily unavailable     

因为在win7下的权限问题.具体解决方法参考的网上的:

 Under your Quartus II folder, go to bin->cygwin->bin folder, select the following files in the list below and then right-click and choose Properties. Under the Compatibility tab, check “Run this program in compatibility mode for:” and choose “Windows XP (Service Pack 2)”. Check “Run this program as an administrator”, as well.
Here is the list of files that you can select to change their compatibility mode under the Quartus II->bin->cygwin->bin folder:
1. Make.exe
2. Sh.exe
3. Echo.exe
4. Cygstart.exe
5. MakeInfo.exe
6. Perl.exe
7.Collect2.exe(undernios2edsbinnios2-gnutoolsH-i686-pc-cygwinlibexecgccnios2-elf3.4.6)
8. Nios2-elf-g++.exe (under nios2edsbinnios2-gnutools H-i686-pc-cygwinbin)

在英文网上查到的,这几个不同的exe文件在不同的bin文件夹之间,依次右击改掉属性,把允许管理员使用权限前面打上勾即可.

5.如果run Niosii时经常出现到2%后N久也不动,也不报错,甚至进度条也在滚,当然没有前进了。这时随便你等多久,他就呆在那里,很烦。后面发现是杀毒软件的作用,我只有用360安全卫士,而是关掉了它15分钟,在此期间,run就ok了,估计其他的杀毒软件更猛,所以大家在run的时候最好关上杀毒软件。

6.如果出现错误提示:There are no Nios II CPUs with debug modules available which match the values specified.  Please check that your PLD is correctly configured, downloading a new SOF file if necessary.

则在nios IDE下,tools->Flash Programmer 选项中的下图打勾即可(条形框要下拉)。

                       

7.在编译niosii时如果出现了报错make: *** [system_description/../obj/system.h-t] Error 1。网上的一些解法:1.如果系统跑了uc/os系统,则必须加入timer,如果没有跑系统可以不加,但是我没有跑系统,并且我加了个timer试了下也不行。2.还有一种说法是右击工程名在属性栏中把ram选项改为on-chip momery,但是我不知道他说的哪个,反正没有找到这个选项的地方。3.有人说是软件或者操作系统问题,建议重装软件或系统,可是今天还能用,估计不是,重启了下软件,未果。4.后面的google中搜了下,网上人说在构建niosiicpu时,把设置页面的MPU(内存保护单元)去掉即可。终于解决掉了这个可恶的问题。

8. 关于Nios II中Verify failed between address 0xxxx and 0xxxx错误的解决,错误一般的提示为:Verifying 000xxxxx ( 0%)% C; Q0 H2 R  J7 W* Z9 O  R* r
Verify failed between address 0xxxxxx and 0xxxxxx( O" ^0 u; e9 E: E7 X
Leaving target processor paused

网上的人总结的解决方法如下:1. 首先要根据address后面的两个地址判断出错的到底是什么器件。一般情况出现错误的大多是存储器。
  l1 _5 y: {+ r& Q2 e! }- G    判断的方法是根据sopc中的地址,或者是system.h中的地址,查找相应出错的器件。9 v$ ~- X5 h( r# T4 f" I$ D3 T
  c0 `, z; n6 V2. 检查硬件焊接是否正常。- O( Z" V/ W4 h! L
    很多时候有些问题是硬件焊接造成的,这个主要针对的是自己焊接的板子,一旦地址数据总线有任何焊接问题,都会出现verify failed错误。  N. B/ E# m1 b& ?5 N4 B5 W* B
) q- d$ E0 t: r& M8 A! o& K3. 检查sopc中的componet是否正常。
( }& i, H) L. E    如果是自己加入的接口逻辑,这个部分要确认其正常与否。' a# |, E9 U1 [& P3 z
$ F- x7 t' u) L! Z( w4. 检查Quartus中的设计:
- H$ O& j; |5 e$ Q+ ?  _* M    检查引脚锁定是否正确,必须一一对应,不能有一个错误;
! k1 `% e6 [* b/ [' @6 P$ s( q& {% R    地址对齐问题:针对8、16、32位的外部存储器,对应地址最低位的应该是0、1、2。也就是说如果用16位的外部存储器,那么它的最低位是ADD[1],而ADD[0]是不用的,其他同理。
2 i1 `& b2 w. k8 v8 i, E    数据总线必须是双向IO口,这点很容易忽略。
* c$ G% $ G% {* }) W- i    如果是SDRAM,需要计算并设定PLL的相移。
9 q+ O( F! H+ 5. Nios IDE中检查项目设计是否正确。

6. 就是.bdf文件中的symbol在运用“Generat Pins for Symbol Ports”自动生成引脚的时候,生成的引脚表面上是与symbol连接在一起的,可实际上没有,只要手动把Ports 与Pins连一下,问题便可以解决了

而我碰到的就是Sdram的问题,因为我的sdram忘了接clk时钟脚了,那时候用的niosii核,核外是没有与sdram的clk连接的引脚的,因为它的时钟不是cpu产生,是由外部或者pll产生。

9.在用quartusII编译时,包含了sopc系统,出现如下错误:

Error: Can't name logic function TftTest of instance "TftTest" -- function has same name as current design file,未解决!

 10.在 nios 里下载软件程序时,会出现 assertion "m_state == STATE_DEBUG" failed: file 
"nios2oci.cpp", line 157 Using cable 
"USB-Blaster [USB-0]", device 1, instance 0x00 Pausing target processor: not 
responding. Resetting and trying again: D:altera81nios2edsbinnios2-download: line 594: 6300 Hangup 
nios2-gdb-server --instance 0 --tcpport none --wri te-pid 
./Debug/nios2-download.pid ./Debug/GigaCard.elf.srec 
这个问题在我调试的过程中偶尔会出现,而且是没有规律的,也正是这个问 题,总是阻碍着我们前进的脚步,后来我们发现一个程序本来是可以下到 onchi 
p-memory 中的,后来同样的程序无论如何都下不进去了,于是我们基本可以确 定问题出在了硬件。对于有控制器的系统,晶振肯定是非常重要的,于是我们测 
晶振的输出是不是正常的,结果是有时正常有时不正常,这说明晶振虚焊了,经 过我们小宝同学精心补焊,上面那个问题就再也没有出现过了。 在 nios 
里下载软件程序时,出现 Using cable "USB-Blaster [USB-0]", device 1, instance 0x00 Pausing 
target processor: not responding. Resetting and trying again: FAILED Leaving 
target processor paused 这个错误在可编程部分的原因大多是引脚分配错误。网上有人说要在 quart us 将没有用到的 FPGA 
的引脚设为“input tri-state”,但是我并没有发现这是必 须的,可能只是一些特定地器件需要这样设置。

posted @ 2012-08-08 17:19 IT新秀 阅读(206) 评论(0)  编辑
nios II程序兼容性问题

这两天新装了Quartus II 11.1和Nios II 11.1,安装成功后尝试着跑了一下Altera的一个例程,硬件部分没有问题,只是在SOPC中提示版本不同,原本代码是9.1版本的,现在用11.1版本的软件来跑,所以要将所有的硬件、软件重新跑一遍。到了Nios II部分后,问题出现了。编译到一半的时候老是会出现*.exe: *** fatal error - couldn't allocate heap, Win32 error之类的错误,后来在网上搜了一下,得知是兼容性问题。下面是网上搜到的相关资料,提供的方法有几个,但我只尝试了一个,就是更改Cygwin 程序分配的内存,操作如下:在开始菜单中打开cmd命令,输入“d: 回车”,转到软件的安装目录所在的硬盘下,再输入“cd D:altera11.1quartusbincygwinbin 回车”,来到regtool.exe所在的目录。然后“regtool  -i set /HKLM/Software/Cygnus Solutions/Cygwin/heap_chunk_in_mb 1024 回车”,“regtool  -v list /HKLM/Software/Cygnus Solutions/Cygwin 回车”。关闭cmd。回到Nios II重新编译,这次没有error了!!!

下文转自:http://blog.sina.com.cn/s/blog_86a00bb90100ykaf.html

我的quartus nios版本均为9.1SP1,这几日NIOS II 编译时会出现以下类似错误让我疼痛了好久,比如:

4 [main] ? (6340) d:altera91nios2edsbinnios2-gnutoolsH-i686-pc-cygwinbinnios2-elf-gcc.exe: *** fatal error - couldn't allocate heap, Win32 error 487, base 0x660000, top 0x680000, reserve_size 126976, allocsize 131072, page_const 4096 4 [main] nios2-elf-gcc 4328 fork: child -1 - died waiting for longjmp before initialization, retry 0, exit code 0x100, errno 11

make -s all includes 3 [main] ? (3732) c:altera91quartusbincygwinbinmake.exe: ***fatalerror- couldn'tallocateheap, Win32error487, base 0x9E0000, top 0xB30000, reserve_size 1372160, allocsize 1376256, page_const 4096 2 [main] make 7588 fork: child -1 - died waiting for longjmp before initialization, retry 0, exit code 0x100, errno 11 make: vfork: Resource temporarily unavailable

make -s all includes 3 [main] ? (4980) c:altera91quartusbincygwinbinmake.exe: ***fatalerror- couldn'tallocateheap, Win32error487, base 0x970000, top 0xA40000, reserve_size 847872, allocsize 851968, page_const 4096 2 [main] make 1972 fork: child -1 - died waiting for longjmp before initialization, retry 0, exit code 0x100, errno 11 make[1]: /cygdrive/c/altera/91/nios2eds/components/altera_hal/build/common.mk:54: fork: Resource temporarily unavailable Build completed in 40.947 seconds
网上大致有两种方案,这里给出连接,大家可以根据自己的实际情况使用。

1、 http://blog.sina.com.cn/s/blog_49ad960501000aqk.html(见下面附录1)

核心:
Cygwin 程序缺省可以分配的内存不超过384 MB(program+data)。多数情况下不需要修改这个限制。然而,如果需要更多实际或虚拟内存,应该修改注册表的 HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER区段。田家一个DWORD键heap_chunk_in_mb并把它的值设为 需要的内存限制,单位是十进制MB。也可以用cygwin中的regtool完成该设置。例子如下: regtool -i set /HKLM/Software/Cygnus Solutions/Cygwin/heap_chunk_in_mb 1024 regtool -v list /HKLM/Software/Cygnus Solutions/Cygwin
2、 http://www.cnblogs.com/xitian/archive/2011/08/06/2129291.html(见下面附录2)
核心:修改Quartus II->bin->cygwin->bin->perl.exe的兼容性
这两种方案我都实验过了,
第1种方案直接用regtool根本无法操作,因为程序打开以后就自动关闭了,而在注册表里面添加heap_chunk_in_mb,倒是可以操作,但是效果不佳,问题依然存在。
第2种方案,是可以的,但经过我的试验觉得比较片面。在Quartus II的bin有很多应用程序,因为在编译时任何一个都有可能出现那一种情况。
我的解决办法是这样的:
如果有错,先看路径,比如  c:altera91quartusbincygwinbinmake.exe ***fatalerror- couldn'tallocateheap。

那么就将相应的修改目录下的make.exe的兼容性,改为windowsSP2或者windowsSP3

再比如 d:altera91nios2edsbinnios2-gnutoolsH-i686-pc-cygwinbinnios2-elf-gcc.exe: *** fatal error - couldn't allocate heap

则将目录下的nios2-elf-gcc.exe的兼容性,改为windowsSP2或者windowsSP3。

这样我最终解决了自己的问题,并且屡试不爽。

 

附录1:

最近在编译一些较大的软件包时经常会出现一些 couldn't allocate heap的错误,一会是gcc.exe,一会是make.exe,一会是bash...不过我发现这些错误通常只有重复执行make多几次,最终都会通过.
 
我猜想这可能是因为heap size设置太小的原因造成的. 而多重复几次可以成功的原因是因为这个makefile牵涉到许多次的编译以及链接工作,而其中的heap没有得到很好的释放,结果积累下来就超过了所设置的heap大小.而重复执行时,之前在heap size没超过之前编译成功的文件已不需要继续编译或链接,这样不再占用heap size,从而可以继续编译以下的内容,所以等效来看只是将一个需要大heap的工作分解成几个占用小heap的工作.但是当单个不再可分解的工作所需的heap size就超过了限制估计是无法通过这种方法来解决的.
 
那如何能够增加cygwin的heap尺寸呢?
尝试1:
Cygwin 程序缺省可以分配的内存不超过384 MB(program+data)。多数情况下不需要修改这个限制。然而,如果需要更多实际或虚拟内存,应该修改注册表的 HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER区段。田家一个DWORD键heap_chunk_in_mb并把它的值设为 需要的内存限制,单位是十进制MB。也可以用cygwin中的regtool完成该设置。例子如下: regtool -i set /HKLM/Software/Cygnus Solutions/Cygwin/heap_chunk_in_mb 1024 regtool -v list /HKLM/Software/Cygnus Solutions/Cygwin

附录2:

(转)Nios ii 中奇怪的报错(系统兼容性相关)

关键之处是把相应的编译软件改为与XP SP3或SP2的兼容模式,以管理员的模式运行即可

I am sharing my personal experience here. I have been using Quartus II 9.1 and NIOS II IDE 9.1 on Windows 7 since they were released. Now, I am using Quartus II 9.1 SP2 and NIOS II IDE 9.1 SP2.

A lot of users were asking questions the compatibility of these softwares on Windows 7. Quartus II 9.1 and its SOPC builder seem to work fine on Windows 7 since the first day they are installed.
It is the NIOS II IDE 9.1 that really bothered me. Most of the time when you build a project, it will report error messages like two examples below. The success rate is only 20%.
Example 1:  make -s all includes 3 [main] ? (3732) c:altera91quartusbincygwinbinmake.exe: ***fatal error - couldn't allocate heap, Win32 error487, base 0x9E0000, top 0xB30000, reserve_size 1372160, allocsize 1376256, page_const 4096 2 [main] make 7588 fork: child -1 - died waiting for longjmp before initialization, retry 0, exit code 0x100, errno 11 make: vfork: Resource temporarily unavailable Example 2:  make -s all includes 3 [main] ? (4980) c:altera91quartusbincygwinbinmake.exe: ***fatal error - couldn't allocate heap, Win32 error 487, base 0x970000, top 0xA40000, reserve_size 847872, allocsize 851968, page_const 4096 2 [main] make 1972 fork: child -1 - died waiting for longjmp before initialization, retry 0, exit code 0x100, errno 11 make[1]: /cygdrive/c/altera/91/nios2eds/components/altera_hal/build/common.mk:54: fork: Resource temporarily unavailable 3 [main] ? (6092) c:altera91quartusbincygwinbinmake.exe: ***fatal error - couldn't allocate heap, Win32 error487, base 0x970000, top 0xA60000, reserve_size 978944, allocsize 983040, page_const 4096 8408744 [main] make 1972 fork: child -1 - died waiting for longjmp before initialization, retry 0, exit code 0x100, errno 11 make[1]: /cygdrive/c/altera/91/nios2eds/components/altera_hal/build/chac_rules.mk:147: fork: Resource temporarily unavailable make[1]: *** No rule to make target `/bin/gtf/generated_all.mk.gtf', needed by `system_description/../obj/generated_all.mk-t'. Stop. make: *** [system_project] Error 2 Build completed in 40.947 seconds
Some says it is related to the Norton Antivirus software. Yes, my PC is installed with Norton Antivirus software. But I observed that it happened to Windows 7 PC which is not installed with Norton Antivirus software, as well. Turning off the Norton Antivirus software does slightly help to increase the probability that the project is successfully built, from 20% to about 40%.
Anyway, I found some tricks which can make your life easier if you are using Nios II IDE 9.1 on Windows7.
Under your Quartus II folder, go to bin->cygwin->bin folder, select the following files in the list below and then right-click and choose Properties. Under the Compatibility tab,  checkRun this program in compatibility mode for:” and choose “ Windows XP (Service Pack 2)”. Check “ Run this program as an administrator”, as well. Here is the list of files that you can select to change their compatibility mode under the Quartus II->bin->cygwin->bin folder:  1. Make.exe 2. Sh.exe 3. Echo.exe 4. Cygstart.exe 5. MakeInfo.exe 6. Perl.exe  7. Collect2.exe (under nios2edsbinnios2-gnutools H-i686-pc-cygwinlibexecgccnios2-elf3.4.6)  8. Nios2-elf-g++.exe (under nios2edsbinnios2-gnutools H-i686-pc-cygwinbin)

By doing the steps mentioned above, the success rate of building a project in NIOS II IDE 9.1

Since August of 2011

最后

以上就是老迟到水池为你收集整理的FPGA的EDA工具常见报错分析8. 关于Nios II中Verify failed between address 0xxxx and 0xxxx错误的解决,错误一般的提示为:Verifying 000xxxxx ( 0%)% C; Q0 H2 R  J7 W* Z9 O  R* r Verify failed between address 0xxxxxx and 0xxxxxx( O" ^0 u; e9 E: E7 X Leaving target processor paused网上的人的全部内容,希望文章能够帮你解决FPGA的EDA工具常见报错分析8. 关于Nios II中Verify failed between address 0xxxx and 0xxxx错误的解决,错误一般的提示为:Verifying 000xxxxx ( 0%)% C; Q0 H2 R  J7 W* Z9 O  R* r Verify failed between address 0xxxxxx and 0xxxxxx( O" ^0 u; e9 E: E7 X Leaving target processor paused网上的人所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部