tag 标签: 下载失败

相关博文
  • 热度 28
    2015-5-26 18:27
    3463 次阅读|
    1 个评论
    近期在用 nios ii 做项目时,发现一个奇怪的现象,在 NIOS II EDS 软件中编写好的代码,烧写到芯片中,第一次能够正常运行,但是当我按下板卡上的复位键之后,系统却卡死了,再也运行不起来,除非重新下载程序。经过分析系统可知,系统的硬件设计和 Qsys 系统中 NIOS II CPU 系统的搭建都是没有任何问题的。那么为什么会存在这样的问题呢,这里我先简单介绍下我的系统: 我的系统主要由 NIOS II 最强板 CPU , SDRAM 、预留系统定时器、预留时间戳定时器、 system ID 、 EPCS 控制器以及 JTAG_UART 组成。具体如下图所示(点击图片可查看高清大图): 在 Qsys 环境中,我一开始将 CPU 的复位向量( Reset Vector )设定在了 EPCS 上,然后在 NIOS II EDS 中建立了软件工程,编译,下载运行都没有问题,但是并没有将 fpga 配置文件和代码固化到 EPCS 中去,因此复位时存在问题是肯定的。后来为了调试方便,在 Qsys 系统中将 CPU 的复位向量也修改指向了 SDRAM ,然后在 NIOS II EDS 软件中,重新生成了 BSP 之后,软件的编译,下载运行都没有问题,只是每当我按下板卡上的复位键之后,系统却卡死了,再也运行不起来。 记起去年做毕业设计时,曾经为在含有 EPCS 的系统中无法下载程序的问题苦恼过,当时下载程序时,每次都在进度为 64% 时报如下的错误,“ Nios II ‘Launching New_configuration’ has ecountered a problem.Dowenloading Elf Process failed.” 相信这个报错也是大家最深恶痛绝的(注,此图是我从网上下载的,自己做系统已经很久不出这个问题了,想弄张这样的图片只能百度了): 在网上找了一大堆问题,有说是 SDRAM 相位不对的,这个我以前也确实遇见过不过自从我将 SDRAM 的时钟相移设定为 -90 度后,就基本没遇到过这个问题了。还有说是硬件本身有问题的,这里不排除此种情况,但是我的系统中却并非如此。最终是在新浪博客还是百度空间中的某位前辈的文章中找到的答案我忘记了。当时忘了记下博客地址了,只是将内容复制出来,存了一个 word 文档。现在这篇文档已经能够在百度文库中直接检索到了,尊重他人版权,我这里就只发文章在文库中的地址了: http://wenku.baidu.com/link?url=YOyixrJXWj0ZunlJGqdUFdLv8wkF1KCXxXcEkHGpaulHwlsXPwjR29GxGBxQ-AhMrwot6oKnSziAdDYZrGayB6ZrLu8XaAHmhIikud3wPNC   他的解决方案就是在 BSP editor 中修改了两个与 bootloader 位置相关的选项,将 allow_code_at_reset 和 enable_alt_load 两个选项的勾选取消了,如下图(点击图片可查看高清大图):   该文章中介绍,当创建不带 EPCS 控制器的 NIOS II 系统时,在 NIOS II EDS 中创建工程时, bsp editor 中这两项是勾选上的。当创建了带 EPCS 控制器的 NIOS II 系统时,在 NIOS II EDS 中创建工程时, bsp editor 中这两项是没有勾选上的。由此可知,当复位向量为 SDRAM 时,这两个选项应该勾选上。具体的原因见该文中作者在 Altera 提供的相关手册中找到原始解释。 当我在系统中将此两项勾选上后,再次生成 bsp ,然后编译、下载,处理器就能够正常执行复位了。   小梅哥 2015 年 5 月 26 日于北京至芯科技