NIOS 常见错误集合.docx

上传人:b****7 文档编号:11329020 上传时间:2023-02-27 格式:DOCX 页数:18 大小:30.55KB
下载 相关 举报
NIOS 常见错误集合.docx_第1页
第1页 / 共18页
NIOS 常见错误集合.docx_第2页
第2页 / 共18页
NIOS 常见错误集合.docx_第3页
第3页 / 共18页
NIOS 常见错误集合.docx_第4页
第4页 / 共18页
NIOS 常见错误集合.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

NIOS 常见错误集合.docx

《NIOS 常见错误集合.docx》由会员分享,可在线阅读,更多相关《NIOS 常见错误集合.docx(18页珍藏版)》请在冰豆网上搜索。

NIOS 常见错误集合.docx

NIOS常见错误集合

NIOS常见错误集合

来源:

 唐海龙的日志

(荐)NIOS常见错误集合嵌入式工程师必备

2010年04月08日星期四10:

52

1.怎样在TCL脚本分配管脚source 

.tcl有点问题:

#sourcestratix_pin_assign.tcl

couldn'tread file "stratix_pin_assign.tcl":

nosuchfileordirectory  答:

From the ToolsmenuselectTclscripts,andthenfromtheprojectfolderchoosethesetupscriptforyourparticulardevelopmentboard,andclickRun.

  2.D:

TESTios_sst60下载时出现错误:

Error:

Can'tconfiguredevice.Expected JTAG IDcode0x020010DDfordevice1,butfoundJTAGIDcode0x020B40DD.

  答:

SOPC所选器件和开发板上的不一致。

  3.在NOISII中Bulid例程hello_world都出现了错误,错误提示为:

gdrive/c/altera/kits/NIOS2/components/altera_nios2/HAL/src/alt_busy_sleep.c:

68:

error:

parseerrorbefore'/'token等错误全部由alt_busy_sleep.c引起,都是关于括号不匹配的问题,而alt_busy_sleep.c是IDE中的一个默认程序。

这个错误同样出现在D:

TESTDE2Projectsoftwareios2,培训用的一个简单实验。

  答:

找到system.h文件,里面有个关于系统时钟频率的设置项,应该是没有赋值,你手动赋值。

比如你用50MHZ的时钟,就设成50000000。

如果总是出现上述问题,可能和软件有关系,建议重新安装软件。

注意quartus和NIOS安装版本一定要相同,不能混装。

  4.这个错误是什么原因引起,把那个sdk_arm删除后,又提示另一个地方出错。

  答:

运行NIOSIIIDE,点Project->Clear,重新Builde,应该可以解决问题。

  5.在SOPC中Generate出现如下错误是怎么回事?

Error:

Generatorprogramformodule'epcs_controller'didNOTrunsuccessfully.只要在SOPC中加入epcs_controller就会出现此错误,无法生成一个元件。

  答:

可能和软件有关系,建议重新安装软件(这个问题是我刚学NIOS遇到的最头痛的一个问题,问题的原因是Quartus和Nios安装的版本不一致)。

  6.在NiosIIIDE中,怎样打开一个已经存在的工程?

每次新建工程比较麻烦。

  答:

指定一个NiosIIIDE的工作目录,就打开了那个目录下存在的工程。

另外,在NiosII中是可以建立多个工程的。

  7.在QuartusII中编译出现如下错误怎么办?

Error:

Can'tplacepinsassignedtopinlocationPin_AE24(IOC_X65_Y2_N2)

  答:

按F1可以查看帮助,出现这样的错误的原因是:

CAUSE:

Youassignedtwoormorepinstothespecifiedlocation,buttheFittercannotplaceallthepinsinthatlocation.删除这个管脚即可。

有一种比较简便的方法,就是在工程目录中找到一个后缀为QSF的管脚配置文件,查找Pin_AE24删除那行语句就行了。

  8.如何在NIOSIIIDE下跟踪查看变量的定义或者函数的定义?

  答:

按住CTRL键,鼠标移动到变量或者函数名的地方,就可以发现这些地方高亮显示,单击就可以进入到变量或者函数定义的地方。

  9.在count_binary.c有这样一段程序,它是如何操作的?

unsignedintdata=segments[hex&15]|(segments[(hex>>4)&15]<<8)

  答:

