基于Xilinx的软件工程的创建

FPGA/ASIC技术

190人已加入

描述

Xilinx 提供了完整的软件开发环境。在Xilinx SDK中,每一个软件工程,会包含一个应用程序工程,和一个BSP工程。应用程序工程,Xlinx建议只包含与应用相关的代码。BSP工程,还有硬件相关的代码,以及一些公共的库,比如TCP/IP, 操作系统等。新建工程时,缺省会创建一个应用程序工程和一个BSP工程。当然,客户可以改变缺省设置,使用已有的BSP工程。创建工程后,也可以更改应用程序工程对应的BSP工程。

下图中,工程test1本来有自己的bsp工程test1_bsp。更改它的BSP工程为test2_bsp后,删除工程test1_bsp, 仍然可以编译成功。

Xilinx

BSP工程,被设计成用来管理公共代码,可以被多个应用程序工程共享。但是还是有部分客户,特别是原来使用单片机的客户,原来的工具把所有代码放在一个工程里,所以现在仍然更喜欢一个工程里包含所有代码。从某种角度来看,这样的代码更简单,和Xilinx的工具耦合更低,更适合版本管理。

这种要求,虽然很少客户要求,在Xilinx SDK中也可以做到。选中一个软件工程后,在右键菜单中选择“Properties”,再在设置窗口中选择”C/C++ Build” -> “Setting” -> “ARM GCC Compiler” -> “Inferred Options” -> “Software Platform” -> “Software Platform Include Path”, 然后删除BSP工程提供的包含路径(它指向头文件目录)。下面图片中,工程名为single_app,则BSP工程对应的头文件目录是“../../single_app_bsp/ps7_cortexa9_0/include”。可以参考下列图片。

Xilinx

删除前的图片:

Xilinx

 

删除后的图片:

Xilinx

另外还要删除对BSP工程提供的库的引用。这需要在设置窗口的”C/C++ Build” -> “Setting” -> “ARM GCC Linker” -> “Inferred Options” -> “Software Platform” -> “Software Platform Inferred Flags”删除其中的”-lxil”。还要在设置窗口的”C/C++ Build” -> “Setting” -> “ARM GCC Linker” -> “Inferred Options” -> “Software Platform” -> “Software Platform Library Path”删除其中的目录。对于工程”single_app”, 目录是”../../single_app_bsp/ps7_cortexa9_0/lib”。

删除前的图片:

Xilinx

删除后的图片:

Xilinx

删除对BSP工程的引用后,会失去所有头文件、驱动程序等。客户需要创建这些文件。也有一种简便办法,就是拷贝原来工程中的头文件,比如xparameters.h,xparameters_ps.h, 作为硬件信息的定义头文件。客户可以以此为基础,再在上面修改。对于一个基本的嵌入式软件,需要初始化CPU、cache、MMU、timer、串口等,它需要的文件有

Xilinx

这些文件,可以直接在BSP工程的“\ps7_cortexa9_0\libsrc\standalone_v3_12_a\src”目录下,及“\ps7_cortexa9_0\libsrc\”下的各个驱动目录下找到。

这样一个最小的工程,如果去掉可选的ps7_inti.c和xil_assert.c, 大小是25732字节。一个Xilinx SDK创建的缺省hello工程,大小是22812字节。这说明Xilinx SDK缺省生成的工程是最小的工程,Xilinx SDK并没有增加额外的大小。

这样的工程,src目录下有源代码,Debug/Release目录下有Makefile。进入Debug或者Release目录,执行”make clean”则可以清除工程,执行”make” 则可以编译工程。借助这种命令行编译功能,其它工具,如ultra edit和source insight, 可以集成工程的编译功能。这样也可以方便的把工程打包,传到别的机器做编译。

不使用BSP工程时,Xilinx提供的设备驱动不会自动包含在客户的工程中。但是客户也可以很方便的使用Xilinx提供的设备驱动,只要拷贝驱动代码到src目录,提供相关的硬件信息就可以了。比如对于QSPI设备,从安装目录,或者已存在的BSP工程目录下拷贝对应的驱动代码就可以。在2013.4中,安装目录下的QSPI设备驱动程序位置

在“\SDK\2013.4\sw\XilinxProcessorIPLib\drivers\qspips_v2_03_a\src”。驱动程序的”_g.c”中,需要定义设备的基地址等,这些信息一般定义在xparameters.h中。如果用户没有使用xparameters.h文件,则需要自己提供这些信息。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分