一种存储数据的方法及装置制造方法及图纸

技术编号:18575799 阅读:17 留言:0更新日期:2018-08-01 10:48
本发明专利技术公开了一种存储数据的方法及装置,属于视频监控领域。所述方法包括:第一DMA控制器获取至少一个缓存单元中的每个缓存单元对应的DMA描述符,所述至少一个缓存单元是第二DMA控制器对应第一缓冲区中存储有所述待读取数据的缓存单元,所述第一DMA控制器和所述第二DMA控制器是两个不同的DMA控制器,缓存单元对应的DMA描述符包括所述待读取数据在所述缓存单元中的起始位置、步距、步长和数据长度,所述步长小于或等于所述步距;根据所述每个缓存单元对应的DMA描述符,分别读取所述每个缓存单元包括的待读取数据;将所述读取的数据存储在所述第一DMA控制器对应的第二缓冲区中。本发明专利技术能够提高存储效率。

A method and device for storing data

The invention discloses a method and device for storing data, belonging to the field of video surveillance. The method includes: the first DMA controller obtains the DMA descriptor corresponding to each cache unit in at least one cache unit, and at least one cache unit is a caching unit for the second DMA controller to store the data to be read in the first buffer, and the first DMA controller and the second DMA controller are two. A different DMA controller, the DMA descriptor corresponding to the cache unit includes the starting position, step distance, step length and data length of the data to be read in the caching unit, and the step length is less than or equal to the step distance; each cache unit packet is read according to the DMA descriptor corresponding to each of the caching units. The data to be read is included, and the read data is stored in the second buffer corresponding to the first DMA controller. The invention can improve the storage efficiency.

