集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2049|回复: 9

XPS和SDK的数据交互

[复制链接]
小舍YZ 发表于 2017-7-11 11:16:33 | 显示全部楼层 |阅读模式
XPS和SDK的数据交互

在EDK解决方案中,XPS可以直接将设计转移到SDK,但没有提供XPS直接读入已在SDK中调试成功的应用软件工程,可以说是EDK整体解决方案的一个遗憾。但是,作为一个嵌入式解决方案,必须将软、硬件程序最终生成一个二进制比特文件下载到FPGA/ Flash中,因此,下面介绍如何实现XPS和SDK的数据交互。

1)由XPS进入SDK

(1)手工交互

手动交互就是关闭XPS工程,然后打开SDK,通过导入向导将XPS设计的.xmp工程文件导入。

(2)自动交互

EDK提供了XPS到SDK的自动转换,因此该过程非常简单。在XPS中完成硬件开发后,直接点击“Software”菜单下的“Launch Platform Studio SDK”命令,直接进入SDK。

2)由SDK返回XPS

EDK没有提供自动将SDK工程读入XPS的功能,但SDK工具提供了应用软件的elf文件,因此XPS生成下载目标板文件只需要从elf文件中提取数据,不需要应用软件工程的其他支持。直接在XPS的工程名上点击右键,在出现的菜单中选择“Set Compiler Options”,打开编译属性衍生子窗口,修改生成的elf文件路径和名称,指向SDK生成的应用软件elf文件,单击“OK”保存设置后即可。这样XPS在生成比特文件时,会自动加入SDK生成的elf文件。需要注意的是,利用这种方法完成的交互,由于没有软件部分的源代码,因此所有的软件代码调试还需要在SDK中完成。

更多的时候,为了建立并运行仿真,用户需要回到XPS中。如前面介绍,利用SDK完成了软件开发工作后,需要在XPS中定义一些有关工程管理的问题:
1.        必须指定用于BRAM初始化的应用程序。应用标签提供了这一功能;
2.        为了和“Test_App_Peripheral”协调工作,XPS需要发现可能的工程管理冲突。由于这时我们还在利用SDK来管理这个软件工程,因此XPS将在工程例子中找到一个冲突;
这里可能出现一个问题:假设有两个用户操作这个XPS工程,一个使用XPS,而另一个使用SDK。那么,最后保存这个工程的用户将覆盖另一个用户的工作。为了避免这一情况的发生,XPS会指出可能的冲突并创建一个可以工作的稳定文件环境。由于更倾向于选择SDK作为软件工程管理者,因此XPS只需知道ELF文件的位置,这样就可以将其和之后的FPGA比特流进行合并。注意在XPS应用标签中还有其它的工程,在进行下一步的步骤前,用户需要确认在工程中是否存在下列部分:
3.        默认的ppc405_0_bootloop/Microblaze_0_bootloop工程。Bootloop工程启动处理器,并为其提供所需要的jump-to-address命令来寻找外部存储器。注意此bootloop工程不能用来初始化BRAM(可利用工程:Test_App_Peripheral来执行这一任务)。
4.        由BSB向导创建的工程,包括:TestApp_Memory和TestApp_Peripheral工程。在前面介绍的BSB向导中,我们选择了测试存储器和其它的外围设备。在下面的步骤中,我们将选择并配置有关软件,这样就可以对其进行仿真并下载到FPGA或board存储器器件中。
5.        在SDK中为用户定制的IP中增加测试软件
在SDK环境中,可以给先前创建的用户定制外设(test_ip)增加一些测试软件。整个过程包括:
o        查找此核的软件测试文件;
o        用户将这些测试文件导入到应用工程TestApp_Peripheral中;  
o         编辑“test_ip_selftest.c”文件,为“test_ip”核指明基地址(因为test_ip_selftest程序需要一个基地址指针)。用户可以参考xparameters.h文件获取这一信息;
o        重新创建工程(可以设置SDK来自动完成这一过程)。
下面通过实例来介绍如何为定制IP添加测试软件。
例9-14 本例实现在定制IP中增加测试软件的方法。

1) 需要导入软件测试文件。首先,点击SDK主窗口处的“C/C++ Projects”标签;其次,在“C/C++ Projects”面板中的“TestApp_Peripheral”工程处点击右键,选择“Import”;第三,在导入对话框中,选择“File system”。浏览顶层工程下的驱动器目录,找到TestApp_Peripheral/ src目录,最后选择所有的源文件,点击“Finish”。如图9-132所示。

