CN105183485A - 一种可视化软硬件协同开发方法 - Google Patents
一种可视化软硬件协同开发方法 Download PDFInfo
- Publication number
- CN105183485A CN105183485A CN201510630878.8A CN201510630878A CN105183485A CN 105183485 A CN105183485 A CN 105183485A CN 201510630878 A CN201510630878 A CN 201510630878A CN 105183485 A CN105183485 A CN 105183485A
- Authority
- CN
- China
- Prior art keywords
- software
- hardware
- code
- development
- fpga
- 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.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种可视化软硬件协同开发方法,属于嵌入式***开发技术领域。本发明根据用户描述的软硬件功能,利用元件库中的元件建立相应的软硬件模型,并根据模型中各元件所对应的代码生成软件目标文件和其协作的FPGA目标文件,使得在一个开发环境下进行软硬件的协同开发,而不用关心软件和硬件的协作和通信细节,提高了开发效率,同时为用户提供的软硬件接口,能够充分利用软硬件资源,提高***的性价比,使用图形化的开发方式,用户不用编写任何代码,减少了开发错误,保证了产品质量。
Description
技术领域
本发明涉及一种可视化软硬件协同开发方法,属于嵌入式***开发技术领域。
背景技术
当前,高性能的嵌入式***一般包括CPU和FPGA两种方式处理高复杂度和高实时性的任务,CPU处理高复杂度的任务,而FPGA处理高实时性的任务。但现有的硬件平台和软件平台由于是各自独立的部分,由两个团队分别进行开发,没有太多的协同。一般CPU软件的开发属于软件平台范畴,FPGA的开发和硬件紧密相关,属于硬件开发的范畴,硬件平台设计提供的资源软件平台不能充分发挥作用,软件在硬件平台上运行的性能和效率也未能达到最优。最终应用中各个任务模块不能合理的分配到CPU和FPGA中。造成产品的成本升高和性能无法达到要求。尤其是,FPGA芯片支持的动态可重构功能,使得FPGA资源可以分时复用,使得有限的FPGA资源可以最大化的利用。这更需要一种协同开发的手段,来充分的利用软硬件功能。
另外,在传统的嵌入式***设计领域,通常整个应用程序仅仅用软件实现,没有充分的利用硬件资源。随着以FPGA技术为代表的可编程器件的速度越来越快,使用越来越普遍,将应用程序实现成软硬件混合***将能够达到更好的性价比。随着嵌入式产品的应用推广到各行各业,产品多种多样,市场竞争激烈,势必对产品的开发效率、可靠性和稳定性提出更高的要求。而以手工编写代码方式来开发的嵌入式***,容易导致各种各样问题,使得产品的可靠性、稳定性大幅下降。这需要产品管理和开发人员寻求新的开发方法来保证产品的质量和可靠稳定性。
发明内容
本发明的目的是提供一种可视化软硬件协同开发方法,以解决目前嵌入式***开发时采用手工编写代码的方式实现开发所导致开发的产品可靠性和稳定性低的问题。
本发明为解决上述技术问题提供了一种可视化软硬件协同开发方法,该开发方法包括以下步骤:
1)根据元件自身的属性,建立元件库,元件库中元件分为软件元件和驱动元件,软件元件采用软件代码编写,驱动元件包括驱动代码和硬件描述语言,每一个元件均有对应的函数声明和功能实现代码;
2)利用所建立的元件库绘制待开发***的软硬件功能模型;
3)对所绘制功能模型中的各元件进行拓扑排序,确定元件的执行顺序,并将模型中各元件替换成对应的软件元件代码、驱动代码或硬件描述语言;
4)利用编写好的平台框架代码将转换后的软件代码和驱动代码生成软件目标文件,用于在嵌入式***中的CPU运行;
5)利用硬件开发工具将所有的硬件描述语言转换成符合FPGA配置文件规范的比特流文件,用来配置嵌入式***中的FPGA芯片。
所述步骤2)中的功能模型的基本元素包括元件、带箭头的连线和元件的属性配置接口,所述属性配置接口用于配置元件的工作方式、数据源和数据的目的地参数。
所述当元件级联时,即前一个元件的输出是后一个元件的输入时,在拓扑排序时,需保证具有依赖关系的元件访问的是同一个内存地址。
所述每个硬件功能的地址空间由***运行时动态分配和维护。
所述当需要的硬件功能不在FPGA资源中时,由FPGA配置芯片加载相应的Bit流文件到FPGA资源中,并返回加载的基地址,其对应的驱动代码通过该地址访问硬件功能。
所述元件库中的元件有自己的属性,包括图形颜色、形状,管脚数量和类型,管脚分为输入管脚和输出管脚两种类型,每个管脚关联的数据类型。
本发明的有益效果是:本发明利用所建立的元件库绘制待开发***的软硬件功能模型;对所绘制功能模型中的各元件进行拓扑排序,确定元件的执行顺序,并将模型中各元件替换成对应的软件元件代码、驱动代码或硬件描述语言;利用编写好的平台框架代码将转换后的软件代码和驱动代码生成软件目标文件,用于在待开发的嵌入式***的CPU中运行;利用硬件开发工具将所有的硬件描述语言转换成符合FPGA配置文件规范的比特流文件,用来配置嵌入式***中的FPGA芯片,从而实现嵌入式***的可视化开发。
本发明根据用户描述的软硬件功能,利用元件库中的元件建立相应的软硬件模型,根据模型中各元件所对应的代码生成软件目标文件和其协作的FPGA目标文件,使得在一个开发环境下进行软硬件的协同开发,而不用关心软件和硬件的协作和通信细节,提高了开发效率,同时为用户提供的软硬件接口,能够充分利用软硬件资源,提高***的性价比,使用图形化的开发方式,用户不用编写任何代码,减少了开发错误,保证了产品质量。
附图说明
图1是本发明可视化软硬件协同开发方法的工作原理图;
图2是本发明实施例中图形语言描述软硬件功能示意图;
图3是元件结构体定义实现程序代码;
图4是本发明实施例中软件加法器元件对应的代码;
图5是本发明实施例中硬件加法器元件对应的驱动代码;
图6是本发明实施例中图形语言转换成C语言的实现代码。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步的说明。
针对上述情况,本发明提供的一种可视化的软硬件协同开发方法,采用用统一的图形语言描述软硬件功能,建立应用业务模型;用户通过元件、连线进行逻辑组态,描述软硬件功能,不需要编写任何代码,也不用关心软硬件的通信细节,降低开发人员要求,提高开发效率和保证***可靠、稳定性。
本发明的整体工作原理图如图1所示,根据元件自身的属性,建立元件库,元件库中元件分为软件元件和驱动元件,软件元件采用软件代码编写,驱动元件包括驱动代码和硬件描述语言,每一个元件均有对应的函数声明和功能实现代码;利用所建立的元件库绘制待开发***的软硬件功能模型;对所绘制功能模型中的各元件进行拓扑排序,确定元件的执行顺序,并将模型中各元件替换成对应的软件元件代码或驱动代码及其声明函数;利用编写好的平台框架代码将转换后的软件代码和驱动代码生成软件目标文件,由嵌入式***中的CPU执行;利用硬件开发工具将所有的硬件描述语言转换成符合FPGA配置文件规范的比特流文件,用来配置嵌入式***中的FPGA芯片,从而实现对嵌入式***的软硬件开发。
下面以具体例子说明该方法的具体实施过程,运行环境为处理器是PowerPC,FPGA芯片是支持局部动态重构的virtex系列,操作***是nucleus***。
1.建立元件库
元件有自己的属性,包括图形颜色、形状,管脚数量和类型,管脚分为输入管脚和输出管脚两种类型,每个管脚关联的数据类型。元件库中的元件分为软件元件和驱动元件,软件元件用软件编写,被编译成处理器指令由CPU执行;驱动元件包括驱动代码和硬件描述语言,驱动代码被编译成处理器指令,由CPU执行,硬件描述语言被编译、综合成FPGA比特流,配置到FPGA芯片中形成硬件电路,驱动代码可配置、访问该硬件电路对应的电路功能。在第一次进行可视化软件开发时该步骤是必须的,一旦元件库建立后,后面的开发过程无需再建立新的元件库,可直接使用之前所建立好的元件库,节省了开发时间。
2.用图形库中的元件绘制待开发***的软硬件模型
用图形语言描述的软硬件功能如图2所示,图形语言的基本元素包括元件和带箭头的连线,以及元件的属性配置接口,配置接口可配置元件的工作方式、数据源、数据的目的地等参数。本实施例中使用了软件加法器元件和硬件加法器元件,元件对象的结构体定义如图3所示。
3.对所绘制功能模型中的各元件进行拓扑排序,确定元件的执行顺序。
该步骤由图形逻辑处理单元完成,图形逻辑处理单元根据绘制的软硬件模型图形,进行元件的拓扑排序,确定元件的执行顺序,以便在转换成代码时,按顺序生成软件语句。
当元件级联时,前一个元件的输出是后一个元件的输入时,要保证它们访问的是同一个内存地址,这需要软件处理单元在拓扑排序时,为具有依赖关系的元件,即具有连线的地方需要指向相同的内存地址,用来传递数据,并把这些地址记录在元件对象中。本实施例图2中,两个软件加法器的输出正是后面硬件的加法器的输入,当硬件加法器计算两个数的和时,从内存地址获取数据,这也正是软件加法器的输出的内存地址,最后调用FPGA的硬件功能完成计算。
4.将模型中各元件替换成对应的软件元件代码、驱动代码或硬件描述语言。
本实施例中标识为iAdd的元件为软件加法器元件,其对应的软件代码如图4所示;标识为Add的元件为硬件加法器元件,其对应的驱动代码如图5所示。
5.利用编写好的平台框架代码将转换后的软件代码和驱动代码生成软件目标文件,用于嵌入式***中的CPU运行。
该过程可由软件处理模块完成,软件处理模块把所有的软件代码和驱动代码与一个编写好的平台框架代码结合生成makefile工程,调用交叉编译工具链生成完整的软件目标文件,平台框架代码和底层平台相关,是相对固定不变的部分,为运行图形逻辑提供了运行环境。
6.利用硬件开发工具将所有的硬件描述语言转换成符合FPGA配置文件规范的比特流文件,用来配置嵌入式***中的FPGA芯片。
本实施例中硬件加法器元件对应的硬件描述语言,由VHDL语言编写和设置,包括实体和结构体两部分,由常规的硬件开发工具根据功能开发,此处没有列出其VHDL代码。标识为DATA的元件为输入元件,可通过配置窗口指定输入数据源,或者配置为立即数。标识为GLOBAL的元件代表一个全局变量,即把计算后的结果存入一个内存变量中。
每个硬件功能单元的地址空间由***运行时动态分配和维护。当需要的硬件功能不在FPAG资源中时,由FPAG配置芯片加载相应的Bit流文件到FPGA资源中,并返回加载的基地址,其对应的驱动代码通过该基地址访问硬件功能。用户不用关心访问硬件的通信细节,平台框架代码会记下分配的硬件元件基地址,当应用程序需要调用硬件功能时,会根据该基地址访问硬件功能。
从软件加法器元件的实现代码看到,它从管脚1和2获取两个输入数据,计算两个数的和,然后把结果写入管脚3,从硬件加法器元件的驱动代码看到,它也是从管脚1和2获取输入数据,不同的是它之后调用了FPGA的硬件功能完成加法运算,这是通过操作开放的寄存器接口实现,由于在编译期硬件处理单元把硬件地址告诉了软件处理单元,软件处理单元可以通过该地址访问硬件的功能,因为硬件加法器运算速度快,该驱动代码没有检查标识寄存器,直接取结果。
通过FPGA的配置控制器动态的加载硬件功能单元,得到重构FPGA芯片的功能,并返回加载的基地址,由于nucleus***运行在实地址模式,所以不需要把该基地址转换成虚拟地址,可以直接使用。
图形语言处理后变成如图6所示的代码,所有的元件对象按顺序存放在结构体数组中,获取到该数组的首地址后,可通过增加偏移定位到下一个元件对象。从图6中看到,把元件对象作为参数传递给元件对应的代码。平台框架代码已创建好用户任务,把生成的图6代码添加到任务的执行路径中,用户功能即可在该任务中运行,完成预定义的功能。
Claims (6)
1.一种可视化软硬件协同开发方法,其特征在于,该开发方法包括以下步骤:
1)根据元件自身的属性,建立元件库,元件库中元件分为软件元件和驱动元件,软件元件采用软件代码编写,驱动元件包括驱动代码和硬件描述语言,每一个元件均有对应的函数声明和功能实现代码;
2)利用所建立的元件库绘制待开发***的软硬件功能模型;
3)对所绘制功能模型中的各元件进行拓扑排序,确定元件的执行顺序,并将模型中各元件替换成对应的软件元件代码、驱动代码或硬件描述语言;
4)利用编写好的平台框架代码将转换后的软件代码和驱动代码生成软件目标文件,用于在嵌入式***中的CPU运行;
5)利用硬件开发工具将所有的硬件描述语言转换成符合FPGA配置文件规范的比特流文件,用来配置嵌入式***中的FPGA芯片。
2.根据权利要求1所述的可视化软硬件协同开发方法,其特征在于,所述步骤2)中的功能模型的基本元素包括元件、带箭头的连线和元件的属性配置接口,所述属性配置接口用于配置元件的工作方式、数据源和数据的目的地参数。
3.根据权利要求2所述的可视化软硬件协同开发方法,其特征在于,所述当元件级联时,即前一个元件的输出是后一个元件的输入时,在拓扑排序时,需保证具有依赖关系的元件访问的是同一个内存地址。
4.根据权利要求3所述的可视化软硬件协同开发方法,其特征在于,所述每个硬件功能的地址空间由***运行时动态分配和维护。
5.根据权利要求4所述的可视化软硬件协同开发方法,其特征在于,所述当需要的硬件功能不在FPGA资源中时,由FPGA配置芯片加载相应的Bit流文件到FPGA资源中,并返回加载的基地址,其对应的驱动代码通过该地址访问硬件功能。
6.根据权利要求1所述的可视化软硬件协同开发方法,其特征在于,所述元件库中的元件有自己的属性,包括图形颜色、形状,管脚数量和类型,管脚分为输入管脚和输出管脚两种类型,每个管脚关联的数据类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510630878.8A CN105183485B (zh) | 2015-09-29 | 2015-09-29 | 一种可视化软硬件协同开发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510630878.8A CN105183485B (zh) | 2015-09-29 | 2015-09-29 | 一种可视化软硬件协同开发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105183485A true CN105183485A (zh) | 2015-12-23 |
CN105183485B CN105183485B (zh) | 2019-01-01 |
Family
ID=54905584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510630878.8A Active CN105183485B (zh) | 2015-09-29 | 2015-09-29 | 一种可视化软硬件协同开发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105183485B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107203681A (zh) * | 2017-06-23 | 2017-09-26 | 马德海 | 一种硬件模型参数配置平台的工作方法 |
CN108334036A (zh) * | 2018-01-31 | 2018-07-27 | 广州奇芯机器人技术有限公司 | 一种图形化编程加工方法及设计方法 |
CN110471803A (zh) * | 2019-07-05 | 2019-11-19 | 华为技术有限公司 | 一种物理硬件操作方法、电子设备、存储介质及芯片 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109492301B (zh) * | 2018-11-08 | 2020-05-22 | 北京世冠金洋科技发展有限公司 | 软硬件切换方法和*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560743A (zh) * | 2004-03-11 | 2005-01-05 | 浙江大学 | 多媒体处理器协同仿真验证平台 |
US7716631B1 (en) * | 2005-01-20 | 2010-05-11 | Sprint Communications Company L.P. | Architecture blueprint tool and method |
CN102867087A (zh) * | 2012-09-11 | 2013-01-09 | 西安电子科技大学 | 图形化雷达信号处理高层集成设计平台及方法 |
-
2015
- 2015-09-29 CN CN201510630878.8A patent/CN105183485B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560743A (zh) * | 2004-03-11 | 2005-01-05 | 浙江大学 | 多媒体处理器协同仿真验证平台 |
US7716631B1 (en) * | 2005-01-20 | 2010-05-11 | Sprint Communications Company L.P. | Architecture blueprint tool and method |
CN102867087A (zh) * | 2012-09-11 | 2013-01-09 | 西安电子科技大学 | 图形化雷达信号处理高层集成设计平台及方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107203681A (zh) * | 2017-06-23 | 2017-09-26 | 马德海 | 一种硬件模型参数配置平台的工作方法 |
CN107203681B (zh) * | 2017-06-23 | 2020-07-14 | 马德海 | 一种硬件模型参数配置平台的工作方法 |
CN108334036A (zh) * | 2018-01-31 | 2018-07-27 | 广州奇芯机器人技术有限公司 | 一种图形化编程加工方法及设计方法 |
CN110471803A (zh) * | 2019-07-05 | 2019-11-19 | 华为技术有限公司 | 一种物理硬件操作方法、电子设备、存储介质及芯片 |
CN110471803B (zh) * | 2019-07-05 | 2021-01-29 | 华为技术有限公司 | 一种物理硬件操作方法、电子设备、存储介质及芯片 |
Also Published As
Publication number | Publication date |
---|---|
CN105183485B (zh) | 2019-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104408222B (zh) | 实时分布式仿真平台可重构方法 | |
CN103019742B (zh) | 一种多dsp平台上的自动代码生成方法 | |
US10579349B2 (en) | Verification of a dataflow representation of a program through static type-checking | |
CN103617066A (zh) | 一种工作流引擎及其实现方法 | |
CN108038294B (zh) | Uvm环境搭建方法和*** | |
CN105677446A (zh) | 分布式仿真平台的可视化建模方法 | |
CN105183485A (zh) | 一种可视化软硬件协同开发方法 | |
CN104965761A (zh) | 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法 | |
CN103955373A (zh) | 一种sdn应用集成开发环境的设计方法 | |
CN110554863A (zh) | 一种类集成电路的图形化编程方法 | |
CN108985459A (zh) | 训练模型的方法和装置 | |
CN110352400B (zh) | 用于处理报文的方法和装置 | |
CN104063231B (zh) | 一种基于hit‑tena的试验资源快速接入方法 | |
CN103455339A (zh) | 一种通用仿真组件的执行方法 | |
CN103164228B (zh) | 一种现场可编程门阵列程序的生成方法及装置 | |
CN102968533B (zh) | 一种液体火箭发动机通用化仿真方法 | |
Moallemi et al. | Modeling and simulation-driven development of embedded real-time systems | |
CN113919158A (zh) | 一种用于飞行控制面板的仿真方法、装置及存储介质 | |
CN104657136B (zh) | Simulink组件的集成*** | |
CN111399829B (zh) | 一种基于模型驱动的波形建模方法及终端 | |
CN111159032A (zh) | 一种信号驱动的通用自动测试开发***及***建立方法 | |
Pohlmann et al. | Generating Modelica models from software specifications for the simulation of cyber-physical systems | |
CN105045698A (zh) | 使用python的matplotlib分析芯片验证进度的方法 | |
CN112445607B (zh) | 一种应用程序执行方法函数的方法及装置 | |
CN103902274A (zh) | 智能电视ui开发的平台 |
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 |