【技术实现步骤摘要】
一种存储数据的方法及装置
本专利技术涉及视频监控领域,特别涉及一种存储数据的方法及装置。
技术介绍
计算机中包括大量的DMA(DirectMemoryAccess,直接内存存储)控制器,每个DMA控制器对应一个缓冲区,该DMA控制器对应的缓冲区可以用于存储该DMA控制器需要处理的数据。有时DMA控制器需要处理其他缓冲区中存储的数据,此时该DMA控制器需要先从其他缓冲区中读取数据并存储到自己对应的缓冲区中。假设,DMA控制器需要从第一缓冲区中读取数据并存储到第二缓冲区中,第一缓冲区包括多个缓存单元,通常各缓存单元的地址不连续。由于DMA控制器不能读取存储地址不连续的数据,所以DMA控制器需要请求计算机的CPU(CentralProcessingUnit,中央处理器)先分配一个地址连续的存储空间,将第一缓冲区包括的各缓存单元中存储的数据读取到该该存储空间中;然后DMA控制器再从该存储空间中读取待读取数据并存储到第二缓冲区中。在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下问题:DMA控制器在读取数据时,需要CPU先将第一缓冲区中的数据存储到分配的存储空间中,然后再从该存储空间中读取数据并存储到第二缓冲区中,所以DMA控制器需要等待CPU先进行一次数据读取和存储,不仅消耗大量的CPU资源,降低DMA控制器的数据存储效率。
技术实现思路
为了减少占用CPU资源以及提高存储效率,本专利技术提供了提供了一种存储数据的方法及装置。所述技术方案如下:一方面,提供了一种存储数据的方法,所述方法包括:第一直接内存存储DMA控制器获取至少一个缓存单元中的每个缓存单元对应的DMA描述符,所述至少一个缓存单元是第二DMA控制器对应的第一缓冲区中存储有待读取数据的缓存单元,所述第一DMA控制器和所述第二DMA控制器是两个不同的DMA控制器,缓存单元对应的DMA描述符包括所述待读取数据在所述缓存单元中的起始位置、步距、步长和数据长度,所述步长小于或等于所述步距;所述第一DMA控制器根据所述每个缓存单元对应的DMA描述符,分别读取所述每个缓存单元包括的待读取数据;所述第一DMA控制器将所述读取的数据存储在所述第一DMA控制器对应的第二缓冲区中。可选的,第一缓存单元对应的DMA描述符包括所述待读取数据在所述第一缓存单元中的第一起始位置、第一步距、第一步长和第一数据长度,所述第一缓存单元为所述至少一个缓存单元中的任一缓存单元;所述根据所述每个缓存单元对应的DMA描述符,分别读取所述每个缓存单元包括的待读取数据,包括:根据所述第一起始位置、第一步距、第一步长和第一数据长度,确定所述第一缓存单元包括的待读取的n段数据,任意相邻两段数据之间的间隔等于所述第一步距与所述第一步长之间的差值,所述相邻两段数据的起始位置之间的间隔等于所述第一步距,所述n段数据的长度之和等于所述第一数据长度,n为大于或等于1的整数;从所述第一缓存单元中读取所述各段数据。可选的,如果第一数值大于或等于所述第一步长,所述第一数值为所述第一缓存单元包括的最后一位数据的位置与所述第n段数据的起始位置之间的差值,则第二缓存单元对应的DMA描述符包括待读取数据在所述第二缓存单元中的第二起始位置、第二步距、第二步长和第二数据长度,所述第二起始位置是所述第二缓存单元的起始位置与第一差值之和,所述第一差值为所述第一步距与所述第一数值之间的差值,所述第二缓存单元是所述第一缓存单元的下一个缓存单元。可选的,如果第一数值小于所述第一步长,则第二缓存单元对应第一DMA描述符和第二DMA描述符;所述第一DMA描述符包括所述待读取数据在所述第二缓存单元中的第三起始位置和第三数据长度,所述第三起始位置为所述第二缓存单元的起始位置,所述第三数据长度为所述第一步长与所述第一数值之间的差值;所述第二DMA描述符包括所述待读取数据在所述第二缓存单元中的第四起始位置、第三步距、第三步长和第四数据长度,所述第四起始位置为所述第二缓存单元的起始位置与第二差值之和,所述第二差值为所述第一步距与所述第一数值之间的差值。可选的,所述第一DMA控制器根据所述每个缓存单元对应的DMA描述符,分别读取所述每个缓存单元中的有效数据,还包括:在所述第二缓存单元中,所述第一DMA控制器从所述第三起始位置开始读取长度为所述第三数据长度的数据。可选的,所述第一DMA控制器获取至少一个缓存单元中的每个缓存单元对应的DMA描述符之前,还包括:所述第一DMA控制器在所述第一缓冲区中将地址连续的多个缓存单元合并为一个缓存单元。另一方面,提供了一种存储数据的装置,所述装置包括:获取模块,用于获取至少一个缓存单元中的每个缓存单元对应的直接内存存储DMA描述符,所述至少一个缓存单元是第二DMA控制器对应的第一缓冲区中存储有所述待读取数据的缓存单元,所述装置和所述第二DMA控制器是两个不同的DMA控制器,缓存单元对应的DMA描述符包括所述待读取数据在所述缓存单元中的起始位置、步距、步长和数据长度,所述步长小于或等于所述步距;读取模块,用于根据所述每个缓存单元对应的DMA描述符,分别读取所述每个缓存单元包括的待读取数据;存储模块,用于将所述读取的数据存储在所述装置对应的第二缓冲区中。可选的,第一缓存单元对应的DMA描述符包括所述待读取数据在所述第一缓存单元中的第一起始位置、第一步距、第一步长和第一数据长度,所述第一缓存单元为所述至少一个缓存单元中的任一缓存单元;所述读取模块包括:确定单元,用于根据所述第一起始位置、第一步距、第一步长和第一数据长度,确定所述第一缓存单元包括的待读取的n段数据,任意相邻两段数据之间的间隔等于所述第一步距与所述第一步长之间的差值,所述相邻两段数据的起始位置之间的间隔等于所述第一步距,所述n段数据的长度之和等于所述第一数据长度,n为大于或等于1的整数;读取单元,用于从所述第一缓存单元中读取所述各段数据。可选的,如果第一数值大于或等于所述第一步长,所述第一数值为所述第一缓存单元包括的最后一位数据的位置与所述第n段数据的起始位置之间的差值,则第二缓存单元对应的DMA描述符包括待读取数据在所述第二缓存单元中的第二起始位置、第二步距、第二步长和第二数据长度,所述第二起始位置是所述第二缓存单元的起始位置与第一差值之和,所述第一差值为所述第一步距与所述第一数值之间的差值,所述第二缓存单元是所述第一缓存单元的下一个缓存单元。可选的,如果第一数值小于所述第一步长,则第二缓存单元对应第一DMA描述符和第二DMA描述符;所述第一DMA描述符包括所述待读取数据在所述第二缓存单元中的第三起始位置和第三数据长度,所述第三起始位置为所述第二缓存单元的起始位置,所述第三数据长度为所述第一步长与所述第一数值之间的差值;所述第二DMA描述符包括所述待读取数据在所述第二缓存单元中的第四起始位置、第三步距、第三步长和第四数据长度,所述第四起始位置为所述第二缓存单元的起始位置与第二差值之和,所述第二差值为所述第一步距与所述第一数值之间的差值。可选的,所述读取单元,还用于在所述第二缓存单元中,从所述第三起始位置开始读取长度为所述第三数据长度的数据。可选的,所述装置还包括:合并模块,用于在所述第一缓冲区中将地址连续的多个缓存单元合并为一个缓存单元。本专利技术提供的技术本文档来自技高网...