图9-132 源文件选择窗口

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 小舍YZ 发表于 2017-7-11 11:17:30 | 显示全部楼层
2) 编辑“test_app_peripheral.c”文件。在“C/C++ Projects”标签中,找到“test_ip_ selftest.c”文件,双击打开此文件;“test_ip_selftest.c”文件包括了“TEST_IP_SelfTest”程序的功能定义,如图9-133所示。

图9-133 test_ip_selftest.c文件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 小舍YZ 发表于 2017-7-11 11:17:49 | 显示全部楼层
其次,从图中可以看到,“TEST_IP_SelfTest”程序需要一个基地址指针。用户可以按照如下步骤在“xparameters.h”中找到“TEST_IP”的基地址值:在“C/C++ Projects”标签中,打开“ppc405_0_sw_platform/ppc405_0/include”目录以便显示“xparameters.h”文件,双击“xparameters.h”,在编辑窗口打开此文件。查找“TEST_IP_0_BASEADDR”。这样,设计人员就得到了基地址定义信息,在为“TestApp_Peripheral.c”文件增加功能时需要利用此信息。

最后,在“TestApp_Peripheral.c”文件中,在最后的打印语句前插入代码如下:
TEST_IP_SelfTest(XPAR_TEST_IP_0_BASEADDR);

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 小舍YZ 发表于 2017-7-11 11:18:35 | 显示全部楼层
3) 重建工程。如果选择了“Build automatically”选项(在Project工具栏中),在保存“TestApp_Peripheral.c”文件时,工程就自动得到更新。如果没有选定此选项,那么选择“Project > Build Project”。完成创建后,可以看到在“TestApp_Peripheral”工程下创建了Debug目录。工程的ELF文件即位于这个目录中,在之后的测试驱动时我们将使用该ELF文件。此时用户完成了SDK中所需要的所有工作。

4) 利用“C/C++ Build”的配置设定,用户可以控制所建立的工程类型。用户可以在SDK中选择“Help > Help Contents”,利用其中的“C/C++ Development User Guide > Reference > C/C++ Project Properties > Managed Make Projects > C/C++ Build > Build Settings”得到更多的帮助信息。

5)返回XPS完成最终测试。首先,在XPS中,选择“Applications”标签;其次,在“Project:TestApp_Memory”上点右键,去掉初始化BRAMs的选项(我们将利用“TestApp_Peripheral”来进行这一工作)。最后利用XPS来管理数据,在TestApp_Peripheral工程中将利用这些数据来初始化BRAMs。在SDK中创建了TestApp_Peripheral工程后,XPS将认为用户正利用SDK中管理此工程。为了操作TestApp_Peripheral工程,XPS需要用户将其改变为ELF-only的工程。双击“Project:TestApp_Peripheral”打开如图9-134所示的对话框。

图9-134 XPS ELF文件管理选项

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 小舍YZ 发表于 2017-7-11 11:19:16 | 显示全部楼层
6)选择“Convert XPS application into an ELF-only application”。点击OK后,XPS会继续管理初始化BRAM所用到的数据,但将软件工程管理功能转移给SDK。在“Project: TestApp_Peripheral”工程上右键菜单中,选其为初始化BRAMs的工程。此时用户可以看到在“Mark to Initialize BRAMs”边上有打勾的标记,如图9-135所示。

图9-135 选择初始化BRAM的工程

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 小舍YZ 发表于 2017-7-11 11:20:02 | 显示全部楼层
7)在应用标签中,选择TestApp_Peripheral工程右键菜单中的Executable选项。在“\SDK_projects\TestApp_Peripheral\Debug”目录中查找SDK生成的ELF文件(在前面的例子中,SDK工具已将此ELF文件放在Debug目录中)。

现在软件和硬件部分都已创建,接下去的工作就是对它们进行测试。可以通过下载到实际的硬件电路板完成。由于硬件电路板的多样化,限于篇幅,这里就不再介绍。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
晓灰灰 发表于 2017-7-12 09:24:00 | 显示全部楼层
DK没有提供自动将SDK工程读入XPS的功能
 楼主| 小舍YZ 发表于 2017-7-12 17:18:44 | 显示全部楼层
晓灰灰 发表于 2017-7-12 09:24
DK没有提供自动将SDK工程读入XPS的功能

                                                                                          
zxopenljx 发表于 2023-2-15 11:02:51 | 显示全部楼层
XPS和SDK的数据交互
hellokity 发表于 2023-2-19 11:23:35 | 显示全部楼层
XPS和SDK的数据交互
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-28 09:44 , Processed in 0.064301 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表