segments[hex&15]显示个位0~F;(segments[(hex>>4)&15]<<8)显示十位数0~F,个位0~F,然后十位加一。

10.这个错误是由什么引起?

提示LED_PIO_BASE没有声明

  答:

这是因为名字不一致引起的比如,在生成SOPC系统时,双击PIO(ParallelI/O)(在AvalonModules->Other下),为系统添加输出接口,你没有把该组件改名成LED_PIO,而是保留了原始的名字:

PIO_0;但你又通过IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,led);来向该组件写入数据,就会导致上述错误。

解决办法:

1.可以修改sopc系统,为该PIO改名为LED_PIO;2.在hello_led.c的前面给LED_PIO_BASE赋值,如#defineLED_PIO_BASE0x00001800,后面的这个地址要与SOPC中的地址对应。

  11.如何在NIOSII中驱动外部芯片或设备?

  答:

在开发过程中,我们经常会使用外接一些芯片,或外接一些实用电路,比如AD芯片、串并转换芯片等等,那么如何在NIOSII中去使用这些芯片呢?

我们在开发中会有多个选择:

1.如果这个芯片是使用数据和地址总线的,并且补线时没有足够的单独引脚,那么这个芯片必须挂接在tri_stat总线上,这种用法和我们以往单片机或MCU类似,在SOPCBuilder中直接定义用户逻辑,如果有额外的控制引脚,就需要用PIO来驱动,虽然公用数据地址线节省了引脚,但做控制时序费劲了。

2.如果这个芯片单独使用数据和地址,那么我们会直接做成Avalone总线的Slave设备,在SopcBuilder中自己定义component。

需要写HDL模块,自己定控制、状态、数据寄存器和控制位定义,这种方式控制灵活,易于实现复杂的控制时序。

3.在QuartusII工程中画电路模块(或用HDL写电路模块),这种方式是独立于SOPC定义的模块之外的,做一个纯电路的处理模块,有时候会比较容易实现某些灵活的处理。

  12.在SOPC添加AvalonTrisatateBridge时,提示有如下错误,该如何解决?

  Tristatebridge/tristatemasterrequiresaslaveoftypeAvalontristate.PleaseaddaslaveoftypeAvalontristate.

Generate按钮为灰色,无法Generate

  答:

需要一个专门接三台桥的设备,把flash添加到sopc中就可以了。

  13.在做count_binary这个例子时,出现一个错误:

error:

`BUTTON_PIO_IRQ'undeclared(firstuseinthisfunction)BUTTON_PIO_IRQ的值如何给他定义?

  答:

这个错误可能是在sopcbuilder中定制的pio端口名称是否与程序中用的不一致,要和程序里的一致,把pio组件的名称就改为button_pio。

  14.在QuartusII中编译时出现如下错误:

Error:

Nodeinstance"cpu_bht"instantiatesundefinedentity"cpu_bht_module"

点击错误的地方弹出一个对话框这个错误是怎么回事?

怎样解决?

  答:

可能是在SOPC中所选的CPU型号不正确,换一个试试。

  15.怎样自动分配管脚?

  答:

在QuartusII自动分配管脚有一个方法,点击Assignments->ImportAssginments,导入一个管脚分配文件,后缀为.csv.txt等,前提是在顶层原理图中各个输入输出的名称要和这个文件中的名称一致。

  16.在NIOSII中编译时出现如下错误怎么解决?

错误是不是由SOPC中的RAM引起?

regionramisfull(count_binary.elfsection.text).Regionneedstobe24672byteslarger.

address0x80c1f8ofcount_binary.elfsection.rwdataisnotwithinregionram

Unabletoreachedge_capture(at0x00800024)fromtheglobalpointer(at0x0081419c)becausetheoffset(-82296)isoutoftheallowedrange,-32678to32767.

  答:

可能时RAM的大小不够,也有可能是中断地址(exceptionaddress)的偏余量不够,设置大些就可以了。

如果还是出现这个问题,加一个SDRAM试试。

17.在QuartusII中,为什么编译一些样板工程都会出错?

Error:

DDRtimingcannotbeverifieduntilprojecthasbeensuccessfullycompiled.

Error:

EvaluationofTclscriptauto_verify_ddr_timing.tclunsuccessful

Error:

QuartusIIShellwasunsuccessful.2errors,1warning

  答:

在做样板工程时要注意一个问题:

Duetothe library pathsthatarecodedintotheQuartussettingsforthisproject,ifauserwishestomodifythehardwaredesigntheymustfirststripoutanyoldpathsfromwithintheprojectsettingsfile(qsf)

在qsf文件中找到类似语句

set_global_assignment-nameVHDL_FILEC:

/MegaCore/ddr_ddr2_sdram-v3.2.0/lib/auk_ddr_tb_functions.vhd"这里的目录是初始的目录,把它改为正确的目录。

  18.在NIOSIIIDE编译时出现如下错误是怎么回事?

system_description/alt_sys_init.c:

75:

error:

`ONCHIP_MEMORY_BASE'undeclaredhere(notinafunction)

