CN113821458A - 一种数据操作方法、装置、计算机设备和存储介质 - Google Patents
一种数据操作方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113821458A CN113821458A CN202111112794.7A CN202111112794A CN113821458A CN 113821458 A CN113821458 A CN 113821458A CN 202111112794 A CN202111112794 A CN 202111112794A CN 113821458 A CN113821458 A CN 113821458A
- Authority
- CN
- China
- Prior art keywords
- data
- address
- function
- target
- file
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- 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/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种数据操作方法、装置、计算机设备和存储介质,数据操作方法包括:在生成大小等于或大于第一系统的所需存储器的存储容量的目标文件后,接收第一系统中第一数据操作函数的调用指令,第一操作函数的参数包括对存储器进行数据操作的目标物理地址,将目标物理地址转换为目标文件中数据的偏移地址,调用第二系统的第二数据操作函数、以偏移地址为目标起始地址对目标文件执行数据操作,实现了将第一系统中直接对存储器的操作转换为第二系统中对文件的操作,使得第一系统中的应用程序可以移植到第二系统中,使得第二系统可以兼容第一系统的应用程序,无需更改第一系统和第二系统的相关操作函数,移植效率高。
Description
技术领域
本发明实施例涉及数据存储技术领域,尤其涉及一种数据操作方法、装置、计算机设备和存储介质。
背景技术
随着IC设计和制造技术的高速发展,工业类电子产品所用的MCU的性能和存储能力也得到大大提升。过去的工业电子产品中嵌入式程序一般采用无操作系统或小型的实时操作系统(ucos、rt-thread、freertos等)的架构,在数据的存储和读取方面一般采用直接对非易失性存储器的物理地址进行写入、读取和擦除操作。
如今,已经有不少产品为了增强其扩展性和可维护性,其嵌入式程序的设计开始采用大型操作系统(如linux、Android等)作为基础,但不少产品在更换操作系统时,原来在小型操作系统甚至无操作系统下进行应用开发的程序,一般很难直接移植到大型操作系统上去运行,尤其是在数据读写方面,前者一般不采用文件系统(如FAT16、FAT32、NTFS等)管理,读写数据直接对非易失性存储器的物理进行写入、擦除或读取,而后者采用文件系统管理数据,数据存取采用文件创建、写入和读取等操作实现,两者的实现方式差异极大,导致程序数据无法移植和兼容。
发明内容
本发明实施例提出了一种数据操作方法、装置、计算机设备和存储介质,以解决目前无操作系统平台的应用程序移植到有操作系统的平台上时由于存储数据方式的差异导致无法移植、兼容的问题。
第一方面,本发明实施例提供了一种数据操作方法,包括:
生成目标文件,所述目标文件的大小等于或大于第一系统的所需存储器的存储容量;
接收所述第一系统中第一数据操作函数的调用指令,所述第一操作函数的参数包括对所述存储器进行数据操作的目标物理地址;
将所述目标物理地址转换为所述目标文件中数据的偏移地址;
调用第二系统的第二数据操作函数、以所述偏移地址为目标起始地址对所述目标文件执行数据操作。
第二方面,本发明实施例还提供了一种数据操作装置,包括:
目标文件生成模块,用于生成目标文件,所述目标文件的大小等于或大于第一系统的所需存储器的存储容量;
目标物理地址获取模块,用于接收所述第一系统中第一数据操作函数的调用指令,所述第一操作函数的参数包括对所述存储器进行数据操作的目标物理地址;
偏移地址获取模块,用于将所述目标物理地址转换为所述目标文件中数据的偏移地址;
数据操作执行模块,用于调用第二系统的第二数据操作函数、以所述偏移地址为目标起始地址对所述目标文件执行数据操作。
第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个计算机程序,
当所述一个或多个计算机程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的数据操作方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的数据操作方法。
本发明实施例的数据操作方法应用于第一系统的嵌入式程序移植到第二系统后对存储器进行数据操作,在生成大小等于或大于第一系统的所需存储器的存储容量的目标文件后,接收第一系统中第一数据操作函数的调用指令,第一操作函数的参数包括对存储器进行数据操作的目标物理地址,将目标物理地址转换为目标文件中数据的偏移地址,调用第二系统的第二数据操作函数、以偏移地址为目标起始地址对目标文件执行数据操作,实现了将第一系统中第一操作函数直接操作的存储器的物理地址转换为第二系统对目标文件的数据操作的偏移地址,即将第一系统中直接对存储器的操作转换为第二系统中对文件的操作,使得第一系统中的应用程序可以移植到第二系统中,使得第二系统可以兼容第一系统的应用程序,无需更改第一系统和第二系统的相关操作函数,移植效率高。
附图说明
图1为本发明实施例一提供的一种数据操作方法的流程图;
图2为本发明实施例二提供的一种数据操作方法的流程图;
图3是本发明实施例二提供的一种数据写入方法的流程图;
图4是本发明实施例二提供的一种数据读取方法的流程图;
图5是本发明实施例二提供的一种数据擦除方法的流程图;
图6为本发明实施例三提供的一种数据操作装置的结构示意图;
图7为本发明实施例四提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种数据操作方法的流程图,本实施例应用于第一系统的嵌入式程序移植到第二系统后对存储器进行数据操作的情况,该方法可以由数据操作装置来执行,该数据操作装置可以由软件和/或硬件实现并配置在计算机设备中,例如,配置在个人计算机终端、服务器等,具体包括如下步骤:
S101、生成目标文件,目标文件的大小等于或大于第一系统的所需存储器的存储容量。
存储器是用来存储程序和各种数据信息的记忆部件。
第一系统为工业电子产品中嵌入式程序采用的无操作系统或小型的实时操作系统,例如ucos、rt-thread、freertos等,在数据的存储和读取方面一般采用直接对非易失性存储器的物理地址进行写入、读取和擦除等操作。
其中,嵌入式程序可以是嵌入在硬件中的操作系统和开发工具软件的程序,非易失性存储器是指当电流关掉后、所存储的数据不会消失的存储器。
第二系统为嵌入式程序的设计采用的大型操作系统,例如Windows、Linux、Android等服务器操作系统,一般安装于大型计算机上,在数据的存储和读取方面一般采用文件系统进行管理,如FAT16、FAT32、NTFS等,第二系统主要通过文件创建、写入和读取等操作来实现数据的存储和读取等操作,如采用文本关键字作为参数定位,如json格式,或者sqlite数据库。
由上可知,第一系统与第二系统实现数据操作的实现方式存在较大差异,第一系统的嵌入式程序移植到第二系统后,第一系统也无法直接通过其原有的数据操作方式对第二系统中的数据进行操作,因此,为了使嵌入式程序能在第二系统中运行,可以通过在第二系统中对第一系统中的数据操作进行复制来实现。
由于第二系统是采用文件系统进行管理的,可以生成一个用于模拟第一系统中的存储器的存储空间的文件,即生成目标文件,该目标文件的大小等于或大于第一系统的所需存储器的存储容量,使得目标文与存储器拥有相同大小的存储空间,既能为数据的操作提供足够的空间,也不会浪费文件的储存空间大小。
S102、接收第一系统中第一数据操作函数的调用指令,第一操作函数的参数包括对存储器进行数据操作的目标物理地址。
函数是指一段可以直接被另一段程序或代码调用的程序或代码,一般包括函数名、参数和类型标示符等。
第一数据操作函数为第一系统中用于对存储器进行数据操作的函数,第一数据操作函数通常用来实现一个特定的功能,例如,第一操作函数可以是写入函数、读取函数和擦除函数,写入函数用于将指定缓存中的数据写入到存储器中,读取函数用于从存储器中读取数据到指定的缓存中,擦除函数用于对存储器中的数据进行擦除。
调用指令则为调用第一数据操作函数的指令,在进行程序设计时,一般都把常用的程序段编写成独立的子程序或过程,在需要时随时调用,调用子程序需要用到调用指令,子程序执行完毕,就需要用返回指令返回到主程序。如上的写入函数、读取函数和擦除函数即为对应的子程序。
物理地址即为存储器的地址,是对存储器中存储单元进行访问时实际寻址所使用的地址,用于访问存储器中的数据,对数据进行操作前,首先确定要操作的数据的物理地址,即目标物理地址,即对于第一数据操作函数其参数中包括目标物理地址和数据长度,目标物理地址为开始进行数据操作的物理地址,数据长度为从该物理地址开始操作的数据的长度。
S103、将目标物理地址转换为目标文件中数据的偏移地址。
在原有的第一系统中,存储器的存储空间相对固定,该存储器除了部分空间用于存储程序代码之外,其余的存储空间用于存储数据,则用于存储数据的存储空间是连续的,即用于存储数据的存储空间具有起始物理地址和结束物理地址,上述的目标物理地址在第一系统中用于指示第一操作函数从起始物理地址和结束物理地址之间的某个物理地址开始进行数据操作。
而在第二系统的文件管理系统中,对于每个具有固定大小的文件,该文件的起始地址可以为0,然后以相对于起始地址的偏移地址定位数据在文件中的位置,为了将第一系统中的目标物理地址转换为文件中的偏移地址,可以在获取目标物理地址和起始物理地址后,计算目标物理地址与起始物理地址的差值得到地址偏移量,在已知目标文件的起始地址后,计算地址偏移量和起始地址的和值得到目标文件中数据的偏移地址。
S104、调用第二系统的第二数据操作函数、以偏移地址为目标起始地址对目标文件执行数据操作。
第二数据操作函数为对第二系统的存储器中的数据进行操作的函数,在获取第二系统中目标文件所需操作的数据的偏移地址后,即可调用第二系统的第二数据操作函数,以偏移地址为目标起始地址对目标文件执行数据操作,第二数据操作函数可以是写文件函数、读文件函数和擦除文件数据函数,写文件函数用于将待写入的数据写入到目标文件中,读取函数用于从目标文件中读取数据到预设的缓存中,擦除函数用于对目标文件中的数据进行擦除或初始化。
本发明实施例的数据操作方法应用于第一系统的嵌入式程序移植到第二系统后对存储器进行数据操作,在生成大小等于或大于第一系统的所需存储器的存储容量的目标文件后,接收第一系统中第一数据操作函数的调用指令,第一操作函数的参数包括对存储器进行数据操作的目标物理地址,将目标物理地址转换为目标文件中数据的偏移地址,调用第二系统的第二数据操作函数、以偏移地址为目标起始地址对目标文件执行数据操作,实现了将第一系统中第一操作函数直接操作的存储器的物理地址转换为第二系统对目标文件的数据操作的偏移地址,即将第一系统中直接对存储器的操作转换为第二系统中对文件的操作,使得第一系统中的应用程序可以移植到第二系统中,使得第二系统可以兼容第一系统的应用程序,无需更改第一系统和第二系统的相关操作函数,移植效率高。
实施例二
图2为本发明实施例二提供的一种数据操作方法的流程图,本实施例以实施例一为基础进一步优化,具体可以包括如下步骤:
S201、生成目标文件,目标文件的大小等于或大于第一系统的所需存储器的存储容量。
在本发明的一个可选实施例中,可以先获取第一系统所需的存储器的存储容量,然后生成文件大小等于或大于存储容量的文件作为目标文件,并初始化目标文件中的数据为预设数据,以使得目标文件与存储器的初始状态一致。
第一系统所需的存储器的存储容量即第一系统中用于存储程序数据的存储容量。
例如,存储器的存储容量为10M,计数方式为16进制,则可以在第二系统中创建一个文件大小同样为10M的目标文件,由于存储器初始状态时其中的数据均为0xff,因此,为了使目标文件与存储器未存入数据时的状态一致,可以对目标文件的全部数据写入0xff。
S202、接收第一系统中第一数据操作函数的调用指令,第一操作函数的参数包括对存储器进行数据操作的目标物理地址。
函数是指一段可以直接被另一段程序或代码调用的程序或代码,一般包括函数名、参数和类型标示符等。
第一数据操作函数为第一系统中用于对存储器进行数据操作的函数,调用指令则为调用第一数据操作函数的指令,在进行程序设计时,一般都把常用的程序段编写成独立的子程序或过程,在需要时随时调用,调用子程序需要用到调用指令,子程序执行完毕,就需要用返回指令返回到主程序。如上的写入函数、读取函数和擦除函数即为对应的子程序。
物理地址即为存储器的地址,是对存储器中存储单元进行访问时实际寻址所使用的地址,用于访问存储器中的数据,对数据进行操作前,首先确定要操作的数据的物理地址,即目标物理地址,即对于第一数据操作函数其参数中包括目标物理地址和数据长度,目标物理地址为开始进行数据操作的物理地址,数据长度为从该物理地址开始操作的数据的长度。
S203、获取第一系统所需的存储器的起始物理地址。
在第一系统中,存储器用于存储数据的存储空间具有起始物理地址和结束物理地址,由此可以获取到起始物理地址。
S204、采用目标物理地址与起始物理地址计算地址偏移量。
在已知第一系统存储器中所要操作的数据的目标物理地址后,可以通过以下公式计算地址偏移量:
地址偏移量=目标物理地-起始物理地址
上述地址偏移量表示第一系统中,第一数据操作函数以起始物理地址开始进行偏移,偏移计算得到的地址偏移量之后作为目标物理地址,从该目标物理地址开始执行数据操作。
S205、获取目标文件的起始地址。
可以通过第二系统获取目标文件的起始地址,在文件系统中,目标文件的起始地址通常设置为0,即目标文件的偏移地址表示的是目标文件中数据在文件中的位置。
S206、计算起始地址与地址偏移量的和值得到偏移地址。
在已知目标文件的起始地址后,即可计算起始地址与地址偏移量的和值得到偏移地址,即数据操作的起始地址,亦即第二系统中需要操作的数据在目标文件中的位置。
在一个示例中,第一系统中用于存储数据的存储空间的起始物理地址为0X80000000,某个数据的目标物理地址为0X80001000,该参数相对于起始物理地址的地址偏移量为0X00001000,假设目标文件中第一个数据的起始地址为0,如果要将第一系统中目标物理地址为0X80001000的参数以文件管理的方式写入目标文件中,则根据地址偏移量0X80001000和目标文件的起始地址0,该可以确定写入目标文件中后参数的偏移地址是0X00001000。
S207、调用第二系统的第二数据操作函数、以偏移地址为目标起始地址对目标文件执行数据操作。
第二数据操作函数为对第二系统的存储器中的数据进行操作的函数,在获取第二系统中目标文件所需操作的数据的偏移地址后,即可调用第二系统的第二数据操作函数,以偏移地址为目标起始地址对目标文件执行数据操作。
在本发明的一个实施例中,第一数据操作函数为写入函数,写入函数包括写入数据的目标物理地址、待写入数据的数据长度以及待写入数据的缓存地址。
调用第二系统的第二数据操作函数、以偏移地址为目标起始地址对目标文件执行数据操作,包括:调用第二系统的写文件函数来对目标文件执行写数据操作,写文件函数用于将待写入的数据写入到目标文件中,其中,写文件函数的参数中的缓存地址设置为待写入数据的缓存地址,写数据的指针指向偏移地址,写数据的长度等于待写入数据的数据长度。
如图3所示,调用写文件函数包括以下步骤:
S301、调用fopen尝试打开文件。
S302、判断打开文件是否成功。若是执行S304,若否返回失败。
S303、将目标物理地址转换为偏移地址。
S304、调用fseek函数将写数据的指针指向偏移地址。
fseek函数:int fseek(FILE*stream,long offset,int fromwhere),其中,stream是指向FILE对象的指针,该FILE对象指定了一个输出流,offset是地址偏移量,fromwhere为存储器的起始物理地址。
S305、调用fwrite函数将缓存地址中的数据写入到偏移地址,写数据的长度等于待写入数据的数据长度。
fwrite函数:size_t fwrite(const void*buffer,size_t size,size_tcount,FILE*stream),其中,buffer是存有待写入数据的缓存地址,size是要被写入的每个元素的大小,以字节为单位;count是元素的个数,每个元素的大小为size字节,stream是指向FILE对象的指针,即指向目标文件中偏移地址的指针。
在本发明的另一个实施例中,第一数据操作函数为读取函数,读取数据函数包括读数据的目标物理地址、待读取数据的数据长度以及用于储存读取到的数据的缓存地址。
调用第二系统的第二数据操作函数、以偏移地址为目标起始地址对目标文件执行数据操作,包括:调用第二系统的读文件函数来对目标文件执行读数据操作,读文件函数用于从目标文件中读出数据到预设的缓存中,其中,读文件函数的参数中的缓存地址设置为用于缓存读取到的数据的缓存地址,读数据的指针指向偏移地址,读数据的长度等于待读取数据的数据长度。
如图4所示,调用第二系统的读文件函数包括以下步骤:
S401、调用fopen尝试打开文件。
S402、判断打开文件是否成功。若是执行S404,若否返回失败。
S403、将目标物理地址转换为偏移地址。
S404、调用fseek函数将读取数据的指针指向偏移地址。
fseek函数:int fseek(FILE*stream,long offset,int fromwhere),其中,stream是指向FILE对象的指针,该FILE对象指定了一个输出流,offset是地址偏移量,fromwhere为目标文件的起始地址。
S405、调用fread函数从目标文件中的偏移地址读出数据到缓存地址中,读数据的长度等于待读取数据的数据长度。
fread函数:size_t fread(void*buffer,size_t size,size_t count,FILE*stream),其中,buffer是待缓存数据的缓存地址,size是要被写入的每个元素的大小,以字节为单位;count是元素的个数,每个元素的大小为size字节,stream是指向FILE对象的指针。
在本发明的又一个实施例中,第一数据操作函数可以为擦除函数,擦除函数包括擦除数据的目标物理地址、待擦除数据的数据长度。
调用第二系统的第二数据操作函数、以偏移地址为目标起始地址对目标文件执行数据操作,包括:调用第二系统的擦除文件数据函数来对目标文件执行擦除数据操作,擦除函数用于对目标文件中的数据进行擦除或初始化,擦除数据的长度等于待擦除数据的数据长度。
其中,擦除文件数据函数的参数中的擦除数据的指针指向偏移地址,擦除数据的长度等于待擦除数据的数据长度。
如图5所示,调用第二系统的擦除文件数据函数包括以下步骤:
S501、调用fopen尝试打开文件。
S502、判断打开文件是否成功。若是执行S504,若否返回失败。
S503、将目标物理地址转换为偏移地址。
S504、调用fseek函数将擦除数据的指针指向偏移地址。
fseek函数:int fseek(FILE*stream,long offset,int fromwhere),其中,stream是指向FILE对象的指针,offset是地址偏移量,fromwhere为目标文件的起始地址。
S506、调用fwrite函数从偏移地址开始写入初始数据,以擦除数据,擦除数据的长度等于待擦除数据的数据长度。
fwrite函数:size_t fwrite(const void*buffer,size_t size,size_tlength,FILE*stream),其中,buffer是存有预设数据的缓存地址,size是要被写入的每个元素的大小,以字节为单位;length是写入数据的长度,stream是指向FILE对象的指针。
其中,预设数据即为要写入目标文件的初始数据,例如,当计数方式为16进制,预设数据可以为0xff,即16进制下的初始数据,当然计数方式也可以为8进制等,对应地,预设数据也可以改变。
S208、返回已操作的数据的第二数据长度。
数据操作过程中容易发生数据丢失,导致程序、数据等不能使用,检测完整性后可以提前预知数据是否可用,避免之后的麻烦,对已操作数据的第二数据长度进行校验可以校验目标文件中已操作数据的大小和完整性。
S209、判断第二数据长度是否等于待操作数据的第一数据长度。
第一数据操作函数包括待操作数据的第一数据长度,例如在fwrite、ferase函数中包括待写入数据的数据长度,即第一数据长度,fread等函数中包含了size、count参数,通过这些参数也可以得到待读取数据的数据长度,即第一数据长度。
通过判断第二数据长度是否等于第一数据长度,则可以判断已操作数据的数据量是否与预设需要操作的数据量一致,即数据操作是否完成,若是执行S210,若否则返回失败。
S210、确定数据操作完成。
当第二数据长度等于待操作数据的第一数据长度时,表示已操作数据的数据量与预设需要操作的数据量一致,即数据操作已完成,则可以结束对数据的操作。
本发明实施例的数据操作方法应用于第一系统的嵌入式程序移植到第二系统后对存储器进行数据操作,在生成大小等于或大于第一系统的所需存储器的存储容量的目标文件后,接收第一系统中第一数据操作函数的调用指令,第一操作函数的参数包括对存储器进行数据操作的目标物理地址,将目标物理地址转换为目标文件中数据的偏移地址,调用第二系统的第二数据操作函数、以偏移地址为目标起始地址对目标文件执行数据操作,实现了将第一系统中第一操作函数直接操作的存储器的物理地址转换为第二系统对目标文件的数据操作的偏移地址,即将第一系统中直接对存储器的操作转换为第二系统中对文件的操作,使得第一系统中的应用程序可以移植到第二系统中,使得第二系统可以兼容第一系统的应用程序,无需更改第一系统和第二系统的相关操作函数,移植效率高。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必需的。
实施例三
图6为本发明实施例三提供的一种数据操作装置的结构框图,具体可以包括如下模块:
目标文件生成模块601,用于生成目标文件,目标文件的大小等于或大于第一系统的所需存储器的存储容量;
目标物理地址获取模块602,用于接收第一系统中第一数据操作函数的调用指令,第一操作函数的参数包括对存储器进行数据操作的目标物理地址;
偏移地址获取模块603,用于将目标物理地址转换为目标文件中数据的偏移地址;
数据操作执行模块604,用于调用第二系统的第二数据操作函数、以偏移地址为目标起始地址对目标文件执行数据操作。
在本发明的一个可选实施例中,目标文件生成模块601包括:
存储器容量获取子模块,用于获取第一系统所需的存储器的存储容量;
目标文件生成子模块,用于生成文件大小等于或大于存储容量的文件作为目标文件,并初始化目标文件中的数据为预设数据。
在本发明的一个可选实施例中,偏移地址获取模块603包括:
存储器起始物理地址获取子模块,用于获取第一系统所需的存储器的起始物理地址;
地址偏移量计算子模块,用于采用目标物理地址与起始物理地址计算地址偏移量;
目标文件起始地址获取子模块,用于获取目标文件的起始地址;
偏移地址计算子模块,用于计算起始地址与地址偏移量的和值得到偏移地址。
在本发明的一个可选实施例中,第一数据操作函数为写入函数,写入函数包括写入数据的目标物理地址、待写入数据的数据长度以及待写入数据的缓存地址,数据操作执行模块604包括:
写入文件数据子模块,用于调用第二系统的写文件函数来对目标文件执行写数据操作,其中,写文件函数的参数中的缓存地址设置为待写入数据的缓存地址,写数据的指针指向偏移地址,写数据的长度等于待写入数据的数据长度。
在本发明的一个可选实施例中,第一数据操作函数为读取函数,读取数据函数包括读数据的目标物理地址、待读取数据的数据长度以及用于存储读取到的数据的缓存地址,数据操作执行模块604包括:
读取文件数据子模块,用于调用第二系统的读文件函数来对目标文件执行读数据操作,其中,读文件函数的参数中的缓存地址设置为用于存储读取到的数据的缓存地址,读数据的指针指向偏移地址,读数据的长度等于待读取数据的数据长度。
在本发明的一个可选实施例中,第一数据操作函数为擦除函数,擦除函数包括擦除数据的目标物理地址、待擦除数据的数据长度,数据操作执行模块604包括:
擦除文件数据子模块,用于调用第二系统的擦除文件数据函数来对目标文件执行擦除数据操作,其中,擦除文件数据函数的参数中的擦除数据的指针指向偏移地址,擦除数据的长度等于待擦除数据的数据长度
在本发明的一个可选实施例中,数据操作装置还包括:
第二数据长度返回模块,用于返回已操作的数据的第二数据长度;
第二数据长对比模块,用于判断第二数据长度是否等于待操作数据的第一数据长度,若是执行数据操作完成确定模块所执行的内容,若否则返回失败;
数据操作完成确定模块,用于确定数据操作完成。
本发明实施例所提供的数据操作装置可执行本发明任意实施例所提供的数据操作方法,具备执行方法相应的功能模块和有益效果。
实施例四
参照图7,示出了本发明一个示例中的一种计算机设备的结构示意图。如图7所示,该计算机设备具体可以包括:处理器701、存储器702、具有触摸功能的显示屏703、输入装置704、输出装置705以及通信装置706。该计算机设备中处理器701的数量可以是一个或者多个,图7中以一个处理器701为例。该计算机设备中存储器702的数量可以是一个或者多个,图7中以一个存储器702为例。该设备的处理器701、存储器702、显示屏703、输入装置704、输出装置705以及通信装置706可以通过总线或者其他方式连接,图7中以通过总线连接为例。
存储器702作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作装置、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器702可进一步包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
通信装置706,用于与其他设备建立通信连接,其可以是有线通信装置和/或无线通信装置。
输入装置704可用于接收输入的数字或者字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置705可以包括扬声器等音频设备。需要说明的是,输入装置704和输出装置705的具体组成可以根据实际情况设定。
处理器701通过运行存储在存储器702中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述数据操作方法。
具体地,实施例中,处理器701执行存储器702中存储的一个或多个程序时,具体实现本发明实施例提供的数据操作方法步骤。
实施例五
本发明实施例五还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可实现本发明任意实施例中的数据操作方法。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明应用于设备上任意实施例所提供的数据操作方法中的相关操作。
需要说明的是,对于装置、计算机设备、存储介质实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见系统实施例的部分说明即可。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,计算机设备,服务器,或者网络设备等)执行本发明各个实施例所述的数据操作方法。
值得注意的是,上述数据操作装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据操作方法,其特征在于,应用于第一系统的嵌入式程序移植到第二系统后对存储器进行数据操作,包括:
生成目标文件,所述目标文件的大小等于或大于第一系统的所需存储器的存储容量;
接收所述第一系统中第一数据操作函数的调用指令,所述第一操作函数的参数包括对所述存储器进行数据操作的目标物理地址;
将所述目标物理地址转换为所述目标文件中数据的偏移地址;
调用第二系统的第二数据操作函数、以所述偏移地址为目标起始地址对所述目标文件执行数据操作。
2.根据权利要求1所述的方法,其特征在于,所述生成目标文件,包括:
获取第一系统所需的存储器的存储容量;
生成文件大小等于或大于所述存储容量的文件作为目标文件,并初始化所述目标文件中的数据为预设数据。
3.根据权利要求1所述的方法,其特征在于,所述将所述目标物理地址转换为所述目标文件中数据的偏移地址,包括:
获取所述第一系统所需的存储器的起始物理地址;
采用所述目标物理地址与所述起始物理地址计算地址偏移量;
获取所述目标文件的起始地址;
计算所述起始地址与所述地址偏移量的和值得到偏移地址。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述第一数据操作函数为写入函数,所述写入函数包括写入数据的目标物理地址、待写入数据的数据长度以及待写入数据的缓存地址,
所述调用第二系统的第二数据操作函数、以所述偏移地址为目标起始地址对所述目标文件执行数据操作,包括:
调用所述第二系统的写文件函数来对所述目标文件执行写数据操作,其中,所述写文件函数的参数中的缓存地址设置为所述待写入数据的缓存地址,写数据的指针指向所述偏移地址,写数据的长度等于所述待写入数据的数据长度。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述第一数据操作函数为读取函数,所述读取数据函数包括读数据的目标物理地址、待读取数据的数据长度以及用于存储读取到的数据的缓存地址,
所述调用第二系统的第二数据操作函数、以所述偏移地址为目标起始地址对所述目标文件执行数据操作,包括:
调用所述第二系统的读文件函数来对所述目标文件执行读数据操作,其中,所述读文件函数的参数中的缓存地址设置为所述用于存储读取到的数据的缓存地址,读数据的指针指向所述偏移地址,读数据的长度等于所述待读取数据的数据长度。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述第一数据操作函数为擦除函数,所述擦除函数包括擦除数据的目标物理地址、待擦除数据的数据长度,
所述调用第二系统的第二数据操作函数、以所述偏移地址为目标起始地址对所述目标文件执行数据操作,包括:
调用所述第二系统的擦除文件数据函数来对所述目标文件执行擦除数据操作,其中,所述擦除文件数据函数的参数中的擦除数据的指针指向所述偏移地址,擦除数据的长度等于所述待擦除数据的数据长度。
7.根据权利要求1所述的方法,其特征在于,所述第一数据操作函数包括待操作数据的第一数据长度,在所述调用第二系统的第二数据操作函数、以所述偏移地址为目标起始地址对所述目标文件执行数据操作之后,还包括:
返回已操作的数据的第二数据长度;
判断所述第二数据长度是否等于待操作数据的第一数据长度;
若是,确定所述数据操作完成。
8.一种数据操作装置,其特征在于,应用于第一系统的嵌入式程序移植到第二系统后对存储器进行数据操作,包括:
目标文件生成模块,用于生成目标文件,所述目标文件的大小等于或大于第一系统的所需存储器的存储容量;
目标物理地址获取模块,用于接收所述第一系统中第一数据操作函数的调用指令,所述第一操作函数的参数包括对所述存储器进行数据操作的目标物理地址;
偏移地址获取模块,用于将所述目标物理地址转换为所述目标文件中数据的偏移地址;
数据操作执行模块,用于调用第二系统的第二数据操作函数、以所述偏移地址为目标起始地址对所述目标文件执行数据操作。
9.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个计算机程序,
当所述一个或多个计算机程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一项所述的数据操作方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的数据操作方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111112794.7A CN113821458B (zh) | 2021-09-18 | 2021-09-18 | 一种数据操作方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111112794.7A CN113821458B (zh) | 2021-09-18 | 2021-09-18 | 一种数据操作方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113821458A true CN113821458A (zh) | 2021-12-21 |
CN113821458B CN113821458B (zh) | 2023-09-05 |
Family
ID=78915176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111112794.7A Active CN113821458B (zh) | 2021-09-18 | 2021-09-18 | 一种数据操作方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113821458B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117991995A (zh) * | 2024-03-26 | 2024-05-07 | 中国人民解放军海军潜艇学院 | 一种sd卡文件连续读或写控制方法、系统及存储设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090313001A1 (en) * | 2008-06-11 | 2009-12-17 | Fujitsu Limited | Simulation apparatus, simulation method and computer-readable recording medium on or in which simulation program is recorded |
CN101872326A (zh) * | 2010-06-24 | 2010-10-27 | 济南大学 | 一种嵌入式环境下otp闪存的数据存储管理方法 |
CN101901263A (zh) * | 2010-07-22 | 2010-12-01 | 华为终端有限公司 | 文件系统的访问方法及装置 |
CN105426223A (zh) * | 2015-12-25 | 2016-03-23 | 百度在线网络技术(北京)有限公司 | 应用加载方法和装置 |
CN107111452A (zh) * | 2015-12-03 | 2017-08-29 | 华为技术有限公司 | 应用于计算机系统的数据迁移方法和装置、计算机系统 |
CN108073507A (zh) * | 2016-11-17 | 2018-05-25 | 联芯科技有限公司 | 一种内核崩溃现场数据的处理方法及装置 |
CN110032339A (zh) * | 2019-04-12 | 2019-07-19 | 北京旷视科技有限公司 | 数据迁移方法、装置、系统、设备和存储介质 |
CN110597762A (zh) * | 2018-05-25 | 2019-12-20 | 杭州海康威视系统技术有限公司 | 文件处理方法、装置、设备及存储介质 |
CN110837478A (zh) * | 2019-11-06 | 2020-02-25 | 出门问问信息科技有限公司 | 文件管理方法、存储介质和电子设备 |
CN111208988A (zh) * | 2019-12-24 | 2020-05-29 | 杭州海兴电力科技股份有限公司 | 单片机文件系统编写方法及单片机系统 |
-
2021
- 2021-09-18 CN CN202111112794.7A patent/CN113821458B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090313001A1 (en) * | 2008-06-11 | 2009-12-17 | Fujitsu Limited | Simulation apparatus, simulation method and computer-readable recording medium on or in which simulation program is recorded |
CN101872326A (zh) * | 2010-06-24 | 2010-10-27 | 济南大学 | 一种嵌入式环境下otp闪存的数据存储管理方法 |
CN101901263A (zh) * | 2010-07-22 | 2010-12-01 | 华为终端有限公司 | 文件系统的访问方法及装置 |
CN107111452A (zh) * | 2015-12-03 | 2017-08-29 | 华为技术有限公司 | 应用于计算机系统的数据迁移方法和装置、计算机系统 |
CN105426223A (zh) * | 2015-12-25 | 2016-03-23 | 百度在线网络技术(北京)有限公司 | 应用加载方法和装置 |
CN108073507A (zh) * | 2016-11-17 | 2018-05-25 | 联芯科技有限公司 | 一种内核崩溃现场数据的处理方法及装置 |
CN110597762A (zh) * | 2018-05-25 | 2019-12-20 | 杭州海康威视系统技术有限公司 | 文件处理方法、装置、设备及存储介质 |
CN110032339A (zh) * | 2019-04-12 | 2019-07-19 | 北京旷视科技有限公司 | 数据迁移方法、装置、系统、设备和存储介质 |
CN110837478A (zh) * | 2019-11-06 | 2020-02-25 | 出门问问信息科技有限公司 | 文件管理方法、存储介质和电子设备 |
CN111208988A (zh) * | 2019-12-24 | 2020-05-29 | 杭州海兴电力科技股份有限公司 | 单片机文件系统编写方法及单片机系统 |
Non-Patent Citations (1)
Title |
---|
杨柏松; 高美凤: "嵌入式平台QR码译码程序的移植方法", 《计算机系统应用》, vol. 25, no. 3, pages 164 - 169 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117991995A (zh) * | 2024-03-26 | 2024-05-07 | 中国人民解放军海军潜艇学院 | 一种sd卡文件连续读或写控制方法、系统及存储设备 |
CN117991995B (zh) * | 2024-03-26 | 2024-06-07 | 中国人民解放军海军潜艇学院 | 一种sd卡文件连续读或写控制方法、系统及存储设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113821458B (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112765271B (zh) | 区块链交易索引的存储方法、装置、计算机设备及介质 | |
CN111104063A (zh) | 一种数据存储方法、装置及电子设备和存储介质 | |
CN111596863A (zh) | 一种数据读取方法、装置、设备及可读存储介质 | |
CN112445729B (zh) | 操作地址确定方法、PCIe系统、电子设备及存储介质 | |
CN110908927A (zh) | 数据储存装置及其删除命名空间的方法 | |
CN107391038B (zh) | 资料存储型闪存的数据写入方法、闪存及存储介质 | |
CN115576501B (zh) | 一种raid卡的节点更新方法、系统及相关装置 | |
KR20100088210A (ko) | 휴대용 단말기에서 내장 대용량 메모리를 이용한 컨텐츠 다운로드 방법 및 장치 | |
CN117094037B (zh) | 基于Path+ORAM的多路径缓存写回方法、装置及相关设备 | |
CN105094691A (zh) | 一种数据操作的方法、设备和系统 | |
CN113821458B (zh) | 一种数据操作方法、装置、计算机设备和存储介质 | |
CN113297156A (zh) | 一种数据同步方法、装置、设备及介质 | |
CN108829345B (zh) | 日志文件的数据处理方法和终端设备 | |
JP7082701B2 (ja) | 磁気ディスクの管理方法、磁気ディスクの管理装置、電子機器、コンピュータプログラムおよびコンピュータ可読記憶媒体 | |
CN114461223A (zh) | 一种代码生成方法、装置及终端设备 | |
CN101751338A (zh) | 数据存取控制装置及数据存取方法 | |
CN113031871A (zh) | 数据追加聚合方法、装置、电子设备及可读存储介质 | |
WO2020113421A1 (zh) | 一种挂载文件系统的方法、终端设备及存储介质 | |
CN107257281B (zh) | Nor flash存储密钥记录的方法、装置及计算机可读存储介质 | |
CN111897745B (zh) | 一种数据存储方法、装置、电子设备及存储介质 | |
CN113110846A (zh) | 一种环境变量的获取方法及装置 | |
CN108121667B (zh) | 数据擦除方法、装置及计算机存储介质 | |
CN112035378A (zh) | 一种数据快速写入flash闪存的方法及系统 | |
CN111858590A (zh) | 一种存储系统元数据组织方法、系统、终端及存储介质 | |
CN112541756B (zh) | 区块链合约升级方法、装置、计算机设备及可读存储介质 |
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 |