CN116166310B - 一种软件号信息存储方法、装置、设备和可读存储介质 - Google Patents
一种软件号信息存储方法、装置、设备和可读存储介质Info
- Publication number
- CN116166310B CN116166310B CN202211576410.1A CN202211576410A CN116166310B CN 116166310 B CN116166310 B CN 116166310B CN 202211576410 A CN202211576410 A CN 202211576410A CN 116166310 B CN116166310 B CN 116166310B
- Authority
- CN
- China
- Prior art keywords
- app
- boot
- software
- compilation
- information
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- 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)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种软件号信息存储方法、装置、设备和可读存储介质,其中,软件号信息存储方法包括:配置APP程序存储空间中用于存放APP软件号信息的第一存储地址,以及Boot程序存储空间中用于存放Boot软件号信息的第二存储地址;基于所获取的APP软件版本以及APP编译日期,编译生成所述APP软件号信息,以及基于所获取的Boot软件版本以及Boot编译日期,编译生成所述Boot软件号信息;将所述APP软件号信息链接到所述第一存储地址,将所述Boot软件号信息链接到所述第二存储地址。通过本申请,解决了相关技术中APP程序的软件号信息和Boot程序的软件号信息无法共享访问且ECU程序软件号不唯一的问题。
Description
技术领域
本申请涉及汽车电子信息领域,特别是涉及一种软件号信息存储方法、装置、设备和可读存储介质。
背景技术
ECU(Electronic Control Unit,电子控制单元),又称“车载电脑”,随着电动汽车的自动化、智能化程度越来越高,在汽车生产全生命周期内,ECU软件迭代更新是必不可少的。ECU软件分为两个部分,APP程序和Boot程序,每次更新发布ECU软件,需要生成唯一的APP程序软件号信息和Boot程序软件号信息,用于对软件功能进行追溯。
目前,在ECU软件升级时,通常是在源代码中手工修改APP程序软件号信息和Boot程序软件号信息,然后再进行编译,并且APP程序软件号信息生成在APP程序存储空间中的随机地址,Boot程序软件号信息生成在Boot程序存储空间中的随机地址。由于存放APP程序软件号信息和Boot软件号信息的地址随机,导致APP程序软件号信息和Boot程序软件号信息无法共享访问,即,运行在APP程序中只可以读到APP软件版本和APP编译日期,由于不知道Boot软件版本和Boot编译日期存放地址,故无法读到Boot软件版本和Boot编译日期。同理,运行在Boot程序中只可以读到Boot软件版本和Boot编译日期,由于不知道APP软件版本和APP编译日期存放地址,故无法读到APP软件版本和APP编译日期。或者是在APP程序和Boot程序运行时,分别将APP程序软件号信息和Boot程序软件号信息写入到预先约定好的公共参数存储区,然后在APP程序或Boot程序中对公共参数存储区进行读取,但是这样会导致APP程序软件号信息和Boot程序软件号信息可能被改写或者丢失,无法保证ECU程序软件号的唯一性,且操作复杂,还浪费宝贵的参数存储空间。
发明内容
本申请实施例提供了一种软件号信息存储方法、装置、设备和可读存储介质,以至少解决相关技术中APP程序的软件号信息和Boot程序的软件号信息无法共享访问且ECU程序软件号不唯一的问题。
第一方面,本申请实施例提供了一种软件号信息存储方法,所述方法包括:
配置APP程序存储空间中用于存放APP软件号信息的第一存储地址,以及Boot程序存储空间中用于存放Boot软件号信息的第二存储地址;所述APP软件号信息包括APP软件版本以及APP编译日期;所述Boot软件号信息包括Boot软件版本以及Boot编译日期;
基于所获取的APP软件版本以及APP编译日期,编译生成所述APP软件号信息,以及基于所获取的Boot软件版本以及Boot编译日期,编译生成所述Boot软件号信息;
将所述APP软件号信息链接到所述第一存储地址,将所述Boot软件号信息链接到所述第二存储地址。
在其中一个实施例中,所述配置APP程序存储空间中用于存放APP软件号信息的第一存储地址,以及Boot程序存储空间中用于存放Boot软件号信息的第二存储地址包括:
利用APP工程链接脚本定义所述第一存储地址,以及利用Boot工程链接脚本定义所述第二存储地址;
将APP工程源码中所述APP软件号信息的标识符链接到所述第一存储地址,将Boot工程源码中所述Boot软件号信息的标识符链接到所述第二存储地址。
在其中一个实施例中,所述配置APP程序存储空间中用于存放APP软件号信息的第一存储地址,以及Boot程序存储空间中用于存放Boot软件号信息的第二存储地址包括:
将所述第一存储地址划分为两个段,分别用于存放APP软件版本以及APP编译日期;
将所述第二存储地址划分为两个段,分别用于存放Boot软件版本以及Boot编译日期。
在其中一个实施例中,所述第一存储地址属于APP程序存储空间中不可修改区域,所述第二存储地址属于Boot程序存储空间中不可修改区域。
在其中一个实施例中,所述基于所获取的APP软件版本以及APP编译日期,编译生成所述APP软件号信息,以及基于所获取的Boot软件版本以及Boot编译日期,编译生成所述Boot软件号信息包括:
根据APP工程编译预处理脚本获取APP软件版本以及APP编译日期,其中,所述APP软件版本通过读取APP工程配置文件获取,APP编译日期通过读取所述APP工程编译预处理脚本运行时刻的电脑时间获取;以及根据Boot工程编译预处理脚本获取Boot软件版本以及Boot编译日期,其中,所述Boot软件版本通过读取Boot工程配置文件获取,Boot编译日期通过读取所述Boot工程编译预处理脚本运行时刻的电脑时间获取;
基于所述APP软件版本以及所述APP编译日期,编译生成所述APP软件号信息,以及基于所述Boot软件版本以及所述Boot编译日期,编译生成所述Boot软件号信息。
在其中一个实施例中,所述基于所获取的APP软件版本以及APP编译日期,编译生成所述APP软件号信息,以及基于所获取的Boot软件版本以及Boot编译日期,编译生成所述Boot软件号信息包括:
APP工程编译脚本调用所述APP工程编译预处理脚本,获得APP软件版本以及APP编译日期;Boot工程编译脚本调用所述Boot工程编译预处理脚本,获得Boot软件版本以及Boot编译日期;
将所述APP软件版本以及APP编译日期写入第一头文件中,将所述Boot软件版本以及Boot编译日期写入第二头文件中;
将所述第一头文件添加到APP工程源码中,将所述第二头文件添加到Boot工程源码中;
编译所述APP工程源码,生成所述APP软件号信息,以及编译所述Boot工程源码,生成所述Boot软件号信息。
在其中一个实施例中,所述编译所述APP工程源码,生成所述APP软件号信息,以及编译所述Boot工程源码,生成所述Boot软件号信息还包括:
编译所述APP工程源码,生成APP程序可执行文件,以及编译所述Boot工程源码,生成Boot程序可执行文件。
第二方面,本申请实施例还提供了一种软件号信息存储装置。所述装置包括:
配置模块,用于配置APP程序存储空间中用于存放APP软件号信息的第一存储地址,以及Boot程序存储空间中用于存放Boot软件号信息的第二存储地址;所述APP软件号信息包括APP软件版本以及APP编译日期;所述Boot软件号信息包括Boot软件版本以及Boot编译日期;
生成模块,基于所获取的APP软件版本以及APP编译日期,编译生成所述APP软件号信息,以及基于所获取的Boot软件版本以及Boot编译日期,编译生成所述Boot软件号信息;
链接模块,用于将所述APP软件号信息链接到所述第一存储地址,将所述Boot软件号信息链接到所述第二存储地址。
第三方面,本申请实施例还提供了一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如上述第一方面所述的软件号信息存储方法。
第四方面,本申请实施例还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现如上述第一方面所述的软件号信息存储方法。
相比于相关技术,本申请实施例提供的软件号信息存储方法、装置、设备和可读存储介质,通过配置APP程序存储空间中用于存放APP软件号信息的第一存储地址,以及Boot程序存储空间中用于存放Boot软件号信息的第二存储地址;并通过编译生成所述APP软件号信息,以及所述Boot软件号信息,将所述APP软件号信息链接到所述第一存储地址,将所述Boot软件号信息链接到所述第二存储地址,解决了相关技术中APP程序的软件号信息和Boot程序的软件号信息无法共享访问且ECU程序软件号不唯一的问题。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的软件号信息存储方法的应用环境图;
图2是根据本申请实施例的软件号信息存储方法的流程图;
图3是根据本申请实施例的软件号信息自动生成方法的流程图;
图4是根据本申请实施例的软件号信息存储地址的示意图;
图5是根据本申请实施例的软件号信息存储装置的结构框图;
图6是根据本申请实施例的计算机设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本申请实施例提供的软件号信息存储方法,可以应用于如图1所示的应用环境中。其中,终端101通过网络与服务器102进行通信。数据存储系统可以存储服务器102需要处理的数据。数据存储系统可以集成在服务器102上,也可以放在云上或其他网络服务器上。其中,终端101可以但不限于是各种个人计算机、笔记本电脑。服务器102可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
本实施例提供了一种软件号信息存储方法,图2是根据本申请实施例的软件号信息存储方法的流程图,如图2所示,该方法包括:
步骤S201,配置APP程序存储空间中用于存放APP软件号信息的第一存储地址,以及Boot程序存储空间中用于存放Boot软件号信息的第二存储地址;所述APP软件号信息包括APP软件版本以及APP编译日期;所述Boot软件号信息包括Boot软件版本以及Boot编译日期。
在本实施例中,APP程序存储空间以及Boot程序存储空间均位于FLASH存储区。
步骤S202,基于所获取的APP软件版本以及APP编译日期,编译生成所述APP软件号信息,以及基于所获取的Boot软件版本以及Boot编译日期,编译生成所述Boot软件号信息。
在本实施例中,具有编译功能的编译器可以为Microsoft C编译器、GCC编译器、Borland Turbo C编译器,这些均是常用的编译器,或者其它编译器。
步骤S203,将所述APP软件号信息链接到所述第一存储地址,将所述Boot软件号信息链接到所述第二存储地址。
具体地,链接器将所述APP软件号信息链接到所述第一存储地址,将所述Boot软件号信息链接到所述第二存储地址。
通过上述步骤S201至步骤S203,通过配置APP程序存储空间中用于存放APP软件号信息的第一存储地址,以及Boot程序存储空间中用于存放Boot软件号信息的第二存储地址;并通过编译生成所述APP软件号信息,以及所述Boot软件号信息,将所述APP软件号信息链接到所述第一存储地址,将所述Boot软件号信息链接到所述第二存储地址。从而通过读取所述第一存储地址和所述第二存储地址,可实现APP程序和BOOT程序共享读取对方的软件号信息。
在其中一个实施例中,配置APP程序存储空间中用于存放APP软件号信息的第一存储地址,以及Boot程序存储空间中用于存放Boot软件号信息的第二存储地址包括:利用APP工程链接脚本定义所述第一存储地址,以及利用Boot工程链接脚本定义所述第二存储地址;将APP工程源码中所述APP软件号信息的标识符链接到所述第一存储地址,将Boot工程源码中所述Boot软件号信息的标识符链接到所述第二存储地址。
链接器脚本使用链接器命令语言编写,链接器脚本的主要目的是描述如何将输入文件中的各个部分映射到输出文件中,并控制输出文件的存储布局。
其中,所述APP软件号信息的标识符包括了APP软件版本的标识符和APP编译日期的标识符,所述Boot软件号信息的标识符包括了Boot软件版本的标识符和Boot编译日期的标识符。
其中,所述APP工程链接脚本将所述第一存储地址划分为两个段,分别用于存放APP程序的APP软件版本以及APP编译日期,分别链接APP软件版本的标识符和APP编译日期的标识符;所述Boot工程链接脚本将所述第二存储地址划分为两个段,分别用于存放Boot程序的Boot软件版本以及Boot编译日期,分别链接Boot软件版本的标识符和Boot编译日期的标识符。
在其中一个实施例中,所述基于所获取的APP软件版本以及APP编译日期,编译生成所述APP软件号信息,以及基于所获取的Boot软件版本以及Boot编译日期,编译生成所述Boot软件号信息包括:根据APP工程编译预处理脚本获取APP软件版本以及APP编译日期,其中,所述APP软件版本通过读取APP工程配置文件获取,APP编译日期通过读取所述APP工程编译预处理脚本运行时刻的电脑时间获取;以及根据Boot工程编译预处理脚本获取Boot软件版本以及Boot编译日期,其中,所述Boot软件版本通过读取Boot工程配置文件获取,Boot编译日期通过读取所述Boot工程编译预处理脚本运行时刻的电脑时间获取;基于所述APP软件版本以及所述APP编译日期,编译生成所述APP软件号信息,以及基于所述Boot软件版本以及所述Boot编译日期,编译生成所述Boot软件号信息。
本实施例中,通过APP工程编译预处理脚本获取APP软件版本以及APP编译日期,通过Boot工程编译预处理脚本获取Boot软件版本以及Boot编译日期,避免了手工修改APP工程源码和Boot工程源码中的软件号信息引入的风险,实现APP程序和Boot程序软件号信息自动生成,不增加额外人工操作,实现一键编译。
软件号作为软件版本的唯一识别,应当集成在软件中不可修改,现有方案中,当APP程序和Boot程序运行后,将存储在随机地址中的APP程序的软件号信息和Boot程序的软件号信息写入到事先定义的公共参数存储区(NVM参数存储区),以此实现APP程序和Boot程序软件号信息的共享读取,但是通过定义公共参数存储区,把不可读写的软件号当成可改写参数,存在丢失的风险,不能满足ECU程序软件号唯一性,且占用存储资源,操作复杂。
在其中一个实施例中,所述第一存储地址为APP程序存储空间中不可修改的区域,所述第二存储地址为Boot程序存储空间中不可修改的区域。
本实施例中所述的不可修改的区域为Rodata区,由于Rodata区是不可修改的区域,是受保护的,任何试图对它的修改都会被及时发现,因此生成的APP软件号信息和Boot软件号信息具有不可被修改的属性,保证了APP程序软件号信息和Boot程序软件号信息的唯一性,进一步保证了ECU程序软件号的唯一性。
在其中一个实施例中,所述基于所获取的APP软件版本以及APP编译日期,编译生成所述APP软件号信息,以及基于所获取的Boot软件版本以及Boot编译日期,编译生成所述Boot软件号信息,如图3所示,具体通过如下步骤实现:
步骤301:APP工程编译脚本调用所述APP工程编译预处理脚本,获得APP软件版本以及APP编译日期;Boot工程编译脚本调用所述Boot工程编译预处理脚本,获得Boot软件版本以及Boot编译日期。
步骤302:将所述APP软件版本以及APP编译日期写入第一头文件中,将所述Boot软件版本以及Boot编译日期写入第二头文件中。
步骤303:将所述第一头文件添加到APP工程源码中,将所述第二头文件添加到Boot工程源码中。
步骤304:编译所述APP工程源码,生成所述APP软件号信息,以及编译所述Boot工程源码,生成所述Boot软件号信息。
在本实施例中,集成开发环境为NXP公司的S32DS(S32 Design Studio For Arm),内部集成了GNU工具链,使用的编译器为GCC编译器、使用的链接器为LD链接器,APP工程源码和Boot工程源码使用C语言编写。
具体地,以生成所述APP软件号信息为例,APP工程编译脚本调用GCC指令之前,先调用APP工程编译预处理脚本,所述APP工程编译预处理脚本用于获取APP软件版本以及APP编译日期。具体地,所述APP工程编译预处理脚本运行获取APP软件版本以及APP编译日期,并创建所述第一头文件,然后将获取的APP软件版本以及APP编译日期写入第一头文件,将所述第一头文件添加到APP工程源码中,APP工程编译脚本调用GCC指令进行编译,APP工程源码被编译,生成所述APP软件号信息。生成所述Boot软件号信息的步骤与生成所述APP软件号信息的步骤相同,在此不再赘述。然后LD链接器将所述APP软件号信息链接到所述第一存储地址,将所述Boot软件号信息链接到所述第二存储地址。编译所述APP工程源码,包括生成APP程序可执行文件,以及编译所述Boot工程源码,包括生成Boot程序可执行文件,可执行文件为bin格式。
本实施例,通过APP工程编译脚本调用APP工程编译预处理脚本,自动获取APP软件版本以及APP编译日期,通过Boot工程编译脚本调用Boot工程编译预处理脚本,自动获取Boot软件版本以及Boot编译日期,避免了手工修改APP工程源码和Boot工程源码中的软件号信息引入的风险,实现APP程序的软件号信息和Boot程序的软件号信息自动生成。LD链接器将所述APP软件号信息链接到所述第一存储地址,将所述Boot软件号信息链接到所述第二存储地址。通过读取所述第一存储地址和所述第二存储地址,可实现APP程序和BOOT程序共享读取对方的软件号信息。
在一示例实施例中,图4展示了APP程序存储空间中软件号信息的存储地址和Boot程序存储空间中软件号信息的存储地址的示意图。具体地,在APP工程链接脚本文件(S32K144_64_flash_1.ld)中定义APP程序存储空间中用于存放APP软件号信息的第一存储地址,本实施例中将所述第一存储地址命名为m_softver_config_1,所述第一存储地址的开始地址为0x00014410,结束地址为0x0001441F,大小16个字节。所述第一存储地址位于FLASH区的Rodata区,具有不可修改的属性。在Boot工程链接脚本文件(S32K144_64_flash_2.ld)中定义Boot程序存储空间中用于存放Boot软件号信息的第二存储地址,本实施例中将所述第二存储地址命名为m_softver_config_2,所述第二存储地址的开始地址为0x0000410,结束地址为0x000041F,大小16个字节。所述第二存储地址位于FLASH区的Rodata区,具有不可修改的属性。
进一步的,将所述第一存储地址m_softver_config_1划分为两个段,分别命名为.software_version_1和.compile_date_1,其中.software_version_1用于存放APP程序的APP软件版本,.software_version_1的开始地址为0x00014410,.compile_date_1用于存放APP程序的APP编译日期,.compile_date_1的开始地址为0x0001441C。将所述第二存储地址m_softver_config_2划分为两个段,分别命名为.software_version_2和.compile_date_2,其中.software_version_2用于存放Boot程序的Boot软件版本,.software_version_2的开始地址为0x00000410,.compile_date_2用于存放Boot程序的Boot编译日期,.compile_date_2的开始地址为0x000041C。
将APP工程源码中所述APP软件号信息的标识符链接到所述第一存储地址,所述APP软件号信息的标识符在software_num_1.c源文件中定义,其中包括定义了APP软件版本的标识符为software_version_1,大小10个字节,并将其链接到.software_version_1的地址中,定义APP编译日期的标识符为compile_date_1,BCD码格式,大小4个字节,并将其链接到.compile_date_1的地址中。所述software_num_1.c源文件包含predef_1.h头文件。将Boot工程源码中所述Boot软件号信息的标识符链接到所述第二存储地址,所述Boot软件号信息的标识符在software_num_2.c源文件中定义,其中包括定义了Boot软件版本的标识符为software_version_2,大小10个字节,并将其链接到.software_version_2的地址中,定义Boot编译日期的标识符为compile_date_2,BCD码格式,大小4个字节,并将其链接到.compile_date_2的地址中。所述software_num_2.c源文件包含predef_2.h头文件。
执行Make命令,APP工程编译脚本makefile_1调用APP工程编译预处理脚本Prebuild_1.bat,获取APP软件版本和APP编译日期,APP软件版本通过读取APP工程配置文件获取,APP编译日期通过读取APP工程编译预处理脚本运行时刻的电脑时间获取,APP工程编译预处理脚本Prebuild_1.bat为事先写好的脚本。Prebuild_1.bat运行生成predef_1.h头文件,predef_1.h头文件中会自动写入APP软件版本和APP编译日期,本实施例中写入的APP软件版本为0.00.11,APP编译日期为20221019。并自动将predef_1.h添加到software_num_1.c源文件中,software_num_1.c源文件同整个APP工程源码一起被编译,生成APP软件号信息和APP程序可执行文件,其中生成的APP软件号信息集成在APP程序可执行文件中,APP程序可执行文件为bin格式。APP软件版本0.00.11通过LD链接器链接到0x00014410地址,APP编译日期0x20 0x22 0x10 0x19(即20221019)通过LD链接器链接到0x0001441C地址。执行Make命令,Boot工程编译脚本makefile_2调用Boot工程编译预处理脚本Prebuild_2.bat,获取Boot软件版本和Boot编译日期,Boot软件版本通过读取Boot工程配置文件获取,Boot编译日期通过读取Boot工程编译预处理脚本运行时刻的电脑时间获取,Boot工程编译预处理脚本Prebuild_2.bat为事先写好的脚本。Prebuild_2.bat运行生成predef_2.h头文件,predef_2.h头文件中会自动写入Boot软件版本和Boot编译日期,本实施例中写入的Boot软件版本为0.00.12,Boot编译日期为20221020。并自动将predef_2.h添加到software_num_2.c源文件中,software_num_2.c源文件同整个Boot工程源码二起被编译,生成Boot软件号信息和APP程序可执行文件,其中生成的Boot软件号信息集成在Boot程序可执行文件中,Boot程序可执行文件为bin格式。Boot软件版本0.00.12通过LD链接器链接到0x0000410地址,Boot编译日期0x20 0x22 0x10 0x20(即20221020)通过LD链接器链接到0x000041C地址。
本实施例,通过执行Make命令,实现自动获取APP程序的软件版本号和编译日期,以及Boot程序的软件版本号和编译日期,避免了通过手工修改APP程序和Boot工程源码中的软件号信息引入的风险,实现软件号信息自动生成和软件升级一键自动编译,LD链接器将APP程序的软件号信息和Boot程序的软件号信息链接到指定的地址,当APP程序或BOOT程序运行时,通过UDS协议对0x00014410读取可获得APP的软件版本号,对0x000141C读取可获取APP编译日期,对0x0000410读取可获得Boot的软件版本号,对0x000041C读取可获取Boot编译日期,可实现APP程序和BOOT程序共享读取对方的软件号信息。且这些地址属于Rodata区,具有不可修改属性,不会存在软件号信息被改写的可能,保证了ECU程序软件号的唯一性。
本实施例提供了一种软件号信息存储装置,图5是根据本申请实施例的软件号信息存储装置的结构框图,如图5所示,该装置包括:
配置模块510,用于配置APP程序存储空间中用于存放APP软件号信息的第一存储地址,以及Boot程序存储空间中用于存放Boot软件号信息的第二存储地址;所述APP软件号信息包括APP软件版本以及APP编译日期;所述Boot软件号信息包括Boot软件版本以及Boot编译日期。
生成模块520,用于基于所获取的APP软件版本以及APP编译日期,编译生成所述APP软件号信息,以及基于所获取的Boot软件版本以及Boot编译日期,编译生成所述Boot软件号信息。
链接模块530,用于将所述APP软件号信息链接到所述第一存储地址,将所述Boot软件号信息链接到所述第二存储地址。
所述配置模块510还用于利用APP工程链接脚本定义所述第一存储地址,以及利用Boot工程链接脚本定义所述第二存储地址;将APP工程源码中所述APP软件号信息的标识符链接到所述第一存储地址,将Boot工程源码中所述Boot软件号信息的标识符链接到所述第二存储地址。
所述配置模块510还用于将所述第一存储地址划分为两个段,分别用于存放APP程序的APP软件版本以及APP编译日期;将所述第二存储地址划分为两个段,分别用于存放Boot程序的Boot软件版本以及Boot编译日期。
所述配置模块510还用于所述第一存储地址为APP程序存储空间中不可修改的区域,所述第二存储地址为Boot程序存储空间中不可修改的区域。
所述生成模块520还用于根据APP工程编译预处理脚本获取APP软件版本以及APP编译日期,其中,所述APP软件版本通过读取APP工程配置文件获取,APP编译日期通过读取电脑时间获取;以及根据Boot工程编译预处理脚本获取Boot软件版本以及Boot编译日期,其中,所述Boot软件版本通过读取Boot工程配置文件获取,Boot编译日期通过读取电脑时间获取;基于所述APP软件版本以及所述APP编译日期,编译生成所述APP软件号信息,以及基于所述Boot软件版本以及所述Boot编译日期,编译生成所述Boot软件号信息。
所述生成模块520还用于APP工程编译脚本调用所述APP工程编译预处理脚本,Boot工程编译脚本调用所述Boot工程编译预处理脚本;所述APP工程编译预处理脚本生成第一头文件,获得APP软件版本以及APP编译日期;所述Boot工程编译预处理脚本生成第二头文件,获得Boot软件版本以及Boot编译日期;将所述第一头文件添加到APP工程源码中,将所述第二头文件添加到Boot工程源码中;编译所述APP工程源码,生成所述APP软件号信息,以及编译所述Boot工程源码,生成所述Boot软件号信息。
所述生成模块520还用于编译所述APP工程源码,生成APP程序可执行文件,以及编译所述Boot工程源码,生成Boot程序可执行文件。
需要说明的是,上述各模块被执行时所实现的功能或操作步骤与上述方法实施例大体相同,在此不再赘述。
另外,结合上述实施例中的软件号信息存储方法,本申请实施例可提供一种计算机设备来实现。
图6为根据本申请实施例的计算机设备结构示意图。该计算机设备包括存储器610、处理器620以及存储在存储器上并可在处理器上运行的计算机程序530,所述处理器620执行所述程序以实现上述实施例中的任意一种软件号信息存储方法。
具体地,上述处理器620可以包括中央处理器(CPU),或者特定集成电路(APPlication Specific Integrated Circuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
其中,存储器610可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器610可包括硬盘驱动器(Hard Disk Drive,简称为HDD)、软盘驱动器、固态驱动器(Solid State Drive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(UniversalSerial Bus,简称为USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器610可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器610可在数据处理装置的内部或外部。在特定实施例中,存储器610是非易失性(Non-Volatile)存储器。在特定实施例中,存储器610包括只读存储器(Read-Only Memory,简称为ROM)和随机存取存储器(Random Access Memory,简称为RAM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(ProgrammableRead-Only Memory,简称为PROM)、可擦除PROM(ErasableProgrammable Read-Only Memory,简称为EPROM)、电可擦除PROM(Electrically ErasableProgrammable Read-Only Memory,简称为EEPROM)、电可改写ROM(ElectricallyAlterable Read-Only Memory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组合。在合适的情况下,该RAM可以是静态随机存取存储器(Static Random-AccessMemory,简称为SRAM)或动态随机存取存储器(Dynamic Random Access Memory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器(Fast Page Mode DynamicRandom Access Memory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(ExtendedDate Out Dynamic Random Access Memory,简称为EDODRAM)、同步动态随机存取内存(Synchronous Dynamic RandomAccess Memory,简称SDRAM)等。
另外,结合上述实施例中的软件号信息存储方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的任意一种软件号信息存储方法。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (7)
1.一种软件号信息存储方法,应用于ECU软件,其特征在于,包括:
配置APP程序存储空间中用于存放APP软件号信息的第一存储地址,以及Boot程序存储空间中用于存放Boot软件号信息的第二存储地址;所述APP软件号信息包括APP软件版本以及APP编译日期;所述Boot软件号信息包括Boot软件版本以及Boot编译日期;其中,所述第一存储地址属于APP程序存储空间中不可修改区域,所述第二存储地址属于Boot程序存储空间中不可修改区域;
基于所获取的APP软件版本以及APP编译日期,编译生成所述APP软件号信息,以及基于所获取的Boot软件版本以及Boot编译日期,编译生成所述Boot软件号信息;包括:根据APP工程编译预处理脚本获取APP软件版本以及APP编译日期,其中,所述APP软件版本通过读取APP工程配置文件获取,APP编译日期通过读取所述APP工程编译预处理脚本运行时刻的电脑时间获取;以及根据Boot工程编译预处理脚本获取Boot软件版本以及Boot编译日期,其中,所述Boot软件版本通过读取Boot工程配置文件获取,Boot编译日期通过读取所述Boot工程编译预处理脚本运行时刻的电脑时间获取;APP工程编译脚本调用所述APP工程编译预处理脚本,获得APP软件版本以及APP编译日期;Boot工程编译脚本调用所述Boot工程编译预处理脚本,获得Boot软件版本以及Boot编译日期;将所述APP软件版本以及APP编译日期写入第一头文件中,将所述Boot软件版本以及Boot编译日期写入第二头文件中;将所述第一头文件添加到APP工程源码中,将所述第二头文件添加到Boot工程源码中;编译所述APP工程源码,生成所述APP软件号信息,以及编译所述Boot工程源码,生成所述Boot软件号信息;
将所述APP软件号信息链接到所述第一存储地址,将所述Boot软件号信息链接到所述第二存储地址。
2.根据权利要求1所述的软件号信息存储方法,其特征在于,所述配置APP程序存储空间中用于存放APP软件号信息的第一存储地址,以及Boot程序存储空间中用于存放Boot软件号信息的第二存储地址包括:
利用APP工程链接脚本定义所述第一存储地址,以及利用Boot工程链接脚本定义所述第二存储地址;
将APP工程源码中所述APP软件号信息的标识符链接到所述第一存储地址,将Boot工程源码中所述Boot软件号信息的标识符链接到所述第二存储地址。
3.根据权利要求1所述的软件号信息存储方法,其特征在于,所述配置APP程序存储空间中用于存放APP软件号信息的第一存储地址,以及Boot程序存储空间中用于存放Boot软件号信息的第二存储地址包括:
将所述第一存储地址划分为两个段,分别用于存放APP软件版本以及APP编译日期;
将所述第二存储地址划分为两个段,分别用于存放Boot软件版本以及Boot编译日期。
4.根据权利要求1所述的软件号信息存储方法,其特征在于,编译所述APP工程源码,生成所述APP软件号信息,以及编译所述Boot工程源码,生成所述Boot软件号信息还包括:
编译所述APP工程源码,生成APP程序可执行文件,以及编译所述Boot工程源码,生成Boot程序可执行文件。
5.一种软件号信息存储装置,其特征在于,所述装置包括:
配置模块,用于配置APP程序存储空间中用于存放APP软件号信息的第一存储地址,以及Boot程序存储空间中用于存放Boot软件号信息的第二存储地址;所述APP软件号信息包括APP软件版本以及APP编译日期;所述Boot软件号信息包括Boot软件版本以及Boot编译日期;其中,所述第一存储地址属于APP程序存储空间中不可修改区域,所述第二存储地址属于Boot程序存储空间中不可修改区域;
生成模块,基于所获取的APP软件版本以及APP编译日期,编译生成所述APP软件号信息,以及基于所获取的Boot软件版本以及Boot编译日期,编译生成所述Boot软件号信息;包括:根据APP工程编译预处理脚本获取APP软件版本以及APP编译日期,其中,所述APP软件版本通过读取APP工程配置文件获取,APP编译日期通过读取所述APP工程编译预处理脚本运行时刻的电脑时间获取;以及根据Boot工程编译预处理脚本获取Boot软件版本以及Boot编译日期,其中,所述Boot软件版本通过读取Boot工程配置文件获取,Boot编译日期通过读取所述Boot工程编译预处理脚本运行时刻的电脑时间获取;APP工程编译脚本调用所述APP工程编译预处理脚本,获得APP软件版本以及APP编译日期;Boot工程编译脚本调用所述Boot工程编译预处理脚本,获得Boot软件版本以及Boot编译日期;将所述APP软件版本以及APP编译日期写入第一头文件中,将所述Boot软件版本以及Boot编译日期写入第二头文件中;将所述第一头文件添加到APP工程源码中,将所述第二头文件添加到Boot工程源码中;编译所述APP工程源码,生成所述APP软件号信息,以及编译所述Boot工程源码,生成所述Boot软件号信息;
链接模块,用于将所述APP软件号信息链接到所述第一存储地址,将所述Boot软件号信息链接到所述第二存储地址。
6.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述的软件号信息存储方法的步骤。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的软件号信息存储方法的步骤。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202211576410.1A CN116166310B (zh) | 2022-12-09 | 2022-12-09 | 一种软件号信息存储方法、装置、设备和可读存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202211576410.1A CN116166310B (zh) | 2022-12-09 | 2022-12-09 | 一种软件号信息存储方法、装置、设备和可读存储介质 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN116166310A CN116166310A (zh) | 2023-05-26 |
| CN116166310B true CN116166310B (zh) | 2026-01-23 |
Family
ID=86419110
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202211576410.1A Active CN116166310B (zh) | 2022-12-09 | 2022-12-09 | 一种软件号信息存储方法、装置、设备和可读存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN116166310B (zh) |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103324501A (zh) * | 2013-05-28 | 2013-09-25 | 大连理工大学 | 无线传感器网络节点软件高效远程更新方法 |
| CN104809009A (zh) * | 2015-03-23 | 2015-07-29 | 陕西法士特齿轮有限责任公司 | 一种汽车电控单元的程序加载引导方法 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE10053952A1 (de) * | 2000-10-31 | 2002-06-27 | Siemens Ag | Verfahren und Anordnung zum Updaten von Software auf einem mobilen prozessorgesteuerten Gerät |
| GB2582000A (en) * | 2019-03-07 | 2020-09-09 | Delphi Tech Ip Ltd | Automotive bootloader |
| CN114780234A (zh) * | 2022-04-07 | 2022-07-22 | 深圳市振邦智能科技股份有限公司 | 一种实现boot和应用程序分离的方法、装置及相关组件 |
| CN115373716A (zh) * | 2022-09-05 | 2022-11-22 | 北京新能源汽车股份有限公司 | 一种汽车控制单元引导启动程序的更新方法、装置及汽车 |
-
2022
- 2022-12-09 CN CN202211576410.1A patent/CN116166310B/zh active Active
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103324501A (zh) * | 2013-05-28 | 2013-09-25 | 大连理工大学 | 无线传感器网络节点软件高效远程更新方法 |
| CN104809009A (zh) * | 2015-03-23 | 2015-07-29 | 陕西法士特齿轮有限责任公司 | 一种汽车电控单元的程序加载引导方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN116166310A (zh) | 2023-05-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN110780897B (zh) | 一种代码变更方法以及装置 | |
| CN113721967B (zh) | 差分包生成方法,差分包生成设备,及升级方法 | |
| CN102543193B (zh) | 一种闪存烧录方法、烧录设备及烧录系统 | |
| CN104216390B (zh) | 一种基于ccp协议的汽车电子控制单元的标定装置及方法 | |
| CN114546934B (zh) | 文件系统移植方法、装置、设备及存储介质 | |
| CN115934098B (zh) | 物模型配置方法、装置及计算机可读存储介质 | |
| CN108694049B (zh) | 一种更新软件的方法和设备 | |
| CN112748905B (zh) | 基础库的初始化调用方法、装置、电子设备及存储介质 | |
| CN116166310B (zh) | 一种软件号信息存储方法、装置、设备和可读存储介质 | |
| CN111797057A (zh) | 快照差量数据生成方法、终端设备、存储介质及装置 | |
| CN118051251A (zh) | 软件开发工具包的接入方法、装置、电子设备及存储介质 | |
| CN112445764B (zh) | 文件操作的方法、装置、存储介质及电子设备 | |
| CN101770508B (zh) | 移动通信终端中的数据访问方法和设备 | |
| CN120045221A (zh) | 私有库合并方法、可读存储介质、程序产品及电子设备 | |
| CN108958795B (zh) | 一种嵌入式系统中BootLoader代码重利用方法和开发板 | |
| CN111858314A (zh) | 一种对vue进行状态管理的方法、系统、设备及介质 | |
| CN114816475B (zh) | 一种嵌入式操作系统的更新方法、装置、设备和介质 | |
| CN118819398A (zh) | 持久化数据管理方法、装置、设备、介质及程序产品 | |
| CN115658188A (zh) | 一种rom中固化数据的访问方法、装置、芯片和存储介质 | |
| CN114584550B (zh) | 车辆数据的上传及存储方法、装置、存储介质及车辆 | |
| CN116382701A (zh) | 用于嵌入式系统的程序生成方法及程序局部更新方法 | |
| CN102629259A (zh) | 嵌入式系统中只读文件系统建立方法,装置及嵌入式系统 | |
| US20250224966A1 (en) | Configuration information changes | |
| CN113850037A (zh) | 基于dpi与ucli的动态存储的方法、系统、设备和存储介质 | |
| CN114118016B (zh) | 一种生成udid的方法和装置 |
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 |