system_description/alt_sys_init.c:

75:

error:

initializerelementisnotconstant

system_description/alt_sys_init.c:

75:

error:

(nearinitializationfor`ext_flash.dev.write')

system_description/alt_sys_init.c:

75:

error:

initializerelementisnotconstant

system_description/alt_sys_init.c:

75:

error:

(nearinitializationfor`ext_flash.dev.read')

  答:

ONCHIP_MEMORY_BASE没有赋值,在alt_sys_init.c程序的开头加上#defineONCHIP_MEMORY_BASE0x00000000后面的这个地址要与SOPC中的对应。

  19.在NIOSIIIDE编译时出现如下错误是怎么回事?

Pausingtargetprocessor:

notresponding.

Resettingandtryingagain:

FAILED

Leavingtargetprocessorpaused

  答:

以下是一位FAE的回答:

1.关于USB-Blaster在NiosIIIDE下载时会发生偶发性错误,这种现象主要是IDEsoftware与NiosIICPU透过USB-Blaster在做通讯时发生错误,若是确认FPG上配置没有错误,连续发生错误的机率应该是相当的低,您只需要重新下载即可。

2.若您使用NiosIIIDE6.0,请尽量配合SOPCBuilder6.0重新build您的system,并且使用QuartusII6.0重新compile您的project,以减少CPU与IDEsoftware不兼容的情形。

  20.在NIOSIIIDE中工程的SystemLibrary选项中的这几个选项代表什么意思?

.text.rodata.rwdata与reset.exception这几个地址之间的关系是什么?

  答:

.text:

 代码区.rodata:

只读数据区,一般存放静态全局变量.rwdata:

可读写变量数据区另外还有.bss:

存放未被初始化的变量。

■.text—theactualexecutablecode

■.rodata—anyreadonlydatausedintheexecutionofthecode

■.rwdata—whereread/writevariablesandpointersarestored

■heap—wheredynamicallyallocatedmemoryislocated

■stack—wherefunctioncallparametersandothertemporarydataisstored

21.怎样在NIOSII中操作PIO,提供一种参考方法。

  答:

hello_led.c是这样写IO口的:

IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,led);

首先在altera_avalon_pio_regs.h找到定义

#include

#defineIORD_ALTERA_AVALON_PIO_DATA(base)IORD(base,0)

#defineIOWR_ALTERA_AVALON_PIO_DATA(base,data)IOWR(base,0,data)

因此在NIOSII中可以调用#include库函数IORD/IOWR来操作PIO。

在smallsoftwarehello_led_0_syslibDebugsystem_description下的system.h

中,有以下内容:

#defineLED_PIO_TYPE"altera_avalon_pio"

#defineLED_PIO_BASE0x00004000

其中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共用数据总线和地址总线.在sopcbuilder中添加SDRAM控制器时,在其sharepinsviatristate选择项上勾上Controllersharesdq/dqm/addrIOpins选项,这样sdram可以和sram,flash共用数据总线和地址总线.但是ATERA不推荐这样做,因为这样会降低SDRAM控制器的性能,在FPGA芯片管脚资源比较紧张的时候迫不得已才这样做。

  23.怎样使用DE2板上的数码管,绑定管脚时需要注意什么?

请举一个例子说明。

  答:

DE2板上的数码管只用了7位,小数点位默认为高电平。

