如何xilinx bsp基础上修改bsp和驱动的区别

UPGRADE YOUR BROWSER
We have detected your current browser version is not the latest one.
uses the latest web technologies to bring you the best online experience possible. Please upgrade to
supported browser:,
. Thank you!
自动建议可通过在您键入时建议可能的匹配,而快速缩小您的搜索结果范围。
Xilinx 客户全定制工程创建办法
Xilinx Employee
发帖数: 25
Xilinx 客户全定制工程创建办法
Xilinx 提供了完整的软件开发环境。在Xilinx SDK中,每一个软件工程,会包含一个应用程序工程,和一个BSP工程。应用程序工程,Xlinx建议只包含与应用相关的代码。BSP工程,还有硬件相关的代码,以及一些公共的库,比如TCP/IP, 操作系统等。新建工程时,缺省会创建一个应用程序工程和一个BSP工程。当然,客户可以改变缺省设置,使用已有的BSP工程。创建工程后,也可以更改应用程序工程对应的BSP工程。
下图中,工程test1本来有自己的bsp工程test1_bsp。更改它的BSP工程为test2_bsp后,删除工程test1_bsp, 仍然可以编译成功。
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”。&
另外还要删除对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”。&
删除对BSP工程的引用后,会失去所有头文件、驱动程序等。客户需要创建这些文件。也有一种简便办法,就是拷贝原来工程中的头文件,比如xparameters.h,xparameters_ps.h, 作为硬件信息的定义头文件。客户可以以此为基础,再在上面修改。对于一个基本的嵌入式软件,需要初始化CPU、cache、MMU、timer、串口等,它需要的文件有
asm_vectors.S
xil_types.h
xil-crt0.S
cpu_init.S
xil_assert.h
xparameters.h
helloworld.c
xil_assert.h
xparameters_ps.h
lscript.ld
xil_cache.c
xpseudo_asm.h
xil_cache.h
xpseudo_asm_gcc.h
platform.c
xil_cache_l.h
xreg_cortexa9.h
platform.h
xil_errata.h
platform_config.h
xil_exception.c
xil_exception.h
ps7_init.c
xuartps_hw.c
ps7_init.h
xuartps_hw.h
translation_table.s
xil_printf.h
这些文件,可以直接在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文件,则需要自己提供这些信息。
条消息(共 1 条)
(10,290 查看)利用Xilinx Platform Studio工具套件,快速、便捷地生成 BSP
> 利用Xilinx Platform Studio工具套件,快速、便捷地生成 BSP
利用Xilinx Platform Studio工具套件,快速、便捷地生成 BSP
具有嵌入式处理器的&平台&&为您提供前所未有的灵活性、集成度和高性能。目前,在单个可编程逻辑设备中开发极其复杂且高度定制化的已成为可能。&随着芯片性能的不断增加,如何使设计方法始终高效、多产,成为人们面临的主要挑战。开发的关键活动之一是开发板支持包&(BSP)。利用&BSP,可以使嵌入式软件应用程序成功地初始化,并与连接到处理器的硬件资源进行通信。典型的&BSP&组件包括引导代码、设备驱动程序代码和初始化代码。&创建&BSP&是一个冗长而繁复的过程,并且在微处理器复合体(处理器和相关的外设)每次有所变更时都得再次进行。对&&而言,迅速的设计循环加上平台的灵活性,会使得管理&BSP&的任务更为艰巨(图&1)。这一情况迫使人们寻找更有效地管理&BSP&的方法。
图 1 – 平台
灵活性要求软件 BSP 生成过程具有高效率&本文将描述&Xilinx&提供的一种创新解决方案,它可以简化&RTOS&BSP&的创建和管理。我们选择了&WindRiver&VxWorks&流程来阐明这一概念,但其蕴含的技术是通用的,同样适用于支持&Xilinx&&处理器的所有其他操作系统解决方案。Xilinx&设计流程和软件&BSP&生成&Xilinx&处理器的设计包含硬件平台装配流程和嵌入式软件开发流程。这些流程都通过&Xilinx&Platform&Studio&(XPS)&工具加以管理,该工具属于&Xilinx&嵌入式开发套件&(EDK)&的一部分。&设计通常始于在&XPS&中装配与配置处理器及与其相连接的配件。定义好硬件平台后,就可以配置系统的软件参数了。Platform&Studio&的一个主要特点是,它可以根据您对处理器、外设和嵌入式操作系统的选择和配置来定制&BSP。系统通过硬件设计的叠代改变而发展,同时,BSP&随着平台而发展。&自动生成的&BSP&可赋予设计者以下能力: •&&&&自动创建与硬件设计完全匹配的&BSP •&&&&使用预认证的组件消除&BSP&设计错误 •&&&&立即启动应用软件开发,增加设计者的产量
创建用于&WindRiver&VxWorks&的&BSP&Platform&Studio&可生成用于&Xilinx&Virtex™-II&Pro&和&Virtex-4&FPGA&中的&&#&处理器及其外设的定制&Tornado&2.0.x&(VxWorks&5.4)&或&Tornado&2.2.x&(VxWorks&5.5)&BSP。生成的&BSP&包含系统必需的所有支持软件,包括:引导代码、设备驱动程序和&VxWorks&初始化。&在&Platform&Studio&定义完具有&&405&处理器的硬件系统后,只需遵循以下三个步骤即可生成用于&VxWorks&的&BSP:&1.&使用软件设置对话框(见图&2)选择要为系统使用的操作系统。Platform&Studio&用户可选择&vxworks5_4&或&vxworks5_5&作为其目标操作系统。&
图 2 – 设置选择嵌入式操作系统2.&选择了操作系统后,可转到资料库/操作系统参数标签(如图&3&所示),根据定制硬件调整&Tornado&BSP。您可以选择系统中的任意&UART&器件作为标准&I/O&器件(标准输入和标准输出)。这将使该设备被用作&VxWorks&控制台器件。
图 3 – 配置具体操作系统的参数您还可以选择将哪些外设作为连接外设,将哪些器件紧密集成到&VxWorks&操作系统。例如,Xilinx&10/100&以太网&MAC&可以集成到&VxWorks&增强型网络驱动(Enhanced Network&Driver&即&END)接口。或者,不必将以太网器件连接到&END&接口,而从&VxWorks&应用程序直接访问它。&3.&选择“工具&&&生成资料库”和&BSP&菜单选项,生成&Tornado&BSP。生成的&BSP&与传统的&Tornado&BSP&相似,位于&ppc405_0/bsp_ppc405_0&下的&Platform&Studio&项目目录中(见图&4)。
图 4 – 生成的 BSP 目录结构注:ppc405_0&为硬件设计中&&405&处理器的实例名。Platform&Studio&用户可指定其他实例名,此时,BSP&的子目录名称会匹配处理器实例名。 通过&Platform&Studio&生成的&Tornado&BSP&具有一个&Makefile&文件,如果希望使用&Diab&编译器而不是&Gnu&编译器,可在命令行修改此文件。&Tornado&BSP&完全独立,并可以传输到其他目录位置,如&BSP&的标准&Tornado&安装目录:target/config。 定制&BSP&详细信息&由&XPS&生成的用于&VxWorks&的&BSP&与大多数其他&Tornado&BSP&相似,只是&Xilinx&设备驱动程序代码的位置有所不同。与&Tornado&相关的现成的设备驱动程序代码通常位于&Tornado&分布目录的&target/src/drv&目录中,而由&Platform&Studio&自动生成的&BSP&的设备驱动器代码位于&BSP&目录本身中。
&图&5&–&Tornado&2.x&项目:VxWorks&标签&基于&FPGA&的嵌入系统之动态特性是造成此微小差别的原因。因为基于&FPGA&的嵌入系统可以用新的或更改后的&IP&重新编程,设备驱动程序可以改变,因此就需要对设备驱动程序源文件进行更为动态的放置。表&4&为自动生成的&BSP&的目录树。Xilinx&设备驱动程序放置在&BSP&子目录&ppc405_0_drv_csp/xsrc&中。&Xilinx&设备驱动程序在&C&盘中执行并分布在数个源文件中,这点不同于传统的、通常由单个&C&header&和执行文件组成的&VxWorks&驱动程序。此外,对于设备驱动程序,既有独立于操作系统的执行,又有可选的依赖于操作系统的执行。&驱动程序的操作系统独立部分应同任何操作系统或处理器一起使用。它提供了一种应用程序接口&(API),能提取基础硬件的功能。驱动程序的操作系统附属部分对驱动程序进行调整,使其得以在&VxWorks&之类的操作系统下使用。例子有串行端口使用的&Serial&IO&驱动程序和以太网控制器使用的&END&驱动程序。只有能被紧密集成到标准操作系统接口的驱动程序才要求操作系统附属驱动程序。&Xilinx&驱动程序源文件加入&VxWorks&映像构件的方式同其他&BSP&文件加入的方式相同。针对每个驱动程序,在&BSP&目录中都有一个名为&ppc405_0_drv_&driver_version&.c&的文件。此文件包括针对给定设备的驱动程序源文件&(*.c),并自动由&BSP&makefile&编译。&该过程与&VxWorks&sysLib.c&针对&Wind&River-supplied&驱动程序纳入源文件的过程相似。Xilinx&驱动程序文件不像其余驱动程序一样单纯纳入&sysLib.c&的原因,在于命名空间的冲突和可维护性问题。如果所有的&Xilinx&驱动程序文件都是单个编译单元的一部分,那么静态功能和数据就不再处于保密状态了。这会对设备驱动程序产生限制,也会抵消其操作系统独立性。
&表&6&–&Tornado&2.x&项目:文件标签 与&Tornado&IDE&集成&自动生成的&BSP&被集成到&Tornado&IDE(项目设备)。BSP&可从命令行使用&Tornado&make&工具编译,或从&Tornado&Project&编译。生成&BSP&后,只需在命令行键入&make&vxWorks&来编译可启动的&RAM&映像。这是假定此前已设置了&Tornado&环境(此设置可以在&Windows&操作平台上在命令行使用&host/x86-win32/bin/torVars.bat&来完成)。如果您使用的是&Tornado&Project&设备,可以在新生成的&BSP&的基础上创建一个项目,然后使用通过&IDE&提供的构件环境编译此&BSP。&Tornado&2.2.x&不仅支持&gnu&编译器,还支持&diab&编译器。Platform&Studio&创建的&Tornado&BSP&有一个&makefile,如果您想使用&diab&编译器而不是&gnu&编译器,则可以在命令行修改此&makefile。寻找称为“工具”的生成变量,将值设置到“diab”而不是“gnu”。如果使用&Tornado&Project&工具,项目最初创建时,可选择所需的编译器。&文件&50ppc405_0.cdf&位于&BSP&目录下,并在创建&BSP&的过程中加以更改。此文件将设备驱动程序融入了&Tornado&IDE&菜单系统。驱动程序在“硬件&&&外围设备”子文件夹处与&BSP&结合在一起。在其下面是单独的设备驱动程序文件夹。图&5&显示一个带有&Xilinx&设备驱动程序的菜单。&Tornado&Project&Facility&的“文件”标签也会显示用来将&Xilinx&设备驱动程序与&Tornado&构建过程结合在一起的文件数量。这些文件由&Platform&Studio&自动创建,您只需要知道其存在就行了。图&6&显示一个驱动程序构建文件的示例。&一些常用设备与操作系统紧密结合,而其他设备可通过直接使用设备驱动程序从应用程序上访问。与&VxWorks&紧密结合的设备驱动程序包括: •&&&&10/100&以太网&MAC •&&&&10/100&以太网&Lite&MAC •&&&&1&Gigabit&以太网&MAC •&&&&&UART •&&&&UART&Lite •&&&&中断控制器 •&&&&System&ACE™&技术 •&&&&PCIe&所有其他设备及相关的设备驱动程序并未紧密集成到&VxWorks&接口,而只是与其松散集成。对这些设备的访问可通过从用户应用程序直接访问相关设备驱动程序来进行。 结束语&随着基于嵌入式处理器的&FPGA&日益受人喜爱并得到广泛应用,能将硬件和软件流程有效组织在一起的工具解决方案应运而生,对帮助设计者工作效率跟上芯片的进展起到了关键作用。&Xilinx&用户一直非常认可&Platform&Studio&及其与&VxWorks&5.4&and&5.5.&的集成。Xilinx&将对&Wind&River&流程的开发予以不懈支持,此流程不久就会包括对&VxWorks&6.0&和&&Workbench&IDE&的支持。 Microprocessor&Library&Definition&(MLD)
图 7 – MLD 流程结构启用动态和定制&BSP&生成的技术是以称为&Microprocessor&Library&Definition&(MLD)&的&Xilinx&专有格式为基础的。该格式向第三方供应商提供一个应用于&Xilinx&Platform&Studio&的插入接口,以启动定制库和针对特定操作系统的&BSP&生成(查看图&7)。MLD&接口由第三方公司为特定的流程编写的典型程序。它启用了下列附加功能:&•&&&&启用了定制设计规则检查功能&•&&&&提供了为目标操作系统环境定制设备驱动程序的功能&•&&&&提供了在针对操作系统工具链的格式和文件夹结构中定制创建&BSP&的功能&•&&&&提供了为所使用的硬件系统定制一个&OS/kernel&的功能&MLD&接口是一个已发布且得到公认的基于&ASCII&的标准。每个实时操作系统&(RTOS)&流程均具备各自独特的&MLD&文件集。一个&MLD&文件集包括以下两个文件:&•&&&&一个数据定义&(.mld)&文件。该文件通过&Platform&Studio&设置的一组参数来定义资料库或操作系统。这些参数值保存在&Platform&Studio&内部数据库中,在输出数据期间供脚本文件使用。&•&&&&一个&.tcl&脚本文件。此文件通过&XPS&调用来创建定制&BSP。该文件包含一组可以访问整个数据库的程序,因此可以按照流程要求撰写定制输出格式。
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一Modifying a BSP in Xilinx SDK | FPGA Developer如何正确开发 linux bsp? - 知乎72被浏览5569分享邀请回答134 条评论分享收藏感谢收起}

我要回帖

更多关于 xilinx bsp 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信