一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

在ubi设备上支持写块设备的软件的方法及装置与流程

2022-02-20 00:25:48 来源:中国专利 TAG:


1.本发明涉及ubi设备写入数据的技术领域,特别涉及一种在ubi设备上支持写块设备的软件的方法及装置。


背景技术:

2.对于块设备,当需要更新一个块设备的数据时,可以直接打开对应的设备节点,并直接写入数据。
3.对于ubi设备,当需要更新一个ubi卷的数据时,需要首先打开对应的设备,并发起一次ioctl,此时需要一并指定本次要写入的数据量。写入可以分多次,但必须写满ioctl指定的需要更新的数据量;写入足够的数据量之后,ubi卷才算更新完成。提前中断的话,该卷会被破坏,只能重新开始一次更新才能修复它。因此,在ubi设备上无法直接使用为块设备设计的软件,而改造这样的软件,通常需要软件的源代码,并付出大量人力物力。


技术实现要素:

4.本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种在ubi设备上支持写块设备的软件的方法,能够无须更改软件原代码而在ubi设备上支持写块设备的软件。
5.本发明还提出一种具有上述在ubi设备上支持写块设备的软件的方法的装置。
6.根据本发明的第一方面实施例的在ubi设备上支持写块设备的软件的方法,包括以下步骤:基于ubi设备生成第一设备,并将所述第一设备暴露给支持写块设备的软件;所述软件通过所述第一设备写入数据,通过ubi设备封装工具从所述第一设备读入预设长度的数据,对所述ubi设备进行更新。
7.根据本发明实施例的在ubi设备上支持写块设备的软件的方法,至少具有如下有益效果:通过基于ubi设备生成支持写块设备的软件可操作的第一设备,不需要软件的源代码也无须更改源代码,使得在ubi设备上可无障碍地使用支持写块设备的软件,节省了人力和物力。
8.根据本发明的一些实施例,所述ubi设备封装工具根据所述ubi设备调用ioctl ubi_iocvolup,创建一个可被所述软件操作的所述第一设备。
9.根据本发明的一些实施例,所述第一设备的类型为有名管道named fifo。
10.根据本发明的一些实施例,所述ubi设备封装工具创建所述第一设备的管道,通过阻塞读的方式,从所述管道中读取所述预设长度的数据。
11.根据本发明的一些实施例,所述ubi设备封装工具读取到所述预设长度的数据后,删除所述管道,完成对所述ubi设备的更新。
12.根据本发明的一些实施例,所述软件打开所述第一设备相应的fifo文件,根据使用块设备时的行为,写入相应的数据。
13.根据本发明的一些实施例,所述软件写完有效数据后,根据所述预设长度写入相
应的0数据,以使写入数据的总长度为所述预设长度。
14.根据本发明的一些实施例,所述预设长度为参数指定或者为所述ubi设备对应的ubi卷大小。
15.根据本发明的第二方面实施例的在ubi设备上支持写块设备的软件的装置,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如本发明第一方面实施例中所述的方法。
16.根据本发明实施例的在ubi设备上支持写块设备的软件的装置,至少具有与以下有益效果:通过基于ubi设备生成支持写块设备的软件可操作的第一设备,不需要软件的源代码也无须更改源代码,使得在ubi设备上可无障碍地使用支持写块设备的软件,节省了人力和物力。
17.本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
18.本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
19.图1为本发明实施例的方法的流程示意图;
20.图2为本发明实施例的方法中的数据交互示意图;
21.图3为本发明实施例的装置的模块示意框图。
22.附图标记:
23.存储器100、处理器200。
具体实施方式
24.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
25.在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个及两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。在本发明的描述中,步骤标号仅是为了描述的方便或者引述的方便所作出的标识,各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
26.参照图1,本发明的实施例的方法包括:基于ubi设备生成第一设备,并将该第一设备暴露给支持写块设备的软件;该软件通过该第一设备写入数据,通过ubi设备封装工具从该第一设备读入预设长度的数据,对该ubi设备进行更新。ubi设备封装工具接收到预设长度的数据,或者接收到指定信号后补全预设长度的数据,将数据写入ubi设备完成更新,并在完成更新后删除第一设备。
27.本发明的实施例,至少具有如下有益效果:通过基于ubi设备生成支持写块设备的
软件可操作的第一设备,不需要软件的源代码也无须更改源代码,使得在ubi设备上可无障碍地使用支持写块设备的软件,节省了人力和物力。
28.本发明的实施例通过由ubi设备封装工具完成实时转发,可分批多次写入,对ram空间的开销极小,可适用于资源紧张的嵌入式设备。
29.ubi设备封装工具根据ubi设备调用ioctl ubi_iocvolup,创建一个可被软件操作的第一设备。第一设备的类型可以是,例如有名管道named fifo。下面将以第一设备为有名管道named fifo为例,描述本发明的实施过程。
30.ubi设备封装工具,也简称ubidev,其运行时指定目标ubi卷,会先按ubi卷更新标准,打开指定目标ubi卷,调用ioctl ubi_iocvolup,创建一个可被支持块设备写入的软件可操作的设备。
31.参照图2,ubi设备封装工具创建第一设备的管道,通过阻塞读的方式,从管道中读取预设长度的数据。支持块设备写入的写入的软件通过暴露的第一设备,打开相应的fifo文件,根据使用块设备时的行为,写入相应的数据;该软件在写完有效数据后,根据预设长度写入相应的0数据,以使写入数据的总长度为预设长度。ubi设备封装工具每从管道读到一笔数据就写入卷中,直到从管道读取到预设长度的数据,再删除管道,完成本次更新。更新的数据长度,即预设长度可以在调用ubi设备封装工具时使用参数指定,该预设长度也可以是ubi设备对应的ubi卷大小(未使用参数指定)。
32.例如,对于dd程序,当需要将一个文件newdata写入块设备时,操作为
33.dd if=newdata of=/dev/块设备节点
34.但对于ubi设备,dd则无法使用。即dd if=newdata of=/dev/ubi设备节点,这种操作是不允许的通过ubi设备封装工具,则可进行如下操作:
35.ubidev/dev/ubi0_1&#基于ubi0_1生成fifo,&表示后台运行
36.dd if=newdata.part1 of=/dev/ubi0_1_fifo#写入fifo即相当于写入ubi卷
37.dd if=newdata.part2 of=/dev/ubi0_1_fifo#可分批写入
38.dd if=/dev/zero of=/dev/ubi0_1_fifo#有效数据写入完毕后,填充足够的数据来结束本次更新
39.显然,本发明的实施例中,最后写入ubi的填充操作不一定需要支持块写入设备的软件这一外部程序来完成。也可以通过信号等方式,告知运行中的ubi设备封装工具本次更新结果。ubi设备封装工具接收到更新结束的信号,自动对ubi设备完成填充操作,完成本次更新。
40.本发明的实施例中,第一设备的类型也可以不一写为fifo这种类型。也就是说,暴露给支持块写入设备的软件的,也不一定必须为fifo这种形式,也可以是其它该支持块写入设备的软件可操作的节点,写入此节点的数据最终由ubi设备封装工具转发写入卷中即可。
41.本发明实施例的装置,参照图3,包括:存储器100、处理器200及存储在存储器上100并可在处理器上运行的计算机程序,其特征在于,处理器200执行计算机程序时实现如本发明上述的方法。
42.尽管本文描述了具体实施方案,但是本领域中的普通技术人员将认识到,许多其它修改或另选的实施方案同样处于本公开的范围内。例如,结合特定设备或组件描述的功
能和/或处理能力中的任一项可以由任何其它设备或部件来执行。另外,虽然已根据本公开的实施方案描述了各种例示性具体实施和架构,但是本领域中的普通技术人员将认识到,对本文所述的例示性具体实施和架构的许多其它修改也处于本公开的范围内。
43.上文参考根据示例性实施方案所述的系统、方法、系统和/或计算机程序产品的框图和流程图描述了本公开的某些方面。应当理解,框图和流程图中的一个或多个块以及框图和流程图中的块的组合可分别通过执行计算机可执行程序指令来实现。同样,根据一些实施方案,框图和流程图中的一些块可能无需按示出的顺序执行,或者可以无需全部执行。另外,超出框图和流程图中的块所示的那些部件和/或操作以外的附加部件和/或操作可存在于某些实施方案中。
44.因此,框图和流程图中的块支持用于执行指定功能的装置的组合、用于执行指定功能的元件或步骤的组合以及用于执行指定功能的程序指令装置。还应当理解,框图和流程图中的每个块以及框图和流程图中的块的组合可以由执行特定功能、元件或步骤的专用硬件计算机系统或者专用硬件和计算机指令的组合来实现。
45.本文所述的程序模块、应用程序等可包括一个或多个软件组件,包括例如软件对象、方法、数据结构等。每个此类软件组件可包括计算机可执行指令,所述计算机可执行指令响应于执行而使本文所述的功能的至少一部分(例如,本文所述的例示性方法的一种或多种操作)被执行。
46.软件组件可以用各种编程语言中的任一种来编码。一种例示性编程语言可以为低级编程语言,诸如与特定硬件体系结构和/或操作系统平台相关联的汇编语言。包括汇编语言指令的软件组件可能需要在由硬件架构和/或平台执行之前由汇编程序转换为可执行的机器代码。另一种示例性编程语言可以为更高级的编程语言,其可以跨多种架构移植。包括更高级编程语言的软件组件在执行之前可能需要由解释器或编译器转换为中间表示。编程语言的其它示例包括但不限于宏语言、外壳或命令语言、作业控制语言、脚本语言、数据库查询或搜索语言、或报告编写语言。在一个或多个示例性实施方案中,包含上述编程语言示例中的一者的指令的软件组件可直接由操作系统或其它软件组件执行,而无需首先转换成另一种形式。
47.软件组件可存储为文件或其它数据存储构造。具有相似类型或相关功能的软件组件可一起存储在诸如特定的目录、文件夹或库中。软件组件可为静态的(例如,预设的或固定的)或动态的(例如,在执行时创建或修改的)。
48.上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献