一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种工程源码动态自适应不同硬件资源的方法及系统与流程

2021-10-24 03:57:00 来源:中国专利 TAG:源码 硬件 方法 工程 资源


1.本发明涉及嵌入式技术领域,尤其涉及一种工程源码动态自适应不同硬件资源的方法及系统,以及一种在不同硬件资源中编译同一工程源码的方法。


背景技术:

2.bsp(board support package,板级支持包),是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好地运行于硬件主板。在嵌入式系统软件的组成中,就有bsp。
3.一个sdk(软件开发工具包)工程通常由三个部分组成:硬件定义(hardware definition),其定义了系统的硬件部分,文件名中包含hw;板级支持包(bsp),包含了设计中支持ip块所需要的驱动程序;应用程序(app),软件应用程序。
4.现有的软件架构中,不同产品使用的硬件资源不同,导致硬件平台不同、bsp不同以及系统资源不同,因此不同的产品需要建立不同的项目工程。当不同产品服务对象相同时,实现的功能共性较大,产品软件源代码除去部分特殊处理,其实现大致相同。然而,目前的同一份工程源码并不能适用于不同的硬件资源,利用不同硬件资源的产品在软件开发源码上不能保持一致。由此会带来以下问题:
5.1)不同产品之间的代码难以共用,不能第一时间将所有产品的软件代码同步,延缓了不同产品的同步升级;
6.2)不同产品之间移植代码,容易存在移植代码出现差错的现象,使得不同产品之间的代码不具有一致性;
7.3)一人对不同产品进行相同功能的维护开发或维护升级,增加了程序员的工作任务量。
8.因此,现有技术中的软件架构还有待调整,以使得软件工程师对单一产品源码开发能第一时间应用到其他产品,提高开发效率,也从根本解决不同产品之间源码移植出现差错的问题。


技术实现要素:

