CN117289915B - 基于配置表的星载软件代码生成方法和装置 - Google Patents

基于配置表的星载软件代码生成方法和装置 Download PDF

Info

Publication number
CN117289915B
CN117289915B CN202311576443.0A CN202311576443A CN117289915B CN 117289915 B CN117289915 B CN 117289915B CN 202311576443 A CN202311576443 A CN 202311576443A CN 117289915 B CN117289915 B CN 117289915B
Authority
CN
China
Prior art keywords
parameter
processing type
byte
expression
processing
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
CN202311576443.0A
Other languages
English (en)
Other versions
CN117289915A (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.)
Beijing Institute of Control Engineering
Original Assignee
Beijing Institute of Control Engineering
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 Beijing Institute of Control Engineering filed Critical Beijing Institute of Control Engineering
Priority to CN202311576443.0A priority Critical patent/CN117289915B/zh
Publication of CN117289915A publication Critical patent/CN117289915A/zh
Application granted granted Critical
Publication of CN117289915B publication Critical patent/CN117289915B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)

Abstract

本发明涉及数据打包技术领域,特别涉及一种基于配置表的星载软件代码生成方法和装置。其中,方法包括:定义每一种参数类型的打包函数宏和解包函数宏;针对每一个关键数据,均执行:基于打包和解包当前关键数据所需的解析协议,生成配置表;基于配置表中每一个参数对应的第一处理类型和处理该参数所需的第一表达式,来调用每一个参数对应的打包函数宏,以基于每一个参数的配置信息依次生成每一个参数的打包代码,以将当前关键数据打包为重要数据;当接收到解包指令时,基于配置表和各解包函数宏,依次生成每一个参数的解包代码。本方案,对不同协议的参数类型进行分类,通过配置表实现打包解包代码自动生成,大大提高了软件研制的效率和可靠性。

Description