【技术保护点】
1.一种存储数据的方法,其特征在于,所述方法包括:第一直接内存存储DMA控制器获取至少一个缓存单元中的每个缓存单元对应的DMA描述符,所述至少一个缓存单元是第二DMA控制器对应的第一缓冲区中存储有待读取数据的缓存单元,所述第一DMA控制器和所述第二DMA控制器是两个不同的DMA控制器,缓存单元对应的DMA描述符包括所述待读取数据在所述缓存单元中的起始位置、步距、步长和数据长度,所述步长小于或等于所述步距;所述第一DMA控制器根据所述每个缓存单元对应的DMA描述符,分别读取所述每个缓存单元包括的待读取数据;所述第一DMA控制器将所述读取的数据存储在所述第一DMA控制器对应的第二缓冲区中。

【技术特征摘要】
1.一种存储数据的方法,其特征在于,所述方法包括:第一直接内存存储DMA控制器获取至少一个缓存单元中的每个缓存单元对应的DMA描述符,所述至少一个缓存单元是第二DMA控制器对应的第一缓冲区中存储有待读取数据的缓存单元,所述第一DMA控制器和所述第二DMA控制器是两个不同的DMA控制器,缓存单元对应的DMA描述符包括所述待读取数据在所述缓存单元中的起始位置、步距、步长和数据长度,所述步长小于或等于所述步距;所述第一DMA控制器根据所述每个缓存单元对应的DMA描述符,分别读取所述每个缓存单元包括的待读取数据;所述第一DMA控制器将所述读取的数据存储在所述第一DMA控制器对应的第二缓冲区中。2.如权利要求1所述的方法,其特征在于,第一缓存单元对应的DMA描述符包括所述待读取数据在所述第一缓存单元中的第一起始位置、第一步距、第一步长和第一数据长度,所述第一缓存单元为所述至少一个缓存单元中的任一缓存单元;所述根据所述每个缓存单元对应的DMA描述符,分别读取所述每个缓存单元包括的待读取数据,包括:根据所述第一起始位置、第一步距、第一步长和第一数据长度,确定所述第一缓存单元包括的待读取的n段数据,任意相邻两段数据之间的间隔等于所述第一步距与所述第一步长之间的差值,所述相邻两段数据的起始位置之间的间隔等于所述第一步距,所述n段数据的长度之和等于所述第一数据长度,n为大于或等于1的整数;从所述第一缓存单元中读取所述各段数据。3.如权利要求2所述的方法,其特征在于,如果第一数值大于或等于所述第一步长,所述第一数值为所述第一缓存单元包括的最后一位数据的位置与所述第n段数据的起始位置之间的差值,则第二缓存单元对应的DMA描述符包括待读取数据在所述第二缓存单元中的第二起始位置、第二步距、第二步长和第二数据长度,所述第二起始位置是所述第二缓存单元的起始位置与第一差值之和,所述第一差值为所述第一步距与所述第一数值之间的差值,所述第二缓存单元是所述第一缓存单元的下一个缓存单元。4.如权利要求3所述的方法,其特征在于,如果第一数值小于所述第一步长,则第二缓存单元对应第一DMA述符和第二DMA描述符;所述第一DMA描述符包括所述待读取数据在所述第二缓存单元中的第三起始位置和第三数据长度,所述第三起始位置为所述第二缓存单元的起始位置,所述第三数据长度为所述第一步长与所述第一数值之间的差值;所述第二DMA描述符包括所述待读取数据在所述第二缓存单元中的第四起始位置、第三步距、第三步长和第四数据长度,所述第四起始位置为所述第二缓存单元的起始位置与第二差值之和,所述第二差值为所述第一步距与所述第一数值之间的差值。5.如权利要求4所述的方法,其特征在于,所述第一DMA控制器根据所述每个缓存单元对应的DMA描述符,分别读取所述每个缓存单元中的有效数据,还包括:在所述第二缓存单元中,所述第一DMA控制器从所述第三起始位置开始读取长度为所述第三数据长度的数据。6.如权利要求1至5任一项权利要求所述的方法,其特征在于,所述第一DMA控制器获取至少一个缓存单元中的...

【专利技术属性】
技术研发人员:宋建辉李文斌杜皓
申请(专利权)人:杭州海康威视数字技术股份有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1