Quartus II和Nios II使用時(shí)遇到的錯(cuò)誤及解決方法總結(jié)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
問(wèn)題1:
nios燒寫(xiě)報(bào)錯(cuò)error code 8 base=0x211000 --epcs --sidp=0x212AA0 --id=0x0 --accept-bad-sysid --device=1
代碼太大,超出了代碼空間的大小。
問(wèn)題2:
nios 調(diào)試時(shí)出現(xiàn)FAILED downloading ELFfailed ,Nios調(diào)試的時(shí)候出現(xiàn)downloadingELFprocess failed但是 燒寫(xiě) 正常;并且在調(diào)試的過(guò)程中提示出錯(cuò)位置 Verify failed between address 0x11000 and 0x1101F Leaving target processor paused
發(fā)現(xiàn)提示錯(cuò)誤的器件是epcs,其實(shí)epcs是沒(méi)有問(wèn)題的。通過(guò)修改bsp的配置即可,Bsp右擊-nios ii –bspeditor 取消選中所有選項(xiàng)即可。
問(wèn)題3:
qsys加入epcs后的waring問(wèn)題 Warning (12251): Kernel: "No matching role found for EPCS:epcs_control_port:endofpacket (endofpacket)" Warning (12251): Kernel: "No matching role found for EPCS:epcs_control_port:dataavailable (dataavailable)" Warning (12251): Kernel: "No matching role found for EPCS:epcs_control_port:readyfordata (readyfordata)"
因?yàn)橥瑫r(shí)出現(xiàn)了nios中燒寫(xiě)flash時(shí)候報(bào)epcs錯(cuò)誤。后發(fā)現(xiàn)是代碼太大超出了限制。精簡(jiǎn)代碼后,quartus 編譯不再報(bào)錯(cuò)。
問(wèn)題4:
Quartus iiError (170040): Can't place all RAM cells in design Error: Peakvirtual memory: 882 megabytes
原因 ram資源不夠。
問(wèn)題5:
Description Resource Path Location Type undefined reference to `__alt_invalid' alt_sys_init.c problem.
nios中偶爾出現(xiàn)了這個(gè)錯(cuò)誤,后發(fā)現(xiàn)dsp文件的配置有錯(cuò)誤,在dsp文件右擊,選擇niosii—dsp editor,打開(kāi)的dsp edit偶爾選項(xiàng)卡中,在前面三項(xiàng)都選擇jtag_uart再次編譯工程,不會(huì)報(bào)錯(cuò)。打開(kāi)APP工程內(nèi)的Makefile,尋找C_SRCS關(guān)鍵字,沒(méi)有的話自己手動(dòng)加入。然后在后面添加錯(cuò)誤的文件C_SRCS += src/debug/debug.c。
問(wèn)題6 :
Quartus II Error (12153): Can't elaborate top-leveluser hierarchy
Quartus II不能精細(xì)的頂級(jí)用戶層次結(jié)構(gòu)實(shí)體名字與你的工程名不一致。
問(wèn)題7:
Description Resource Path Location Type address 0x17fa0 of RGLVPulseSoftware.elfsection `.rwdata' is not within region `onchip_memory2' RGLVPulseSoftware C/C++ Problem address 0x19e84 of RGLVPulseSoftware.elfsection `.onchip_memory2' is not within region onchip_memory2'C/C++ Problem
也是片上ram空間不夠引起的。
問(wèn)題8:
nios ii SEVERE System ID mismatch -connected 0x1001703a, expected 0x0.
原因一:
nios ide/sdk使用的sopcinfo或者ptf文件和你對(duì)fpga配置的文件不是同一個(gè)工程建立的。
原因二:
system id不正確。在qsys中刪除systemid組件并重新添加,然后generate 解決。
問(wèn)題9:
Error (176310): Can't place multiple pinsassigned to pin location Pin_6 (IOPAD_X0_Y22_N21) Info(176311): Pin o_epcs_sdo is assigned to pin location Pin_6 (IOPAD_X0_Y22_N21) Info(176311): Pin ~ALTERA_ASDO_DATA1~ is assigned to pin location Pin_6(IOPAD_X0_Y22_N21)
原因是不能分配給多功能管腳Pin_K22 。這是由于Pin_K22 是一個(gè)多功能管腳,還有一個(gè)功能是nCEO,也是默認(rèn)的功能。如果要用它當(dāng)普通IO,需要提前設(shè)置一下:
assignments>device>deviceand pin options>dual-purpose pins里面把nCEO設(shè)置成use as regular i/o就可以了。
問(wèn)題10:
Error: Can't place 108 pins with 2.5 V I/Ostandard because Fitter has only 81 such free pins available for generalpurpose I/O placement.
為了避免以上情況的出現(xiàn),常常使用Virtual Pin對(duì)非IO引腳的信號(hào)進(jìn)行約束,經(jīng)過(guò)約束的信號(hào),綜合布線器將不對(duì)其分配IO資源。
具體方法如下:
在Quartus II中Assignments->AssignmentEditor,在Category欄選擇logicoptions,到列表中To列下添加要設(shè)置的引腳接口,將AssignmentName設(shè)置為Virtual Pin,將Value設(shè)置為On,Enabled 設(shè)置為Yes,如果需要設(shè)置的很多,可以通過(guò)在Pin Planner中將引腳復(fù)制過(guò)來(lái)。
這樣設(shè)置為Virtual Pin 就不會(huì)占用FPGA的IO資源,而且時(shí)序仿真不會(huì)增加額外的延時(shí),更加準(zhǔn)確。
問(wèn)題11:
用quartus設(shè)計(jì)框圖時(shí)出現(xiàn)錯(cuò)誤,錯(cuò)誤信息如下:
Error: Can't place 117 pins with LVTTLI/O standard because Fitter has only 85 such free pins available for generalpurpose I/O placement Error: Can't place pins due to device constraints Error: Can't fit design in device Error: Quartus II Fitter wasunsuccessful. 3 errors, 0 warnings Error: Quartus II Full Compilation wasunsuccessful. 3 errors, 0 warnings
解決方法:
在你開(kāi)發(fā)的時(shí)候,你在給芯片指定管腳的時(shí)候, 可能因?yàn)槟承┰騽h除了一些管腳, 而你在ALL PIN列表中卻沒(méi)有刪除,當(dāng)你繼續(xù)分配的時(shí)候,雖然你實(shí)際用到的管腳不到85,但是你曾經(jīng)分配的管腳已經(jīng)有117個(gè)了。所以解決方法很簡(jiǎn)單,就是在ALLPIN列表中刪除未用管腳。
問(wèn)題12:
Error: Can't place 98 pins with 3.3-VLVTTL I/O standard because Fitter has only 80 such free pins available forgeneral purpose I/O placement。
提示信息表明錯(cuò)誤:不能夠放置98個(gè)3.3LVTTL I?O標(biāo)準(zhǔn)電平引腳,因?yàn)镕itter只能有80個(gè)空余的引腳用來(lái)作為GPIO。請(qǐng)檢查你的工程管理的器件,不能滿足你的應(yīng)用,得更換更多引腳或更高性能的芯片。
問(wèn)題13:
quartus的Error Can't place multiple pins assigned to pin locatio Error (176310): Can't place multiple pins assigned to pin location Pin_6 (IOPAD_X0_Y22_N21) Info (176311): Pin o_epcs_sdo is assigned to pin location Pin_6 (IOPAD_X0_Y22_N21) Info (176311): Pin ~ALTERA_ASDO_DATA1~ is assigned to pin location Pin_6 (IOPAD_X0_Y22_N21)
原因是不能分配給多功能管腳Pin_K22 。這是由于Pin_K22 是一個(gè)多功能管腳,還有一個(gè)功能是nCEO,也是默認(rèn)的功能。如果要用它當(dāng)普通IO,需要提前設(shè)置一下:
assignments>device>device and pin options>dual-purpose pins里面把nCEO設(shè)置成use as regular i/o就可以了。
問(wèn)題14:
nios ii SEVERE System ID mismatch - connected 0x1001703a, expected 0x0.
原因一:
nios ide/sdk使用的sopcinfo或者ptf文件和你對(duì)fpga配置的文件不是同一個(gè)工程建立的。
原因二:
system id不正確。在qsys中刪除systemid組件并重新添加,然后generate 解決。
問(wèn)題15:
nios 中出現(xiàn)undefined reference to `__alt_invalid'alt_sys_init.c CC++ Problem nios中偶爾出現(xiàn)了這個(gè)錯(cuò)誤,后發(fā)現(xiàn)dsp文件的配置有錯(cuò)誤,
在dsp文件右擊,選擇nios ii—dsp editor 打開(kāi)的dsp edit偶爾選項(xiàng)卡中,在前面三項(xiàng)都選擇jtag_uart再次編譯工程,不會(huì)報(bào)錯(cuò)。
問(wèn)題16:
Verifying 000xxxxx ( 0%) Verify failed between address 0xxxxxx and 0xxxxxx Leaving target processor
-
首先要根據(jù)address后面的兩個(gè)地址判斷出錯(cuò)的到底是什么器件。一般情況出現(xiàn)錯(cuò)誤的大多是存儲(chǔ)器。判斷的方法是根據(jù)sopc中的地址,或者是system.h中的地址,查找相應(yīng)出錯(cuò)的器件。
-
檢查硬件焊接是否正常。很多時(shí)候有些問(wèn)題是硬件焊接造成的,這個(gè)主要針對(duì)的是自己焊接的板子,一旦地址數(shù)據(jù)總線有任何焊接問(wèn)題,都會(huì)出現(xiàn)verify failed錯(cuò)誤。
-
檢查sopc中的componet是否正常。如果是自己加入的接口邏輯,這個(gè)部分要確認(rèn)其正常與否。
-
檢查Quartus中的設(shè)計(jì):
檢查引腳鎖定是否正確,必須一一對(duì)應(yīng),不能有一個(gè)錯(cuò)誤;地址對(duì)齊問(wèn)題:針對(duì)8、16、32位的外部存儲(chǔ)器,對(duì)應(yīng)地址最低位的應(yīng)該是0、1、2。也就是說(shuō)如果用16位的外部存儲(chǔ)器,那么它的最低位是ADD[1],而ADD[0]是不用的,其他同理。數(shù)據(jù)總線必須是雙向IO口,這點(diǎn)很容易忽略。如果是SDRAM,需要計(jì)算并設(shè)定PLL的相移。 -
Nios IDE中檢查項(xiàng)目設(shè)計(jì)是否正確。