CN116483481A - 一种固件库调用方法、装置、设备及存储介质 - Google Patents
一种固件库调用方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116483481A CN116483481A CN202310514189.5A CN202310514189A CN116483481A CN 116483481 A CN116483481 A CN 116483481A CN 202310514189 A CN202310514189 A CN 202310514189A CN 116483481 A CN116483481 A CN 116483481A
- Authority
- CN
- China
- Prior art keywords
- firmware
- library
- function
- interface
- calling
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000006870 function Effects 0.000 claims abstract description 109
- 238000012545 processing Methods 0.000 claims description 19
- 238000010586 diagram Methods 0.000 claims description 14
- 230000015654 memory Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 12
- 230000008520 organization Effects 0.000 claims description 6
- 238000011161 development Methods 0.000 claims description 4
- 239000011800 void material Substances 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/311—Functional or applicative languages; Rewrite languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- 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)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种固件库调用方法、装置、设备及存储介质,定义固件库接口规范,提供固件库接口注册函数,使用C语言定义固件数据结构、对外接口,并编译为固件库,系统运行时内核在初始化时加载固件库,获取固件注册的接口函数;组态软件创建工程时选择固件库模式,使用IEC61131‑3标准描述固件数据结构,自动形成固件符号库;组态软件创建工程时选择工程模式,加载导入固件库,创建固件库符号实例,设置输入输出形参数据连线,形成标准的结构化文本功能块实例调用代码,将结构化文本代码转换为C语言,基于固件接口名称,调用接口函数,实现固件初始化/运行功能。本发明支持IEC61131‑3语言调用C语言分支的固件库功能,实现了信息隐藏,保护了知识产权。
Description
技术领域
本发明属于可编程控制器领域,具体涉及一种固件库调用方法、装置、设备及存储介质。
背景技术
在工业流程控制领域,一些涉及用户核心技术的功能,用户希望使用C语言编写并不对其他用户开放源码,需要在实现信息隐藏封装的前提下,支持IEC61131-3标准语言中使用固件库,本案由此产生。
发明内容
本发明的目的,在于提供一种固件库调用方法、装置、设备及存储介质,适用于现有标准体系,实现了固件库高效运行和信息隐藏,提升了安全性。
为了达成上述目的,本发明的解决方案是:
一种固件库调用方法,包括如下步骤:
步骤1,定义固件库接口规范,提供固件库接口注册函数,按照接口规范定义,使用C语言定义固件数据结构、对外接口,并编译为固件库;
步骤2,组态软件创建工程时选择固件库模式,使用IEC61131-3标准描述固件数据结构,自动形成固件符号库;
步骤3,组态软件创建工程时选择工程模式,加载导入固件库,在功能块图/梯形图/结构化文本中创建固件库符号实例,设置输入输出形参数据连线,形成标准的结构化文本功能块实例调用代码;
步骤4,将结构化文本代码转换为C语言代码,并对固件库实例调用函数做接口映射处理;
步骤5,系统运行时在初始化时加载固件库,获取固件注册的接口函数;加载应用程序库,基于固件接口名称,调用系统接口函数查找固件注册的接口函数,调用接口函数,实现固件初始化/运行功能。
上述步骤2还包括,新建程序组织单元ExtADDFB,选择类型为功能块,使用结构化文本语言描述固件库数据结构。
上述步骤4中,对固件库实例调用函数做接口映射处理,包括,自动形成函数指针范式声明,调用系统接口函数,基于固件名称获取固件运行函数指针,调用运行函数指针。
一种固件库调用装置,包括,
固件开发模块,被配置为用于定义固件库接口规范,提供固件库接口注册函数,按照接口规范定义,使用C语言定义固件数据结构、对外接口,并编译为固件库;
固件符号库制作模块,被配置为使用IEC61131-3标准描述固件数据结构,自动形成固件符号库;
固件使用模块,被配置为用于供组态软件创建工程时加载导入固件库,在功能块图/梯形图/结构化文本中创建固件库符号实例,设置输入输出形参数据连线,形成标准的结构化文本功能块实例调用代码;
固件处理模块,被配置为用于将结构化文本代码转换为C语言代码,并对固件库实例调用函数做接口映射处理;以及,
固件运行模块,被配置为用于在系统运行时初始化时加载固件库,获取固件注册的接口函数;加载应用程序库,基于固件接口名称,调用系统接口函数查找固件注册的接口函数,调用接口函数,实现固件初始化/运行功能。
上述固件符号库制作模块还被配置为用于新建程序组织单元ExtADDFB,选择类型为功能块,使用结构化文本语言描述固件库数据结构。
上述固件处理模块对固件库实例调用函数做接口映射处理,包括,自动形成函数指针范式声明,调用系统接口函数,基于固件名称获取固件运行函数指针,调用运行函数指针。
一种计算机设备,包括存储器、处理器,以及存储在所述存储器中并可在所述处理器上运行的计算机程序;所述处理器执行所述计算机程序时实现如前所述的固件库调用方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序;所述计算机程序被处理器执行时实现如前所述的固件库调用方法的步骤。
采用上述方案后,本发明在不改变结构化文本语法和文法体系前提下,实现了面向底层功能使用C语言编码和编译运行,面向用户开放接口符号使用,组态软件自动转换为可以运行的接口函数使用代码,支持IEC61131-3语言调用C语言分支的固件库功能,实现了固件库高效运行和信息隐藏,提升了安全性。
附图说明
图1是本发明中固件调用方法原理图;
图2是本发明中固件开发使用流程图;
图3是本发明中固件符号使用示例图。
具体实施方式
以下将结合附图,对本发明的技术方案及有益效果进行详细说明。
如图1所示,本发明实施例提供一种固件库调用方法,并同时配合图2,包括如下步骤:
步骤1,定义固件库接口规范,提供固件库接口注册函数,按照接口规范定义,使用C语言定义固件数据结构、对外接口,并编译为固件库;
以1个自定义加法功能块ExtADDFB为例,其固件库C数据结构和函数可如下所示,其结构体有IN1、IN2两个输入,有RESULT输出。有初始化函数函数initExtADDFB、运行函数runExtADDFB,固件初始化extLibInit函数,运行时软件加载估计库后,调用extLibInit函数,注册了“INITEXTADDFB”初始化函数、“RUNEXTADDFB”运行函数;
//固件库功能块结构体
typedef struct ExtADDFB
{
int IN1;
int IN2;
int RESULT;
};
//固件库功能块初始化函数
void initExtADDFB(ExtADDFB*dp)
{
memset(dp,0,sizeof(ExtAddFB));
}
//固件库功能块运行函数
void runExtADDFB(ExtADDFB*dp)
{
dp->RESULT=dp->IN1+dp->IN2;
}
//固件库注册函数,功能块初始化加INIT,运行函数RUNvoid extLibInit(RuntimeApi*papi)
{
papi->pfAddExtLibFunc("INITEXTADDFB",(void*)initExtADDFB);//功能块初始化
papi->pfAddExtLibFunc("RUNEXTADDFB",(void*)runExtADDFB);//功能块运行
}
步骤2,组态软件创建工程时选择固件库模式,使用IEC61131-3标准描述固件数据结构,自动形成固件符号库;
优选地,新建程序组织单元ExtADDFB,选择类型为功能块,使用结构化文本语言描述固件库数据结构;
下面给出固件符号库IEC61131-3结构化文本描述示例,只需描述接口变量名称、类型,实体代码用RETURN;返回。组态软件根据输入分组VAR_INPUT、输出分组VAR_OUTPUT自动形成固件符号的图形。
FUNCTION_BLOCK ExtAddFB
VAR_INPUT
IN 1:INT;
IN 2:INT;
END_VAR
VAR_OUTPUT
RESULT:INT;
END_VAR
RETURN;
END_FUNCTION
步骤3,组态软件创建工程时选择工程模式,加载导入固件库,在功能块图/梯形图/结构化文本中创建固件库符号实例,设置输入输出形参数据连线,形成标准的结构化文本功能块实例调用代码;
步骤4,将结构化文本代码转换为C语言代码,并对固件库实例调用函数做接口映射处理;
其中,固件库实例调用函数做接口映射处理,具体指:自动形成函数指针范式声明,调用系统接口函数(函数查找函数),基于固件名称获取固件运行函数指针,调用运行函数指针。支持图形或文本方式使用固件符号库,图形方式如图3所示,结构化文本使用示例如下:
ExtADDFB1:ExtADDFB;
ExtADDFB1(IN1:=GVAR1,IN2:=GVAR2,RESULT=>GVAR3);
C代码转换示例如下:
Typdef INT(*pExtFunc)(INT,INT);
pExtFunc pfunc=(pExtFunc)RTE_API.pfSearchExtLibFunc(“EXTADDFUNC”);if(pfunc)
{
GVAR3=pfunc(GVAR1,GVAR2);
}
在转换为C代码阶段,自动形成固件接口函数声明、查找和调用的代码。
步骤5,系统运行时内核在初始化时加载固件库,获取固件注册的接口函数。加载应用程序库,基于固件接口名称,调用系统接口函数查找固件注册的接口函数,调用接口函数,实现固件初始化/运行功能。
本发明实施例还提供一种固件库调用装置,包括:
固件开发模块,被配置为用于定义固件库接口规范,提供固件库接口注册函数,按照接口规范定义,使用C语言定义固件数据结构、对外接口,并编译为固件库;
固件符号库制作模块,被配置为使用IEC61131-3标准描述固件数据结构,自动形成固件符号库;优选地,新建程序组织单元ExtADDFB,选择类型为功能块,使用结构化文本语言描述固件库数据结构;
固件使用模块,被配置为用于供组态软件创建工程时加载导入固件库,在功能块图/梯形图/结构化文本中创建固件库符号实例,设置输入输出形参数据连线,形成标准的结构化文本功能块实例调用代码;
固件处理模块,被配置为用于将结构化文本代码转换为C语言代码,并对固件库实例调用函数做接口映射处理;以及,
固件运行模块,被配置为用于在系统运行时加载固件库,获取固件注册的接口函数;加载应用程序库,基于固件接口名称,调用系统接口函数查找固件注册的接口函数,调用接口函数,实现固件初始化/运行功能。
其中,固件处理模块对固件库实例调用函数做接口映射处理,具体指:自动形成函数指针范式声明,调用系统接口函数(函数查找函数),基于固件名称获取固件运行函数指针,调用运行函数指针。
本发明实施例还提供了另一种计算机设备,该用于固件库调用的计算机设备包括:处理器和配置为存储能够在处理器上运行的计算机程序的存储器;
其中,处理器配置为运行计算机程序时,执行前述实施例中的方法步骤。
当然,实际应用时,该数据交换设备中的各个组件通过总线系统耦合在一起。可理解,总线系统用于实现这些组件之间的连接通信。总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
在实际应用中,上述处理器包括现场可编程门阵列(Field-Programmable GateArray,FPGA)、处理器可以为中央处理器CPU(Central Processing Unit)或数字信号处理器(DSP,Digital Signal Processing)。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本发明实施例不作具体限定。
上述存储器可以是易失性存储器(volatile memory),例如随机存取存储器(RAM,Random-Access Memory);或者非易失性存储器(non-volatile memory),例如只读存储器(ROM,Read-Only Memory),快闪存储器(flash memory),硬盘(HDD,Hard Disk Drive)或固态硬盘(SSD,Solid-State Drive);或者上述种类的存储器的组合,并向处理器提供指令和数据。
在示例性实施例中,本发明实施例还提供了一种计算机可读存储介质,用于存储计算机程序。
可选的,该计算机可读存储介质可应用于本发明实施例中的任意一种方法,并且该计算机程序使得计算机执行本发明实施例的各个方法中由处理器实现的相应流程,为了简洁,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
Claims (8)
1.一种固件库调用方法,其特征在于包括如下步骤:
步骤1,定义固件库接口规范,提供固件库接口注册函数,按照接口规范定义,使用C语言定义固件数据结构、对外接口,并编译为固件库;
步骤2,组态软件创建工程时选择固件库模式,使用IEC61131-3标准描述固件数据结构,自动形成固件符号库;
步骤3,组态软件创建工程时选择工程模式,加载导入固件库,在功能块图/梯形图/结构化文本中创建固件库符号实例,设置输入输出形参数据连线,形成标准的结构化文本功能块实例调用代码;
步骤4,将结构化文本代码转换为C语言代码,并对固件库实例调用函数做接口映射处理;
步骤5,系统运行时在初始化时加载固件库,获取固件注册的接口函数;加载应用程序库,基于固件接口名称,调用系统接口函数查找固件注册的接口函数,调用接口函数,实现固件初始化/运行功能。
2.如权利要求1所述的固件库调用方法,其特征在于:所述步骤2还包括,新建程序组织单元ExtADDFB,选择类型为功能块,使用结构化文本语言描述固件库数据结构。
3.如权利要求1所述的固件库调用方法,其特征在于:所述步骤4中,对固件库实例调用函数做接口映射处理,包括,自动形成函数指针范式声明,调用系统接口函数,基于固件名称获取固件运行函数指针,调用运行函数指针。
4.一种固件库调用装置,其特征在于:包括,
固件开发模块,被配置为用于定义固件库接口规范,提供固件库接口注册函数,按照接口规范定义,使用C语言定义固件数据结构、对外接口,并编译为固件库;
固件符号库制作模块,被配置为使用IEC61131-3标准描述固件数据结构,自动形成固件符号库;
固件使用模块,被配置为用于供组态软件创建工程时加载导入固件库,在功能块图/梯形图/结构化文本中创建固件库符号实例,设置输入输出形参数据连线,形成标准的结构化文本功能块实例调用代码;
固件处理模块,被配置为用于将结构化文本代码转换为C语言代码,并对固件库实例调用函数做接口映射处理;以及,
固件运行模块,被配置为用于在系统运行时初始化时加载固件库,获取固件注册的接口函数;加载应用程序库,基于固件接口名称,调用系统接口函数查找固件注册的接口函数,调用接口函数,实现固件初始化/运行功能。
5.如权利要求4所述的固件库调用装置,其特征在于:所述固件符号库制作模块还被配置为用于新建程序组织单元ExtADDFB,选择类型为功能块,使用结构化文本语言描述固件库数据结构。
6.如权利要求4所述的固件库调用装置,其特征在于:所述固件处理模块对固件库实例调用函数做接口映射处理,包括,自动形成函数指针范式声明,调用系统接口函数,基于固件名称获取固件运行函数指针,调用运行函数指针。
7.一种计算机设备,包括存储器、处理器,以及存储在所述存储器中并可在所述处理器上运行的计算机程序;其特征在于:所述处理器执行所述计算机程序时实现如权利要求1至3任一项所述的固件库调用方法的步骤。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序;其特征在于:所述计算机程序被处理器执行时实现如权利要求1至3任一项所述的固件库调用方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310514189.5A CN116483481A (zh) | 2023-05-08 | 2023-05-08 | 一种固件库调用方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310514189.5A CN116483481A (zh) | 2023-05-08 | 2023-05-08 | 一种固件库调用方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116483481A true CN116483481A (zh) | 2023-07-25 |
Family
ID=87211805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310514189.5A Pending CN116483481A (zh) | 2023-05-08 | 2023-05-08 | 一种固件库调用方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116483481A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117806852A (zh) * | 2024-03-01 | 2024-04-02 | 傲拓科技股份有限公司 | 一种接口调用方法、装置、存储介质及处理器 |
-
2023
- 2023-05-08 CN CN202310514189.5A patent/CN116483481A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117806852A (zh) * | 2024-03-01 | 2024-04-02 | 傲拓科技股份有限公司 | 一种接口调用方法、装置、存储介质及处理器 |
CN117806852B (zh) * | 2024-03-01 | 2024-05-14 | 傲拓科技股份有限公司 | 一种接口调用方法、装置、存储介质及处理器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9952841B2 (en) | Programming system and language for application development | |
CN110149800B (zh) | 一种用于处理与源程序的源代码相关联的抽象语法树的装置 | |
KR20220002823A (ko) | 딥러닝 프레임워크에서의 연산자의 배치 방법, 장치 및 전자 기기 | |
CN111897553B (zh) | 一种项目系统搭建方法、装置、设备及可读存储介质 | |
CN116483481A (zh) | 一种固件库调用方法、装置、设备及存储介质 | |
CN111427583A (zh) | 组件的编译方法、装置和电子设备及计算机可读存储介质 | |
CN113918195A (zh) | 应用界面更新方法、装置、电子设备及可读存储介质 | |
CN111240761B (zh) | 一种配置文件的加载方法和装置 | |
CN116737117A (zh) | 基于Autosar架构的模型开发方法 | |
CN114117992B (zh) | 一种序列化和反序列化方法、装置和电子设备 | |
CN110097464B (zh) | 智能合约的生成方法、装置、电子设备与存储介质 | |
CN111552464A (zh) | 一种sdk生成方法、装置、设备及介质 | |
CN111610966A (zh) | 程序的运行方法、装置和计算设备 | |
CN101882066B (zh) | 创建具体类的实现方法 | |
CN116360887A (zh) | 一种程序参数加载方法、装置、设备及存储介质 | |
CN111782196A (zh) | 基于mvp架构的开发方法及装置 | |
CN114115850A (zh) | 一种代码生成方法及装置 | |
CN117289913B (zh) | 编译器源文件处理方法、电子设备和介质 | |
CN116483597B (zh) | 一种数据共享方法、装置、设备和存储介质 | |
CN111782183B (zh) | 用于判断组件依赖关系的方法及设备、电子设备和介质 | |
CN116523052B (zh) | 一种快速推理方法、装置及设备 | |
CN114579135B (zh) | 一种安装包生成方法及装置 | |
CN117492707A (zh) | 编译执行Solidity合约的方法、装置、存储介质以及电子设备 | |
CN116882506A (zh) | 一种量子门电路转换方法、装置、电子设备及存储介质 | |
CN116048604A (zh) | Web应用版本管理系统、方法及相应计算机设备和存储介质 |
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 |