问题标签 [nios]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
224 浏览

assembly - 为什么我需要掩码指令?

在带有 Altera DE2 FPGA 的 Nios 2 中,我研究了以下中断代码

异常:检查是否陷阱或中断

我可以理解第一个说明以及面罩的作用,但我不明白为什么需要面罩。是不是因为位 0 以外的其他位中可能有垃圾?AFAIK 仅使用位 0,那么为什么我需要屏蔽它?

0 投票
0 回答
484 浏览

svn - Subversion pre-commit hook 过滤不需要的文件(大多数由 quartus 和 nios 生成)

我想知道svnserve中使用的预提交钩子是否可以根据扩展列表“过滤”文件。我已经准备了类似于“%APPDATA%/subversion/config”中的全局​​忽略列表的列表,其中包含我自己添加的模式,例如用于 Quartus 和 Nios 项目的 *.cdf *.sof *.elf。我们的主要目标是通过在提交期间过滤掉不必要的文件来节省空间,即不被“ svn status ”显示

我在 Google 上进行了很多搜索,但找不到任何令人满意的解决方案。我目前拥有的一种方法是编写一个 windows 批处理文件来自动启用并用我自己的列表替换 subversion 客户端上的全局忽略列表。问题很明显:它只适用于单个客户端。如果我想在全局范围内强制执行此过滤,则使用存储库的每个客户端都必须执行我的批处理文件。更不用说不是每个人都使用windows平台。

我发现的下一个方法是递归地修改svn:ignore属性,以便可以全局忽略每个模式。同样,此方法需要客户端操作,并且维护起来并不简单——它仅适用于存储库中的当前目录。换句话说,如果我导入一个新目录,忽略列表将不适用于它。

我确实在 python 中编写了一个预提交钩子,但它仅检查日志消息的长度和正在提交的文件的大小。据我了解,预提交钩子不应该对事务进行任何修改,否则客户端的工作缓存将不一致且无法使用,这是可以理解的。钩子做了两件事:

  1. 如果任何检查因(退出 1)代码而失败,则拒绝提交

  2. 接受提交,以便事务成为存储库的修订版

如果需要过滤此事务中的任何文件,我最初的想法是拒绝提交。但是我的同事说,自己管理这么多文件会很乏味,而且他们不知道重建项目不需要哪些文件扩展名。

我仍然觉得必须有一种方法可以在不涉及客户端操作的情况下自动化过滤过程。我现在想到的是两个可能的预提交钩子:

  1. 拒绝提交,修改新添加的项目属性以忽略特定模式(如 svn:ignore)

  2. 接受提交,忽略不需要的文件事务,通知用户哪些文件已被忽略,设法使客户端的工作缓存与存储库保持一致。

我更喜欢选项 2,尽管它看起来比选项 1 困难得多

另外,请建议哪些文件应该放在 Quartus II 和 Nios 项目的特定版本下,即在签出这些文件后可以立即重建整个项目。我目前的列表是: .vhd .v .qpf .qsf .bsf

0 投票
1 回答
791 浏览

assembly - 如何简单地找到一个宏?

我有一个找不到的 asm 宏:

它曾经可以工作,然后我格式化了硬盘驱动器,现在我正在恢复项目并遇到构建问题。我在 Quartus II 网络版中使用了 Nios II SDK,并且编译它曾经可以工作。我究竟做错了什么?

Thw 宏是

找不到宏的文件是

该文件实际上在那里:

更新

我尝试了所有组合来做这件看似简单的事情。我什至尝试过.include "..\..\..\nios32\mymacro.s" ,但它不起作用。做一些简单的事情不应该是不可能的。你说这很简单,那么我要的解决方案是什么?我不是在问这是否容易,我知道这应该很容易,但由于设计很糟糕,所以简单已经成为不可能。

在此处输入图像描述

0 投票
4 回答
8330 浏览

c - Nios 2“你好世界”?

我设法在 Nios 2 Altera DE2 板上运行了一个复杂的项目,在该板上我使用输入和输出创建了一个带有汇编和 C 代码的计时器。使用 Nios 2 IDE,我可以将项目下载到 DE2 FPGA,时钟按预期运行。但我并不了解有关编程模型的所有内容,而且我还试图了解基本的 Hello World 示例和 IDE 附带的诊断示例。

Hello World 示例只是

