之前我们已经向大家介绍了全可编程的Zynq SoC平台应用开发所需的一系列“神器”,如Vivado、Xilinx SDK、PetaLinux等。那么这是否意味着在Zynq开发的过程中就会是“一马平川”呢?
让我们先来看看一个典型的Zynq SoC开发流程(如图1):开发者首先需要对软硬件进行分区,即确定系统哪些部分放入PL(可编程逻辑)中进行硬件加速,哪些部分在PS(处理器系统)中用软件实现;接下来,要完成软/硬件之间的连接,包括使用怎样的DataMover、PS与PL之间的接口如何配置等;之后要完成配套的软件驱动和应用程序的开发。
整个流程通常需要一个完整团队的通力合作,并不简单。而且,开发工作本身就是一个探索性的过程,很多情况下上述所有设计工作完成之后人们才发现,系统在吞吐量、延迟或面积等方面还需要进一步的优化,这就意味着“软硬件区分——硬件架构搭建——驱动和应用软件开发”整个流程要重新来过。如此经过多次迭代,才能获得一个令人满意的设计方案。而因此却可能造成开发周期的不可控,严重拖延Time-To-Market。这无疑是一个很大的挑战。
图1,传统的Zynq SoC开发流程
那么Zynq开发流程,有没有捷径可走呢?Xilinx给出的答案是:有!这个捷径就是SDSoC。
SDSoC是Xilinx推出的一个基于简便易用的Eclipse集成设计环境(IDE)的工具套件,它支持Zynq-7000全可编程SoC和Zynq UltraScale+ MPSoC,以及MicroBlaze处理器,可以为开发者提供类似嵌入式 C/C++/OpenCL 应用的开发体验。
如果感觉上面的描述比较抽象,那就让我们来看看使用SDSoC对Zynq开发流程的影响和改变(如图2)。应用SDSoC之后,工具可以自动搭建软硬件之间的通讯部分,包括DataMover、软件驱动程序和硬件连接接口,还可以将整个开发过程抽象到C/C++的应用层面,让开发者以C/C++为起点来进行算法开发。
在进行系统软件/硬件划分时,用户仅需在图形化界面中用鼠标单击指定那些需要进行硬件加速的模块即可。 而在将设计应用到Zynq系统上之后,如果发现性能不达标,可以使用SDSoC快速选择不同的用于硬件加速的功能块,探索不同的硬件/软件分区方案,或是通过pragma等手段来指导工具产生不同的系统配置等方法来进一步优化设计,实现快速的迭代优化。而整个开发过程都是在SDSoC这个统一的IDE中完成的,流程大为简化。有分析认为使用SDSoC进行Zynq系统开发,可以将整体开发时间从数周缩短至数日,甚至数个小时。
图2,采用SDSoC后Zynq SoC开发流程发生的改变
之所以能够达到这样的“境界”,与SDSoC的4个关键特性不无关系:
类似嵌入式开发的体验:SDSoC提供了一个大大简化的C / C++编程体验,用户可以在嵌入式开发人员所熟悉的基于Eclipse的IDE上完成整个Zynq SoC的开发。
系统级的特性描述:几分钟内快速完成性能估算与面积估算,自动监测高速缓存、存储器以及总线利用率,方便探索和实现最佳的总体系统架构。
全系统优化编译器:可将C/C++/OpenCL应用编译成全功能Zynq SoC与MPSoC系统,自动将软件代码放入可编程逻辑中加速,自动产生系统连接,以及相关的库以加速开发。
面向平台开发人员的专家级使用模型:为用户和第三方平台开发者提供了流程支持,通过提供平台描述文件的的手段,可以使他们自己设计的包含有Zynq SoC的开发板在SDSoC开发环境中使用。
图3,SDSoC开发环境的特点及流程
因此对于一个Zynq开发者来说,熟悉和掌握SDSoC也是一门必修课。在日前由安富利举办的MiniZed Speedway培训活动中,安富利的专家讲师就为学员设置了这样一个有关SDSoC的培训单元,帮助大家理解Xilinx SDSoC工具的概念,并通过实验环节,让学员为一个提供的平台创建一个设计,同时为安富利MiniZed创建一个客户SDSoC平台。通过学习和实际操作,学员可以直观地体验到如何利用SDSoC加速一个算法,这种经验对于开发者未来开发包含定制化算法的客户SDSoC平台并通过SDSoC加速,大有裨益。
全部0条评论
快来发表一下你的评论吧 !