SOPC Builder/Nios学习经验总结

SOPC Builder/Nios学习经验总结(ZZ)

 

 

以下是我在“SOPC专题竞赛”学习过程中的一些总结,其实很多总结都来自于网友。希望对初学者有所帮助,也希望高手们批评指正。相信:良好的学习心态+有效的学习方法+及时的总结=满意的成绩!

1.    怎样在TCL脚本分配管脚 source <pin_assign>.tcl  有点问题:
# source stratix_pin_assign.tcl 
couldn't read file "stratix_pin_assign.tcl": no such file or directory
答:From the Tools menu select Tcl Scripts, and then from the project folder choose the setup script for your particular development board, and click Run.  

2.    D:/TEST/Nios_sst60下载时出现错误:
Error: Can't configure device. Expected JTAG ID code 0x020010DD for device 1, but found JTAG ID code 0x020B40DD.
答:SOPC所选器件和开发板上的不一致。

3.    在NOIS II中Bulid例程hello_world都出现了错误,错误提示为:
gdrive/c/altera/kits/Nios2/components/altera_Nios2/HAL/src/alt_busy_sleep.c:68: error: parse error before '/' token等 错误全部由alt_busy_sleep.c引起,都是关于括号不匹配的问题,而alt_busy_sleep.c是IDE中的一个默认程序。这个错误同样出现在D:/TEST/DE2Project/software/Nios2 ,培训用的一个简单实验。
答:找到system.h文件,里面有个关于系统时钟频率的设置项,应该是没有赋值,你手动赋值。比如你用50MHZ的时钟,就设成50000000
如果总是出现上述问题,可能和软件有关系,建议重新安装软件。注意Quartus和Nios安装版本一定要相同,不能混装。

………………………………………………………………………………………………………………………………………
中间部分省略,详情请下载下载文件全文PDF文档
或者浏览此页面http://www.edacn.net/bbs/thread-66365-1-1.html………………………………………………………………………………………………………………………………………


28.    如何提高Nios II系统的性能?
答:主要可以从这几个方面入手:
1、使用fast CPU类型。
2、提高系统主频。
3、优先在SRAM中运行程序,SDRAM次之,最后选择FLASH中运行。
4、使用片内RAM作为数据缓冲,片外SRAM次之,最后选SDRAM。
5、IO数据传输尽可能采用DMA。
6、对能并行处理的数据考虑使用多CPU协同处理。
7、典型算法做成用户指令,有256条可以做,足够你用的。
8、能用HDL模块来完成工作吗?能,就用HDL模块做成外设来完成吧
9、采用C2H。

29.    如何优化Nios II里的应用工程?
答:Optimize your Nios II application design!
1.Creat an Blank Project:Select Altera Nios II " C/C++ Application" 
2. In main.c[your main fuctional c/c++ file]:
#include "system.h"
#include "alt_types.h"
#......
int main (void) __attribute__ ((weak, alias ("alt_main")));
int alt_main (void)
{  
    ......
    return 0;
}
3."System Library Properties" Options
Select "Clean EXIT"
Select "Small C Library"
Select "Reduced Device Drivers"
Spicify linker script position, to ext_flash, ext_ram or on-chip-ram

30.    关于verify failed的总结
1)    SDRAM的时序不对。有时候不正确的pll clock phase shift for sdram_clk_out就会导致SDRAM不能正常工作;
2)    SDRAM的连线不对,物理板子的连线问题
3)    在调试的时候,程序下载的空间不是非易丢失存储器(non-volatile memory)或者存储器的空间不够也会导致这个错误; 
4)    Quartus II的默认设置导致的错误
Quartus II默认将所有没有使用的IO口接地,这种时候可能导致某些元器件工作不正常;最好将不用的IO口设置为三态 
5)    USB-blaster坏了,或者JTAG通信的信号噪声太大
JTAG的端口需要一个弱上拉电阻来抗干扰
6)    确保你的sdram既连接到CPU的指令总线也连接到CPU的数据总线

31.    关于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字或者其倍数。

32.    建立CPU时,下面的那个HardWare Multiply里面可以选①Embedded Multipliers,②Logic Elements,③None,这三个选项有什么区别呀?
答:①Embedded Multipliers,使用专门的内嵌硬件乘法单元(不可编程,仅能做乘法,且乘法速度最快),不是RAM。 ②Logic Elements,使用逻辑单元,也就是FPGA中的查找表(速度较慢)。③None,那就是不用硬件乘法器了,这是只能通过软件模拟乘法,速度最慢。

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

34.    安装了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,你会发现模板工程依然存在。
这种问题可能还出现在Nios II的不同版本安装,可能由于没有卸载干净也出现找不到模板工程的情况,把文件夹名改过来就可以了。