基于配置表的星载软件代码生成方法和装置
技术领域
本发明实施例涉及数据打包技术领域,特别涉及一种基于配置表的星载软件代码生成方法和装置。
背景技术
星载控制计算机在计算机复位或切机后,按照预先保存的重要数据进行软件状态的恢复。应用软件在运行过程中,将用于恢复状态的关键数据打包保存为重要数据,在发生复位或切机后对重要数据解包并进行软件的状态恢复。
然而,以往重要数据的打包和解包代码主要为人工编写,随着星载控制系统的不断发展,重要数据的数据量、数据类型会不断增加,且用于打包和解包的数据解析协议会愈加更改频繁。那么,当关键数据变化时,需人为对原有代码进行逐项修改,不仅大大增加了软件研制人员的工作量,而且复杂性的提高容易导致研制人员漏改错改代码,导致软件出现错误。
因此,亟需一种基于配置表的星载软件代码生成方法。
发明内容
为了解决人工编写打包和解包代码不仅工作量大,而且容易出错的问题,本发明实施例提供了一种基于配置表的星载软件代码生成方法和装置。
第一方面,本发明实施例提供了一种基于配置表的星载软件代码生成方法,方法包括:
定义每一种参数类型的打包函数宏和解包函数宏;其中,所述打包函数宏用于将关键数据中对应类型的变量打包至缓存区,以生成重要数据;所述解包函数宏用于将重要数据解包为对应类型的变量;
针对获取的每一个关键数据,均执行:
基于打包和解包当前关键数据所需的解析协议,生成配置表;其中,所述配置表含有所述解析协议定义的所有参数、各参数的配置信息、各参数对应的第一处理类型和处理该参数所需的第一表达式;
基于所述配置表中每一个参数对应的第一处理类型和处理该参数所需的第一表达式,来调用每一个参数对应的打包函数宏,以基于每一个参数的配置信息依次生成每一个参数的打包代码,以将当前关键数据打包为重要数据;
当接收到解包指令时,基于所述配置表中每一个参数的配置信息、每一个参数对应的第一处理类型、处理该参数所需的第一表达式和各解包函数宏,依次生成每一个参数的解包代码。
第二方面,本发明实施例还提供了一种基于本说明书任一实施例所述方法的基于配置表的星载软件代码生成装置,包括:
定义单元,用于定义每一种参数类型的打包函数宏和解包函数宏;其中,所述打包函数宏用于将关键数据中对应类型的变量打包至缓存区,以生成重要数据;所述解包函数宏用于将重要数据解包为对应类型的变量;
生成单元,用于针对获取的每一个关键数据,均执行:基于打包和解包当前关键数据所需的解析协议,生成配置表;其中,所述配置表含有所述解析协议定义的所有参数、各参数的配置信息、各参数对应的第一处理类型和处理该参数所需的第一表达式;
打包单元,用于基于所述配置表中每一个参数对应的第一处理类型和处理该参数所需的第一表达式,来调用每一个参数对应的打包函数宏,以基于每一个参数的配置信息依次生成每一个参数的打包代码,以将当前关键数据打包为重要数据;
解包单元,用于当接收到解包指令时,基于所述配置表中每一个参数的配置信息、每一个参数对应的第一处理类型、处理该参数所需的第一表达式和各解包函数宏,依次生成每一个参数的解包代码。
第三方面,本发明实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现本说明书任一实施例所述的方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行本说明书任一实施例所述的方法。
本发明实施例提供了一种基于配置表的星载软件代码生成方法和装置,通过对各种协议参数的类型进行分类,可以支持不同参数类型的打包和解包;通过建立遥测协议参数与代码变量的映射信息表,即配置表,可以基于配置表和定义的各参数类型的函数宏,来提取配置表中的任一星载协议参数,进行打包和解包代码的自动生成。本方案,可以大大提高软件代码的研制效率和可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种基于配置表的星载软件代码生成方法的流程图;
图2是本发明一实施例提供的一种计算设备的硬件架构图;
图3是本发明一实施例提供的一种基于配置表的星载软件代码生成装置结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,本发明实施例提供了一种基于配置表的星载软件代码生成方法,该方法包括:
步骤100,定义每一种参数类型的打包函数宏和解包函数宏;其中,第一表达式打包函数宏用于将关键数据中对应类型的变量打包至缓存区,以生成重要数据;第一表达式解包函数宏用于将重要数据解包为对应类型的变量;
步骤102,针对获取的每一个关键数据,均执行:基于打包和解包当前关键数据所需的解析协议,生成配置表;其中,第一表达式配置表含有第一表达式解析协议定义的所有参数、各参数的配置信息、各参数对应的第一处理类型和处理该参数所需的第一表达式;
步骤104,基于第一表达式配置表中每一个参数对应的第一处理类型和处理该参数所需的第一表达式,来调用每一个参数对应的打包函数宏,以基于每一个参数的配置信息依次生成每一个参数的打包代码,以将当前关键数据打包为重要数据;
步骤106,当接收到解包指令时,基于第一表达式配置表中每一个参数的配置信息、每一个参数对应的第一处理类型、处理该参数所需的第一表达式和各解包函数宏,依次生成每一个参数的解包代码。
本发明实施例中,通过对各种协议参数的类型进行分类,可以支持不同参数类型的打包和解包;通过建立遥测协议参数与代码变量的映射信息表,即配置表,可以基于配置表和定义的各参数类型的函数宏,来提取配置表中的任一星载协议参数,进行打包和解包代码的自动生成。本方案,可以大大提高软件代码的研制效率和可靠性。
针对步骤100:
在一些实施方式中,参数类型至少包括变量型、比特位型、数据块型、总线消息型;
变量型的函数宏包括一至八字节中每一个数量的打包函数宏和解包函数宏;比特位型的函数宏包括比特位打包函数宏、比特位解包函数宏;数据块型的函数宏包括数据块打包函数宏、数据块解包函数宏;总线消息型的函数宏包括总线消息打包函数宏、总线消息解包函数宏。
在本实施例中,变量型的函数宏包括1字节的打包函数宏和解包函数宏,2字节的打包函数宏和解包函数宏,依此类推至8字节的打包函数宏和解包函数宏,变量型的函数宏的宏参数包括代表的变量;比特位型的函数宏中宏参数包括起始比特位、占用比特位、代表的变量;数据块型的函数宏中宏参数包括数据块的起始地址和长度;总线消息型的函数宏中宏参数包括总线消息的编号。定义均按字节操作,使代码与大小端无关,确保在不同平台下数据的高低字节顺序具有一致性。通过宏的使用,简化了生成的代码,提高了代码的可读性。
针对步骤102:
在一些实施方式中,配置表包括主表和附表,主表中含有解析协议定义的所有参数、各参数的配置信息、各参数对应的第一处理类型和处理该参数所需的第一表达式;其中,配置信息包括起始字节、字节数、数据格式、当量和单位;起始字节和字节数用于表征打包时该参数所存储的字节位置和所占字节个数;
第一处理类型包括单参数处理和多参数处理,第一处理类型为0、4、5和6时为单参数处理,多参数处理分为两种情况,第一种情况为首个参数的第一处理类型为3,最后一个参数的第一处理类型为1,第二种情况为首个参数的第一处理类型为3,最后一个参数的第一处理类型为2;
第一处理类型为0时,第一表达式为单个变量或常数或C语句,对应的参数为变量型;第一处理类型为4时,第一表达式为该单个参数对应的总线消息的编号、总线消息内需要处理的开始字节和字节长度;第一处理类型为5时,第一表达式为该单个参数对应的数据块的内存地址和字节长度;第一处理类型为6时,第一表达式为对应附表的名称,代表该参数为比特位型,需要按照对应附表进行按位打包;
第一处理类型为3时,代表该参数为目标总线消息或目标数据块的起始参数,对应第一表达式为空,若该目标总线消息或该目标数据块对应N个参数,在配置表中第一处理类型为3的参数下的N-2个参数对应的第一处理类型和第一表达式均为空,当第一处理类型为3的参数下的第N-1个参数对应的第一处理类型为1时,该第一处理类型为1的参数对应的第一表达式为目标总线消息的编号、目标总线消息内需要处理的开始字节和字节长度;当第一处理类型为3的参数下的第N-1个参数对应的第一处理类型为2时,该第一处理类型为2的参数对应的第一表达式为目标数据块的内存地址和字节长度。
在本实施例中,将输入文件中的协议输入到Excel中,生成配置表。主表的表头如下表1所示。
表1 主表表头
表中,起始字节表示该参数打包时存储的字节位置;字节数表示该参数所占的字节个数;数据格式表示该参数的类型格式,如原码、补码、浮点;当量表示该参数的乘系数,如57.3;单位表示该参数的单位,如度、km;表达式表示该参数的变量或代码段,第一处理类型和第一表达式配合使用,当第一处理类型不同时,第一表达式中的内容也不同。
本实施例中的单参数处理支持协议参数与软件变量一一对应,而多参数处理支持多协议参数与多个软件变量对应。需要说明的是,只有第一处理类型为6的参数才有对应的附表,每个第一处理类型为6的参数对应一个附表。
针对步骤104:
在一些实施方式中,当参数对应的第一处理类型为0时,该参数的打包过程为:
基于该参数的单位,将对应第一表达式乘以相应倍数,得到单位处理后的第一表达式;
基于配置表中该参数的字节数,调用变量型的函数宏中对应字节数量的打包函数宏,以基于单位处理后的第一表达式、该参数对应的起始字节、字节数,对当前关键数据进行打包。
在本实施例中,当参数对应的第一处理类型为0时,通过字节数选取对应字节数量的变量型的打包函数宏,之后对单位进行处理,单位为km、ms、度或°时,自动将表达式分别乘以1000.0、1000.0、180.0/pi,然后从该参数对应的起始字节开始打包。
在一些实施方式中,第一种情况下,多参数的打包过程为:
当参数对应的第一处理类型为3时,记录该首个参数在配置表中对应的起始字节;
依次遍历首个参数以下每一个参数的第一处理类型,直至出现第一处理类型为1的参数时,获取该第一处理类型为1的参数对应的第一表达式;
基于第一表达式中目标总线消息的编号、目标总线消息内需要处理的开始字节和字节长度,从当前关键数据获取多参数对应的变量,以从首个参数对应的起始字节开始打包;
第二种情况下,多参数的打包过程为:
当参数对应的第一处理类型为3时,记录该首个参数在配置表中对应的起始字节;
依次遍历首个参数以下每一个参数的第一处理类型,直至出现第一处理类型为2的参数时,获取该第一处理类型为2的参数对应的第一表达式;
基于第一表达式中目标数据块的内存地址和字节长度,从当前关键数据获取多参数对应的变量,以从首个参数对应的起始字节开始打包。
在一些实施方式中,当参数对应的第一处理类型为4时,该参数的打包过程为:
基于该参数的第一表达式中总线消息的编号、总线消息内需要处理的开始字节和字节长度,从该参数对应的起始字节开始打包;
当参数对应的第一处理类型为5时,该参数的打包过程为:
基于该参数的第一表达式中数据块的内存地址和字节长度,从该参数对应的起始字节开始打包。
下面对比特位型的参数的打包方式进行说明。
在一些实施方式中,附表中含有该参数对应的各子参数的名称、序号、各子参数所占的数据位数、各子参数的第二处理类型和处理该子参数所需的第二表达式;
当参数对应的处理类型为6时,该参数的打包过程为:
基于在主表中当前参数对应的起始字节和字节数确定当前参数对应的字节范围;
按序号依次获取附表中的每一个子参数,针对每一个子参数均执行:
确定当前子参数的第二处理类型;
若第二处理类型为0时,获取对应的第二表达式中该子参数的变量,当变量为true时,从字节范围中的第一个空白数据位开始,按照当前子参数所占的数据位数将当前子参数对应的数据位置1;
若第二处理类型为1时,获取对应的第二表达式中该子参数的变量,当变量为1时,从字节范围中的第一个空白数据位开始,按照当前子参数所占的数据位数将当前子参数对应的数据位置1;
若第二处理类型为2时,从字节范围中的第一个空白数据位开始,按照当前子参数所占的数据位数确定当前子参数对应的数据位,并将对应的第二表达式中该子参数的变量的低位赋值给当前子参数对应的数据位;其中,该子参数的变量的低位的个数与当前子参数所占的数据位数相等;
若第二处理类型为3时,从字节范围中的第一个空白数据位开始,按照当前子参数所占的数据位数确定当前子参数对应的数据位,并基于对应的第二表达式中的自定义代码段给当前子参数对应的数据位赋值,以对字节范围进行按位打包。
在本实施例中,第一处理类型为6的参数对应的按位表示的附表的表头如下表2所示。
表2 附表的表头
其中,数据位表示该子参数所占的数据位,如D7-D5表示占用了7~5位;
第二表达式表示该参数的变量或代码段,与第二处理类型配合使用,第二处理类型不同,对应的第二表达式也不同。
第二处理类型为0时,变量值为true时数据位置1;第二处理类型为1时,变量值为1时数据位置1;第二处理类型为2时,变量的低位赋值给数据位;第二处理类型为3时,执行自定义代码段。
因此,通过Python脚本读取Excel配置表,根据配置表中每一个参数的不同的处理类型,可以依次自动生成协议参数的打包代码。
针对步骤106:
在本实施例中,解包时,按顺序依次处理参数,首先判断处理类型:
为0时,通过字节个数选取对应的解包函数宏,之后对单位进行处理,单位为km、ms、度或°时,自动将表达式分别除以1000.0、1000.0、180.0/pi,从起始字节开始解包;
为3时,记录当前的参数的起始字节;
为1时,通过总线消息的编号和消息内的开始字节、字节长度,从为3时记录的起始字节开始解包;
为2时,通过内存数据的地址和字节长度,从为3时记录的起始字节开始解包;
为4时,通过总线消息编号和消息内的开始字节、字节长度,从当前参数的起始字节开始解包;
为5时,通过内存数据的地址和字节长度,从当前参数的起始字节开始解包;
为6时,按表达式找到对应按位表示的附表进行解包。
在本实施例中,配置表通过基于Excel的形式表示和管理配置数据,方便了配置的修改和扩展。变量当量和物理单位的自动识别和转换,提高了配置的便利性,大幅简化了配置过程。通过对不同协议要求的分类和配置参数表的使用实现了代码生成,从而大大提高了软件研制的效率和可靠性。避免了手动编写代码的繁琐过程,降低了人工出错的可能性。该代码生成过程简单易掌握,使得软件的维护和更改更加便捷。通过对协议的分类,可以更好地适应不同的应用场景,提高了软件的通用性和灵活性。
如图2、图3所示,本发明实施例提供了一种基于本说明书任一实施例所述方法的星载软件代码生成装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图2所示,为本发明实施例提供的一种基于配置表的星载软件代码生成装置所在计算设备的一种硬件架构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的计算设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图3所示,作为一个逻辑意义上的装置,是通过其所在计算设备的CPU将非易失性存储器中对应的计算机程序读取到内存中运行形成的。本实施例提供的一种基于配置表的星载软件代码生成装置,包括:
定义单元301,用于定义每一种参数类型的打包函数宏和解包函数宏;其中,打包函数宏用于将关键数据中对应类型的变量打包至缓存区,以生成重要数据;解包函数宏用于将重要数据解包为对应类型的变量;
生成单元302,用于针对获取的每一个关键数据,均执行:基于打包和解包当前关键数据所需的解析协议,生成配置表;其中,配置表含有解析协议定义的所有参数、各参数的配置信息、各参数对应的第一处理类型和处理该参数所需的第一表达式;
打包单元303,用于基于配置表中每一个参数对应的第一处理类型和处理该参数所需的第一表达式,来调用每一个参数对应的打包函数宏,以基于每一个参数的配置信息依次生成每一个参数的打包代码,以将当前关键数据打包为重要数据;
解包单元304,用于当接收到解包指令时,基于配置表中每一个参数的配置信息、每一个参数对应的第一处理类型、处理该参数所需的第一表达式和各解包函数宏,依次生成每一个参数的解包代码。
上述装置内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
可以理解的是,本发明实施例示意的结构并不构成对一种基于配置表的星载软件代码生成装置的具体限定。在本发明的另一些实施例中,一种基于配置表的星载软件代码生成装置可以包括比图示更多或者更少的部件单元,或者组合某些部件单元,或者拆分某些部件单元,或者不同的部件单元布置。图示的部件可以以硬件、软件或者软件和硬件的组合来实现。
本发明实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现本发明任一实施例中的一种基于配置表的星载软件代码生成方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序在被处理器执行时,使所述处理器执行本发明任一实施例中的一种基于配置表的星载软件代码生成方法。
具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展模块中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展模块上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (8)