但是当我“作为 Nios 2 硬件”编译并运行它时,它只会在 IDE 中将 Hello World 打印到标准输出,它不会下载并在板上运行 - 不应该这样做吗?如果它不在板上运行,该示例的意义何在?我有没有做错什么,如果是这样,因为示例编译并运行了?我必须将 BSD 编辑器设置为什么吗?

更新

它根本不起作用。我在 BSP 编辑器中尝试了不同的组合,但没有任何效果。当我尝试将项目作为“Nios II 硬件”运行时,板上没有任何反应,即使它在 IDE 中显示项目正在下载到板上。为什么容易的事情很难?用户体验很糟糕,不得不猜测是不科学的。

在此处输入图像描述

0 投票
1 回答
1486 浏览

c - 如何将此代码作为 Nios 硬件运行?

我有一个 Nios 2 项目,它应该能够在我的 FPGA 上作为硬件运行,但如何?

我已经构建了它,我可以在模拟器中运行它:

在此处输入图像描述

uart0在 BSP 编辑器中选择了

在此处输入图像描述

但是当我将它作为 Nios 硬件运行时,什么也没有发生

在此处输入图像描述

你能告诉我应该怎么做吗?

它可以在 Quartus II 编程器中使用系统加载 FPGA:

在此处输入图像描述

更新

导师已经回答了。

可以在 DE2 板上运行操作系统,但程序会快速执行。> 输出来自串行端口 uart0,即 9 极 D-sub 触点。由于程序运行得如此之快,当数字 2333 已用完时,明智的做法是断开 USB 转串口 > 适配器与 DE2(而不是 PC)的连接。> 否则 putty 中的缓冲区将被填满,从而丢失运行开始的输出。

0 投票
3 回答
6614 浏览

vhdl - 在 FPGA 中编译日期和时间

我可以在 VHDL 中使用类似于 C-Sourcecode-Macros 的东西__DATE____TIME__ 在 FPGA 中使用编译时间作为一种版本时间戳吗?

作为 VHDL 的 >>>new-comer<<< 我想修改以下现有代码,将硬编码日期放入 FPGA 寄存器。我总是要记住在编译之前调整值。如果这是自动完成的,那就更容易了。我还可以包括小时/分钟/秒吗?

0 投票
4 回答
1718 浏览

c - 为什么操作系统的某些部分必须用汇编语言编写?

我的迷你操作系统的调度程序是用汇编编写的,我想知道为什么。我发现eretC 编译器无法生成该指令,这是否可以推广到 Nios 以及 x86 和/或 MIPS 架构以外的其他平台?因为我相信 os 的一部分总是用汇编编写的,所以我正在寻找为什么系统程序员必须知道汇编才能编写操作系统。是否存在 C 编译器的内置限制,无法生成某些汇编指令,例如将eret程序返回到中断后正在执行的操作?

0 投票
2 回答
5068 浏览

fpga - 无法在 Qsys 中编译我的系统

当尝试根据本文档 http://www.cs.columbia.edu/~sedwards/classes/2013/4840/lab3.pdf中的说明组装系统时, 我收到以下错误消息:

你能告诉我有什么问题吗?

在此处输入图像描述

0 投票
1 回答
187 浏览

c - 如何开发这个算法?

pollkey()应该每毫秒调用一次,并且tick(&timeloc)应该每秒调用一次,而且我没有线程库。显而易见的方法是使用线程来完成,但现在看来我需要建议如何执行这两个更新。我正在尝试的代码是

但我不认为以上是 100% 正确的。整个程序是

我为延迟创建了子程序,我想我可能不会改变这个:

滴答文件是

它在 1 秒延迟所在的滴答文件中。你能想出更正确的方法来达到结果吗?

0 投票
1 回答
1219 浏览

c - Nios 2 的 C 和汇编轮询

我想每毫秒调用一次 pollkey 函数并每秒增加一次时间变量(timeloc)。我认为如果我call pollkey在延迟子例程中添加一个它应该可以工作,为什么它不工作?

上面我用C运行的是

如果它每秒轮询一次,但我想每毫秒轮询一次,我认为我能做到的唯一方法是从 dely 子例程调用 pollkey,但如果我这样做,它就像什么也没发生。你能帮助我吗?我之前问过怎么做,只有在我认为答案应该是更改程序集时才在 C 中得到答案。

如何开发这个算法?

更新

br使用而不是我得到了更好的结果,call所以我必须检查差异。这就是我正在使用的效果更好的方法:

现在唯一的问题是时钟走得太快了。

更新

我想我通过引入一个计数器来解决它,该计数器会在几秒钟内打破模 1000: