应用级SD卡空间管理

专利类型 发明授权 法律事件 公开; 实质审查; 授权;
专利有效性 有效专利 当前状态 授权
申请号 CN202011430021.9 申请日 2020-12-07
公开(公告)号 CN114595189B 公开(公告)日 2025-04-11
申请人 安霸国际有限合伙企业; 申请人类型 其他
发明人 王献东; 杜典嵘; 牛志峰; 第一发明人 王献东
权利人 安霸国际有限合伙企业 权利人类型 其他
当前权利人 安霸国际有限合伙企业 当前权利人类型 其他
省份 当前专利权人所在省份: 城市 当前专利权人所在城市:
具体地址 当前专利权人所在详细地址:加拿大安大略 邮编 当前专利权人邮编:
主IPC国际分类 G06F16/11 所有IPC国际分类 G06F16/11G06F16/13G06F16/17G06F16/172G06F16/18G06F16/188G06F16/71H04N21/4147H04N21/433H04N21/4402G07C5/08
专利引用数量 1 专利被引用数量 0
专利权利要求数量 20 专利文献类型 B
专利代理机构 永新专利商标代理有限公司 专利代理人 刘瑜;
摘要 本 发明 涉及一种应用级SD卡空间管理。一种装置包括可移除介质 接口 电路 和处理器。可移除介质接口可以被配置为读取文件并且将该文件写入非易失性存储介质。处理器可以被配置为生成编码的数据并且管理文件操作,该文件操作涉及将编码的数据存储在非易失性存储介质上以使文件碎片的数量最小化。
权利要求

1.一种装置,包括:
可移除介质接口电路,其被配置为读取文件并且将所述文件写入非易失性存储介质;
以及
处理器,其被配置为从一个或多个数据流生成编码的数据并且通过利用包括多个用户空间应用程序接口的文件管理层来管理文件操作,所述文件操作涉及将所述编码的数据存储在所述非易失性存储介质上以使文件碎片的数量最小化,
其中,所述多个用户空间应用程序接口包括:
第一用户空间应用程序接口,其用于生成用户空间创建命令和用户空间写入命令,其中,所述用户空间创建命令被配置为创建新的目标文件并且打开已有的所述目标文件,所述目标文件包括一个或多个单位文件,所述一个或多个单位文件具有基于所述一个或多个数据流的位率的大小,并且所述用户空间写入命令被配置为提供用于将所述编码的数据写入到所述目标文件中的一个或多个目标文件的信息;
第二用户空间应用程序接口,其用于发出用户空间删除命令以从不再需要的所述目标文件回收所述一个或多个单位文件;以及
第三用户空间应用程序接口,其用于将所述用户空间创建命令、所述用户空间写入命令、以及所述用户空间删除命令转换为对系统内核的一个或多个系统调用,其中,所述一个或多个系统调用在所述装置的物理层执行打开、关闭、读取、写入、文件分配、以及文件拆分操作,并且所述第三用户空间应用程序接口被配置为创建所述一个或多个单位文件并且基于所述一个或多个单位文件和由所述用户空间写入命令提供的所述信息来扩大所述目标文件。
2.根据权利要求1所述的装置,其中,使用虚拟文件分配表(vFAT)文件系统或扩展文件分配表(exFAT)文件系统来格式化所述非易失性存储介质。
3.根据权利要求1所述的装置,其中,所述非易失性存储介质包括安全数字介质(SD)卡。
4.根据权利要求1所述的装置,其中,所述处理器实现应用级空间管理方案以创建、移除、覆写文件和调整文件大小,以便避免文件的碎片化。
5.根据权利要求4所述的装置,其中,所述应用级空间管理方案提供所述多个用户空间应用程序接口,以使用文件单元在所述非易失性存储介质中分配和释放空间。
6.根据权利要求1所述的装置,其中,所述处理器被配置为将所述数据编码为符合MPEG‑4的文件。
7.根据权利要求1所述的装置,其中,所述处理器被配置为将视频数据编码为符合MPEG‑4的视频文件。
8.根据权利要求1所述的装置,其中,所述可移除介质接口电路和所述处理器是数字记录器产品的一部分。
9.根据权利要求1所述的装置,其中,所述可移除介质接口电路和所述处理器是数字视频记录器产品的一部分。
10.根据权利要求1所述的装置,其中,所述可移除介质接口电路和所述处理器是行车记录仪产品的一部分。
11.根据权利要求1所述的装置,其中,所述可移除介质接口电路和所述处理器是数字相机片上系统(SoC)产品的一部分。
12.根据权利要求1所述的装置,还包括图像传感器,所述图像传感器被配置为生成视频数据并且将所述视频数据传送到所述处理器。
13.一种管理存储介质的方法,包括:
使用处理器从一个或多个数据流生成编码的数据;以及
通过利用包括多个用户空间应用程序接口的文件管理层来管理文件操作,所述文件操作涉及使用所述处理器将所述编码的数据存储在非易失性存储介质上以使文件碎片的数量最小化,
其中,所述多个用户空间应用程序接口包括:
第一用户空间应用程序接口,其用于生成用户空间创建命令和用户空间写入命令,其中,所述用户空间创建命令被配置为创建新的目标文件并且打开已有的所述目标文件,所述目标文件包括一个或多个单位文件,所述一个或多个单位文件具有基于所述一个或多个数据流的位率的大小,并且所述用户空间写入命令被配置为提供用于将所述编码的数据写入到所述目标文件中的一个或多个目标文件的信息;
第二用户空间应用程序接口,其用于发出用户空间删除命令以从不再需要的所述目标文件回收所述一个或多个单位文件;以及
第三用户空间应用程序接口,其用于将所述用户空间创建命令、所述用户空间写入命令、以及所述用户空间删除命令转换为对系统内核的一个或多个系统调用,其中,所述一个或多个系统调用在所述存储介质的物理层执行打开、关闭、读取、写入、文件分配、以及文件拆分操作,并且所述第三用户空间应用程序接口被配置为创建所述一个或多个单位文件并且基于所述一个或多个单位文件和由所述用户空间写入命令提供的所述信息来扩大所述目标文件。
14.根据权利要求13所述的方法,其中,使用虚拟文件分配表(vFAT)文件系统或扩展文件分配表(exFAT)文件系统来格式化所述非易失性存储介质。
15.根据权利要求13所述的方法,其中,所述非易失性存储介质包括安全数字介质(SD)卡。
16.根据权利要求13所述的方法,其中,所述处理器实现应用级空间管理方案以创建、移除、覆写文件和调整文件大小,以便避免文件的碎片化。
17.根据权利要求16所述的方法,其中,所述应用级空间管理方案提供所述多个用户空间应用程序接口,以使用文件块单元在所述非易失性存储介质中分配和释放空间。
18.根据权利要求13所述的方法,其中,所述编码的数据被编码为符合MPEG‑4的文件。
19.根据权利要求13所述的方法,其中,所述编码的数据包括视频数据,并且被编码为符合MPEG‑4的视频文件。
20.根据权利要求19所述的方法,还包括:
使用图像传感器生成所述视频数据;以及
将所述视频数据传送到所述处理器。

说明书全文

应用级SD卡空间管理

技术领域

[0001] 本发明总体上涉及存储接口,并且更具体地涉及用于实现应用级安全数字介质(SD)卡空间管理的方法和/或装置。

背景技术

[0002] 当数字视频记录器(DVR)产品对多个流进行编码时,这些流将同时被保存到安全数字介质(SD)卡。在将多个流同时保存到SD卡时,SD卡可能变得非常碎片化。SD卡的大量碎片化将减慢写入速度。当写入速度充分降低时,DVR产品将无法足够快地将视频数据写入SD卡,从而导致视频数据的丢失。DVR产品非常频繁地在SD卡上写入和删除文件。频繁地写入和删除文件会导致SD卡的大量碎片化,这最终导致较低的写入速度。然后发生数据丢失。
[0003] 期望实现减少碎片化的应用级安全数字介质(SD)卡空间管理。

发明内容

[0004] 本发明涵盖涉及一种包括可移除介质接口电路和处理器的装置的方面。可移除介质接口可以被配置为读取文件并且将该文件写入非易失性存储介质。处理器可以被配置为生成编码的数据并且管理文件操作,该文件操作涉及将编码的数据存储在非易失性存储介质上以使文件碎片的数量最小化。
[0005] 在上面描述的装置方面的一些实施例中,可以使用虚拟文件分配表(vFAT)文件系统或扩展文件分配表(exFAT)文件系统来格式化非易失性存储介质。
[0006] 在上面描述的装置方面的一些实施例中,非易失性存储介质可以包括安全数字介质(SD)卡。
[0007] 在上面描述的装置方面的一些实施例中,处理器通常实现应用级空间管理方案以创建、移除、覆写文件和调整文件大小,以便避免文件的碎片化。在其中处理器实现应用级空间管理方案的一些实施例中,应用级空间管理方案提供用户空间应用程序接口,以使用文件单元在非易失性存储介质中分配和释放空间。
[0008] 在上面描述的装置方面的一些实施例中,处理器可以被配置为将数据编码为符合MPEG‑4的文件。
[0009] 在上面描述的装置方面的一些实施例中,处理器可以被配置为将视频数据编码为符合MPEG‑4的视频文件。
[0010] 在上面描述的装置方面的一些实施例中,可移除介质接口电路和处理器可以是数字记录器产品的一部分。
[0011] 在上面描述的装置方面的一些实施例中,可移除介质接口电路和处理器可以是数字视频记录器产品的一部分。
[0012] 在上面描述的装置方面的一些实施例中,可移除介质接口电路和处理器是行车记录仪产品的一部分。
[0013] 在上面描述的装置方面的一些实施例中,可移除介质接口电路和处理器是数字相机片上系统(SoC)产品的一部分。
[0014] 在上面描述的装置方面的一些实施例中,装置还可以包括图像传感器,该图像传感器被配置为生成视频数据并且将视频数据传送到处理器。
[0015] 本发明还涵盖涉及一种管理存储介质的方法的方面,该方法包括:使用处理器生成编码的数据;以及管理文件操作,该文件操作涉及使用处理器将编码的数据存储在非易失性存储介质上以使文件碎片的数量最小化。
[0016] 在上面描述的方法方面的一些实施例中,可以使用虚拟文件分配表(vFAT)文件系统或扩展文件分配表(exFAT)文件系统来格式化非易失性存储介质。
[0017] 在上面描述的方法方面的一些实施例中,非易失性存储介质可以包括安全数字介质(SD)卡。
[0018] 在上面描述的方法方面的一些实施例中,处理器可以实现应用级空间管理方案以创建、移除、覆写文件和调整文件大小,以便避免文件的碎片化。在其中处理器实现应用级空间管理方案的一些实施例中,应用级空间管理方案可以提供用户空间应用程序接口,以使用文件块单元在非易失性存储介质中分配和释放空间。
[0019] 在上面描述的方法方面的一些实施例中,编码的数据被编码为符合MPEG‑4的文件。
[0020] 在上面描述的方法方面的一些实施例中,编码的数据包括视频数据,并且被编码为符合MPEG‑4的视频文件。
[0021] 在上面描述的方法方面的一些实施例中,方法还包括:使用图像传感器生成视频数据;以及将视频数据传送到处理器。附图说明
[0022] 根据下面的详细描述以及所附权利要求书和附图,本发明的实施例将变得显而易见。
[0023] 图1是示出在相机的上下文中根据本发明的实施例的文件管理层的示例实现方式的框图
[0024] 图2是示出根据本发明的示例实施例的新颖的文件管理层的图。
[0025] 图3是示出根据本发明的示例实施例的用于写入文件的用户空间应用程序接口(API)的流程图
[0026] 图4是示出根据本发明的示例实施例的用于删除文件的用户空间应用程序接口(API)的流程图。
[0027] 图5是示出根据本发明的示例实施例的用于创建文件的用户空间应用程序接口(API)的流程图。
[0028] 图6是示出在常规的文件管理层与根据本发明的示例实施例的文件管理层之间的比较的图。
[0029] 图7是示出图6的部分504的放大视图的图,其说明了使用根据本发明的示例实施例的文件管理层的碎片性能。
[0030] 图8是示出图7的部分510的放大视图的图,其说明了使用根据本发明的示例实施例的文件管理层的针对从0到100索引的文件的碎片性能。
[0031] 图9是示出图7的部分512的放大视图的图,其说明了使用根据本发明的示例实施例的文件管理层的针对从600到700索引的文件的碎片性能。
[0032] 图10是示出图7的部分514的放大视图的图,其说明了使用根据本发明的示例实施例的文件管理层的针对从1200到1300索引的文件的碎片性能。
[0033] 图11是相机系统的图,该图说明了其中可以利用根据本发明的示例实施例的文件管理层的计算机视觉系统的示例实现方式。

