广告

【博客大赛】【小梅哥FPGA】使用DS-5编写和调试SoC的Linux应用程序 ...

2018-5-4 11:36 394 0 分类: FPGA/CPLD 文集: FPGA深入学习

对于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 ProjectToolchain选择使用GCC 4.x[arm-linux-gnueabihf](DS-5 built in),如下图所示。

设置好后,点击 Next,在下图所示的配置界面选中DebugRelease两个编译目标。

然后点击 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即可执行编译。

编译完成后左侧工程向导里会生成两个文件夹,分别为BinariesDebugBinaries文件夹下存放的是编译生成的2进制可执行文件,Debug下包含的是生成结果,即通过编译生成了哪些文件,包括2进制可执行文件、makefile和一些编译过程中间文件。对我们来说,当前关心和需要的是2进制可执行文件,即hello

4、建立SSH远程连接

Windows 下用 Eclipse 调试应用程序,部署的目标板须能提供通过远程将可执行文件传输到目标板的功能,如 SSHFTP 等。这里以 SSH 为例进行介绍。

1. 创建远程连接

Eclipse 主界面,点击FileàNewàOther,在如下图所示的窗口选择建立Remote System Explorer,选择 Connection 后点击 Next

在下图所示的界面中,选择SSH Only,选择建立 SSH 连接。

出现如下图所示的 SSH 连接设置界面,在 Host name 栏填写目标板的IP地址,如192.168.90.199Connection 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
# gdbserver :10000 hello

注意 TCP 连接端口必须与 Eclipse 所设定的一致。实际操作截图如下图所示

点击 RunàDebug,开始 GDB 远程连接,出现如下图所示窗口,点击 Yes 即可。

最终进入如下图所示的调试界面。

点击 RunàStep Over,或者直接点击Step Over图标,单步运行程序,切换到远程系统视图,可以看到终端输出字符串hello world,如下图所示。

调试完毕,点击 RunàTerminate,或终止的快捷图标以停止调试。


广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
小梅哥 2018-05-27 22:03
【博客大赛】【小梅哥FPGA】闹心的gcc-linaro-arm-linux-gnueabihf编译器——Floating ...
  今天在继续编写示波器(just for fun)工程,该工程的波形显示和处理界面是在Linux系统上编写程序实现的。应用程序的编写是使用的17.1版本的Quartus软件配套的DS-5软...
小梅哥 2018-05-09 22:37
【博客大赛】【小梅哥FPGA】Cyclone V SoC 中为HPS添加SPI控制器并使用 ... ... ... ...
    关于如何在Cyclone V SoC FPGA系统中为HPS添加一个SPI外设,这个实验我已经进行了有相当长的一段时间了,但直到今日方才有所突破,顺利的完成了SPI控制器的...
小梅哥 2018-05-04 11:49
【博客大赛】【小梅哥FPGA】Altera SOC更改Qsys后重新生成hps_0.h文件 ...
在Altera SoC的开发中,Qsys系统和Linux应用程序之间通过一个名为hps_0.h的文件交互硬件信息,例如总线上添加了哪些外设,每个外设相对于HPS外部总线的偏移地址,每个外设所占的地址空...
小梅哥 2018-05-04 11:44
【博客大赛】【小梅哥FPGA】Quartus II中使用脚本转换sof到rbf文件 ... ...
        rbf文件作为Altera的FPGA一种常见的配置数据格式,常用于使用其他主控主动配置FPGA时使用,例如PS模式。在Cyclone V SoC...
小梅哥 2018-05-03 22:11
【博客大赛】使用MATLAB一键制作mif文件
        这里讲解实现一个16384(2^14)点的14位正弦波数据mif格式文件的生成,使用此文件,我们便可以在FPGA上基于直接数字合成(DDS)原理...
我要评论
0
0
广告
关闭 热点推荐上一条 /3 下一条