对于Intel Cyclone V SoC FPGA用户,如果仅仅开发应用程序,也可以在 Windows 环境下完成。Intel针对其自家的SoC FPGA芯片提供了定制的DS-5软件,该软件为ARM公司针对其自家芯片研发,功能强大,尤其是其自带的编译器,编译出来的ARM可执行文件运行起来有更高的效率。软件不仅支持ARM裸机程序开发和调试,也支持Linux应用程序开发和调试。不过其自带的编译器和调试器是收费的,需要获得相应的License才能够使用。但同时该软件也集成了有Linaro公司针对Cyclone V SoC FPGA验证通过的专用GCC编译工具,名字叫gcc-linaro-arm-linux-gnueabihf,使用该工具编译和调试Linux应用程序无需获取License。
本节将介绍如何使用Intel版的DS-5软件,创建和编译,并调试一个最简单的Linux应用程序。
1、启动DS-5
从开始菜单栏中找到ARM DS-5 v5.27.1目录,选择Eclipse for DS-5 v5.27.1打开。
第一次启动会要求设置 workspace,如图下图所示,如果不希望每次都出现该提示框,可勾选界面中的复选框。
这里选择一个靠谱的位置作为工作空间路径,例如我们在编写资料时,选择的D:\fpga\ac620_soc\demo_debug\firmware。
点击 OK,进入 Eclipse 的欢迎界面,如图 10.105 所示
点击Welcome to DS-5页面的小叉即可关闭欢迎页面,进入软件的主界面。
如果我们没有为DS-5软件添加License,那么软件每次次启动会默认弹出下列对话框,由于仅仅开发Linux应用程序无需License,因此直接关闭该窗口即可。
说明:勾选上界面中的复选框之后,下次打开DS-5,软件会直接进入主界面,不会再弹出路径选择对话框,如果以后我们希望切换路径,可以在软件打开之后,依次点击菜单栏中的File—> Switch Workspace->other来重新打开这个窗口
2、创建C工程
点击主界面 FileàNewàC Project,如图 10.107 所示,选择创建 C 工程。
在弹出的工程创建界面,设置工程名称为“ hello”,工程类型为“ Empty Project”, Toolchain选择使用“GCC 4.x[arm-linux-gnueabihf](DS-5 built in)”,如下图所示。
设置好后,点击 Next,在下图所示的配置界面选中“ Debug”和“ Release”两个编译目标。
然后点击 Finish 按钮,完成工程创建,得到一个空工程,接下来将添加一个 C 程序文件到该工程,并编写 C 代码。点击 FileàNewàSource File,选择创建源文件,如下图所示。
在 Source File 界面,设置文件名为“main.c”,使用默认 C 模板,如下图所示:
点击 Finish,得到添加了main.c 的工程,如下图所示。
此时,main.c文件还是空的,在main.c 中添加如下代码并保存:
#include
int main (int argc, char *argv[])
{
printf("hello world\n");
return 0;
}
添加了 C 代码的工程如下图所示。
3、编译工程
代码编写完成后,就可以进行编译了,这里的编译实质是交叉编译,即编译得到能够在ARM平台上运行的Linux应用程序。编译的操作非常简单,按下键盘组合键Ctrl+B即可执行编译。
编译完成后左侧工程向导里会生成两个文件夹,分别为Binaries和Debug,Binaries文件夹下存放的是编译生成的2进制可执行文件,Debug下包含的是生成结果,即通过编译生成了哪些文件,包括2进制可执行文件、makefile和一些编译过程中间文件。对我们来说,当前关心和需要的是2进制可执行文件,即hello。
4、建立SSH远程连接在 Windows 下用 Eclipse 调试应用程序,部署的目标板须能提供通过远程将可执行文件传输到目标板的功能,如 SSH、 FTP 等。这里以 SSH 为例进行介绍。
1. 创建远程连接
在 Eclipse 主界面,点击FileàNewàOther,在如下图所示的窗口选择建立“ Remote System Explorer”,选择 Connection 后点击 Next。
在下图所示的界面中,选择“ SSH Only”,选择建立 SSH 连接。
出现如下图所示的 SSH 连接设置界面,在 Host name 栏填写目标板的IP地址,如192.168.90.199, Connection name 栏会自动填写为目标板 IP 地址,也可以修改,点击 Finish完成设置。
建立完成,依然是 C/C++程序界面视图。点击 WindowàPerspectiveàOpen PerspectiveàOther,如下图所示。
在如下图所示的界面中选择“ Remote System Explorer”,然后点击 OK。
Eclipse将会切换到远程系统视图,如下图所示,可以看到连接名称为“192.168.90.199”的远程系统。
右键单击连接名称,选择 Connect,出现 SSH 连接登录设置界面,在其中填写登录名和密码,如下图所示。为了方便以后连接,可选择保存密码。
选择保存密码可能会出现如图 10.122 所示的安全提示,点击 No 不填写额外信息。
如果 Eclipse 是第一次进行 SSH 连接,可能会出现如下图所示的警告,点击 Yes并进行操作即可。
SSH 连接成功后的界面如下图所示,可以看到连接上出现了绿色的标记,表明连接已经建立。
右键单击连接的“ Ssh Terminals”,选择“ Launch Terminal”,如下图所示,选择打开一个远程终端。
在 Eclipse 界面右下方,将出现一个远程终端,在其中可以输入 Linux 命令进行操作,如下图所示。
2. 复制文件到目标板点击右上角监视窗口的 C/C++标签,切换到 C/C++视图,如下图所示。右键点击 hello 工程 Binaries下的“ hello – [arm/le]”,选择 Copy,复制 hello 文件。
在点击监视窗口的“ Remote System Explorer”标签,切换到远程系统视图,点击展开“ /root”,找到 opt 文件夹,在右键菜单选择 Paste,将已复制的 hello 文件粘贴到目标系统的“ /opt”目录下。
然后在 Terminal 窗口,进入“ /opt”目录,用 chmod 命令为 hello 文件增加可执行权限,操作完成的结果如下图所示。
3. 运行应用程序
通过上述操作,我们已经完成了一个最简单的Linux应用程序的创建、编译和安装到目标板上,接下来就可以在目标板上执行了,执行的方法非常简单,只需要接着在 Terminal 窗口,输入下述命令即可执行该应用程序。
./hello |
操作完成的结果如下图所示。
注意,该命令需要在可执行文件所在目录输入才能执行。否则请先使用cd命令将路径切换到opt目录下。
5远程调试1. GDB 设置打开 RunàDebug Configrations,在调试配置界面,双击“ C/C++ Application”栏,将会生成“ hello Debug”调试目标,如下图所示。
点击 Debugger 选项卡,设置 Debugger 为gdbserver,并在GDB Debugger中浏览到交叉编译器目录下的arm-linux-gnueabihf-gdb.exe,并设置 GDB command set 为 Standard,如下图所示。
特别说明:DS-5软件的安装包下默认提供了一系列arm-linux-gnueabihf工具,包括gcc编译工具,但是不知出于什么目的,偏偏将arm-linux-gnueabihf-gdb.exe这个工具给去除了,导致软件默认安装完成后,D:\intelFPGA\17.1\embedded\ds-5\sw\gcc\bin\目录下是没有这个程序的,为了实现对应用程序的调试,我们选择手动设置调试工具。具体方法为将我们提供的arm-linux-gnueabihf-gdb.exe文件拷贝到D:\intelFPGA\17.1\embedded\ds-5\sw\gcc\bin\目录下,然后就可以使用了。
点击 Debugger Options 的 Connection 选项卡,设置连接类型为 TCP,在 Host name 栏填写目标板的 IP 地址,在 Port number 栏设置 TCP 连接端口号,如下图所示:
设置完毕后,点击 Apply 按钮,使设置生效,然后点击 Close 关闭窗口
2. GDB 连接和调试在 Eclipse 主界面,点击监视窗口的 Remote System Explorer,切换到远程系统视图,在终端输入下列命令启动 gdbserver:
# cd /opt |
注意 TCP 连接端口必须与 Eclipse 所设定的一致。实际操作截图如下图所示
点击 RunàDebug,开始 GDB 远程连接,出现如下图所示窗口,点击 Yes 即可。
最终进入如下图所示的调试界面。
点击 RunàStep Over,或者直接点击Step Over图标,单步运行程序,切换到远程系统视图,可以看到终端输出字符串“ hello world”,如下图所示。
调试完毕,点击 RunàTerminate,或终止的快捷图标以停止调试。
三更月 2022-9-27 16:55