1.一种基于配置表的星载软件代码生成方法,其特征在于,所述方法包括:
定义每一种参数类型的打包函数宏和解包函数宏;其中,所述打包函数宏用于将关键数据中对应类型的变量打包至缓存区,以生成重要数据;所述解包函数宏用于将重要数据解包为对应类型的变量;
针对获取的每一个关键数据,均执行:
基于打包和解包当前关键数据所需的解析协议,生成配置表;其中,所述配置表含有所述解析协议定义的所有参数、各参数的配置信息、各参数对应的第一处理类型和处理该参数所需的第一表达式;
基于所述配置表中每一个参数对应的第一处理类型和处理该参数所需的第一表达式,来调用每一个参数对应的打包函数宏,以基于每一个参数的配置信息依次生成每一个参数的打包代码,以将当前关键数据打包为重要数据;
当接收到解包指令时,基于所述配置表中每一个参数的配置信息、每一个参数对应的第一处理类型、处理该参数所需的第一表达式和各解包函数宏,依次生成每一个参数的解包代码;
所述参数类型至少包括变量型、比特位型、数据块型、总线消息型;
变量型的函数宏包括一至八字节中每一个数量的打包函数宏和解包函数宏;比特位型的函数宏包括比特位打包函数宏、比特位解包函数宏;数据块型的函数宏包括数据块打包函数宏、数据块解包函数宏;总线消息型的函数宏包括总线消息打包函数宏、总线消息解包函数宏;
所述配置表包括主表和附表,主表中含有所述解析协议定义的所有参数、各参数的配置信息、各参数对应的第一处理类型和处理该参数所需的第一表达式;其中,所述配置信息包括起始字节、字节数、数据格式、当量和单位;所述起始字节和字节数用于表征打包时该参数所存储的字节位置和所占字节个数;
第一处理类型包括单参数处理和多参数处理,第一处理类型为0、4、5和6时为所述单参数处理,多参数处理分为两种情况,第一种情况为首个参数的第一处理类型为3,最后一个参数的第一处理类型为1,第二种情况为首个参数的第一处理类型为3,最后一个参数的第一处理类型为2;
所述第一处理类型为0时,所述第一表达式为单个变量或常数或C语句,对应的参数为变量型;所述第一处理类型为4时,所述第一表达式为单个参数对应的总线消息的编号、所述总线消息内需要处理的开始字节和字节长度;所述第一处理类型为5时,所述第一表达式为单个参数对应的数据块的内存地址和字节长度;所述第一处理类型为6时,所述第一表达式为对应附表的名称,代表该参数为比特位型,需要按照对应附表进行按位打包;
所述第一处理类型为3时,代表该参数为目标总线消息或目标数据块的起始参数,对应第一表达式为空,若该目标总线消息或该目标数据块对应N个参数,在所述配置表中所述第一处理类型为3的参数下的N-2个参数对应的第一处理类型和第一表达式均为空,当所述第一处理类型为3的参数下的第N-1个参数对应的第一处理类型为1时,该第一处理类型为1的参数对应的第一表达式为所述目标总线消息的编号、所述目标总线消息内需要处理的开始字节和字节长度;当所述第一处理类型为3的参数下的第N-1个参数对应的第一处理类型为2时,该第一处理类型为2的参数对应的第一表达式为目标数据块的内存地址和字节长度。
2.根据权利要求1所述的方法,其特征在于,当参数对应的第一处理类型为0时,该参数的打包过程为:
基于该参数的单位,将对应第一表达式乘以相应倍数,得到单位处理后的第一表达式;
基于所述配置表中该参数的字节数,调用变量型的函数宏中对应字节数量的打包函数宏,以基于单位处理后的第一表达式、该参数对应的所述起始字节、所述字节数,对当前关键数据进行打包。
3.根据权利要求1所述的方法,其特征在于,所述第一种情况下,多参数的打包过程为:
当参数对应的第一处理类型为3时,记录该首个参数在所述配置表中对应的所述起始字节;
依次遍历所述首个参数以下每一个参数的第一处理类型,直至出现第一处理类型为1的参数时,获取该第一处理类型为1的参数对应的第一表达式;
基于所述第一表达式中所述目标总线消息的编号、所述目标总线消息内需要处理的开始字节和字节长度,从所述当前关键数据获取多参数对应的变量,以从所述首个参数对应的所述起始字节开始打包;
所述第二种情况下,多参数的打包过程为:
当参数对应的第一处理类型为3时,记录该首个参数在所述配置表中对应的所述起始字节;
依次遍历所述首个参数以下每一个参数的第一处理类型,直至出现第一处理类型为2的参数时,获取该第一处理类型为2的参数对应的第一表达式;
基于所述第一表达式中所述目标数据块的内存地址和字节长度,从所述当前关键数据获取多参数对应的变量,以从所述首个参数对应的所述起始字节开始打包。
4.根据权利要求1所述的方法,其特征在于,当参数对应的第一处理类型为4时,该参数的打包过程为:
基于该参数的所述第一表达式中总线消息的编号、所述总线消息内需要处理的开始字节和字节长度,从该参数对应的所述起始字节开始打包;
当参数对应的第一处理类型为5时,该参数的打包过程为:
基于该参数的所述第一表达式中数据块的内存地址和字节长度,从该参数对应的所述起始字节开始打包。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述附表中含有该参数对应的各子参数的名称、序号、各子参数所占的数据位数、各子参数的第二处理类型和处理该子参数所需的第二表达式;
当参数对应的处理类型为6时,该参数的打包过程为:
基于当前参数对应的起始字节和字节数确定当前参数对应的字节范围;
按所述序号依次获取所述附表中的每一个子参数,针对每一个子参数均执行:
确定当前子参数的第二处理类型;
若所述第二处理类型为0时,获取对应的第二表达式中该子参数的变量,当所述变量为true时,从所述字节范围中的第一个空白数据位开始,按照当前子参数所占的数据位数将当前子参数对应的数据位置1;
若所述第二处理类型为1时,获取对应的第二表达式中该子参数的变量,当所述变量为1时,从所述字节范围中的第一个空白数据位开始,按照当前子参数所占的数据位数将当前子参数对应的数据位置1;
若所述第二处理类型为2时,从所述字节范围中的第一个空白数据位开始,按照当前子参数所占的数据位数确定当前子参数对应的数据位,并将对应的第二表达式中该子参数的变量的低位赋值给当前子参数对应的数据位;其中,该子参数的变量的低位的个数与当前子参数所占的数据位数相等;
若所述第二处理类型为3时,从所述字节范围中的第一个空白数据位开始,按照当前子参数所占的数据位数确定当前子参数对应的数据位,并基于对应的第二表达式中的自定义代码段给当前子参数对应的数据位赋值,以对所述字节范围进行按位打包。
6.一种基于权利要求1-5中任一项所述方法的基于配置表的星载软件代码生成装置,其特征在于,包括:
定义单元,用于定义每一种参数类型的打包函数宏和解包函数宏;其中,所述打包函数宏用于将关键数据中对应类型的变量打包至缓存区,以生成重要数据;所述解包函数宏用于将重要数据解包为对应类型的变量;
生成单元,用于针对获取的每一个关键数据,均执行:基于打包和解包当前关键数据所需的解析协议,生成配置表;其中,所述配置表含有所述解析协议定义的所有参数、各参数的配置信息、各参数对应的第一处理类型和处理该参数所需的第一表达式;
打包单元,用于基于所述配置表中每一个参数对应的第一处理类型和处理该参数所需的第一表达式,来调用每一个参数对应的打包函数宏,以基于每一个参数的配置信息依次生成每一个参数的打包代码,以将当前关键数据打包为重要数据;
解包单元,用于当接收到解包指令时,基于所述配置表中每一个参数的配置信息、每一个参数对应的第一处理类型、处理该参数所需的第一表达式和各解包函数宏,依次生成每一个参数的解包代码。
7.一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-5中任一项所述的方法。
8.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-5中任一项所述的方法。
CN202311576443.0A 2023-11-24 2023-11-24 基于配置表的星载软件代码生成方法和装置 Active CN117289915B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311576443.0A CN117289915B (zh) 2023-11-24 2023-11-24 基于配置表的星载软件代码生成方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311576443.0A CN117289915B (zh) 2023-11-24 2023-11-24 基于配置表的星载软件代码生成方法和装置