这个问题用命令的方式也可以解决:
1.运行CMD,在开始→运行里面输送CMD
2.CD命令进入到Nios II工作目录中。进入到eclips目录下
3.进入到eclips目录下,并输入命令Nios2-ide.exe-clean,进入到Nios IDE的clean模式。
4.选择workplace,就可以看到自己所需要的模板工程。

35.    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一个插件。对于我们新手来说这还是必要的。

36.    Altera下载线ByteBlasterMV和ByteBlaster区别总结
答:ByteBlasterMV和ByteBlaster都是Altera常用的下载线,下面对它们的区别作以总结:
1.ByteBlasterMV可以支持3.3V和5.0V器件下载和编程,ByteBlaster只支持5.0V器件, ByteBlasterMV可以替代ByteBlaster;
2.支持器件不同
ByteBlasterMV:MAX9000,MAX7000S,MAX7000A,MAX3000A,APEX20K,FLEX10K(包括 FLEX10KA,FLEX10KE),FLEX8000,FLEX6000
ByteBlaster:MAX9000,MAX7000S,MAX7000A,FLEX10K,FLEX8000,FLEX6000
3.支持电平不同
ByteBlasterMV:支持3.3V和5.0V TTL和CMOS 输出电压
ByteBlaster:支持5.0V TTL输出电压
4.下载线内部结构的区别
1)ByteBlasterMV25针接口中15脚是VCC,而ByteBlaster25针接口中15脚是地;
2)ByteBlasterMV下载线用的芯片是74HC244,ByteBlaster下载线用的芯片是74LS244。

37.    SOPC中配置DMA需要注意的问题
答:当系统中有多个类型的设备和存储设备间需要DMA传输,尽可能使一个DMA控制器完成单一的任务(即在SOPC BUILDER中设置avalon交换逻辑时,读一种设备,写一种设备),否则会造成复杂的仲裁逻辑,在系统生成的时候花费大量的时间。

38.    Nios II 软件项目迁移三种方法
答:Nios II 开发环境下编译环境是基于GNU gcc的,实际使用了Makefile,但在Nios II IDE环境中用图形环境代替了手工编辑Makefile,这有方便之处,同时也带来很多不便,特别是工程目录迁移,软件升级等情况下会出现一些莫名其妙的错误,对付这些错误,去查原因有时候太费时间,这里准备了三种解决办法,大家有用的时候可以试一试:
1.project->clean:把系统编译时生成的相关文件全清除,这样可以重新生成相关的文件,避免冲突。
2.重新建syslib目录中的Device Drivers[Nios2_??]和Device Drivers[sopc_builder]这两个link文件夹,这板斧在软件升级的时候必须这么做,因为link的目录在不同版本中是不一致的,前面的??就是版本号。
3.重新生成软件项目,然后再把老工程目录中的文件拷贝到新工程目录中。 
 
39.    FLASH芯片地址连接再探讨
答:很多人发现在SOPC BUILDER中设置16flash,实际会多出一条信号线,那应该如何连接芯片呢?其实SOPC BUILDER输出的还是字节对齐的,对16位宽数据,最低位始终是0,外接16芯片时一般偏移一位,即把SOPC BUILDER生成的A1接到外部芯片的A0,这样接是需要有前提的,那就是外接芯片的地址需要是16位对齐的地址。一般am29lv160的FLASH就需要如此处理。但也有例外,比如Intel的FLASH,它的A0在设置成16位模式的时候自动失效,它的地址线始终是字节对齐的,所以需要A0--A0,A1--A1....连接。

40.    Nios II zip file调试要点
答:Altera Nios II HAL提供了一个简易的只读文件系统,这个文件系统在FLASH中,在程序模板Web_Server中也用到这个zipfile系统,调试时需要注意,这个文件系统必须在FLASH中, 才能在DEBUG方式下打开文件成功,所以必须先用flash programmer把文件系统写入到FLASH中,然后才能成功调试。

41.    装Quartus II和Nios II 需要注意的一个问题
答:在装这两个软件时,一定要注意一个问题,就是两个软件的版本一定要一致,不能混装。我以前由于疏忽,安装了Quartus II5.1,而Nios II 却是5.0,出现了两个很难解决的问题。
1.在SOPC中Generate出现如下错误:
Error: Generator program for module 'epcs_controller' did NOT run successfully. 只要在SOPC中加入epcs_controller就会出现此错误,无法生成一个模块。
2.在NOIS II中Bulid一些工程时,经常遇到这个错误:
gdrive/c/altera/kits/Nios2/components/altera_Nios2/HAL/src/alt_busy_sleep.c:68: error: parse error before '/' token等, 错误全部由alt_busy_sleep.c引起,都是关于括号和'/' 不匹配的问题。
这两个问题很不好解决,最后才知道是自己的软件装的有问题,浪费了我很多宝贵的学习的时间。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值