具体实施方式

[0034] 本发明的实施例包括提供应用级安全数字介质(SD)卡空间管理,其可以:(i)创建文件块单元;(ii)提供允许用户通过文件块单元分配/释放空间的应用程序接口(API);(iii)消除文件碎片化;(iv)避免写入速度降低;(v)将创建、删除和写入命令提供到存储协议的上层和/或(vi)被实现为一个或多个集成电路。
[0035] 通常,在数字视频记录器(DVR)产品中存在两种文件写入情况。在第一种情况下,记录文件的大小随时间的推移保持不变。第一种情况通常代表正常记录。在第二种情况下,记录文件的大小不断改变。第二种情况通常代表由最终用户控制的手动记录或由紧急情况触发的事件记录。当使用vFAT(虚拟文件分配表)作为文件系统时,fallocate()是针对情况1的一种推荐解决方案。然而,fallocate()针对记录文件的大小不断改变的文件写入情况(例如,情况2)不起作用。
[0036] 在各种实施例中,可以实现旨在解决在文件写入情况2中的问题的应用级安全数字介质(SD)卡空间管理方案。在各种实施例中,提供应用级安全数字介质(SD)卡空间管理方案以包装用户创建/删除/覆写文件/调整文件大小的层,而不是直接使用vFAT文件系统应用程序接口(API)。根据本发明的实施例的应用级安全数字介质(SD)卡空间管理方案通常允许用户避免直接使用vFAT文件系统应用程序接口(API)可能发生的文件碎片化。通常,根据本发明的实施例的应用级安全数字介质(SD)卡空间管理方案与vFAT一起使用,并且也可以被扩展到exFAT(扩展文件分配表)文件系统。
[0037] 在示例中,根据本发明的实施例的应用级安全数字介质(SD)卡空间管理方案可以在Linux中实现。然而,根据本发明的实施例的应用级安全数字介质(SD)卡空间管理方案不限于Linux。根据本发明的实施例的应用级安全数字介质(SD)卡空间管理方案还可以被实现用于使用vFAT/exFAT记录数据(例如,视频数据、传感器数据等)以保护数据介质(SD)卡的其他操作系统。根据本发明的实施例的应用级安全数字介质(SD)卡空间管理方案还可以被实现用于其他类型的介质,包括但不限于通用串行总线(USB)存储设备、硬盘驱动器(HDD)等,只要特定类型的介质被格式化为vFAT/exFAT即可。
[0038] 视频记录器中的传统的文件管理直接调用系统API,从而在记录时产生非常碎片化的文件(例如,下面结合图4所描述的)。在各种实施例中,实现新的文件管理层(例如,在本文中称为Amba_File_Manager)以提供新包装的用户空间API并管理文件系统以减少和/或避免碎片。
[0039] 参考图1,示出了说明在数字记录器70的上下文中的本发明的实施例的框图。在示例实施例中,数字记录器70可以耦合到非易失性存储介质72。在示例中,非易失性存储介质72可以被实现为可移除介质。在示例中,非易失性存储介质72可以包括安全数字介质(SD)卡。然而,可以相应地实现其他类型的介质(例如,通用串行总线(USB)存储设备、硬盘驱动器(HDD)等)。通常,存储介质72被格式化为vFAT/exFAT。在各种实施例中,数字记录器70可以接收多个数据流(例如,DATASTREAM(S))。可以从各种源接收流DATASTREAM(S)。
[0040] 在示例中,可以从一个或多个视频源(或相机)和/或一个或多个传感器(例如,安全、车辆等)接收流。在各种实施例中,流可以包括来自不同的视频源(例如,建筑物周围、车辆周围的相机等)的多个视频流。在各种实施例中,数字记录器70可以被实现为固态手持便携式摄录机、运动相机、在车辆中的行车记录仪或集成数字视频记录器或其他数字记录器产品中的一部分。在实现车辆相机的一些实施例中,数字记录器70可以被配置用于单视图和/或双视图相机配置,从而支持通过前挡玻璃以及通过后窗或车辆内部的视频记录。
[0041] 在一些实施例中,流可以包括具有不同分辨率和/或格式的多个视频流。在一些实施例中,流可以包括具有不同分辨率和/或格式的多个传感器数据流。通常,数据流的混合/组合不是固定的,并且可以基于特定应用或产品的标准而变化。在各种实施例中,可以使用根据本发明的实施例的文件管理层将数据的流同时记录在非易失性存储介质72上。通常,无论从何处接收数据的流以及包括什么分辨率和/或格式的数据的流,都可以应用根据本发明的实施例的相同的文件管理层。
[0042] 在一些实施例中,数字记录器70可以包括被配置为实现数字视频记录器的一个或多个电路。在示例中,数字记录器70的电子件可以被实现为一个或多个集成电路。在示例中,专用集成电路(ASIC)或片上系统(SoC)可以用于实现数字记录器70的处理部分。在示例实施例中,数字记录器70可以包括块(或电路)74和/或块(或电路)76。电路74可以实现处理器电路。电路76可以实现非易失性存储器(NVM)接口(I/F)。数字记录器70可以包括其他组件(未示出)。数字记录器70的组件的数量、类型和/或功能可以根据特定实现方式的设计标准而变化。
[0043] 处理器电路74可以被实现为嵌入式处理器(例如,ARM等)。在一些实施例中,处理器74可以包括多个硬件块(或单元),这些硬件块(或单元)被配置用于数字记录、计算机视觉任务以及控制对一个或多个数据流执行的一个或多个图像处理操作(例如,降噪、锐化等)。在一些实施例中,处理器74可以包括块(或电路)78。电路78可以被实现为体现软件固件。在电路78中体现的软件或固件可以包括部分(或代码或例程)100。部分100可以实现根据本发明的实施例的文件管理层。
[0044] 参考图2,示出了说明根据本发明的示例实施例的文件管理层的框图。在示例中,数字记录器70可以被配置为实现数字视频记录器(DVR)产品。在示例中,DVR产品可以包括应用80、系统内核90和根据本发明的实施例的文件管理层100。在示例中,应用80可以被实现为将符合MPEG‑4的编码的文件写入可移除存储介质(例如,非易失性存储介质72)。
[0045] 在示例中,可移除存储介质可以包括安全数字介质(SD)卡。在示例中,应用80可以被配置为执行诸如打开、关闭、读取、写入、搜索等之类的操作。在示例中,应用80可以发出打开命令(例如,MP4_OPEN())以请求打开文件。在另一示例中,应用80可以发出写入命令(例如,MP4_WRITE())以写入已经打开的文件。在各种实施例中,应用80可以将命令MP4_OPEN和MP4_WRITE传送到文件管理层100。
[0046] 在各种实施例中,文件管理层100可以被配置为响应于从应用80接收到的命令而向系统内核90发出系统调用。在示例中,系统调用可以执行诸如打开、关闭、读取、写入、搜索、文件分配、文件拆分等之类的操作。在示例中,系统内核90可以被实现为Linux操作系统的Linux内核。在各种实施例中,应用80和文件管理层100的操作通常发生在用户空间中。
[0047] 在内核空间中,系统内核90将来自文件管理层100的通信转换为数字视频记录器产品的物理层中的操作。在示例中,系统内核90可以将文件存取请求定向到数字视频记录器产品(未示出)的外围设备空间中的可移除存储介质(例如,SD卡)。
[0048] 在各种实施例中,根据本发明的示例实施例,文件管理层100可以包括DVR存储管理器102、文件I/O管理器104和文件管理器(例如,AMBA_FILE_MANAGER)106。在示例中,DVR存储管理器102可以被配置为管理可用于DVR产品的存储空间。在各种实施例中,DVR存储管理器102通常负责发出用户空间删除命令(例如,AMBA_DELETE()),以从不再需要的文件中回收单位文件。单位文件大小是由DVR存储管理器102管理的最小大小。在各种实施例中,DVR存储管理器102通常将用户空间删除命令传送到文件管理器106。
[0049] 在各种实施例中,单位文件大小是可编程的。在示例中,单位文件大小可以被设置为16MB、32MB等。在各种实施例中,可以基于预定标准的平衡来设置单位文件大小。在示例中,用于决定特定单位文件大小的标准可以包括碎片化级别和每个文件所浪费的空间。最终决定通常是这两个标准之间的权衡。在各种实施例中,单位文件大小选择策略可以取决于产品的特定特征。
[0050] 在示例实施例中,可以以不同的记录周期来记录单个流。在第一种情况下,每15秒将位率为1Mbyte/s的编码流记录到文件中,一个记录文件的大小将为1Mbyte/s*15s=15Mbytes。如果选择了8Mbytes的单位文件大小,则一旦开始记录过程,将创建8Mbytes的单位文件(file_record)。当写入的大小变得大于8Mbytes时,将创建另一个8Mbytes的单位文件并将其合并到“file_record”。记录文件最终将包含一个碎片,并且将浪费8Mbytes*2‑
15Mbytes=1Mbyte的存储空间。如果选择了16Mbytes的单位文件大小,则每次开始记录过程时都可以创建16Mbytes的单位文件。文件内将不存在任何碎片,并且由于单位文件大小,将浪费16Mbytes‑15 Mbytes=1Mbytes。如果选择了32Mbytes的单位文件大小,则每次开始记录过程时都将创建32Mbytes的文件。文件内将不存在任何碎片,并且由于单位文件大小,将浪费32Mbytes‑15 Mbytes=17Mbytes。在上面的示例中,选择16Mbytes的单位文件大小的选项似乎提供了对标准的更好的平衡。
[0051] 在可以以不同的记录周期记录两个流的示例实施例中,可以每32秒通过位率为1Mbyte/s的第一编码流写入第一记录文件(例如,File_1),并且可以每24秒通过位率为
1Mbyte/s的第二编码流写入第二记录文件(例如,File_2)。在该示例中,第一记录文件File_1的大小将为32s×1Mbytes/s=32Mbytes,而第二记录文件File_2的大小将为24s×
1Mbytes/s=24Mbytes。如果选择了8Mbytes的单位文件大小,则File_1将包含4个碎片,并且File_2将包含3个碎片。在这两种情况下,两个文件中的任一个文件都不会浪费空间。如果选择了16Mbytes的单位文件大小,则File_1将包含2个碎片,并且File_2也将包含2个碎片。File_1的结果非常好,因为没有浪费任何空间。然而,对于File_2,最终将浪费8Mbytes(例如,32Mbytes‑24 Mbytes=8Mbytes)。如果选择了15Mbytes的单位文件大小,则File_1将包含3个碎片以覆盖记录要求,并且File_2将包含2个碎片。对于File_1,浪费的空间量将为15Mbytes×3‑32Mbytes=13Mbytes。对于File_2,浪费的空间量将为30Mbytes‑24 Mbytes=6Mbytes。这里,很难确定哪种单位文件大小是最佳选择。对于更能容忍碎片的应用,可以将第一选项确定为最佳选择,而对于更能容忍浪费空间的应用,则可以将第二选项确定为最佳选择。
[0052] 在各种示例实施例中,文件I/O管理器104可以被配置为接收由应用80传送到文件管理层100的命令(例如,MP4_OPEN()、MP4_WRITE()等)。文件I/O管理器104通常被配置为分别响应于从应用80接收到的命令MP4_OPEN()和MP4_WRITE()来生成用于创建文件的用户空间命令(例如,AMBA_CREATE())和用于写入文件的用户空间命令(例如,AMBA_WRITE())。文件I/O管理器104通常被配置为将命令AMBA_CREATE()和AMBA_WRITE()传送到文件管理器106。
[0053] 在各种实施例中,文件管理器106通常被配置为向系统内核90发出系统调用(例如,打开、写入、读取、预分配(fallocate)、拆分等)。文件管理器106可以被配置为响应于分别从DVR存储管理器102和文件I/O管理器接收用户空间命令AMBA_DELETE()、AMBA_CREATE()和AMBA_WRITE()中的一个或多个,来生成诸如打开、写入、读取、预分配、拆分等之类的系统调用。
[0054] 参考图3,示出了说明根据本发明的示例实施例的实现用于生成用于写入文件的系统调用的用户空间应用程序接口(API)的过程200的流程图。在示例中,过程(或方法)200可以包括步骤(或状态)202、步骤(或状态)204、步骤(或状态)206、步骤(或状态)208、步骤(或状态)210、步骤(或状态)212、步骤(或状态)214、步骤(或状态)216和步骤(或状态)218。在步骤202中,过程200可以接收AMBA_WRITE命令和相关联的参数。在示例中,参数可以包括但不限于针对打开的文件的文件描述符(例如,FD)、源数据缓冲器指针(例如,P_BUFFER)、要被写入打开的文件的数据大小(例如,SIZE)和/或针对打开的文件FD的完整文件路径名称(例如,FULL_FILE_PATH_NAME)。
[0055] 在步骤204中,过程可以确定文件可用大小是否大于由AMBA_WRITE命令的参数SIZE指定的大小。当文件可用大小大于由参数SIZE指定的值时,过程200可以移动到步骤206,以生成系统调用来写入由AMBA_WRITE命令的参数FD和P_BUFFER标识的数据。然后,过程200可以移动到步骤208并终止。
[0056] 当文件可用大小不大于由参数SIZE指定的值时,过程200可以移动到步骤210。在步骤210中,过程200可以确定由DVR存储管理器102正在管理的当前单位文件是否足以扩大目标文件。当由DVR存储管理器102正在管理的当前单位文件足以扩大(或扩展)目标文件时,过程200可以移动到步骤212。当由DVR存储管理器102正在管理的当前单位文件不足以扩大目标文件时,过程200可以移动到步骤214。
[0057] 在步骤212中,过程200可以合并将目标文件扩大到目标文件末尾所需的单位文件。然后,过程200可以移动到步骤206以生成系统调用来写入由AMBA_WRITE命令的参数FD和P_BUFFER标识的数据,并且然后移动到步骤208以终止。在示例中,过程200可以使用SPLIT系统调用来拆分文件并将(多个)可用单元合并到目标文件。在示例中,第一文件(例如,A)可以具有10KB,并且第二文件(例如,B)可以具有20KB。如果要将10Kb从文件B拆分到文件A,则可以相应地发出拆分命令。在执行拆分命令后,文件A的大小将为20KB,并且文件B的大小将为10KB。类似地,为了将整个文件B与文件A合并,可以发出拆分命令,从而指定将文件B的20KB拆分到文件A。在执行拆分命令后,文件A的大小将为30KB,并且文件B将不再存在。
[0058] 在步骤214中,过程200可以确定存储介质是否具有可用于创建更多单位文件的可用空间。当存储介质具有用于创建更多单位文件的可用空间时,过程200可以移动到步骤216。否则,过程200可以移动到步骤218。在步骤216中,过程200可以创建发出FALLOCATE()命令所需的多个单位文件,并且然后移动到步骤212,以合并将目标文件扩大到目标文件末尾所需的新创建的单位文件。然后,过程200可以移动到步骤206,以生成系统调用来写入由AMBA_WRITE命令的参数FD和P_BUFFER标识的数据,并且然后移动到步骤208以终止。在步骤
218中,由于缺少可用的可用空间,因此过程200可以报告错误。然后,过程200可以移动到步骤208以终止。
[0059] 参考图4,示出了说明根据本发明的示例实施例的实现用于生成用于删除文件的系统调用的用户空间应用程序接口(API)的过程300的流程图。在示例中,过程(或方法)300可以包括步骤(或状态)302、步骤(或状态)304、步骤(或状态)306和步骤(或状态)308。在步骤302中,过程300可以接收AMBA_DELETE()命令并移动到步骤304。在步骤304中,过程300可以将目标文件拆分为对应量的单位文件,并且然后移动到步骤306。在步骤306中,过程300可以将单位文件放入DVR存储管理器102的内部管理队列中,以在下次需要文件扩展(或扩大)时重新使用。然后,过程300可以移动到步骤308并终止。
[0060] 参考图5,示出了说明根据本发明的示例实施例的实现用于生成用于创建文件的系统调用的用户空间应用程序接口(API)的过程400的流程图。在示例中,过程(或方法)400可以包括步骤(或状态)402、步骤(或状态)404、步骤(或状态)406、步骤(或状态)408、步骤(或状态)410和步骤(或状态)412。在步骤402中,过程400可以接收AMBA_CREATE命令和相关联的参数,并返回与创建新的文件相关联的参数。在示例中,参数可以包括但不限于针对打开的文件的文件描述符(例如,FD)和/或针对打开的文件FD的完整文件路径名(例如,FULL_FILE_PATH_NAME)。
[0061] 在步骤404中,过程400可以确定文件是否已经存在。当文件已经存在时,过程400可以移动到步骤406以打开现有文件。当文件尚不存在时,过程400可以移动到步骤408以创建新的空文件。在步骤406或步骤408之后,过程400可以移动到步骤410以返回文件描述。然后,过程400可以移动到步骤412以终止。
[0062] 参考图6,示出了说明传统的文件管理层与根据本发明的示例实施例的文件管理层的模拟之间的比较的图500。在示例中,可以将类似的写入策略应用于传统的文件写入和使用根据本发明的示例实施例的文件管理层100的文件写入。图500总体上示出了传统的文件管理层与根据本发明的示例实施例的文件管理层100之间的不同文件碎片性能。
[0063] 曲线502总体上示出了传统的文件管理器的碎片化性能。当数字视频记录器(DVR)产品对多个流进行编码时,这些流将同时被保存到安全数字介质(SD)卡。在将多个流同时保存到SD卡时,SD卡变得越来越碎片化。部分504包含总体上示出根据本发明的示例实施例的文件管理层100的碎片化性能的图。在示例中,应用大小为400MB的测试文件来模拟这两种情况。文件管理层100将单位文件大小设置为16MB,这意味着每个测试文件的最大碎片数将被控制在26以下(例如,400MB/16MB+1=26)。如通过简单检查可以看出的,文件管理层100提供的碎片化性能显著优于传统的文件管理方案的碎片化性能。
[0064] 参考图7,示出了图6的部分504的放大视图,其说明了根据本发明的示例实施例的文件管理层100的碎片化性能。部分510示出了使用根据本发明的示例实施例的文件管理层100针对从0到100索引的文件的碎片性能。部分512示出了使用根据本发明的示例实施例的文件管理层100针对从600到700索引的文件的碎片性能。部分514示出了使用根据本发明的示例实施例的文件管理层100针对从1200到1300索引的文件的碎片性能。
[0065] 参考图8,示出了图7的部分510的放大视图,其说明了使用根据本发明的示例实施例的文件管理层100的针对从0到100索引的文件的碎片性能模拟。对于从0到大约120索引的文件,SD卡完全为空,并且不存在任何单位文件。每当写入的文件需要被扩展时,将创建新的单位文件(例如,图3的步骤216)并将其合并到目标文件(例如,图3的步骤212)。如预期的,在该阶段中,所有文件的碎片都被控制在26以下(400MB/16MB+1=26)。
[0066] 参考图9,示出了图7的部分512的放大视图,其说明了使用根据本发明的示例实施例的文件管理层100的针对从600到大约700索引的文件的碎片化性能模拟。对于从580到大约720索引的文件,SD卡是半满的,并且AMBA_DELETE动作(例如,上面结合图4所描述的)已经应用于最旧的文件。在示例中,由AMBA_DELETE操作生成的一些单位文件存在于SD卡中。当目标文件需要扩展时,步骤210或步骤214是扩展目标文件的可能路径,这取决于现有的单位文件是否足以满足要求(例如,图3中的步骤210)。如预期的,在该阶段中,所有文件的碎片都被控制在26以下(400MB/16MB+1=26)。
[0067] 参考图10,示出了图7的部分514的放大视图,其说明了使用根据本发明的示例实施例的文件管理层100的针对从1200到1300索引的文件的碎片化性能模拟。在模拟的最后阶段,SD卡完全变满,并且SD卡中没有剩余空间来创建更多的单位文件(例如,图3中的步骤214)。当目标文件需要扩展时,唯一的方法是调用AMBA_DELETE来删除最旧的文件以生成更多的单位文件,并将新拆分的(多个)单位文件合并到目标文件。如预期的,所有文件的碎片都被控制在26以下(400MB/16MB+1=26)。
[0068] 参考图11,示出了相机系统900的图,该图说明了其中可以实现和/或部署根据本发明的示例实施例的文件管理层的计算机视觉系统的示例实现方式。在一个示例中,相机系统900的电子件可以被实现为一个或多个集成电路。在示例中,相机系统900可以围绕处理器/相机芯片(或电路)902构建。在示例中,处理器/相机芯片902可以被实现为专用集成电路(ASIC)或片上系统(SOC)。处理器/相机电路902通常结合硬件和/或软件/固件,该硬件和/或软件/固件可以被配置为实现上面结合图1至图10描述的电路和过程。
[0069] 在示例中,处理器/相机电路902可以连接到透镜和传感器组装件904。在一些实施例中,透镜和传感器组装件904可以是处理器/相机电路902的组件(例如,SoC组件)。在一些实施例中,透镜和传感器组装件904可以是与处理器/相机电路902分离的组件(例如,透镜和传感器组装件可以是与处理器/相机电路902兼容的可互换组件)。在一些实施例中,透镜和传感器组装件904可以是(例如,经由视频电缆、高清晰度媒体接口(HDMI)电缆、通用串行总线(USB)电缆、以太网电缆或无线链路)连接到处理器/相机电路902的单独相机的一部分。
[0070] 透镜和传感器组装件904可以包括块(或电路)906和/或块(或电路)908。电路906可以与透镜组装件相关联。电路908可以被实现为一个或多个图像传感器。在一个示例中,电路908可以被实现为RGB传感器和/或IR传感器。在另一示例中,电路908可以被实现为RGB‑IR传感器。透镜和传感器组装件904可以包括其他组件(未示出)。透镜和传感器组装件904的组件的数量、类型和/或功能可以根据特定实现方式的设计标准而变化。
[0071] 透镜组装件906可以捕获和/或聚焦从相机系统900周围的环境接收到的光输入。透镜组装件906可以捕获和/或聚焦用于(多个)图像传感器908的光。透镜组装件906可以实现一个或多个光学透镜。透镜组装件906可以提供缩放特征和/或聚焦特征。可以利用附加电路(例如,电动机)来实现透镜组装件906,以调整透镜组装件906的方向、缩放和/或光圈
可以定向、倾斜、平移、缩放和/或旋转透镜组装件906以提供相机系统900周围的环境的目标视图。
[0072] 图像传感器908可以从透镜组装件906接收光。图像传感器908可以被配置为将接收到的聚焦光转换为数字数据(例如,位流)。在一些实施例中,图像传感器908可以执行模数转换。例如,图像传感器908可以对从透镜组装件906接收到的聚焦光执行光电转换。图像传感器908可以将转换后的图像数据呈现为颜色滤波器阵列(CFA)格式化的位流。处理器/相机电路902可以将位流转换为视频数据、视频文件和/或视频(例如,人类可读的内容)。
[0073] 处理器/相机电路902还可以连接到:(i)可选的音频输入/输出电路,其包括音频编解码器910、麦克风912和扬声器914;(ii)存储器916,其可以包括动态随机存取存储器(DRAM);(iii)非易失性存储器(例如,NAND闪速存储器)918、可移除介质(例如,SD、SDXC等)920、一个或多个串行(例如,RS‑485、RS‑232等)设备922、一个或多个通用串行总线(USB)设备(例如,USB主机)924和无线通信设备926。
[0074] 在各种实施例中,处理器/相机电路902可以包括多个块(或电路)930a‑930n、多个块(或电路)932a‑932n、块(或电路)934、块(或电路)936、块(或电路)938、块(或电路)940、块(或电路)942、块(或电路)944、块(或电路)946、块(或电路)948、块(或电路)950、块(或电路)952和/或块(或电路)954。多个电路930a‑930n可以是处理器电路。在各种实施例中,电路930a‑930n可以包括一个或多个嵌入式处理器(例如,ARM等)。在各种实施例中,电路930a‑930n中的一个或多个可以实现根据本发明的实施例的文件管理层。电路932a‑932n可以实现多个与计算机视觉相关的处理器电路。在示例中,电路932a‑932n中的一个或多个可以实现各种与计算机视觉相关的应用。电路934可以是数字信号处理(DSP)模块。在一些实施例中,电路934可以实现分离的图像DSP模块和视频DSP模块。
[0075] 电路936可以是存储接口。电路936可以使处理器/相机电路902与DRAM 916、非易失性存储器918和可移除介质920接合。电路936可以实现上面结合图1‑8所描述的文件管理层100。DRAM 916、非易失性存储器918和/或可移除介质920中的一个或多个可以存储计算机可读指令。可以由处理器930a‑930n读取并执行计算机可读指令。响应于计算机可读指令,处理器930a‑930n可以是可操作的以用作用于处理器932a‑932n的控制器。例如,处理器932a‑932n的资源可以被配置为高效地执行硬件中的各种特定操作,并且处理器930a‑930n可以被配置为做出关于如何处理去往/来自处理器932的各种资源的输入/输出的决定。
[0076] 电路938可以实现本地存储器系统。在一些实施例中,本地存储器系统938可以包括但不限于高速缓冲存储器(例如,L2CACHE)、直接存储器存取(DMA)引擎、图形直接存储器存取(GDMA)引擎和快速随机存取存储器。在示例中,DAG存储器98可以在本地存储器系统938中实现。电路940可以实现传感器输入(或接口)。电路942可以实现一个或多个控制接口,包括但不限于设备间通信(IDC)接口、集成电路间(I2C)接口、串行外围设备接口(SPI)和脉冲宽度调制(PWM)接口。电路944可以实现音频接口(例如,I2S接口等)。电路946可以实现时钟电路,包括但不限于实时时钟(RTC)、看定时器(WDT)和/或一个或多个可编程定时器。电路948可以实现输入/输出(I/O)接口。电路950可以是视频输出模块。电路952可以是通信模块。电路954可以是安全模块。电路930至954可以使用一条或多条总线、接口、迹线、协议等彼此连接。
[0077] 电路918可以被实现为非易失性存储器(例如,NAND闪速存储器、NOR闪速存储器等)。电路920可以包括一个或多个可移除介质卡(例如,安全数字介质(SD)、安全数字扩展容量介质(SDXC)等)。电路922可包括一个或多个串行接口(例如,RS‑485、RS‑232等)。电路924可以是用于连接到通用串行总线(USB)主机或用作USB主机的接口。电路926可以是用于与用户设备(例如,智能电话、计算机、平板计算设备、资源等)进行通信的无线接口。在各种实施例中,电路904‑926可以被实现为处理器/相机电路902外部的组件。在一些实施例中,电路904‑926可以是处理器/相机电路902的板上组件。
[0078] 控制接口942可以被配置为生成用于控制透镜和传感器组装件904的信号(例如,IDC/I2C、STEPPER、IRIS、AF/ZOOM/TILT/PAN等)。信号IRIS可以被配置为调整透镜组装件906的光圈。接口942可以使得处理器/相机电路902能够控制透镜和传感器组装件904。
[0079] 存储接口936可以被配置为管理一种或多种类型的存储和/或数据存取。在一个示例中,存储接口936可以实现直接存储器存取(DMA)引擎和/或图形直接存储器存取(GDMA)。在另一示例中,存储接口936可以实现安全数字(SD)卡接口(例如,以连接到可移除介质
920)。在各种实施例中,可以将编程代码(例如,用于控制处理器/相机电路902的各种处理器和编码器的可执行指令)存储在存储器(例如,DRAM 916、NAND 918等)中的一个或多个中。编程代码当由处理器930中的一个或多个执行时,通常使得处理器/相机电路902中的一个或多个组件配置视频同步操作并开始视频帧处理操作。可以将所得到的压缩视频信号呈现给存储接口936、视频输出950和/或通信接口952。存储接口936可以在外部介质(例如,DRAM916、NAND 918、可移除介质920等)与本地(内部)存储器系统938之间传输程序代码和/或数据。
[0080] 传感器输入940可以被配置为向图像传感器908发送数据/从图像传感器908接收数据。在一个示例中,传感器输入940可以包括图像传感器输入接口。传感器输入940可以被配置为将捕获的图像(例如,图片元素、像素、数据)从图像传感器908发送到DSP模块934、处理器930中的一个或多个和/或处理器932中的一个或多个。由传感器输入940接收到的数据可以由DSP 934使用来确定来自图像传感器908的亮度(Y)值和色度(U和V)值。传感器输入940可以提供到透镜和传感器组装件904的接口。传感器输入接口940可以使得处理器/相机电路902能够捕获来自透镜和传感器组装件904的图像数据。
[0081] 音频接口944可以被配置为发送/接收音频数据。在一个示例中,音频接口944可以实现音频IC间声音(I2S)接口。音频接口944可以被配置为以由音频编解码器910实现的格式发送/接收数据。
[0082] DSP模块934可以被配置为处理数字信号。DSP模块934可以包括图像数字信号处理器(IDSP)、视频数字信号处理器DSP(VDSP)和/或音频数字信号处理器(ADSP)。DSP模块934可以被配置为从传感器输入940接收信息(例如,由图像传感器908捕获的像素数据值)。DSP模块934可以被配置为根据从传感器输入940接收到的信息来确定像素值(例如,RGB、YUV、亮度、色度等)。DSP模块934可以进一步被配置为支持或提供传感器RGB到YUV原始图像流线,以改进图像质量、进行不良像素检测和校正、去赛克、白平衡、色彩和色调校正、伽玛校正、色相调整、饱和度、亮度和对比度调整、色度和亮度噪声过滤。
[0083] I/O接口948可以被配置为发送/接收数据。由I/O接口948发送/接收的数据可以是杂项信息和/或控制数据。在一个示例中,I/O接口948可以实现通用输入/输出(GPIO)接口、模数转换器(ADC)模块、数模转换器(DAC)模块、红外(IR)远程接口、脉冲宽度调制(PWM)模块、通用异步接收器发送器(UART)、红外(IR)远程接口和/或一个或多个同步数据通信接口(IDC SPI/SSI)中的一个或多个。
[0084] 视频输出模块950可以被配置为发送视频数据。例如,处理器/相机电路902可以连接到外部设备(例如,电视、监视器、膝上型计算机、平板计算设备等)。视频输出模块950可以实现高清晰度多媒体接口(HDMI)、PAL/NTSC接口、LCD/电视/并行接口和/或DisplayPort接口。
[0085] 通信模块952可以被配置为发送/接收数据。由通信模块952发送/接收的数据可以根据特定协议(例如, USB、Wi‑Fi、UART等)进行格式化。在一个示例中,通信模块952可以实现安全数字输入输出(SDIO)接口。通信模块952可以包括对通过一种或多种无线协议(例如, Z‑Wave、LoRa、电气与电子工程
师协会(IEEE)802.11a/b/g/n/ac(WiFi)、IEEE 802.15、IEEE 802.15.1、IEEE 802.15.2、IEEE 802.15.3、IEEE 802.15.4、IEEE 802.15.5和/或IEEE 802.20、GSM、CDMA、GPRS、UMTS、CDMA2000、3GPP LTE、4G/HSPA/WiMAX、5G、LTE_M、NB‑IoT、SMS等)进行的无线通信的支持。通信模块952还可以包括对使用通用串行总线协议(例如,USB 1.0、2.0、3.0等)中的一种或多种进行的通信的支持。处理器/相机电路902还可以被配置为经由USB连接供电。然而,可以相应地实现其他通信和/或电源接口,以满足特定应用的设计标准。
[0086] 安全模块954可以包括一套高级安全特征,以实现高级的设备上物理安全,包括OTP、安全启动、 以及I/O可视化和DRAM加扰。在示例中,安全模块958可以包括真随机数生成器。在示例中,安全模块954可以用于处理器/相机电路902上的DRAM通信加密。
[0087] 处理器/相机电路902可以被配置(例如,编程)为控制一个或多个透镜组装件906以及一个或多个图像传感器908。处理器/相机电路902可以从(多个)图像传感器908接收原始图像数据。处理器/相机电路902可以同时(并行地)将原始图像数据编码为多个编码的视频流。多个视频流可以具有各种分辨率(例如,VGA、WVGA、QVGA、SD、HD、超HD、4K等)。处理器/相机电路902可以在音频接口944处接收编码的和/或未编码的(例如,原始的)音频数据。处理器/相机电路902还可以从通信接口952(例如,USB和/或SDIO)接收编码的音频数据。处理器/相机电路902可以(例如,使用USB主机接口)将编码的视频数据提供给无线接口926。无线接口 926可 以包括 对通过 一种或多 种无线 和/或蜂 窝协议 (例如 ,Z‑Wave、LoRa、Wi‑Fi IEEE 802.11a/b/g/n/ac、IEEE 802.15、
IEEE 802.15.1、IEEE 802.15.2、IEEE 802.15.3、IEEE 802.15.4、IEEE 802.15.5、IEEE 
802.20、GSM、CDMA、GPRS、UMTS、CDMA2000、3GPP LTE、4G/HSPA/WiMAX、5G、SMS、LTE_M、NB‑IoT等)进行的无线通信的支持。处理器/相机电路902还可以包括对使用通用串行总线协议(例如,USB 1.0、2.0、3.0等)中的一种或多种进行的通信的支持。
[0088] 如将对于(多个)相关领域的技术人员显而易见的,在图1至图11的图中示出的功能和结构可以使用根据本说明书的教导进行编程的常规的通用处理器、数字计算机、微处理器微控制器、分布式计算机资源和/或类似的计算机器中的一个或多个来设计、建模、仿真和/或模拟。还如将对于(多个)相关领域的技术人员显而易见的,熟练的程序员可以基于本公开的教导容易地准备适当的软件、固件、编码、例程、指令、操作码、微码和/或程序模块。软件通常体现在一种或多种介质(例如,非暂时性存储介质)中,并且可以由处理器中的一个或多个顺序或并行执行。
[0089] 本发明的实施例还可以在ASIC(专用集成电路)、FPGA(现场可编程门阵列)、PLD(可编程逻辑器件)、CPLD(复杂可编程逻辑器件)、门海、ASSP(专用标准产品)和集成电路中的一个或多个中实现。该电路可以基于一种或多种硬件描述语言来实现。可以结合闪速存储器、非易失性存储器、随机存取存储器、只读存储器、磁盘、软盘、光盘(例如,DVD和DVD RAM)、磁光盘和/或分布式存储系统结合来利用本发明的实施例。
[0090] 当术语“可以”和“通常”在本文中与“是”和动词结合使用时,其意在传达这样的意图:该描述是示例性的,并且被认为足够宽泛以涵盖本公开中提出的具体示例以及可以基于本公开得出的替代示例两者。如本文所使用的术语“可以”和“通常”不应被解释为必然暗示省略对应的元件的可取性或可能性。
[0091] 尽管已经参考本发明的实施例具体地示出并描述了本发明,但是本领域技术人员将理解,可以在不脱离本发明的范围的情况下对形式和细节进行各种改变。
QQ群二维码
意见反馈