CN103744684B - 一种异构软硬件协同开发的方法及系统 - Google Patents

一种异构软硬件协同开发的方法及系统 Download PDF

Info

Publication number
CN103744684B
CN103744684B CN201410036245.XA CN201410036245A CN103744684B CN 103744684 B CN103744684 B CN 103744684B CN 201410036245 A CN201410036245 A CN 201410036245A CN 103744684 B CN103744684 B CN 103744684B
Authority
CN
China
Prior art keywords
processor
configuration file
compiling
file
applicable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410036245.XA
Other languages
English (en)
Other versions
CN103744684A (zh
Inventor
倪素萍
杜学亮
林啸
谭吉来
卜中华
郭若杉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Silang Technology Co ltd
Original Assignee
Institute of Automation of Chinese Academy of Science
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Automation of Chinese Academy of Science filed Critical Institute of Automation of Chinese Academy of Science
Priority to CN201410036245.XA priority Critical patent/CN103744684B/zh
Publication of CN103744684A publication Critical patent/CN103744684A/zh
Application granted granted Critical
Publication of CN103744684B publication Critical patent/CN103744684B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种异构软硬件协同开发的方法及系统,方法包括:声明和定义能够被异构从处理器执行的函数;根据不同开发阶段目标码所执行的硬件平台定义不同的配置文件和编译文件,其中配置文件中定义适用于相应硬件平台的编译工具链变量的具体表示,所述编译文件用于定义当前适用的配置文件以及编译工具链变量;根据所述配置文件和编译文件编译源程序,进而获得目标码,并在相应的硬件平台上运行所述目标码。本发明针对SoC的硬件开发流程,优化了应用开发流程,可以在很小的代价下开发应用软件,节约了高昂的资金投入和人员投入。

Description

一种异构软硬件协同开发的方法及系统
技术领域
本发明涉及计算机领域,特别涉及一种异构软硬件协同开发的方法及系统,在低成本的情况下,使应用软件和硬件可以协同开发。
背景技术
在计算机系统开发过程中,早期软件的开发是在硬件开发就绪之后进行,即硬件开发结束之后,有了硬件平台,才开始软件的开发。这样的开发流程,使得开发人员的工作不是很饱满,也拉长了产品上市的时间。当前也有一些软硬协同设计的方法,有Synopsys公司的VDK(VirtualizerDevelopment Kit),它宣传可以让片上系统SoC(System on Chip)设计时间减半,用来改变软件和硬件的开发各占大约一半的时间的局面。但其价格昂贵,而且还需要组织开发VDK的队伍。
发明内容
本发明提出的目的是在开发SoC异构系统的时候,找到一种低成本的软硬件结合的协同开发方法,可以使应用程序的开发者跟随硬件的开发,早期就可以搭建整个应用框架,验证整个应用程序的正确性,等待硬件和操作系统就绪。硬件验证时可以用FPGA搭建硬件平台,然后在FPGA的硬件平台上同步搭建操作系统等软件平台,但FPGA搭建的硬件平台由于频率低下,不能运行有一定规模的应用程序,可以同步在PC上相同的操作系统平台上搭建。开发SoC异构系统时,应用程序还需要根据异构的特点进行异构程序的编写,为了让在PC上开发的应用程序可以用于SoC异构系统,在软件开发流程上提出了一些简单易行方法,使得在PC上开发完成的应用程序也可以和异构系统协同开发,同步验证。
本发明提出了一种异构软硬件协同开发的方法,其包括:
声明和定义能够被异构从处理器执行的函数;
根据不同开发阶段目标码所执行的硬件平台定义不同的配置文件和编译文件,其中配置文件中定义适用于相应硬件平台的编译工具链变量的具体表示,所述编译文件用于定义当前适用的配置文件以及编译工具链变量;
根据所述配置文件和编译文件编译源程序,进而获得目标码,并在相应的硬件平台上运行所述目标码。
本发明还提出了一种异构软硬件协同开发的系统,其包括:
函数声明模块:声明和定义能够被异构从处理器执行的函数;
文件定义模块:根据不同开发阶段目标码所执行的硬件平台定义不同的配置文件和编译文件,其中配置文件中定义适用于相应硬件平台的编译工具链变量的具体表示,所述编译文件用于定义当前适用的配置文件以及编译工具链变量;
编译模块:根据所述配置文件和编译文件编译源程序,进而获得目标码,并在相应的硬件平台上运行所述目标码。
因此,本发明针对SoC的硬件开发流程,优化了应用开发流程,可以在很小的代价下开发应用软件,优点是,节约了高昂的资金投入和人员投入。
附图说明
图1是本发明中进行异构软硬件协同开发的异构SoC系统的构成示意图;
图2是本发明中异构软硬件协同开发方法流程图;
图3是本发明中代码分离工具利用主处理器配置文件和从处理器配置文件分别编译异构代码的具体流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
本发明基于异构SoC的开发流程,制定了一套软件开发方法。图1示出了本发明中进行异构软硬件协同开发的异构SoC系统的构成示意图。如图1所示,该异构SoC系统中包含主处理器和从处理器;主处理器和从处理器之间通过总线相连。其中,所述主处理器用于应用的控制,从处理器用于应用的加速。在进行SoC硬件开发时,先在FPGA上开发验证主处理器,然后再开发验证从处理器。
图2示出了本发明中异构软硬件协同开发方法流程图。如图2所示,该方法包括:
步骤1、声明和定义能够被异构从处理器执行的函数;
该步骤中通过应用程序函数声明和定义区分可以由异构从处理器加速运行的函数,其中通过分析获得可以由异构处理器进行加速运行的函数;而对于不需要从处理器执行的函数,不进行相应的函数声明和定义。
例如,对可以由异构从处理器加速运行的函数进行如下的函数声明:
void APEAPI_func(void*);
其中func根据功能自定义名称。参数的传递和返回值,需要通过自定义的数据结构确定该功能的参数和返回值。
而相应地,在调用可以由异构从处理器加速运行的函数时遵守如下形式:
其中根据算法需要白定义自己的输入输出数据结构。斜体部分替换成合适的定义和赋值。
步骤2、根据不同开发阶段目标码所执行的硬件平台定义不同的配置文件和编译文件,其中配置文件中定义适用于相应硬件平台的编译工具链变量的具体表示,所述编译文件用于定义当前适用的配置文件以及编译工具链变量;
该步骤中定义多个格式化的工具链配置文件和特定格式的Makefile,用以适应不同开发阶段的编译生成不同目标码。格式化的工具链配置文件,用于定义工具链的具体变量表示,所述多个工具链配置文件都使用同样的变量表示。优选地,所述多个工具链配置文件为三个格式化的配置文件,其分别是:
PC工具链配置文件,用于硬件早期准备阶段,配置为PC的工具链,结合特定格式的Makefile,可以编译出PC上的目标码,应用程序可以在PC上做正确性验证;这时声明为从处理器的函数运行在PC上。
主处理器工具链配置文件,用于硬件中期主处理器已经就绪,SOC从处理器正在进行设计验证阶段,配置为主处理器的工具链,结合特定格式的编译文件--Makefile,可以编译出主处理器上的目标码,应用程序可以在这一时期进行主处理器上运行程序段的分析;这时声明为从处理器的函数运行在主处理器上。
从处理器工具链配置文件,用于硬件后期从处理器设计准备就绪,配置为从处理器的工具链,结合特定格式的编译文件--Makefile,再结合特定的代码分离工具,可以编译出主处理器上执行的程序段目标码和从处理器上执行的程序段目标码,应用程序可以在这一时期对整个异构处理器上运行的流程分析。
例如,三个配置文件组织为如下三个文件:
host.mk:定义了PC的工具链。
arm.mk:定义了主处理器的工具链。
ape.mk:定义从处理器工具链。
三个配置文件中定义了工具链的具体变量,且用同样的变量表示,形式如下:
DEFAULT_CC=
DEFAULT_CFLAGS=
DEFAULT_ASM=
DEFAULT_AFLAGS
DEFAULT_LINK=
DEFAULT_LFLAGS=
DEFAULT_LIB=
具体赋值是什么,应用程序根据需要进行设置。
特定的编译文件--Makefile规定:其定义的工具链有上述格式化的工具链配置文件的具体变量来赋值,不具体指定工具链,通过包含一个外部配置文件来指定工具链。
具体实施的代码片段如下,由外部的配置文件中的变量定义指定工具链:
示例中是处于开发中期,主处理器为ARM的情形,这时“includearm.mk”。如果是开发早期使用“include host.mk”来选择PC的配置文件。如果是开发后期,代码分离工具会自动选择主处理器配置文件arm.mk和从处理器配置文件ape.mk来分别编译异构代码。
步骤3、根据所述配置文件和编译文件编译源程序,进而获得目标码,并在相应的硬件平台上运行所述目标码。
在编译文件Makefile中具体定义了该阶段所要选用的配置文件以及具体编译工具链变量。在编译源程序时,使用Makefile中指定的配置文件和具体编译工具链变量进行编译,编译工具链变量的具体表示在相应的配置文件中定义。
比较特殊的是开发后期阶段,需要通过代码分离工具将主处理器程序和从处理器程序区分开来,并分别进行编译。
图3示出了本发明中代码分离工具利用主处理器配置文件和从处理器配置文件分别编译异构代码的具体流程示意图。如图3所示,首先将分离出异构程序,区分出主处理器ARM和从处理器APE的程序,根据从处理器函数声明和定义来区分需要哪个配置文件来编译相应的函数,组成新的Makefile(主处理器的Makefile需要去掉从处理器的源文件编译规则,从处理器的Makefile需要去掉主处理器源文件的编译规则),然后选择各自的工具链配置文件,用make进行编译,得到主从处理的目标执行文件。
本发明还提出了一种异构软硬件协同开发的系统,其包括:
函数声明模块:声明和定义能够被异构从处理器执行的函数;
文件定义模块:根据不同开发阶段目标码所执行的硬件平台定义不同的配置文件和编译文件,其中配置文件中定义适用于相应硬件平台的编译工具链变量的具体表示,所述编译文件用于定义当前适用的配置文件以及编译工具链变量;
编译模块:根据所述配置文件和编译文件编译源程序,进而获得目标码,并在相应的硬件平台上运行所述目标码。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种异构软硬件协同开发的方法,其包括:
声明和定义能够被异构从处理器执行的函数;
根据不同开发阶段目标码所执行的硬件平台定义不同的配置文件和编译文件,其中配置文件中定义适用于相应硬件平台的编译工具链变量的具体表示,所述编译文件用于定义当前适用的配置文件以及编译工具链变量;
根据所述配置文件和编译文件编译源程序,进而获得目标码,并在相应的硬件平台上运行所述目标码;
所述编译文件中定义编译工具链变量和当前阶段适用的配置文件,编译工具链变量的具体表示由当前阶段适用的配置文件定义。
2.如权利要求1所述的方法,其中,所述不同的配置文件包括以下三种:
适用于开发早期的PC配置文件,其用于配置适用于PC机的编译工具链变量的具体表示;
适用于开发中期的主处理器配置文件,其用于配置适用于主处理器的编译工具链变量的具体表示;
适用于开发后期的从处理器配置文件,其用于配置适用于从处理器的编译工具链变量的具体表示。
3.如权利要求1所述的方法,其中,在开发后期阶段,需要将源程序编译成异构的主处理器目标码和从处理器目标码时,还需要定义代码分离方法,用于在编译过程中将主处理器程序和从处理器程序分别编译。
4.如权利要求3所述的方法,其中,通过从处理器执行的函数的声明和定义区分主处理器程序和从处理器程序。
5.如权利要求4所述的方法,其中,代码分离方法还用于将编译文件分成主处理器程序的编译文件和从处理程序的编译文件,并选择各自的配置文件进行编译。
6.一种异构软硬件协同开发的系统,其包括:
函数声明模块:声明和定义能够被异构从处理器执行的函数;
文件定义模块:根据不同开发阶段目标码所执行的硬件平台定义不同的配置文件和编译文件,其中配置文件中定义适用于相应硬件平台的编译工具链变量的具体表示,所述编译文件用于定义当前适用的配置文件以及编译工具链变量;
编译模块:根据所述配置文件和编译文件编译源程序,进而获得目标码,并在相应的硬件平台上运行所述目标码;
所述编译文件中定义编译工具链变量和当前阶段适用的配置文件,编译工具链变量的具体表示由当前阶段适用的配置文件定义。
7.如权利要求6所述系统,其中,所述不同的配置文件包括以下三种:
适用于开发早期的PC配置文件,其用于配置适用于PC机的编译工具链变量的具体表示;
适用于开发中期的主处理器配置文件,其用于配置适用于主处理器的编译工具链变量的具体表示;
适用于开发后期的从处理器配置文件,其用于配置适用于从处理器的编译工具链变量的具体表示。
8.如权利要求6所述的系统,其中,所述文件定义模块在开发后期阶段,需要将源程序编译成异构的主处理器目标码和从处理器目标码时,还需要定义代码分离方法,用于在编译过程中将主处理器程序和从处理器程序分别编译。
CN201410036245.XA 2014-01-24 2014-01-24 一种异构软硬件协同开发的方法及系统 Active CN103744684B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410036245.XA CN103744684B (zh) 2014-01-24 2014-01-24 一种异构软硬件协同开发的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410036245.XA CN103744684B (zh) 2014-01-24 2014-01-24 一种异构软硬件协同开发的方法及系统

Publications (2)

Publication Number Publication Date
CN103744684A CN103744684A (zh) 2014-04-23
CN103744684B true CN103744684B (zh) 2017-01-11

Family

ID=50501704

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410036245.XA Active CN103744684B (zh) 2014-01-24 2014-01-24 一种异构软硬件协同开发的方法及系统

Country Status (1)

Country Link
CN (1) CN103744684B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104899385B (zh) * 2015-06-16 2018-01-26 北京思朗科技有限责任公司 异构多核的SoC设计评估系统
WO2017035748A1 (zh) * 2015-08-31 2017-03-09 华为技术有限公司 一种代码编译方法及代码编译器
CN105447285B (zh) * 2016-01-20 2018-11-30 杭州菲数科技有限公司 一种提高OpenCL硬件执行效率的方法
CN106341277A (zh) * 2016-11-07 2017-01-18 四川靓固科技集团有限公司 一种基于数据融合和soc异构运算的数据分析加速系统及方法
CN111142848B (zh) * 2018-11-05 2023-09-19 深圳Tcl新技术有限公司 一种软件程序编译方法、执行方法及装置
CN110018831B (zh) * 2019-04-04 2022-11-08 中科寒武纪科技股份有限公司 程序处理方法、装置及计算机可读存储介质
CN111914410B (zh) * 2020-07-16 2024-06-14 博流智能科技(南京)有限公司 SoC软硬件协同仿真加速系统及方法
CN112148296B (zh) * 2020-08-18 2022-03-15 华控清交信息科技(北京)有限公司 一种编译运行方法、装置和用于编译运行的装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101465773A (zh) * 2007-12-18 2009-06-24 闪联信息技术工程中心有限公司 一种实现多种异构家庭网络标准之间互联的方法和系统
CN101576900A (zh) * 2009-06-08 2009-11-11 陈强 面向数字家庭的普适知识管理系统
CN102135904A (zh) * 2011-03-11 2011-07-27 华为技术有限公司 一种面向多核目标系统的映射方法及装置
US8028268B2 (en) * 2005-06-21 2011-09-27 International Business Machines Corporation System and method for building software package for embedded system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8028268B2 (en) * 2005-06-21 2011-09-27 International Business Machines Corporation System and method for building software package for embedded system
CN101465773A (zh) * 2007-12-18 2009-06-24 闪联信息技术工程中心有限公司 一种实现多种异构家庭网络标准之间互联的方法和系统
CN101576900A (zh) * 2009-06-08 2009-11-11 陈强 面向数字家庭的普适知识管理系统
CN102135904A (zh) * 2011-03-11 2011-07-27 华为技术有限公司 一种面向多核目标系统的映射方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"异构环境下分层并行通用计算模型的设计与实现";石文娟;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130415(第04期);I132-72页 *

Also Published As

Publication number Publication date
CN103744684A (zh) 2014-04-23

Similar Documents

Publication Publication Date Title
CN103744684B (zh) 一种异构软硬件协同开发的方法及系统
Kuchaiev et al. Nemo: a toolkit for building ai applications using neural modules
Nogueira et al. Test generation from state based use case models
US11579856B2 (en) Multi-chip compatible compiling method and device
US8910133B2 (en) Library conformity checker
JP6342129B2 (ja) 混合モードプログラムのソースコードエラー位置検出装置及び方法
JP2007012003A (ja) フィーチャ指向ソフトウェア製品ラインの開発環境を提供するシステム
JP2016207166A (ja) 性能検証装置、システム、方法、およびコンピュータに当該方法を実行させるためのプログラム
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
CN103294596A (zh) 一种基于程序不变量的合约式软件故障预警方法
CN114139475A (zh) 芯片验证方法、系统、设备及存储介质
JPH11513512A (ja) ディジタル信号プロセッサの製造方法
CN105302719A (zh) 一种变异测试方法及装置
CN101236493A (zh) 程序开发装置和程序开发方法
CN108563561B (zh) 一种程序隐性约束提取方法及系统
Pereira et al. Web based IOPT Petri net Editor with an extensible plugin architecture to support generic net operations
Torlak et al. Applications and extensions of Alloy: past, present and future
Minder et al. How to translate a book within an hour: towards general purpose programmable human computers with crowdlang
US9298858B1 (en) System and method for reducing models based on a criterion
Wimmel A BDD-based Model Checker for the PEP Tool
US9396239B2 (en) Compiling method, storage medium and compiling apparatus
Yoo et al. An integrated software development framework for PLC & FPGA based digital I&Cs
US20110167417A1 (en) Programming system in multi-core, and method and program of the same
CN107563025B (zh) 一种验证平台管理方法及装置
US8694293B2 (en) Simulation support method, computer-readable storage medium storing simulation support program, and simulation support apparatus

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20171129

Address after: 102412 Beijing City, Fangshan District Yan Village Yan Fu Road No. 1 No. 11 building 4 layer 402

Patentee after: Beijing Si Lang science and Technology Co.,Ltd.

Address before: 100190 Zhongguancun East Road, Beijing, No. 95, No.

Patentee before: Institute of Automation, Chinese Academy of Sciences

TR01 Transfer of patent right
CP03 Change of name, title or address

Address after: 201306 building C, No. 888, Huanhu West 2nd Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai

Patentee after: Shanghai Silang Technology Co.,Ltd.

Address before: 102412 room 402, 4th floor, building 11, No. 1, Yanfu Road, Yancun Town, Fangshan District, Beijing

Patentee before: Beijing Si Lang science and Technology Co.,Ltd.

CP03 Change of name, title or address