[发明专利]安全冗余编译运行方法、计算机设备及可读存储介质在审

专利信息
申请号: 202210271424.6 申请日: 2022-03-18
公开(公告)号: CN114780382A 公开(公告)日: 2022-07-22
发明(设计)人: 张磊;陈宏君;李响;文继锋;周强;曾凯;刘坤;赵天恩 申请(专利权)人: 南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司
主分类号: G06F11/36 分类号: G06F11/36;G06F8/41
代理公司: 南京经纬专利商标代理有限公司 32200 代理人: 姜慧勤
地址: 211102 江*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 安全 冗余 编译 运行 方法 计算机 设备 可读 存储 介质
【权利要求书】:

1.一种安全冗余编译运行方法,其特征在于:将IEC61131-3程序统一转换为结构化文本语言ST描述,将ST通过不同的编译器处理形成目标产物,分别下载到多核处理器独立运行,运算结果通过三系表决器表决。

2.如权利要求1所述安全冗余编译运行方法,其特征在于:所述将ST通过不同的编译器处理形成目标产物为,将ST转换为C语言,集成调用GCC编译器形成机器码目标文件1;将ST转换为LLVM IR指令集,调用LLVM后端编译器形成机器码目标文件2;采用自主编译器解析ST文本,形成语义树,输出自定义中间指令集,形成虚拟机指令文件3。

3.如权利要求2所述安全冗余编译运行方法,其特征在于:所述集成调用GCC编译器的过程中,修改GCC源代码,将基于读取Makefile文件获取文件目录的编译方式修改为从内存中获取编译文件,避免明文代码信息的泄露。

4.如权利要求2所述安全冗余编译运行方法,其特征在于:所述自主编译器为,定义机器无关的中间指令集,基于IEC61131-3标准定义ST文法,使用flex作为词法分析工具,使用bison作为语法分析工具,通过flex+bison作用形成语义树,遍历语义树,输出虚拟机三地址码指令,三地址码的地址记录的是变量在虚拟数据区的索引。

5.如权利要求4所述安全冗余编译运行方法,其特征在于:当使能除零、数组越界防误选项时,在语义树中嵌入增加形参是否为0、数组下标和边界值比较的子树,若触发条件调用日志记录函数,便于调试模式下追踪分析。

6.如权利要求2所述安全冗余编译运行方法,其特征在于:所述虚拟机指令文件3采用快速解释器执行,在初始化阶段构建形成指令序列和关联的解析函数指针,在运行过程通过执行预编译函数调用方式执行,不需要再判断指令类型。

7.如权利要求1所述安全冗余编译运行方法,其特征在于:所述多核处理器至少包括4个核,其中1个核运行管理维护程序,获取待下载目标文件、指令文件,其余核分别独立运行机器码目标文件1、机器码目标文件2和虚拟机指令文件3。

8.如权利要求1所述安全冗余编译运行方法,其特征在于:所述三系表决器的表决方案,对于模拟量取中值,对于状态量采用三取二表决,用于表决的核间数据采用共享内存方式访问。

9.如权利要求1所述安全冗余编译运行方法,其特征在于:通过构建交叉编译环境编译器支持多种硬件处理器。

10.一种计算机设备,其特征在于:包括处理器和存储器,所述存储器用于存储程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-9中任意一项所述安全冗余编译运行方法。

11.一种计算机可读存储介质,其特征在于:存储有程序指令,所述程序指令用于执行如权利要求1-9中任意一项所述安全冗余编译运行方法。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司,未经南京南瑞继保电气有限公司;南京南瑞继保工程技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202210271424.6/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top