例如,在做例程count_binary时,需要用到两个数码管,以实现00到FF的计数,在SOPC添加一个16位的PIOSEVEN_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.在NIOSIIIDE中调试,编译通过的软件时,出现了下面的提示,是什么原因?

Usingcable"ByteBlasterII[LPT1]",device1,instance0x00

Processorisalreadypaused

Downloading00000000(0%)

Downloaded57KBin1.2s(47.5KB/s)

Verifying00000000(0%)

Verifyfailed

Leavingtargetprocessorpaused

  答:

Verifyfailed这个问题说明板子的复位电路可能有问题,或装载程序的外部SRAM或SDRAM和CPU的连接或时序有问题,也有可能是软件偶尔的错误。

若是软件偶尔的错误,可以先复位一下CPU,然后再下载程序;或者断电后重新下载.sof和NIOSII程序

  25.在练习C:

alterakitsios2_51examplesverilogniosII_cycloneII_2c35的工程时,里面有很多元件DE2板上都没有对应的管脚,比如网络元件lan91c111,使用的IP核,还有24位的ext_flash,而DE2板上的FLASH只有22位。

是不是SOPC中只能让DE2板上有对应管脚的元件存在,其它的只能删除?

  答:

这个目录下的example是针对altera自己的板子的,和DE2硬件不能对应,只能作为参考,或者做一些修改后用。

26.在SOPC中加了一个200KB的onchip_memory,为什么在QuartusII编译时出现这个错误?

Error:

Selecteddevicehas105RAMlocation(s)oftypeM4KRAM.However,thecurrentdesignneedsmorethan105tosuccessfullyfit

  答:

SOPC中的onchip_memory和M4KRAM根本就不是一个概念。

QuartusII中编译出现这个错误,是由于设计中用到了太多的M4K。

  27.关于sopc-builder中resetaddress的设置,一直搞得不是很明白。

  答:

SOPC中的resetaddress指定的是最终全部软件程序代码下载到的地方,并且程序从resetaddress启动。

SOPC中的exceptionaddress指定的是系统异常处理代码存放的地方。

如果exceptionaddress和resetaddress不一样,那么程序从resetaddress启动后将把放在resetaddress处的系统异常处理代码拷贝到exceptionaddress。

NIOSII软件中的textaddress指定的是程序运行的地方。

如果textaddress和resetaddress不一样,那么程序从resetaddress启动后将把放在resetaddress处的普通只读程序代码拷贝到textaddress。

NIOSII软件中的rodataaddress指定的是只读数据的存放地方。

如果rodataaddress和resetaddress不一样,那么程序从resetaddress启动后将把放在resetaddress处的只读数据拷贝到rodataaddress。

NIOSII软件中的rwdataaddress指定的是可读写数据的存放地方。

如果rwdataaddress和resetaddress不一样,那么程序从resetaddress启动后将初始化rwdataaddress处的可读写数据。

  28.如何提高NIOSII系统的性能?

  答:

主要可以从这几个方面入手:

1、使用fastCPU类型。

2、提高系统主频。

3、优先在SRAM中运行程序,SDRAM次之,最后选择FLASH中运行。

4、使用片内RAM作为数据缓冲,片外SRAM次之,最后选SDRAM。

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

6、对能并行处理的数据考虑使用多CPU协同处理。

7、典型算法做成用户指令,有256条可以做,足够你用的。

8、能用HDL模块来完成工作吗?

能,就用HDL模块做成外设来完成吧

9、采用C2H。

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

  答:

OptimizeyourNiosIIapplicationdesign!

1.CreatanBlankProject:

SelectAlteraNiosII"C/C++Application"

2.Inmain.c[yourmainfuctionalc/c++file]:

#include"system.h"

#include"alt_types.h"

#......

intmain(void)__attribute__((weak,alias("alt_main")));

intalt_main(void)

{

......

return0;

}

3."SystemLibraryProperties"Options

Select"CleanEXIT"

Select"SmallCLibrary"

Select"ReducedDeviceDrivers"

Spicifylinkerscriptposition,toext_flash,ext_ramoron-chip-ram

  30.关于verifyfailed的总结

1.SDRAM的时序不对

有时候不正确的pllclockphaseshiftforsdram_clk_out就会导致SDRAM不能正常工作:

2.SDRAM的连线不对,物理板子的连线问题

3.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1