9.针对上述现有技术,本技术提供一种工程源码动态自适应不同硬件资源的方法,基于xilinx sdk,ubuntu系统(或windows系统),使同一份工程源码自适应不同的硬件资源以及不同的bsp,实现了不同硬件资源的产品在软件开发源码上保持一致,提高了软件开发效率及产品的维护效率。
10.为实现上述目的,本发明采用以下技术方案:
11.本技术第一个方面提供了一种工程源码动态自适应不同硬件资源的方法,优选为一种基于xilinx sdk的工程源码动态自适应不同硬件资源的方法。
12.本技术所述的一种工程源码动态自适应不同硬件资源的方法,包括:
13.修改xilinx sdk的配置,使其支持动态编译;
14.修改并添加makefile文件,包括:
15.添加makefile.mk文件,指定机具产品型号;
16.添加makefile.init文件,进行bsp的选择和动态编译宏、bsp头文件夹及linker script的赋值,编译前预处理;
17.添加makefile.defs,选择bsp库文件;
18.添加脚本文件,在程序编译前自动识别需要编译的工程源码;
19.更改工程源码,提取不同产品共同源码并兼容不同产品特有源码,通过预编译宏选择性编译不同产品特有源码。
20.优选地,所述修改xilinx sdk的配置,包括以下配置动态编译选项的步骤:
21.使bsp头文件夹支持动态指引;
22.使linker script支持动态指引;
23.添加预编译宏编译不同的bsp;
24.设置编译关键字。
25.优选地,所述添加脚本文件,在程序编译前自动识别需要编译的工程源码,包括:添加make.sh文件,该文件通过检测make.mk是否发生改变,决定是否重新编译工程源码。
26.优选地,所述方法基于ubuntu操作系统或windows操作系统。
27.本技术第二个方面提供了一种在不同硬件资源中编译同一工程源码的方法,包括:
28.读取makefile.mk文件,获取机具产品型号;
29.读取makefile.init文件,确定bsp编译宏、bsp头文件,以及linker script;执行脚本文件make.sh,该脚本文件通过检测makefile.mk文件是否发生改变,判断是否重新编译工程源码;
30.当确认所述makefile.mk文件发生改变时,清除编译过程中产生的编译文件后,再读取makefile.defs文件,添加对应的bsp库文件;否则,直接读取makefile.defs文件,添加对应的bsp库文件;
31.编译,生成与产品相对应的可执行文件。
32.本技术第三个方面提供了一种工程源码动态自适应不同硬件资源的系统,包括:
33.动态编译配置单元,用于修改xilinx sdk的配置,配置动态编译选项;makefile文件添加单元,用于修改并添加makefile文件,所述makefile文件包括:
34.makefile.mk文件,用于指定机具产品型号;
35.makefile.init文件,用于bsp的选择和动态编译宏、bsp头文件夹及linker script的赋值,编译前预处理;
36.makefile.defs,用于bsp库文件的选择;
37.自动识别单元,用于利用脚本文件,在程序编译前自动识别需要编译的工程源码;工程源码更改单元,用于提取不同产品共同源码并兼容不同产品特有源码,通过预编译宏选择性编译不同产品特有源码。
38.优选地,所述动态编译选项,包括:
39.bsp头文件夹,被配置为支持动态指引;
40.linker script,被配置为支持动态指引;
41.预编译宏,被配置为编译不同的bsp;
42.编译关键字,被配置为自定义名称。
43.优选地,所述系统基于ubuntu操作系统或windows操作系统。
44.本技术第四方面提供了一种计算机终端,包含存储器、处理器及存储在存储器并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面中任意一项所述的一种工程源码动态自适应不同硬件资源的方法。
45.本技术第五方面提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行可实现如第一方面中任意一项所述的一种工程源码动态自适应不同硬件资源的方法。
46.与现有技术相比,本发明的技术方案具有以下有益效果:
47.本技术提供一种工程源码动态自适应不同硬件资源的方法及系统,以及一种在不同硬件资源中编译同一工程源码的方法,基于xilinx sdk,ubuntu系统(或windows系统),使同一份工程源码自适应不同的硬件资源,自适应不同的bsp,实现了不同硬件资源的产品在软件开发源码上保持一致,使软件工程师对单一产品源码开发能第一时间应用到其他产品中,提高了软件开发的效率及产品的维护效率,也根本解决了不同产品之间源码移植容易出现差错的问题。
附图说明
48.构成本技术的一部分附图用来提供对本技术的进一步理解,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
49.图1是本发明优选实施例中使bsp头文件夹支持动态指引的配置示意图;
50.图2是本发明优选实施例中使linker script支持动态指引的配置示意图;
51.图3是本发明优选实施例中添加预编译宏编译不同bsp的配置示意图;
52.图4是本发明优选实施例中指定编译关键字的配置示意图;
53.图5是本发明选实施例中的工程源码的编译自适应流程图;
54.图6是本发明软件架构调整前的流程示意图;
55.图7是本发明软件架构调整后的流程示意图。
具体实施方式
56.为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
57.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序,应该理解这样使用的数据在适当情况下可以互换。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
58.本技术提供一种工程源码动态自适应不同硬件资源的方法,基于xilinxsdk,ubuntu系统,使同一份工程源码自适应不同的硬件资源,自适应不同的bsp,实现了不同硬件资源的产品在软件开发源码上保持一致,提高了软件开发的效率及产品的维护效率。
59.在本实施例中,基于xilinx sdk,ubuntu系统。
60.一种工程源码动态自适应不同硬件资源的方法,包括如下步骤:
61.步骤s1:修改sdk相关配置,配置动态编译选项,具体包括:
62.1、使bsp头文件夹支持动态指引,参阅图1;
63.2、使linker script支持动态指引,参阅图2;
64.3、添加预编译宏编译不同bsp,参阅图3;
65.4、指定编译关键字为adaptivebuild,其中,“adaptivebuild”为自定义名字。
66.步骤s2:修改并添加makefile相关文件。
67.1、添加makefile.mk文件,用于指定机具产品型号,例如:
68.#机型选择#
69.machine_ga3201:=1
70.machine_gatcr:=0
71.machine_gadcj_a5:=0
72.machine_ga4301_a3:=0
73.machine_ga2101:=0
74.machine_ga019a6:=0
75.2、添加makefile.init文件,该文件用于板级支持包的选择和动态编译宏、bsp头文件夹及linker script的赋值,编译前预处理。以下为文件内容的部分截取:
76.‑
include../makefile.mk
77.#don't edit this line
78.dsymbols:=defline
79.#板级支持包选择;机型宏定义选择
80.#select the defined symbols of machines;bsp select
81.ifneq($(machine_gatcr),1)
82.ifneq($(machine_gadcj_a5),1)
83.ifneq($(machine_ga4301_a3),1)
84.ifneq($(machine_ga2101),1)
85.ifneq($(machine_ga019a6),1)
86.ifeq($(machine_ga3201),1)
87.#板级支持包选择
88.#bsp select
89.ga0080_bsp_ddr1 g:=1
90.ga0076_bsp_ddr512m:=0
91.dsymbols =

dga3201=1
92.endif
93.endif
94.endif
95.endif
96.endif
97.endif
98.ifneq($(ga0076_bsp_ddr512m),1)
99.ifeq($(ga0080_bsp_ddr1 g),1)
100.dsymbols =

dga0080_bsp_ddr1 g=1
101.inc:=../ga_zynq_hw_platform/ga0080_bsp_ddr1 g/ps7_cortexa9_1/include
102.lscript:=../ga_zynq_sh/lscript_ga0080_bsp_ddr1 g.ld
103.endif
104.endif
105.adaptivebuild:pre

make
106.@make

j9 adapname.elf secondary

outputs
107.pre

