CN111443919A - Dsp多核处理器上sca核心框架的实现方法 - Google Patents
Dsp多核处理器上sca核心框架的实现方法 Download PDFInfo
- Publication number
- CN111443919A CN111443919A CN202010113594.2A CN202010113594A CN111443919A CN 111443919 A CN111443919 A CN 111443919A CN 202010113594 A CN202010113594 A CN 202010113594A CN 111443919 A CN111443919 A CN 111443919A
- Authority
- CN
- China
- Prior art keywords
- core
- sca
- dsp
- component
- framework
- 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
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000004364 calculation method Methods 0.000 claims abstract description 5
- 230000006870 function Effects 0.000 claims description 76
- 230000003068 static effect Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 230000003993 interaction Effects 0.000 claims description 4
- 238000007429 general method Methods 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000007493 shaping process Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000004215 skin function Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种DSP多核处理器上SCA核心框架的实现方法,包括:步骤S1:用C语言实现SCA核心框架的组件component和interface;步骤S2:在DSP上实现SCA的profile描述文件;步骤S3:多核DSP上实现核心框架及多运算核上算法部署。本发明通过在高性能DSP上运行嵌入式操作系统、轻量化标准中间件,用C语言实现component、interface等SCA元素、用结构体变量赋值的C程序代替XML域属性描述文件及解析、用多核DSP的零核作为管理核等方式在DSP上实现了一个轻量化的SCA核心框架。
Description
技术领域
本发明涉及软件无线电通信领域。具体地,涉及DSP多核处理器上SCA核心框架的实现方法。尤其地,涉及在多核DSP这种擅长信号处理的可编程处理单元上实现SCA(软件通信体系架构)核心框架的方法。
背景技术
本发明涉及软件无线电通信领域软件通信体系架构的实现方法,特别在多核DSP这种擅长信号处理的可编程处理单元上实现SCA(软件通信体系架构)核心框架的方法。
软件无线电技术当前可以更确切地称为软件定义无线电设备技术,其中心思想是:构造标准化、模块化的通用硬件平台,使A/D和D/A尽可能地接近天线,并通过软件加载,实现各种无线通信功能。软件通信体系结构(SCA)是软件无线电技术的一种国际标准规范,特性是开放性、组件化、可移植性和灵活性。它规范了核心框架CF(Core Framwork)、通信波形API等各种接口,明确了波形开发方法;波形按功能划分为组件,分布式运行,组件可复用,不同组件可以装配成通信波形;波形组件基于操作系统、中间件之上开发,可移植性强;波形可安装、删除、动态加卸载到硬件设备上运行,波形软件易于升级,可不断扩充新功能。
遵循SCA规范的核心框架负责将通信波形的组件分别部署到CPU/DSP/FPGA硬件处理单元上,并负责建立这些组件之间的连接(数据通信机制),负责组件的启动运行等功能(同理,也负责组件的停止、卸载、删除等逆过程)。CPU处理能力强,不但能运行操作系统、中间件等软件,SCA的核心框架(CF)的域管理器、设备管理器以及其它服务都运行在CPU处理器上,一般情况下DSP/FPGA仅仅作为可编程器件,只运行应用算法,在CPU/DSP/FPGA之间设置一个类似邮箱机制为异构处理单元之间的数据传输定义标准接口,在CPU上为DSP或FPGA设置一个代理(称为MHAL逻辑设备),CPU上CF必须通过这些代理部署卸载DSP或FPGA上算法组件,CPU上其它组件也通过这些代理与DSP或FPGA上算法组件进行数据交互。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种DSP多核处理器上SCA核心框架的实现方法。
根据本发明提供的一种DSP多核处理器上SCA核心框架的实现方法,包括:
步骤S1:用C语言实现SCA核心框架的组件component和interface;
步骤S2:在DSP上实现SCA的profile描述文件;
步骤S3:多核DSP上实现核心框架及多运算核上算法部署。
优选地,所述步骤S1:
步骤S101:用C结构体实现基础组件component的实体;
步骤S102:用C结构体实现派生组件的实体;
步骤S103:虚继承interface的组件的继承关系;
步骤S104:用C语言实现虚继承interface的组件实体;
步骤S105:采用静态static类型定义实现函数和所有C语言实体。
优选地,所述步骤S101:
当所述组件Component是组件化编程的基本元素时,C++中用C++类加XML属性描述表示一个component;
用C语言实现一个基础组件component的C++类,将C++类改为C语言的结构体:C++类的属性变量改为C结构体的数据成员;类的成员函数改为结构体中的函数指针,函数指针加了一个参数p,是指向该结构体的指针,该指针用来访问本组件结构体的成员。
优选地,所述步骤S102:
当组件Component是继承了C++基类的一个子类时,那么通常的方法在C结构体中增加一个成员,称为虚表指针,指向的虚表中存放的也是两个指针,一个指针指向基类结构体中的函数指针列表,另一指针指向子类结构体中的函数指针列表。这样就既能方便访问到基类定义的函数,也能方便访问到子类定义的函数了。
优选地,所述步骤S103:
SCA中的interface是组件化编程里表示组件之间调用接口的元素,组件的数据交互方式与操作函数定义,并没有操作函数的具体实现,具体实现在继承接口的组件中完成。
优选地,所述步骤S2:
将xml文件定义的各元素、属性等翻译成相应的c源码,将这个c源码文件可以编译以后与DSP上的c框架代码编译生成的代码打包成库;
对于xml解析标准文件,用结构体来表达每种Element,有嵌套描述的Element可以逐步分割成若干个不同类型的Elements,基本的Elements可由c语言中的基本数据类型描述。
优选地,所述步骤S3:
零核作为节点的管理核,有完整的中间件和框架,而其他核没有中间件环境;
零核以外的其他核,在零核上对应同一个MHAL设备,同时在本地,各自运行着一个MHAL服务,来协助MHAL设备完成部署加卸载操作;
域管理器通过零核的设备管理器,拿到该MHAL设备的对象引用,所有操作都经过零核完成。
根据本发明提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现上述中任一项所述的DSP多核处理器上SCA核心框架的实现方法的步骤。
与现有技术相比,本发明具有如下的有益效果:
1、本发明通过在高性能DSP上运行嵌入式操作系统、轻量化标准中间件,用C语言实现component、interface等SCA元素、用结构体变量赋值的C程序代替XML域属性描述文件及解析、用多核DSP的零核作为管理核等方式在DSP上实现了一个轻量化的SCA核心框架。
2、本发明解决的技术问题是软件无线电系统中在高性能DSP上构建一个轻量化的SCA核心框架的实现方法,从而能跨异构CPU/DSP处理单元部署/卸载波形应用,并实现波形组件的高效连接。
3、对比DSP上用IDL的C接口实现SCA CF和采用MHAL方式的差异,以及DSP上SCA元素与属性配置以C语言定义变量方式代替解析SCA XML profile描述文件方式的效果差异性。见下表1所示:
表1比对结果
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明提供的传统SCA体系架构示意图。
图2为本发明提供的DSP上实现轻量化SCA核心框架的体系架构示意图。
图3为本发明提供的SCA4.1规范操作环境(OE)及应用组成示意图。
图4为本发明提供的component虚继承自一个interface示意图。
图5为本发明提供的所有核对应同一个MHAL设备的框架关系示意图。
图6为本发明提供的interface通过IDL编译器生成的CORBA伺服框架示意图。
图7为本发明提供的用C语言实现虚继承interface的组件实体示意图。
图8为本发明提供的数组类型Object_Ops示意图。
图9为本发明提供的通过框架函数再寻址对应的实现函数示意图。
图10为本发明提供的FileComponent结构示意图。
图11为本发明提供的初始化后数据结构的分配和指针对应关系示意图。
图12为本发明提供的组件与接口C实现的重要数据结构示意图。
图13为本发明提供的GPP和DSP上的SCA核心框架组成示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的一种DSP多核处理器上SCA核心框架的实现方法,包括:
步骤S1:用C语言实现SCA核心框架的组件component和interface;
步骤S2:在DSP上实现SCA的profile描述文件;
步骤S3:多核DSP上实现核心框架及多运算核上算法部署。
优选地,所述步骤S1:
步骤S101:用C结构体实现基础组件component的实体;
步骤S102:用C结构体实现派生组件的实体;
步骤S103:虚继承interface的组件的继承关系;
步骤S104:用C语言实现虚继承interface的组件实体;
步骤S105:采用静态static类型定义实现函数和所有C语言实体。
优选地,所述步骤S101:
当所述组件Component是组件化编程的基本元素时,C++中用C++类加XML属性描述表示一个component;
用C语言实现一个基础组件component的C++类,将C++类改为C语言的结构体:C++类的属性变量改为C结构体的数据成员;类的成员函数改为结构体中的函数指针,函数指针加了一个参数p,是指向该结构体的指针,该指针用来访问本组件结构体的成员。
优选地,所述步骤S102:
当组件Component是继承了C++基类的一个子类时,那么通常的方法在C结构体中增加一个成员,称为虚表指针,指向的虚表中存放的也是两个指针,一个指针指向基类结构体中的函数指针列表,另一指针指向子类结构体中的函数指针列表。这样就既能方便访问到基类定义的函数,也能方便访问到子类定义的函数了。
优选地,所述步骤S103:
SCA中的interface是组件化编程里表示组件之间调用接口的元素,组件的数据交互方式与操作函数定义,并没有操作函数的具体实现,具体实现在继承接口的组件中完成。
优选地,所述步骤S2:
将xml文件定义的各元素、属性等翻译成相应的c源码,将这个c源码文件可以编译以后与DSP上的c框架代码编译生成的代码打包成库;
对于xml解析标准文件,用结构体来表达每种Element,有嵌套描述的Element可以逐步分割成若干个不同类型的Elements,基本的Elements可由c语言中的基本数据类型描述。
优选地,所述步骤S3:
零核作为节点的管理核,有完整的中间件和框架,而其他核没有中间件环境;
零核以外的其他核,在零核上对应同一个MHAL设备,同时在本地,各自运行着一个MHAL服务,来协助MHAL设备完成部署加卸载操作;
域管理器通过零核的设备管理器,拿到该MHAL设备的对象引用,所有操作都经过零核完成。
根据本发明提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现上述中任一项所述的DSP多核处理器上SCA核心框架的实现方法的步骤。
下面通过优选例,对本发明进行更为具体地说明。
优选例1:
本发明所要解决的技术问题是软件无线电系统中在高性能DSP上构建一个轻量化的SCA核心框架的实现方法,从而能以跨异构CPU/DSP处理单元部署/卸载波形应用,并实现波形组件的高效连接。如图1所示,为传统SCA体系架构,如图2所示,为DSP上实现轻量化SCA核心框架的体系架构。
随着芯片工艺进步,涌现出越来越多的多核高性能DSP处理器,DSP处理器性能的迅速提高为满足软件定义无线电设备的需求提供了前提条件,以往专用于运行某种通信算法的DSP可以作为能动态加卸载多种通信算法的通用设备,而且DSP上资源更丰富了,应该将多核、多任务调度处理、对存储、外设及中断等管理都交给嵌入式操作系统来完成;对跨CPU、DSP等分布式节点间、DSP的核与核之间的数据传输交给中间件来完成;对CPU/DSP上运行的波形及波形组件统一部署、统一管理的任务由SCA核心框架来完成。这样DSP上的波形组件更通用化,组件开发人员能只专注于波形算法的实现,不必更多关心任务调度、资源管理、部署卸载、数据传输细节等。
本方法的设计目标是软件无线电系统中在多核DSP上以与CPU处理器统一的接口实现SCA核心框架的服务,设计中同时要考虑的,一是DSP上仅支持C语言程序,SCA核心框架定义都是component和interface为主要元素,如何以C语言实现这些元素?二是,尽管采用的是高性能DSP处理器,但DSP擅长向量计算,非常不适合进行编码/解码处理,SCA核心框架定义的设备、应用和组件的描述文件都是XML文件,DSP处理XML解析的效率很低,如何解决这个问题?三是高性能DSP如果采用多核处理器,如何解决SCA核心框架服务合理地在多核DSP的运算核上部署算法的问题。
参照最新的SCA4.1规范,SCA的操作环境(OE)如图3所示,核心框架组成元素就是各类组件、接口、XML描述文件。
1、用C语言实现SCA CF的component和interface等元素
步骤一:用C结构体实现基础组件component的实体
如果组件(Component)是组件化编程的基本元素,C++中用C++类加XML属性描述表示一个component。用C语言实现一个基础组件component的C++类,方法是常用的,将C++类改为C语言的结构体:C++类的属性变量改为C结构体的数据成员;类的成员函数改为结构体中的函数指针,函数指针加了一个参数p,是指向该结构体的指针,这类似于C++中访问类成员变量和成员函数的指向自身的this指针,该指针用来访问本组件结构体的成员。
步骤二:用C结构体实现派生组件的实体
如果组件(Component)是继承了C++基类的一个子类,那么通常的方法在C结构体中增加一个成员,称为虚表指针,指向的虚表中存放的也是两个指针,一个指针指向基类结构体中的函数指针列表,另一指针指向子类结构体中的函数指针列表。这样就既能方便访问到基类定义的函数,也能方便访问到子类定义的函数了。
步骤三:虚继成interface的组件的继承关系
SCA中的interface是组件化编程里表示组件之间调用接口的元素,就是说明了组件的数据交互方式与操作函数定义,并没有操作函数的具体实现,具体实现要在继承接口的组件中完成。以SCA核心框架中组件FileComponent虚继承自CF:File interface为例,如图4所示。
SCA中的interface用IDL语言定义,用CORBA中间件实现,interface通过IDL编译器生成的CORBA伺服框架的任何C++接口类都虚继承于PortableServer::ServantBase伺服基类,其中interface定义的操作函数都是纯虚函数;组件FileComponent虚继承于interface通过IDL编译器生成的CORBA伺服框架接口类POA_CF::File,如图6所示。
步骤四:用C语言实现虚继承interface的组件实体
接下来根据步骤一里的原则,POA_CF::File继承了PortableServer::ServantBase类,以C语言定义一个虚表POA_CF_File__vptr,该虚表包含两个指针成员,一个成员指向基本类型结构体的实例,一个成员指向子类型结构体的实例。如图7所示。用C语言实现虚继承interface的组件实体
定义一个interface的操作函数相关的数组,该数组类型Object_Ops[]每一条目对应一个在server端的框架函数,该类型成员的意义分别为:与client端的操作调用相对应的校验hash值;server端的框架函数(skel函数),在该框架函数里可以调用函数指针结构体内包含的函数指针。如图8所示,为数组类型Object_Ops示意图。
CORBA的ORB首先解析client端发来的GIOP请求包,把请求包发给对应的POA,POA根据请求包的Hash值,从数组Object_Ops[]中查找对应操作的框架函数。
通过框架函数再寻址对应的实现函数,如图9所示。
同理,由于FileComponent虚继承了POA_CF::File,它本来也应该由基类结构体POA_CF_File指针和自身的变量与实现函数指针共同组成,如图10所示:
步骤五:采用静态static类型定义实现函数和所有C语言实体
注意:这儿采用静态static类型定义了最终的实现函数FileComponent_read及以上所有的结构体。这是为了在编译时就分配了它们的运行空间,运行时不必再动态分配地址空间,所有实例相当于已经初始化好了。
POA_CF::File类里本来定义的interface操作都是纯虚函数
virtual void read(::CF::OctetSequence_out data,CORBA::ULong length)=0;
那么POA_CF_File_ptr结构体里定义的函数指针read也不会对应具体实现,现在采用初始化静态结构体的方法直接将实现函数的static地址赋值给框架函数指向的函数指针地址,使得对框架函数调用很容易就调用到了最终实现函数,大大简化了函数调用路径。
static POA_CF_File__ptr CF_File_ptr={NULL,…,FileComponent_read,…};
图11所示是用static定义几个结构体和所有的实现函数和框架函数,FileComponent在init函数中初始化后,这些数据结构的空间分配与函数指针值的对应关系。
2、在DSP上实现SCA的profile配置描述文件
SCA规范以XML文件方式定义了多种设备、组件和应用的profile配置描述文件,需要核心框架处理程序解析这些XML文件并根据解析结果进行控制处理,DSP擅长向量计算,非常不适合进行编码/解码处理,XML解析处理的效率很低。
为了去除原有的xml解析过程,可以将xml文件定义的各元素、属性等翻译成相应的c源码,将这个c源码文件可以编译以后与DSP上的c框架代码编译生成的代码打包成库。
对于xml解析标准文件(文档类型定义文件xml.dtd)来讲,可用结构体来表达每种Element,有嵌套描述的Element可以逐步分割成若干个不同类型的Elements,基本的Elements可由c语言中的基本数据类型描述。
以softpkg.4.1.dtd中定义的dependency Element为例,该Element的xml描述如下所示,可以分析得出每个dependency Element的基本元素是由最多5个CDATA属性组成,且每个CDATA属性的值均为字符串类型:
<!ELEMENT dependency(softpkgref|propertyref)>
<!ATTLIST dependency type CDATA#REQUIRED>
<!ELEMENT softpkgref(localfile,implref?)>
<!ELEMENT implref EMPTY>
<!ATTLIST implref refid CDATA#REQUIRED>
<!ELEMENT propertyref EMPTY>
<!ATTLIST propertyref refid CDATA#REQUIRED value CDATA#REQUIRED>
那么对于该Element就可以定义成如下的c语言结构体形式,其中的每个字符串元素属性均用char*类型的数据变量来表示,这样在用到dependency Element的地方就可以定义一个DependencyType结构体,并根据实际需求来填充结构体的相应成员变量:
在implementation Element的xml描述中,dependency Element为一个ChoiceGroup属性,可同时存在n个(n>=1):
<!ELEMENT implementation(…,(os|processor|dependency)+,…)>,那么在相应的ImplementationType结构体中,需要定义一个DependencyType类型的指针成员,该指针成员指向一个包含多个DependencyType类型数据的数组;一个int类型的整形成员,该整形成员表示该ImplementationType中所含的DependencyType的数量:
最后可以根据dependency Element的数量(n)来定义n个相应的DependencyType变量,并依次填充其char*成员的值;然后定义一个包含n个DependencyType的数组,并将该数组名作为指针赋值给ImplementationType中的相应指针成员(DependencyType*dependencies)、将n的值赋值给ImplementationType中的相应整形成员(intdependencyNums);那么在框架代码使用过程中,就可以根据这两个成员依次提取出每个DependencyType类型的值,再进行后续处理。
3、多核DSP上实现核心框架及多运算核上算法部署
高性能DSP是多核处理器,如何解决SCA核心框架服务合理地在多核DSP的运算核上部署算法的问题呢?
首先有一个前提,高性能多核DSP处理器上操作系统的多核调度策略采用的是AMP架构,即看起来每个核上都有一个独立的操作系统,但DSP处理器的主要任务是处理算法,SCA的框架层不能把各个运算核当做独立的节点单元,如果每个核上运行一套完整的框架节点服务占用资源会过多。考虑资源使用效率和性能,用以下方式:
如图5所示,零核作为管理核,有完整的中间件和框架,而其他核没有中间件环境。零核以外的其他核,在零核上对应同一个MHAL设备,同时在本地,各自运行着一个MHAL服务,来协助MHAL设备完成部署加卸载等操作。域管理器通过零核的设备管理器,拿到该MHAL设备的对象引用,所有操作都经过零核完成。这种方法的优点明显:其它核彻底摆脱CORBA中间件和复杂的框架任务,占用资源降到最低;零核只需要通过一个MHAL设备管理其它运算核的组件部署与通信。
在GPP和DSP上实现的SCA核心框架组成图如图13所示:
软件无线电系统中CPU又称为GPP(通用处理器),一般主控模块由GPP处理器管理,它被抽象为ExecutableDevice逻辑设备,主控模块上往往集成了音频、串口、网卡等设备,都被抽象为各类逻辑设备,主控模块上还运行着DomainManager、DeviceManager、FileManager、FileSystem、LogService等服务,负责设备管理、资源管理、应用管理。参照SCA规范的定义,信号处理模块上DSP高性能处理器也可以被抽象为ExecutableDevice,需要实现DeviceManager、FileSystem等核心框架服务,与主控模块上DomainManager配合完成核心框架对通信波形组件的生命周期管理服务。
组件与接口C实现的重要数据结构示意图如图12所示
以SCA核心框架中组件FileComponent虚继承自CF:File interface为例,C语言实现的组件结构体、虚表结构体、POA基类和继承类的函数指针结构体等重要数据结构的定义如图12所示。
优选例2:
软件通信体系结构(SCA)是软件无线电技术的一种国际标准规范,遵循SCA规范的核心框架负责将通信波形的组件分别部署到CPU/DSP/FPGA硬件处理单元上,负责组件的生命周期管理,并负责建立这些组件之间的连接(数据通信机制)。传统SCA的核心框架控制服务都只运行在CPU处理器上,DSP/FPGA仅仅作为可编程器件,只运行应用算法。本发明所要解决的技术问题是软件无线电系统中在高性能DSP上构建一个轻量化的SCA核心框架的实现方法,从而能跨异构CPU/DSP处理单元部署/卸载波形应用,并实现波形组件的高效连接。
随着DSP处理器性能的迅速提高,应该将多核、多任务调度处理、对存储、外设及中断等管理都交给嵌入式操作系统来完成;对跨CPU、DSP等分布式节点间的数据传输交给中间件来完成;对CPU/DSP上运行的波形及波形组件统一部署、统一管理的任务由SCA核心框架来完成。这样DSP上的波形组件更通用化,组件开发人员就能只专注于波形算法的实现,不必更多关心任务调度、资源管理、部署卸载、数据传输细节等。本发明通过在高性能DSP上运行嵌入式操作系统、轻量化标准中间件,用C语言实现component、interface等SCA元素、用结构体变量赋值的C程序代替XML域属性描述文件及解析、用多核DSP的零核作为管理核等方式在DSP上实现了一个轻量化的SCA核心框架。
本发明的关键技术及解决方案如下:
1、关键技术:DSP上仅支持C语言程序,以C语言编程实现SCA核心框架的component和interface等主要元素。
解决方案:SCA核心框架中component是最基本的对象实体,interface定义了component之间的接口形式,component一般虚继承或者聚合interface定义的虚函数,并负责这些函数的具体实现。以C语言编程实现SCA核心框架的component和interface等主要元素可以借鉴典型的C++语言编译器中处理子类虚继承基类、基类纯虚函数由子类函数多态实现的设计思想,将component定义为一个结构体struct,关键是结构体里要为每个component定义一个虚函数表指针,运行时初始化该component时,虚函数表里放的一是指向表示它的基类结构体的指针,二是指向当前component结构体中的实现函数的函数指针,这样获取了一个component的指针,就既能访问到它的基类里实现的函数,又能访问到它自己实现的函数了。
2、关键技术:SCA规范中核心框架定义的设备、应用和组件的描述文件都是XML文件,DSP需要高效处理SCA配置描述文件。
解决方案:本来SCA规范将设备、应用和组件等属性定义为DTD(Document TypeDefinition)文件,SCA应用开发工具遵照规范将可视化界面选填的设备、应用和组件的属性生成为XML文件,现在的方案是将规范定义的设备、应用和组件的属性定义为不同结构变量的元素,应用开发工具改造为生成可视化界面选填的设备、应用和组件的属性值赋给这些结构变量元素的C程序文件。
3、关键技术:如果高性能DSP是多核处理器,遵照SCA核心框架服务接口在多核DSP的运算核上部署算法。
解决方案:把高性能多核DSP当成一个信号处理节点,零核当做节点的管理核,其它核作为信号处理部件,这样既能支持SCA核心框架的设备管理服务、文件服务及逻辑设备等标准接口,又能不降低业务运算性能。
优选例3:
在某个具有一块P2020作为主控板卡、两块TI-6678DSP处理器板卡作为多通道信号处理器的软件无线通信项目中,分布式板卡以千兆以太网和SRIO总线连接。P2020主控板卡上运行着DomainManager、DeviceManager、FileManager、FileSystem、LogService等核心框架控制服务,在TI-6678DSP处理器上运行着C语言实现的DeviceManager、FileSystem等核心框架服务,GPU和DSP处理器上的接口都遵守SCA标准规范的定义。核心框架跨异构CPU/DSP处理单元将通信波形组件部署/卸载在P2020和TI-6678的除零核以外的其它运算核上,这些组件之间的数据传输依照规范通过组件的port连接端口进行。
在本申请的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (8)
1.一种DSP多核处理器上SCA核心框架的实现方法,其特征在于,包括:
步骤S1:用C语言实现SCA核心框架的组件component和interface;
步骤S2:在DSP上实现SCA的profile描述文件;
步骤S3:多核DSP上实现核心框架及多运算核上算法部署。
2.根据权利要求1所述的DSP多核处理器上SCA核心框架的实现方法,其特征在于,所述步骤S1:
步骤S101:用C结构体实现基础组件component的实体;
步骤S102:用C结构体实现派生组件的实体;
步骤S103:虚继承interface的组件的继承关系;
步骤S104:用C语言实现虚继承interface的组件实体;
步骤S105:采用静态static类型定义实现函数和所有C语言实体。
3.根据权利要求2所述的DSP多核处理器上SCA核心框架的实现方法,其特征在于,所述步骤S101:
当所述组件Component是组件化编程的基本元素时,C++中用C++类加XML属性描述表示一个component;
用C语言实现一个基础组件component的C++类,将C++类改为C语言的结构体:C++类的属性变量改为C结构体的数据成员;类的成员函数改为结构体中的函数指针,函数指针加了一个参数p,是指向该结构体的指针,该指针用来访问本组件结构体的成员。
4.根据权利要求2所述的DSP多核处理器上SCA核心框架的实现方法,其特征在于,所述步骤S102:
当组件Component是继承了C++基类的一个子类时,那么通常的方法在C结构体中增加一个成员,称为虚表指针,指向的虚表中存放的也是两个指针,一个指针指向基类结构体中的函数指针列表,另一指针指向子类结构体中的函数指针列表。这样就既能方便访问到基类定义的函数,也能方便访问到子类定义的函数了。
5.根据权利要求2所述的DSP多核处理器上SCA核心框架的实现方法,其特征在于,所述步骤S103:
SCA中的interface是组件化编程里表示组件之间调用接口的元素,组件的数据交互方式与操作函数定义,并没有操作函数的具体实现,具体实现在继承接口的组件中完成。
6.根据权利要求1所述的DSP多核处理器上SCA核心框架的实现方法,其特征在于,所述步骤S2:
将xml文件定义的各元素、属性等翻译成相应的c源码,将这个c源码文件可以编译以后与DSP上的c框架代码编译生成的代码打包成库;
对于xml解析标准文件,用结构体来表达每种Element,有嵌套描述的Element可以逐步分割成若干个不同类型的Elements,基本的Elements可由c语言中的基本数据类型描述。
7.根据权利要求1所述的DSP多核处理器上SCA核心框架的实现方法,其特征在于,所述步骤S3:
零核作为节点的管理核,有完整的中间件和框架,而其他核没有中间件环境;
零核以外的其他核,在零核上对应同一个MHAL设备,同时在本地,各自运行着一个MHAL服务,来协助MHAL设备完成部署加卸载操作;
域管理器通过零核的设备管理器,拿到该MHAL设备的对象引用,所有操作都经过零核完成。
8.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的DSP多核处理器上SCA核心框架的实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010113594.2A CN111443919B (zh) | 2020-02-24 | 2020-02-24 | Dsp多核处理器上sca核心框架的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010113594.2A CN111443919B (zh) | 2020-02-24 | 2020-02-24 | Dsp多核处理器上sca核心框架的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111443919A true CN111443919A (zh) | 2020-07-24 |
CN111443919B CN111443919B (zh) | 2023-06-09 |
Family
ID=71627166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010113594.2A Active CN111443919B (zh) | 2020-02-24 | 2020-02-24 | Dsp多核处理器上sca核心框架的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111443919B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112491426A (zh) * | 2020-11-17 | 2021-03-12 | 中国人民解放军战略支援部队信息工程大学 | 面向多核dsp的服务组件通信架构及任务调度、数据交互方法 |
CN113342332A (zh) * | 2021-05-31 | 2021-09-03 | 成都谐盈科技有限公司 | 一种基于模型驱动的组件可定制多接口的实现方法 |
CN113360136A (zh) * | 2021-05-31 | 2021-09-07 | 成都谐盈科技有限公司 | 一种基于sca核心框架控制接口的实现方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100146497A1 (en) * | 2008-12-08 | 2010-06-10 | Harris Corporation | Communications device with a plurality of processors and compatibility synchronization module for processor upgrades and related method |
CN102081545A (zh) * | 2011-01-07 | 2011-06-01 | 中国电子科技集团公司第十研究所 | 在嵌入式平台上实现软件通信架构的方法 |
CN109375903A (zh) * | 2018-09-25 | 2019-02-22 | 湖南理工学院 | Sca波形组件构建方法、装置、计算机设备和存储介质 |
-
2020
- 2020-02-24 CN CN202010113594.2A patent/CN111443919B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100146497A1 (en) * | 2008-12-08 | 2010-06-10 | Harris Corporation | Communications device with a plurality of processors and compatibility synchronization module for processor upgrades and related method |
CN102081545A (zh) * | 2011-01-07 | 2011-06-01 | 中国电子科技集团公司第十研究所 | 在嵌入式平台上实现软件通信架构的方法 |
CN109375903A (zh) * | 2018-09-25 | 2019-02-22 | 湖南理工学院 | Sca波形组件构建方法、装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
雷鹏斌: "软件无线电系统中CORBA中间件关键技术研究与实现" * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112491426A (zh) * | 2020-11-17 | 2021-03-12 | 中国人民解放军战略支援部队信息工程大学 | 面向多核dsp的服务组件通信架构及任务调度、数据交互方法 |
CN112491426B (zh) * | 2020-11-17 | 2022-05-10 | 中国人民解放军战略支援部队信息工程大学 | 面向多核dsp的服务组件通信架构及任务调度、数据交互方法 |
CN113342332A (zh) * | 2021-05-31 | 2021-09-03 | 成都谐盈科技有限公司 | 一种基于模型驱动的组件可定制多接口的实现方法 |
CN113360136A (zh) * | 2021-05-31 | 2021-09-07 | 成都谐盈科技有限公司 | 一种基于sca核心框架控制接口的实现方法 |
CN113342332B (zh) * | 2021-05-31 | 2023-11-03 | 成都谐盈科技有限公司 | 一种基于模型驱动的组件可定制多接口的实现方法 |
CN113360136B (zh) * | 2021-05-31 | 2023-11-03 | 成都谐盈科技有限公司 | 一种基于sca核心框架控制接口的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111443919B (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10146515B1 (en) | Live code updates | |
CN110673853B (zh) | 一种编译方法、装置及系统 | |
CN111443919B (zh) | Dsp多核处理器上sca核心框架的实现方法 | |
CN111309291B (zh) | 一种模块化嵌入式软件架构及其定制方法、定制系统 | |
Colaço et al. | Towards a higher-order synchronous data-flow language | |
CN111897570A (zh) | 一种基于Maven插件的多依赖项文件提取方法及装置 | |
US10949171B1 (en) | Tools, mechanisms, and processes for transforming modules for an application into pluggable modules | |
CN111897539A (zh) | 一种根据服务角色的进行应用部署的方法及装置 | |
US10514898B2 (en) | Method and system to develop, deploy, test, and manage platform-independent software | |
CAHILL | Dynamic software evolution and the k-component model | |
CN110362301B (zh) | 一种终端应用行为反射的处理方法 | |
KR20030044916A (ko) | 모듈러 컴퓨터 시스템 및 관련 프로세스 | |
CN110928531A (zh) | 一种电磁频谱监测系统软件平台构建方法 | |
Miceli et al. | Programming abstractions for data intensive computing on clouds and grids | |
CN113900704A (zh) | 应用程序安装包的发布方法、装置、可读介质及电子设备 | |
Dearle et al. | A component-based model and language for wireless sensor network applications | |
CN109597611B (zh) | 前端数据流控制组件开发系统、方法、设备及存储介质 | |
CN114168151B (zh) | 基于容器的程序编译方法、装置、电子设备及存储介质 | |
CN110955415A (zh) | 一种投影多平台服务适配的方法 | |
US11435989B2 (en) | Thread-local return structure for asynchronous state machine | |
CN114816475A (zh) | 一种嵌入式操作系统的更新方法、装置、设备和介质 | |
Navas et al. | Reconciling run-time evolution and resource-constrained embedded systems through a component-based development framework | |
Ma et al. | Efficient Scheduler Live Update for Linux Kernel with Modularization | |
Hu et al. | Safety critical applications and hard real-time profile for Java: a case study in avionics | |
CN116909547B (zh) | 基于axi框架的业务功能在线开发方法、实现方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |