一种out文件加载方法、装置及系统的制作方法
【技术领域】
[0001]本申请涉及嵌入式技术领域,特别是涉及一种out文件加载方法、装置及系统。
【背景技术】
[0002]嵌入式vxWorks操作系统的模块可执行文件为out文件,类似于Windows环境下的exe可执行文件,out文件为嵌入式vxWorks操作系统环境下的目标文件格式。嵌入式vxfforks操作系统使用out文件模块来进行软件发布,这样做有利于代码保密、系统裁剪等。
[0003]传统的嵌入式vxWorks操作系统中,out文件的加载依赖于基于嵌入式vxWorks操作系统构建的文件系统,out文件的加载是将各个OUt文件放在文件系统下,启动的时候根据配置文件加载OUt文件或者在启动代码里将out文件的加载和顺序固定设置好。
[0004]通常情况下,嵌入式vxWorks操作系统的资源有限,并不是所有的嵌入式vxWorks操作系统都有大容量的存储器用于构建文件系统,因此out文件的加载会受到存储器的容量限制,并且基于嵌入式vxWorks操作系统构建的文件系统本身存在着容易损坏的风险,因此加载在文件系统中的out文件也容易丢失或者损坏。
【发明内容】
[0005]有鉴于此,本申请提供一种out文件加载方法、装置及系统,以有效的解决嵌入式vxfforks操作系统中的out文件加载受到存储器的容量限制、以及加载在文件系统中的out文件容易丢失或损坏的问题。
[0006]为了实现上述目的,本申请实施例提供的技术方案如下:
[0007]一种out文件加载方法,包括:
[0008]将需要加载的out文件从存储器中读取到内存;
[0009]调用vxWorks系统函数memDrvCreate O将所述内存中的所述out文件构造成伪1/0设备文件;
[0010]调用vxWorks系统函数1adModuleO加载所述伪1/0设备文件,实现对所述out文件的加载。
[0011]优选地,所述将需要加载的out文件从存储器中读取到内存,包括:
[0012]对所述存储器中的out文件的数据结构进行初始化;
[0013]将文件指针指向所述存储器中的out文件的起始地址;
[0014]获取所述起始地址在所述存储器中相对于存储器基地址的偏移地址和大小。
[0015]优选地,在所述调用vxWorks系统函数1adModuleO加载所述伪1/0设备文件之前,还包括:
[0016]调用接口函数openO打开所述伪内存1/0设备文件,并获取文件描述符;
[0017]贝丨」,所述调用vxWorks系统函数1adModuleO加载所述伪1/0设备文件,包括:
[0018]调用vxWorks系统函数1adModuleO根据所述文件描述符加载所述伪内存1/0设备文件。
[0019]—种out文件加载装置,包括:
[0020]读取模块,与所述读取模块相连接的构造模块,与所述构造模块相连接的加载模块;
[0021]所述读取模块将需要加载的out文件从存储器中读取到内存;
[0022]所述构造模块调用vxWorks系统函数memDrvCreate O将所述内存中的所述out文件构造成伪I/O设备文件;
[0023]所述加载模块调用vxWorks系统函数1adModule O加载所述伪1/0设备文件,实现对所述out文件的加载。
[0024]优选地,所述读取模块,包括:
[0025]初始化单元,所述初始化单元对所述存储器中的out文件的数据结构进行初始化;
[0026]指向单元,所述指向单元将文件指针指向所述存储器中的out文件的起始地址;
[0027]获取单元,所述获取单元获取所述起始地址在所述存储器中相对于存储器基地址的偏移地址和大小。
[0028]优选地,所述加载模块,包括:
[0029]获取单元,所述获取单元调用接口函数open O打开所述伪内存1/0设备文件,并获取文件描述符;
[0030]加载单元,所述获取单元调用vxWorks系统函数1adModule O根据所述文件描述符加载所述伪内存1/0设备文件。
[0031]—种out文件加载系统,包括:out文件加载装置,与所述out文件加载装置相连的存储器,所述存储器用于存储out文件;
[0032]所述out文件加载装置包括:
[0033]读取模块,与所述读取模块相连接的构造模块,与所述构造模块相连接的加载模块;
[0034]所述读取模块将需要加载的out文件从所述存储器中读取到内存;
[0035]所述构造模块调用vxWorks系统函数memDrvCreate O将所述内存中的所述out文件构造成伪1/0设备文件;
[0036]所述加载模块调用vxWorks系统函数1adModule O加载所述伪1/0设备文件,实现对所述out文件的加载。
[0037]优选地,所述读取模块,包括:
[0038]初始化单元,所述初始化单元对所述存储器中的out文件的数据结构进行初始化;
[0039]指向单元,所述指向单元将文件指针指向所述存储器中的out文件的起始地址;
[0040]获取单元,所述获取单元获取所述起始地址在所述存储器中相对于存储器基地址的偏移地址和大小。
[0041]优选地,所述加载模块,包括:
[0042]获取单元,所述获取单元调用接口函数open O打开所述伪内存1/0设备文件,并获取文件描述符;
[0043]加载单元,所述获取单元调用vxWorks系统函数1adModule O根据所述文件描述符加载所述伪内存I/O设备文件。
[0044]由以上本申请提供的技术方案,将需要加载的out文件从存储器中读取到内存;调用vxWorks系统函数memDrvCreate O将所述内存中的所述out文件构造成伪I/O设备文件;调用vxWorks系统函数1adModuleO加载所述伪I/O设备文件,实现对所述out文件的加载。这样,直接从存储器读取out文件到内存,并利用系统函数memDevCreateO将内存中的out文件制作成一个伪I/O设备文件,使其能够被1adModuleO函数调用,完成out文件的加载,该方案不需要使用文件系统,可以有效的节省存储器的存储空间,并且由于在加载out文件时不使用文件系统,可以避免文件系统损坏时导致的out文件丢失或者损坏等问题,提高了嵌入式系统的整体可靠性。
【附图说明】
[0045]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0046]图1为本申请提供的一种out文件加载方法的流程示意图;
[0047]图2为本申请提供的一种out文件加载装置的结构示意图;
[0048]图3为本申请提供的一种out文件加载系统的结构示意图。
【具体实施方式】
[0049]相关术语解释:
[0050]vxfforks:vxfforks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实习操作系统(RTOS),是嵌入式开发环境的关键组成部分,该操作系统具有良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地;
[0051]out文件:属于ELF文件类型,可通过ftp工具将它加载到文件系统(比如使用copy命令加载到RAM盘)中,再调用Id或者1adModule函数加载到操作系统中运行;
[0052]1adModule:vxfforks操作系统提供的系统接口函数,用于目标文件的加载;
[0053]Id:vxfforks操作系统提供的系统接口函数,用于目标文件的加载。
[0054]为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0055]下面结合附图,对本申请的实施方案进行详细描述。
[0056]图1为本申请提供的一种out文件加载方法的流程示意图。
[0057]请参照图1所示,本申请实施例提供的out文件加载方法,包括:
[0058]步骤SlOO:将需要加载的out文件从存储器中读取到内存;
[0059]在本申请实施例中,将需要加载的out文件从存储器中读取到内存,可以包括:对所述存储器中的OUt文件的数据结构进行初始化;将文件指针指向所述存储器中的out文件的起始地址;获取所述起始地址在所述存储器中相对于存储器基地址的偏移地址和大小。
[0060]out文件是直接存储在存储器上的,本申请实施例不使用文件系统,无需打开文件,而是通过文件指针访问存储器中的绝对地址读取out文件到内存,并获取OUt文件相对于存储器基地址的偏移量和文件大小。
[0061]步骤S200:调用vxWorks系统函数memDrvCreate ()将所述内存中的所述out文件构造成伪1/0设备文件;
[0062]在本申请实施例中,调用系统函数memDevCreateO将加载到内存的out