新闻  |   论坛  |   博客  |   在线研讨会
My first Nios II project
frank2009 | 2010-02-04 10:10:16    阅读:10401   发布文章

(今天看到我的这篇文章中的图片被标上了“此图片来自QQ空间,未经允许不得转载! 狂晕!以后就不在空间写东东了,直接贴上来。(不过在这里面插图片貌似挺麻烦哟,还得先上传...))

呵呵,本来是发表在我的QQ空间里的,不过设置有访问权限,现转到博客中,希望对大家有帮助。

学了FPGA将近大半年了,一直想写点学习心得与大家分享,但写东东我并不擅长,打字也较慢,故一直没有执笔。再说学习的时间也不算很长,应该还算停留在FPGA应用的入门阶段,水平确实有限,不想误了大家。下面只是说些在调试过程中出现的问题及解决办法与大家分享(以Nios II 入门为例)。   


之前学FPGA一直是在搞逻辑,起初有徐老师的指导(衷心感谢徐老师),入门还算轻松,比赛后学习有些懈怠,有好长一段时间没去深入学习了(让老师失望了),以至于逻辑方面的开发水平可以说停滞不前。学FPGA把逻辑搞好了,的的确确是非常有前途的,复杂数字系统的设计确实需要很深的逻辑功底。对于Nios II有人觉得并不值得花很大功夫去深入学习:Nioss 又把FPGA搞成单片机来用了。当然有利也有弊,再此不作深入讨论。故这次寒假,我准备花些功夫好好搞一下逻辑,顺便也把Nios II 入门。

 

好了,说了这么多废话,言归正传。这是我的第一个Nios工程。实现的功能是计数并在数码管上显示出来。花了两个下午的时间才调出来。首先,按照相关资料构建硬件系统,定制CPU。其次,编写软件开发应用程序(此步我直接套用了软件自带的一个计数模板)。最后,调试并 RUN起来。硬件的构建貌似没出现什么问题,还算顺利(当然刚开始我并不清楚CPU运行是否正常)。进入软件开发时便出现了好多问题。由于是套用的模板,我只需要在原有程序上

稍作修改即可。但每次修改后保存时都会出错!
Save could not be completed! Reason:Some characters cannot be mapped
using "GBK" character enooding.Either change the encoding or Removing

the chatacters which are not supported by the "GBK" character encoding. 


试了几次都是出现这个问题(估计耗了我将近2个小时...泪奔 后来才发现好简单就可解决的)。根据上述提示估计是字符所用的编码和开发坏境不匹配。解决方法是:在Nios II C/C++ IDE 窗口下 Edit->Set Encoding在Other后的下拉菜单中选择UIF-8 点击Apply  OK 即可。

 

还有我用的是6.1的版本,有时候菜单中的Set Encoding 一直是灰色的无法选择!遇到这种情况可以先点击Edit->Format 貌似Set Encoding就可选中了(但有时不行)。   几次我都是从新启动IDE 再修改,那个速度慢啊。。。!
解决这个问题后就可以对工程进行编译,这个速度就不提了,完全可以再次去欣赏一下广东“双刀男”的视频后再来看看好了没。编译通过后,就可以在板子上跑了。当然,再次之前先得将第一步的硬件固件存储到目标板上。这时也出现了一些问题:
通过JTAG将.sof下进去。提示的第一个错误是:

Can't start device configuration becasue no programming

options have been selected for device chain.


解决办法:将Program/Configure下面的勾选上即可。
 

 

成功下载进去后,在Nios II IDE 环境下,将编译好的程序下进去。Rus As ->Nios II Hardware.(这个速度嘛,期间完全可以到楼下上个厕所再上来)此时又出现了错误:
The Nios II ELF executable does not exist. 。。。。
可能是编译没成功,在网上收了一下,原因还不少。在Altera Forum上有人说是文件夹名子出现了空格导致的。汗....
"The problem is solved!!!!
In the name of the folder of the project there was a SIMPLE space: this

was the problem!
Now it works!
Bye
PAola"

我用的还是6.1版本,可不敢怠慢啊,从新建了个文件夹放Workspace,还放在了C盘的根目录!先建了一个工程后,编译了一遍。再来Rus As ->Nios II Hardware.时又报错了:
Using cable "USB-Blaster [USB-0]", device 1, instance 0x00
Pausing target processor: not responding.
Resetting and trying again: FAILED
Leaving target processor paused

网上的一些解决办法是:

“这个问题要先排查硬件,再考虑软件问题,Altera公司的解决办法是装7.2版本,服了他。首先检查了SDRAM的接线,没发现“特别”的问题(见后)之后用以前的板子EP2C5跑相同的程序,无问题应该不是证书问题。。。。。最后发现新板子晶振接引脚23,老板子接引脚132,郁闷,原来晶振根本没起振。”

Altera Forum上有一个搞LCD显示的困扰好久后也解决了:
“I finally got it working just now. I realized that the FPGA has a pin

labeled LCD_ON. Well, when you add the LCD to the NIOS processor, it

doesn't come with that pin, I ended up having to add a one bit PIO

output pin that I manually set high in my code (through "IOWR

(LCD_ON_BASE, 0, 1);").
After setting that high, of course, I had to include the usleep(2000);

so the LCD test actually completed.
I don't understand why their (Altera's) component doesn't use the

LCD_ON pin.”

此处适用于我的解决办法很简单。将CPU引出的用于复位的引脚置为高电平即可!

再次Rus As ->Nios II Hardware. 成功了,泪奔了...

期间,老弟要收菜,小外甥吵着要看奥特曼(才3岁啊,迷恋奥特曼如迷恋春哥般,真是没办法。呵呵,不过还好,在我的引导下,他开始对国产动画片(葫芦兄弟、喜洋洋与灰太狼...)产生了浓厚的兴趣)。呵呵,感谢他们的理解与支持

最后上张图:

 最近修改:
另外,我还陆续发了几篇Nios II 入门的博文,附有详细的操作过程及图片,清晰明了。发表在了我的新浪博客里面,介绍了外部SRAM、SDRAM的使用,以及使用Nios IDE Flash Programmer 将程序下载到Flash中或将FPGA配置文件与程序数据都下载到EPCS中的方法。当然我也是刚开始学习Nios的,写的都是我调试中遇到的一些问题与解决办法,由于水平有限,难免有不当或是错误之处,恳请大家指正!
博客地址:http://blog.sina.com.cn/lijun0919

WHUT  608 Device
All Rights Reserved

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
jackwang  2010-02-09 09:16:13 

这个不错的啊~~

xuyp188  2010-02-09 07:59:44 

FPGA十分犀利

推荐文章
最近访客