如何解决目录改变时,Nios IIjava project 编译无法编译的问题

1137人阅读
硬件大类(55)
cygdrive/f/altera/10.0/nios2eds/components/altera_hal/build/system_rules.mk:120:
/components/altera_hal/build/gnu_rules.mk: No such file or
/cygdrive/f/altera/10.0/nios2eds/components/altera_hal/build/system_rules.mk:124:
/components/altera_hal/build/gtf_rules.mk: No such file or
make[1]: *** No rule to make target
`/components/altera_hal/build/gtf_rules.mk'. Stop.
make: *** [system_project] Error 2
Build completed in 11.068 seconds
解决办法:因为在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
1. Make.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文件夹之间,依次右击改掉属性,把允许管理员使用权限前面打上勾即可.
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.
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 e9 E: E7 X
Leaving target processor
网上的人总结的解决方法如下:1.
首先要根据address后面的两个地址判断出错的到底是什么器件。一般情况出现错误的大多是存储器。
l1 _5 y: {+ r& Q2 e!
}- G 判断的方法是根据sopc中的地址,或者是system.h中的地址,查找相应出错的器件。9 v$ ~- X5 h( r# T4
f" I$ D3 T
c0 `, n6 V2. 检查硬件焊接是否正常。- O( Z" V/
很多时候有些问题是硬件焊接造成的,这个主要针对的是自己焊接的板子,一旦地址数据总线有任何焊接问题,都会出现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
$ F- x7 t' u) L! Z( w4.
检查Quartus中的设计:
- H$ O& |5 e$ Q+ ?
_* M 检查引脚锁定是否正确,必须一一对应,不能有一个错误;
! k1 `% e6 [* b/ [' @6 P$ s(
地址对齐问题:针对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", line157 Using
"USB-Blaster [USB-0]", device 1, instance 0x00 Pausing target
processor: not
responding. Resetting and trying again:
D:altera81nios2edsbinnios2-download:
line 594: 6300
nios2-gdb-server --instance 0 --tcpport none --wri te-pid
./Debug/nios2-download.pid ./Debug/GigaCard.elf.srec
这个问题在我调试的过程中偶尔会出现,而且是没有规律的,也正是这个问 题,总是阻碍着我们前进的脚步,后来我们发现一个程序本来是可以下到
p-memory 中的,后来同样的程序无论如何都下不进去了,于是我们基本可以确
定问题出在了硬件。对于有控制器的系统,晶振肯定是非常重要的,于是我们测
晶振的输出是不是正常的,结果是有时正常有时不正常,这说明晶振虚焊了,经 过我们小宝同学精心补焊,上面那个问题就再也没有出现过了。 在
里下载软件程序时,出现 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”,但是我并没有发现这是必 须的,可能只是一些特定地器件需要这样设置。
工程设置和环境导致的问题
and Description Path Resource Location Creation Time Id
D:/altera/90/nios2eds/components/altera_hal/build/system_rules.mk
/components/altera_hal/build/gnu_rules.mk: No such file or
directory& hello_world_syslib
line 120 9 16
这个一般是环境的问题,环境没有装对,或者你的工程文件建的有问题,建议重新建工程。
如果重建工程仍不行,可能是环境的问题,说明NIOS软件与别的软件发生冲突,实验中发现,这类错误在重复编译多次后会消失,所以可以耐心地多编译几次。
二、选择工作空间或文件时文件和文件夹中不能有空格字符,不能有汉字。
此类问题额常见报错:
make: *** No rule
to make target `C:/Documents', needed by ...
Illegal project
location. Directory is not writable: C:Documents and
SettingssomeusernameMy Documents
/cygdrive/c/altera/72/nios2eds/components/altera_hal/build/gtf_rules.mk:81:
*** multiple target patterns. Stop.
三、运行时出现:Errors exist in a required project. Continue
解答:当出现此类情况,总是点击“No”,因为程序编译便报错,无法生成链接文件,所以没法下载到芯片中运行,点击“Yes”也无法运行。只能检查代码的错误并改正,重新编译运行。
四、硬件连接问题,需重新检查实验板的下载线是否连接上。
(1)nios2-terminal: can't open uart: Permission
(2)"Terminal process failed"
五、可能选择了串口做为调试设备,应该为jtag_uart。
<img WIDTH="553" HEIGHT="280" V:SHAPES="图片_x0020_1"
ALT="[转载]NIOS&II常见编译问题解答win7下的兼容性问题"
TITLE="[转载]NIOS&II常见编译问题解答win7下的兼容性问题" />
launch C:/altera/72/nios2eds/bin/nios2-terminal.sh
Nios II Terminal Window ...
message should only appear under the following conditions: you are
using uart_0 for input/output instead of the JTAG UART (lab
nios2int), and you use a USB-to serial converter since your PC does
not have a serial port. If these conditions are true, you can
safely ignore the message and use Hyperterminal for
input/output.
If you are
using uart_0, but not a USB-to-serial converter, there may be a
conflict between Hyperterminal and the Nios II IDE. On a PC with a
serial port, Nios II IDE will connect port COM1 to the console
window if uart_0 is specified as the stdin/stdout/stderr device in
the System Library Properties window. In this case, using
Hyperterminal will cause an unnecessary conflict. Close
Hyperterminal and the Nios II IDE, and then restart the Nios II IDE
六、代码的末行非空行
(1)Warning: en newline
(2)Warning: end of file
(3)warning: no newline at end of file
place the cursor at the very end of your program file.
press Enter (or the Return key) to create a new blank line at the
end of your file.
press the Home key to move the cursor to the very beginning of the
last line.
press and hold the Delete key, to delete the whitespace characters
that are usually auto-inserted by the Nios II IDE editor whenever
you create a blank line.
即每个文件的最后一行一定要是空行,不包含空格和任何字符。虽然这种警告不会影响编译和运行,但我们最好遵循编程规范,努力消除所有的警告。
(1)make: *** [system_project ] error 2
a.首先试着看代码是否有问题,如果没有问题,可能是工程设置的问题。
b.此类错误有时多编译几遍就可消除,可以试试多编译几遍。
c.编译是选择Project下的Clean试试。
<img WIDTH="269" HEIGHT="232" V:SHAPES="图片_x0020_4"
ALT="[转载]NIOS&II常见编译问题解答win7下的兼容性问题"
TITLE="[转载]NIOS&II常见编译问题解答win7下的兼容性问题" />
d.重建一个NIOS工程,把原工程中的源程序复制到该新工程下,build新工程发现没有了上述错误。重装NIOS系统后并更改了安装路径后,NIOS的一些头文件会发生变化,所以会有上述错误的发生,解决方法就是新建一个工程,复制原工程的源程序到新工程下就可以了。
(2)make[1]: *** [obj/altera_avalon_sysid.o] Error 1
make: *** [system_project] Error 2
Quartus不是正版的话,需要在SOPC&
Builder中删掉对应CPU的sysid控件。
ID就是一种标示符,类似校验和的这么个东西,在你下载程序之前或者重启之后,都会对它进行检验,以防止Quartus和NIOS程序版本不一致的错误发生。
E:/FPGA/NoisII/nios2eds/components/altera_hal/build/common.mk fork:
Resource temporarily unavailable
E:/FPGA/NoisII/nios2eds/components/altera_hal/build/system_rules.mk
/components/altera_hal/build/gtf_rules.mk: No such file or
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:126369次
积分:3448
积分:3448
排名:第9933名
原创:217篇
转载:83篇
(2)(1)(5)(4)(2)(1)(1)(2)(2)(3)(2)(2)(8)(5)(8)(2)(2)(10)(48)(17)(173)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'(MikeWill)
(MikeWill)
(MikeWill)
(MikeWill)
(MikeWill)
第三方登录:(原創) 如何解決目錄改變時,Nios II project無法編譯的問題? (SOC) (Nios II) (DE2-70) - 真 OO无双 - 博客园
寫程式是很快樂的一件事 Since Sep.15,2006
Abstract若我們從網路上下載範例程式,或者從書上的光碟將範例程式複製到硬碟時,只要是Quartus II版本正確,都可以正常地開啟Quartus II project並且編譯之,但Nios II project卻常常雖然能開啟,卻無法正常編譯,本文討論其root cause並提出解決方式。 Introduction使用環境:Windows XP SP3 + VirtualBox 4.1.2 + Quartus II 11.0 本文將討論以下主題: 1.為什麼會需要改變目錄名稱或目錄位置? 2.改變目錄名稱或目錄位置,在Nios II project會遇到什麼問題? 3.Root cause與解決方法。 4.使用Blank Project方法所面臨的問題。 1.為什麼會需要改變目錄名稱或目錄位置? 我們常會有各種理由會改變原來project的目錄名稱或目錄位置: 1.為了管理方便,可能將原來在d:\project\的所有project移到e:\project\下 2.同事將project整個目錄壓縮給我,因為我並不知道該project放在同事電腦什麼工作目錄下,所以我將壓縮檔解壓縮到我自己的工作目錄下 3.從網路上下載整包範例程式的壓縮檔後,因為我並不知道原本範例程式所存放的目錄,所以我將壓縮檔解壓縮到我自己的工作目錄下 4.從書上光碟複製範例程式到硬碟,因為我並不知道原本範例程式所存放的目錄,所以我將範例程式複製到我自己的工作目錄下 5.新的project與舊的project類似,想從舊的project去做修改即可,開了一個新的目錄,將舊的project所有檔案複製到新的目錄下 6.為了管理方便,想改變原本project的目錄名稱 以上的情形,若是純粹Quartus II project,只要Quartus II版本正確,開啟*.qpf檔即可順利開啟,並且正常編譯,唯一有問題的是Programmer的*.cdf檔可能因為路徑不對無法寫入,只是重新指定*.sof與*.pof的位置即可。 Quartus II的*.qpf project概念類似Visual C++ 6的*.dsw或者Visual Studio的*.sln,整個project內的檔案是相對路徑,所以改變專案名稱或者改變目錄位置都沒有關係,只要檔案相對位置沒有改變,整個project就可以正常運作。 但是Nios II project就沒這麼單純了!! Nios II SBT是用Eclipse去改的,用的是Eclipse的workspace概念,很類似Visual Studio的*.sln概念,但又不完全一樣。Eclipse允許你在一個workspace下,去管理多個project,workspace記住的是project的絕對路徑,所以當你Nios II project目錄名稱改變,或者目錄位置改變,該workspace自然就找不到了。 依照Eclipse workspace哲學的正規解法,此時你應該將目錄改變的Nios II project重新Import到你的workspace下。但事實上真的如此嗎? 2.改變目錄名稱或目錄位置,在Nios II project會遇到什麼問題? 我們實際做個實驗,如下圖所示,原本DE2_70_SOPC_golden_mini是一個在Quartus II與Nios II SBT都完全正常的project。
我們現在將目錄名稱改變,從DE2_70_SOPC_golden_mini改成DE2_70_SOPC_golden_mini2
大家都知到改變目錄名稱或目錄位置不會影響Quartus II project的開啟與編譯,所以就略過不討論,現在將焦點放在Nois II project部分。 開啟Nios II SBT,將workspace目錄切換到新的目錄DE2_70_SOPC_golden_mini2
開啟後顯示更改目錄名稱之前的2個project:hello_world與hello_world_bsp,由於現在目錄名稱已經改變,所以只能看到project名稱,卻完全無法開啟。
由於2個project已經無法開啟,我們將這2個project從workspace中刪除之。
刪除完後,整個workspace完全沒有任何project。
根據Eclipse哲學的正規解法:因為目錄已經改變,我們必須將2個project使用import的方式載入到新的workspace。
由於之前是使用Nios II SBT產生makefile的project,所以在此選擇Import Nios II Software Build Tools Project。
首先將hello_world project import進來,值得注意的是:要將Clean project when importing打勾,也就是在import project完時,馬上執行make clean,將之前所留下的object file全部清除。
import完成後,顯示了以下的warning,告訴我們project想include舊的專案路徑的目錄,但因為目錄名稱改變,所以include失敗。這是第1個問題。
接下繼續import hello_world_bsp,也記得將Clean project when importing打勾。
import完成後,並沒有顯示任何錯誤訊息與warning。
若在hello_world_bsp執行Nios II –& Generate BSP,會出現以下錯誤訊息,表示找不到*.sopcinfo。這是第2個問題。
若在hello_world_bsp執行Nios II –& BSP Editor會出現以下錯誤訊息,表示找不到*.sopcinfo。這是第3個問題。
若實際Build App project(hello_world)與BSP project,雖然仍可出現*.elf與*.a,但會出現以下錯誤訊息,表示Makefile找不到*.sopcinfo。這是第4個問題。
總結以上實驗,我們發現若改變目錄名稱或者目錄位置,在Nios II project會出現以下4個問題: 1.App project(hello_world)會出現include path not found warning。2.BSP project(hello_world_bsp)會無法執行Generate BSP。3.BSP project(hello_world_bsp)會無法執行BSP Editor。4.Build App project(hello_world)與BSP project(hello_world_bsp)會出現Makefile找不到SOPC File的warning。
3.Root cause與解決方法。&
App project (hello_world) :include path not found warning的Root cause
在hello_world的Properties的C/C++ General –& Paths and Symbols的GNC C與GNC C++,我們可以發現Include directories的目錄錯了,抓的都是修改前的目錄名稱,且這些目錄名稱還無法刪除或者修改,因為這是Eclipse自動抓的,這是第1個問題的root cause。
App project (hello_world) :include path not found warning的Solution
Step 1:App project (hello_world)的properties
Step 2:C/C++ Build –& Discovery Options的Cygwin C Compier,按下Clear清除目前所抓的include path。
提示include path即將清除,將在Build時重新抓取include path,按『OK』繼續。
Step 4:C/C++ Build –& Discovery Options的Cygwin C++ Compier,按下Clear清除目前所抓的include path。
提示include path即將清除,將在Build時重新抓取include path,按『OK』繼續。
Step 5:檢查目前App project (hello_world)的include path
C/C++ General –& Paths and Symbols的Includes的GNC C,確定已經清除所有的include paths
C/C++ General –& Paths and Symbols的Includes的GNC C++,確定已經清除所有的include paths
原本App project (hello_world)的warnings也都不見了。
看到這裡,或許你會說:『不是應該要include新目錄的BSP project路徑才對嗎?』沒錯,如同Step 3與Step 4的提示所言,最後只要重新Build App project (hello_world),就會重新discover include path,這我們等BSP project也解決後再一起重新Build。
BSP project (hello_world_bsp)無法Generate BSP的Root cause
首先了解Nios II SBT的Generate BSP到底做了什麼事情,根據[3] 的p.15-8的nios2-bsp-generate-files與[4] 的p.4-30的Regenerating Your BSP所述,Generate BSP會根據BSP project的settings.bsp去尋找*.sopcinfo,再根據目前的*.sopcinfo去產生最新的drivers與HAL目錄所需要的檔案以及重新產生Makefile。
打開settings.bsp,會發現BspGeneratedLocation與SopcDesignFile所記錄的路徑都是改變目錄名稱之前的路徑,因此在Generate BSP時會找不到*.sopcinfo而導致執行錯誤。這是第2個問題的root cause。
BSP project (hello_world_bsp)無法Generate BSP的Solution
Step 1:修改BspGeneratedLocation與SopcDesignFile的路徑
修改完存檔時會出現以下錯誤訊息,主要是BspGeneratedTimStamp使用了中文時間,按下『Save as UTF-8』格式存檔即可。
Step 2:重新Generate BSP
可順利執行Generate BSP沒有任何錯誤訊息。
BSP project (hello_world_bsp)無法執行BSP Editor的Root cause
BSP Editor主要的目的在於修改settings.bsp一些只與BSP project相關的設定,BSP Editor無法執行,主要原因也是因為找不到*.sopcinfo。這是第3個問題的root cause。
BSP project (hello_world_bsp)無法執行BSP Editor的Solution
在之前的步驟已經修改過settings.bsp的*.sopcinfo路徑,所以也一併解決了這個問題,不必再做其他修改。
重新執行BSP Editor,可正常執行沒有任何錯誤訊息。
Build App project (hello_world)與BSP project (hello_world_bsp)會出現Makefile找不到SOPC File的warning的Root cause
App project (hello_world)與BSP project (hello_world_bsp)在Build時,事實上就是執行Make動作,所以需要參考Makefile,會出現warning主要是因為Makefile找不到*.sopcinfo。這是第4個問題的root cause。
Build App project (hello_world)與BSP project (hello_world_bsp)會出現Makefile找不到SOPC File的warning的Solution
理論上應該要去修改Makefile,不過由於執行Generate BSP時,nios2-bsp-generate-files已經根據修改過的settings.bsp更新過Makefile,所以我們不須再手動修改Makefile了。
重新Build BSP project (hello_world_bsp),可順利Build沒有任何錯誤訊息。
最後重新Build App project (hello_world),也可順利Build沒有任何錯誤訊息。
還記得在App project (hello_world) :include path not found warning的Solution時,我們只清除了App project所include的錯誤路徑,但卻還沒有將正確地修正include路徑。
在Build完後App project (hello_world)後,馬上觀察hello_world的Properties的C/C++ General –& Paths and Symbols的GNC C與GNC C++,會發現正確的include路徑都回來了。
之前的洋洋灑灑,只是因為要邊解釋root cause邊介紹solution,其實整個步驟很簡單,只要5個步驟即可。
4.使用Blank Project方法所面臨的問題&
Nios II project只要改變路徑就無法編譯的問題,其實從我使用Quartus II 6.0時就已經發現了,應該說Nios II要使用Eclipse,就注定會有這個workspace的問題,很多人的解法(包括我自己)都與[2] 的一樣,都是重新開1個blank project,然後重新將所需要的*.c, *.cpp拖放進新建的blank project,最後在手動去修改Makefile,這樣的解法的確是可以避開include paths錯誤與*.sopcinfo路徑錯誤的問題,不過settings.bsp與Makefile都是新的,所以必須手動去檢查Makefile是否與原project一樣,然後手動修改Makefile。
在[1] 的p.2-11的User Source Management有以下一段文字:
簡單的說,就是既然你用了Nios II SBT,就不建議手動去改Makefile,應該採用GUI或者Command line script的方式,由tools去更改你的Makefile,而不該手動去更改你的Makefile。本文採用的方式,雖然知道Makefile有問題,但依照Nios II SBT的邏輯,使用了Nios II SBT的GUI方式與流程去修改Makefile,完全沒有手動去修改Makefile,這樣可確定Makefile的正確性,也省去了一一比對原本Makefile的功夫。
完整程式碼下載
Conclusion這篇博文中的解法,是參考了Altera的官方資料所做出的總結,並經過無數次的實驗所歸納的心得, 因為這是我困擾好幾年的問題,假如你也為Nios II project路徑問題而困擾,可以參考本文的解法。
Reference[1] [2] 的[3] [4]}

我要回帖

更多关于 javac 编译目录 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信