我已经在Linux机器上安装了Quartus和NIOS II IDE。最初,我尝试将一个现有的NIOS II项目导入Eclipse,但它只是停在那里旋转,最终告诉我它不能导入该项目,因为它已经存在。
我试着在Win10机器上安装所有东西,项目导入正常。我确实注意到原始项目中的一些路径有反斜杠。例如:
#include "..subfolderinclude_file.h"
诸如此类的事情。我想知道是否是它造成了问题。
因此,我尝试在Quartus中创建一个hello-world NIOS处理器,并从头开始制作一个NIOS II项目。Eclipse的每一步都非常缓慢,但最终我还是坚持了下来,直到我能够达到终点,在这一点上,它只是挂着红蓝箭头旋转的小圆圈。
我还有一个弹出窗口,里面有一长串:
远程系统浏览器操作
行,顶部显示:
用户操作正在等待后台工作完成
看起来一切都安装正确了,例如,我可以从Quartus打开NIOS II Eclipse IDE。Quartus本身运行良好。
我使用这些说明安装了Eclipse:
有人能告诉我为什么速度如此之慢吗?我的Linux机器规格很高,运行起来很快。没有任何其他东西在上面挣扎。
如果有什么我可以尝试提供诊断信息,我非常乐意提供。谢谢
我在这里找到了一个解决方案
https://askubuntu.com/questions/761604/eclipse-not-working-in-16-04
要测试此修复是否有效,请尝试打开一个终端,然后进行
$export SWT_GTK3=0
然后运行eclipse-nios2。也就是说,做一些类似的事情
$ ~/intelFPGA_lite/20.1/nios2eds/bin/eclipse-nios2
如果这解决了问题,那么使修复永久编辑eclipse.ini,对我来说,它位于intelFPGA_lite/20.1/nios2eds/bin/eclipse_nios2 中
在该文件中,在行openFile和--launcher.appendVmargs 之间
插入
--launcher.GTK_version
2
所以上面写着:
openFile
--launcher.GTK_version
2
--launcher.appendVmargs
并保存。
为我工作!
请改用Visual Studio代码。它可以(几乎)完成Eclipse所能做的一切,还可以远程调试。例如,在我的设置中,我专门使用macOS进行开发。我在Ubuntu 20.04虚拟机中安装了Quartus,VSCODE允许我像在macOS中本地运行Quartus一样进行开发和调试。
我将在下面提供一个粗略的"操作方法"。
我强烈建议Quartus使用Ubuntu环境(其他linux环境也应该工作:我已经测试了Arch和Manjaro)。无论IDE的选择如何,安装Windows都是一件让人头疼的事。自20.1以来,我就没有尝试过Windows版本,但没有任何开箱即用的东西,而且花了很多小时或是配置文件的问题才修复它。此外,Windows版本无论如何都不是原生的,它实际上是通过WSL在Ubuntu中运行的。
- 确保您已经安装了所需的Quartus版本-这应该适用于Pro、Standard和Lite版本。如果你愿意,你可以跳过NiosII Build Tools for Eclipse的手动安装,但我实际上建议你安装它。它仍然很有用,如果只是用于创建一个新项目,BSP等
- 安装VSCODE和Microsoft提供的C/C++扩展(如果您打算使用该功能,还可以安装Visual Studio Code Remote-SSH扩展)
- 使用Eclipse创建一个新项目(或者跳过,如果您已经有了项目)
- 打开VSCODE,选择"打开"并导航到项目的软件目录
- VSCODE将打开您的项目,您应该看到您的应用程序目录和BSP目录
- 在这里,您可以使用完整的linting、自动完成等功能来处理代码
- 如果您需要重新生成BSP,您可以使用Eclipse来完成,也可以只运行命令行工具
编译
如果您允许Eclipse为您创建项目,那么它将在您的应用程序目录中生成一个makefile。编译就像从应用程序目录中运行"make"一样简单。我喜欢在VSCODE中打开一个终端窗口,这样我就可以在工作时运行各种工具,所以这通常是我编译代码的方式。相反,如果您想将其集成到VSCODE中,则可以定义一个任务(https://code.visualstudio.com/docs/editor/tasks)。
Eclipse会自动将您创建的新源添加到makefile中。VSCODE不会这么做——然而,我个人并不认为这是一件坏事。我不喜欢IDE扰乱我的makefile,我想自己完全控制它们。因此,当您创建一个新的源文件时,只需记住将其添加到makefile中即可。可能有一种方法可以让VSCODE自动添加源文件(您可以在保存等时运行命令),但我没有动力尝试解决这个问题。
调试
还可以使用VSCODE通过USB Blaster在目标上实时调试Nios2软件。为此,请打开项目.vscode文件夹中的launch.json文件。如果这个文件不存在,只需创建它。路径应该是:
<project root dir>/.vscode/launch.json
将以下内容复制到launch.json文件中:
{
"version": "0.2.0",
"configurations": [
{
"name": "app",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/app/app.elf",
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"MIMode": "gdb",
"miDebuggerServerAddress": "localhost:2334",
"miDebuggerPath": "/PATH/TO/intelFPGA/20.1/nios2eds/bin/gnu/H-x86_64-pc-linux-gnu/bin/nios2-elf-gdb",
"debugServerPath": "/PATH/TO/intelFPGA/20.1/quartus/bin/nios2-gdb-server",
"debugServerArgs": "--tcpport 2334 --reset-target --tcppersist",
}
]
}
此文件是调试目标和设置的列表。您可以在这里添加任意数量的配置,但目前最容易从一个开始。上面的配置被称为"应用程序",如果你愿意,你可以根据自己的项目进行更改。
- 更新";程序";带有应用程序elf路径的条目文件
- 更新";miDebuggerPath"路径与nios2 elf gdb所在的路径您的系统。这是Nios2的gdb客户端
- 更新";debugServerPath";path与nios2 gdb服务器的路径。这是用于Nios2的gdb服务器
- 保存文件,现在点击";运行和调试";左边的按钮VSCODE中的侧控制面板
您将在屏幕顶部看到刚才在launch.json中定义的配置旁边的播放按钮。点击播放按钮-这将启动gdb服务器的一个实例,然后启动gdb客户端并连接两者。如果一切顺利的话,你的目标会跑起来,然后停下来。
VSCODE将为您提供一组调试工具,用于步进、监视变量、调用堆栈等。在右侧,您可以查看调试控制台,它将允许您直接在gdb控制台中输入命令。注意,您必须在命令前使用-exec。例如,要打印变量x的值,您需要键入:
-exec print x
洞穴
这种调试方法有一个问题:nios2 gdb服务器并不总是干净地退出,因此端口没有关闭。如果尝试启动另一个调试会话,服务器将不会启动,因为端口正在使用中。Eclipse通过在每次启动gdb时随机化端口来解决这个问题。我还没有找到实现VSCODE的方法。
我发现最简单的方法是在需要的时候手动运行gdb服务器。注释掉上面的两行"debugServer"。在VSCODE中打开第二个端子并运行:
nios2-gdb-server --tcpport 2334 --reset-target --tcppersist
这将保持服务器运行,即使您停止调试。如果启动另一个调试会话,它将重新连接到同一服务器实例。
更新:rioV8为这个问题提供了一个有用的解决方案,包括使用vscode扩展生成一个随机环境变量,该变量可以用来代替端口号。解决方案就在这里。