Publications (2)

Publication Number Publication Date
CN117289915A CN117289915A (zh) 2023-12-26
CN117289915B true CN117289915B (zh) 2024-02-02

Family

ID=89248342

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311576443.0A Active CN117289915B (zh) 2023-11-24 2023-11-24 基于配置表的星载软件代码生成方法和装置

Country Status (1)

Country Link
CN (1) CN117289915B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109062565A (zh) * 2018-07-20 2018-12-21 北京航空航天大学 数字卫星aos协议遥测源代码人工智能书写方法
CN109086035A (zh) * 2018-07-20 2018-12-25 北京航空航天大学 卫星aos协议遥控源程序人工智能书写方法
CN112463149A (zh) * 2020-12-07 2021-03-09 中国科学院软件研究所 一种面向软件定义卫星的可复用代码库构建方法与装置
CN115061676A (zh) * 2022-05-19 2022-09-16 北京控制工程研究所 一种星载协议组包代码自动生成方法和系统
CN116755828A (zh) * 2023-04-21 2023-09-15 阿里云计算有限公司 参数取值配置方法、解析方法、电子设备以及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9897702B2 (en) * 2015-10-14 2018-02-20 The Boeing Company Generation of linear feedback shift register based pseudo random noise (PRN) spreading code sequence for global navigation satellite system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109062565A (zh) * 2018-07-20 2018-12-21 北京航空航天大学 数字卫星aos协议遥测源代码人工智能书写方法
CN109086035A (zh) * 2018-07-20 2018-12-25 北京航空航天大学 卫星aos协议遥控源程序人工智能书写方法
CN112463149A (zh) * 2020-12-07 2021-03-09 中国科学院软件研究所 一种面向软件定义卫星的可复用代码库构建方法与装置
CN115061676A (zh) * 2022-05-19 2022-09-16 北京控制工程研究所 一种星载协议组包代码自动生成方法和系统
CN116755828A (zh) * 2023-04-21 2023-09-15 阿里云计算有限公司 参数取值配置方法、解析方法、电子设备以及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
卫星故障诊断系统智能研制技术研究;李洪珏;董云峰;;上海航天(03);全文 *
基于宏定义动态链接的模块化星载软件升级方法研究;李磊霞;王宇;林宝军;张善从;;空间科学学报(02);全文 *