make:
108.@sh../ga_zynq_sh/make.sh
109.@echo”110.3、添加makefile.defs,用于bsp库文件的选择。以下为文件内容部分截取:
111.ifneq($(ga0076_bsp_ddr512m),1)
112.ifeq($(ga0080_bsp_ddr1 g),1)
113.libs =
114.‑
l../../ga_zynq_hw_platform/ga0080_bsp_ddr1 g/ps7_cortexa9_1/lib
115.endif
116.endif
117.步骤s3:借助ubuntu系统,利用脚本文件,在程序编译前自动识别需要编译的工程源码。
118.具体地,添加make.sh文件,该文件通过检测make.mk是否发生改变,决定是否重新编译工程源码,例如:
119.#!/bin/bash
120.echo$pwd
121.getmd5sum=$(md5sum

c../makefile.mk.md5&&echo"ga_ok"||echo"ga_no")
122.checkmd5sum="ga_no"
123.if[[$getmd5sum=~$checkmd5sum]];then
[0124]
cores=`getconf_nprocessors_conf`
[0125]
make

j$cores clean
[0126]
md5sum../makefile.mk>../makefile.mk.md5
[0127]
fi
[0128]
步骤s4:更改工程源码,提取不同产品共同源码并兼容不同产品特有源码,通过预编译宏选择性编译不同产品特有源码。
[0129]
上述工程源码的编译自适应流程图请参阅图5。
[0130]
具体地,一种在不同硬件资源中编译同一工程源码的方法,包括:
[0131]
读取makefile.mk文件,获取机具产品型号,确定产品宏定义;
[0132]
读取makefile.init文件,确定bsp编译宏、bsp头文件,以及linker script;
[0133]
执行脚本文件make.sh;
[0134]
该脚本文件通过检测makefile.mk文件是否发生改变,判断是否重新编译工程源码;
[0135]
当确认所述makefile.mk文件发生改变时,清除编译过程中产生的编译文件后,再读取makefile.defs文件,添加对应的bsp库文件;
[0136]
否则,直接读取makefile.defs文件,添加对应的bsp库文件;
[0137]
执行正常的编译流程;
[0138]
生成与产品相对应的可执行文件。
[0139]
上述的编译方法中,makfile.mk文件不发生改变,则不需要清除编译文件。由于工程代码量较大,重新编译时间较长,因此通过识别makefile.mk文件是否发生改变来决定是否需要重新编译。当清除编译文件后,自动重新编译工程源码;不清除编译文件,仅编译修改源码涉及的部分。
[0140]
参阅图6和图7所示。其中,图6是软件架构调整前、现有技术中的不同产品分别独立地对应一个项目工程,每个项目工程独立地使用一份工程源码的流程示意图;图7是采用本技术的方法对软件架构调整后的流程示意图。
[0141]
对比软件架构调整前可知,采用本技术的方法,可以使同一份工程源码自适应不同的硬件资源,自适应不同的bsp,使利用不同硬件资源的产品在软件开发源码上保持一致,使软件工程师对单一产品源码开发能第一时间应用到其他产品,提高了软件开发的效率及产品的维护效率,也根本解决了不同产品之间源码移植容易出现差错的问题,同时,还可以使公司不同产品源码的统一管理更加便利。
[0142]
作为另一方面,本技术还提供了一种工程源码动态自适应不同硬件资源的系统,包括:
[0143]
动态编译配置单元,用于修改xilinx sdk的配置,配置动态编译选项,所述动态编译选项,包括:
[0144]
bsp头文件夹,被配置为支持动态指引;
[0145]
linker script,被配置为支持动态指引;
[0146]
预编译宏,被配置为编译不同的bsp;
[0147]
编译关键字,被配置为自定义名称;
[0148]
makefile文件添加单元,用于修改并添加makefile文件,所述makefile文件包括:
[0149]
makefile.mk文件,用于指定机具产品型号;
[0150]
makefile.init文件,用于bsp的选择和动态编译宏、bsp头文件夹及linker script的赋值,编译前预处理;
[0151]
makefile.defs,用于bsp库文件的选择;
[0152]
自动识别单元,用于利用脚本文件,在程序编译前自动识别需要编译的工程源码;工程源码更改单元,用于提取不同产品共同源码并兼容不同产品特有源码,通过预编译宏选择性编译不同产品特有源码。
[0153]
需要说明的是,本技术公开的方法和系统,也适用于windows操作系统。
[0154]
作为另一方面,本技术还提供了一种计算机终端,包含存储器、处理器及存储在存储器并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面中任意一项所述的一种工程源码动态自适应不同硬件资源的方法。
[0155]
作为又一方面,本技术还提供了一种计算机可读存储介质,计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行上述的一种工程源码动态自适应不同硬件资源的方法。
[0156]
以上对本发明的具体实施例进行了详细描述,但其只是作为范例,本发明并不限制于以上描述的具体实施例。对于本领域技术人员而言,任何对本发明进行的等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作的均等变换和修改,都应涵盖在本发明的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