Also Published As

Publication number Publication date
CN117289915A (zh) 2023-12-26

Similar Documents

Publication Publication Date Title
US7734091B2 (en) Pattern-matching system
CN110113196B (zh) 一种协议配置方法、装置、设备及介质
US8947272B2 (en) Decoding encoded data
CN109460220A (zh) 报文预定义代码生成方法、装置、电子设备和存储介质
CN112286565B (zh) 一种基于存储容器的嵌入式系统差分升级方法
CN114020272A (zh) 一种序列化编码、解码方法、装置及电子设备
US7240066B2 (en) Unicode transitional code point database
CN117289915B (zh) 基于配置表的星载软件代码生成方法和装置
JP3725443B2 (ja) Unicodeテキストを混合コードページに変換する方法およびシステム
CN114201176A (zh) 一种智能合约编译匹配方法、装置、设备和存储介质
CN109992293B (zh) Android系统组件版本信息的组装方法及装置
CN112015425A (zh) 数据存储方法、读取方法、装置、电子设备及存储介质
CN112657196A (zh) 资源更新方法、装置、计算机设备和可读存储介质
CN112364580A (zh) 自动在寄存器传输级设计文件中插入特定代码的方法及装置
CN111694596A (zh) 一种webpack环境中的入口路径打包方法以及打包装置
WO2008047975A1 (en) Migration apparatus which convert sam/vsam files of mainframe system into sam/vsam files of open system and method for thereof
CN111324587A (zh) Obj文件的数据的压缩方法、解析方法以及系统
CN112230983B (zh) 信息处理方法、电子设备和介质
CN114138282B (zh) 一种还原iOS类型编码的伪代码的方法及装置
CN111488727B (zh) 词文件解析方法、词文件解析设备和计算机可读存储介质
JP2001060240A (ja) フォーマット修正方法およびデータ変換方法
CN112737831A (zh) 一种固件升级包处理方法、装置、电子设备和存储介质
CN113885910A (zh) 一种基于国产单片机gd32的软件升级方法
CN110673882A (zh) 一种关键产品数据存储方法、装置、设备及可读存储介质
CN118042026A (zh) 一种基于python的数据链消息报文解析方法及装置

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