DMA传输控制方法、装置、电子设备及可读存储介质制造方法及图纸

技术编号:37125219 阅读:14 留言:0更新日期:2023-04-01 05:21
本公开提供一种DMA传输控制方法、装置、电子设备及可读存储介质,通过对表示的数据长度大于第一最大传输长度的第一目标节点进行拆分,得到边缘子节点及非边缘节点;对表示的数据长度大于第二最大传输长度的第二目标节点进行拆分,得到其他子节点;控制DMA通过第一unit传输所述边缘子节点,及通过第二unit传输所述其他子节点。通过该方法可解决待传输的数据传输长度受限所导致的DMA传输失败问题。据传输长度受限所导致的DMA传输失败问题。据传输长度受限所导致的DMA传输失败问题。

【技术实现步骤摘要】
DMA传输控制方法、装置、电子设备及可读存储介质


[0001]本公开涉及DMA传输控制
,尤其涉及一种DMA传输控制方法、装置、电子设备及可读存储介质。

技术介绍

[0002]在一些SOC(System on Chip,片上系统)内部中,为了减少芯片体积,将用于指示DMA(Direct Memory Access,直接存储器访问)传输的数据所占大小的长度寄存器的位宽设计得较小,例如16bit(16位,该长度寄存器所能指示的数据所占大小最大为2
16
=64K)。为了传输更大的数据量,往往在SOC内再增加一个具备多种规格(数据单位,如1B、8B、1KB、1MB)的长度单元(简称unit),长度寄存器乘以nuit表示的数据单位后所得到的数值,用于指示一次DMA传输所能传输的最大数据量。
[0003]在进行DMA传输时,上层应用程序通过在unit的指定位上写入预设数值,以指定unit在本次传输过程中所表示的数据单位。如此,在长度寄存器为16bit的情况下,使用1MB的unit最大可以访问到64GB(64K*1MB)的范围,很大的程度上可以满足传输长度的要求。然而,在DMA传输过程中,传输数据的数据长度需要与unit当前被选中的数据单位对齐,即传输数据的数据长度能够被当前被选中的数据单位整除,不然会导致数据传输出错。此外,传输数据的数据长度不能大于被选中的unit当前的数据单位所对应的最大传输长度(Max Length),否则也会导致数据传输出错。
[0004]因此,在现有技术中,为了保证正常传输数据,应用程序需要对用于生成传输任务的传输数据的数据长度设置诸多限制,即导致了传输数据的数据长度受限的问题。然而,在实际传输过程中,由于数据的传输长度具有多样性,待传输数据的数据长度如果不能满足上述传输长度的限制,将会导致传输失败。

技术实现思路

[0005]本公开的目的是提供一种DMA传输控制方法、装置、SOC、电子设备及可读存储介质,以解决使用DMA传输时,待传输的数据传输长度受限所导致的传输失败的问题。
[0006]根据本公开的一个方面,提供一种DMA传输控制方法,该方法包括:针对与待传输数据对应的链表包括的边缘节点,对其表示的数据长度大于第一unit所支持的第一最大传输长度的目标边缘节点进行拆分;所述边缘节点是位于所述链表的首位置或者末尾位置的节点,经拆分后所述链表包括的新边缘节点表示的数据长度不大于所述第一最大传输长度,且可被所述第一unit表示的数据单位整除;针对所述链表包括的除所述新边缘节点外的中间节点,对其表示的数据长度大于第二unit所支持的第二最大传输长度的目标中间节点进行拆分;经拆分后所述链表包括的新中间节点表示的数据长度不大于所述第二最大传输长度,且可被所述第二unit表示的数据单位整除;控制DMA通过所述第一unit传输所述新边缘节点,及通过所述第二unit传输所述新中间节点;所述第二unit表示的数据单位为1K Byte,所述第一unit表示的数据单位为1Byte。
[0007]本公开一种可行的实现方式中,所述目标边缘节点经拆分后得到所述新边缘节点及非边缘节点;所述非边缘节点表示的数据长度可被所述第二unit表示的数据单位整除。
[0008]本公开一种可行的实现方式中,所述对其表示的数据长度大于第一unit所支持的第一最大传输长度的目标边缘节点进行拆分,包括:在所述目标边缘节点是所述链表的首节点时,将所述首节点的首地址作为拆分起点进行拆分,拆分后得到的所述新边缘节点的首地址为所述首节点的首地址;在所述目标边缘节点是所述链表的尾节点时,将所述尾节点的尾地址作为拆分起点进行拆分,拆分后得到的所述新边缘节点的尾地址为所述尾节点的尾地址。
[0009]本公开一种可行的实现方式中,所述目标边缘节点经拆分后得到所述新边缘节点及非边缘节点;所述对其表示的数据长度大于第一unit所支持的第一最大传输长度的目标边缘节点进行拆分,包括:在所述目标边缘节点是所述首节点时,将所述首节点的首地址到该首地址所在页面的尾地址之间所表示的数据长度作为所述新边缘节点表示的数据长度,将所述首节点中的剩余内容作为所述非边缘节点表示的数据长度;在所述目标边缘节点是所述尾节点时,将所述尾节点的尾地址到该尾地址所在页面的起始地址之间所表示的数据长度作为所述新边缘节点表示的数据长度,将所述尾节点中的剩余内容作为所述非边缘节点表示的数据长度。
[0010]本公开一种可行的实现方式中,所述对其表示的数据长度大于第二unit所支持的第二最大传输长度的目标中间节点进行拆分,包括:针对每个所述目标中间节点,以该目标中间节点的首地址为起点,以所述第二最大传输长度为拆分步长对该目标中间节点,得到所述新中间节点。
[0011]本公开一种可行的实现方式中,所述控制DMA通过所述第一unit传输所述新边缘节点,及通过所述第二unit传输所述新中间节点,包括:控制所述DMA采用Direct方式传输所述新边缘节点;将所述新中间节点组合成新的链表发送给所述DMA,以控制所述DMA采用链表方式传输所述新中间节点。
[0012]根据本公开的另一方面,还提供一种DMA传输控制装置,包括:第一拆分模块、第二拆分模块以及控制模块。
[0013]第一拆分模块,用于针对与待传输数据对应的链表包括的边缘节点,对其表示的数据长度大于第一unit所支持的第一最大传输长度的目标边缘节点进行拆分;所述边缘节点是位于所述链表的首位置或者末尾位置的节点,经拆分后所述链表包括的新边缘节点表示的数据长度不大于所述第一最大传输长度,且可被所述第一unit表示的数据单位整除;第二拆分模块,用于针对所述链表包括的除所述新边缘节点外的中间节点,对其表示的数据长度大于第二unit所支持的第二最大传输长度的目标中间节点进行拆分;经拆分后所述链表包括的新中间节点表示的数据长度不大于所述第二最大传输长度,且可被所述第二unit表示的数据单位整除;控制模块,用于控制DMA通过所述第一unit传输所述新边缘节点,及通过所述第二unit传输所述新中间节点;所述第二unit表示的数据单位为1K Byte,所述第一unit表示的数据单位为1Byte。
[0014]本公开一种可行的实现方式中,所述目标边缘节点经拆分后得到所述新边缘节点
及非边缘节点;所述非边缘节点表示的数据长度可被所述第二unit表示的数据单位整除。
[0015]本公开一种可行的实现方式中,所述目标边缘节点经拆分后得到所述新边缘节点及非边缘节点;所述非边缘节点表示的数据长度可被所述第二unit表示的数据单位整除。
[0016]本公开一种可行的实现方式中,所述第一拆分模块,用于在所述目标边缘节点是所述链表的首节点时,将所述首节点的首地址作为拆分起点进行拆分,拆分后得到的所述新边缘节点的首地址为所述首节点的首地址;在所述目标边缘节点是所述链表的尾节点时,将所述尾节点的尾地址作为拆分起点进行拆分,拆分后得到的所述新边缘节点的尾地址为所述尾节点的尾地址。...

【技术保护点】

【技术特征摘要】
1.一种DMA传输控制方法,所述方法包括:针对与待传输数据对应的链表包括的边缘节点,对其表示的数据长度大于第一unit所支持的第一最大传输长度的目标边缘节点进行拆分;所述边缘节点是位于所述链表的首位置或者末尾位置的节点,经拆分后所述链表包括的新边缘节点表示的数据长度不大于所述第一最大传输长度,且可被所述第一unit表示的数据单位整除;针对所述链表包括的除所述新边缘节点外的中间节点,对其表示的数据长度大于第二unit所支持的第二最大传输长度的目标中间节点进行拆分;经拆分后所述链表包括的新中间节点表示的数据长度不大于所述第二最大传输长度,且可被所述第二unit表示的数据单位整除;控制DMA通过所述第一unit传输所述新边缘节点,及通过所述第二unit传输所述新中间节点;所述第二unit表示的数据单位为1K Byte,所述第一unit表示的数据单位为1Byte。2.根据权利要求1所述的方法,所述目标边缘节点经拆分后得到所述新边缘节点及非边缘节点;所述非边缘节点表示的数据长度可被所述第二unit表示的数据单位整除。3.根据权利要求1或2所述的方法,所述对其表示的数据长度大于第一unit所支持的第一最大传输长度的目标边缘节点进行拆分,包括:在所述目标边缘节点是所述链表的首节点时,将所述首节点的首地址作为拆分起点进行拆分,拆分后得到的所述新边缘节点的首地址为所述首节点的首地址;在所述目标边缘节点是所述链表的尾节点时,将所述尾节点的尾地址作为拆分起点进行拆分,拆分后得到的所述新边缘节点的尾地址为所述尾节点的尾地址。4.根据权利要求1所述的方法,所述目标边缘节点经拆分后得到所述新边缘节点及非边缘节点;所述对其表示的数据长度大于第一unit所支持的第一最大传输长度的目标边缘节点进行拆分,包括:在所述目标边缘节点是所述链表的首节点时,将所述首节点的首地址到该首地址所在页面的尾地址之间所表示的数据长度作为所述新边缘节点表示的数据长度,将所述首节点中的剩余内容作为所述非边缘节点表示的数据长度;在所述目标边缘节点是所述链表的尾节点时,将所述尾节点的尾地址到该尾地址所在页面的起始地址之间所表示的数据长度作为所述新边缘节点表示的数据长度,将所述尾节点中的剩余内容作为所述非边缘节点表示的数据长度。5.根据权利要求1所述的方法,所述对其表示的数据长度大于第二unit所支持的第二最大传输长度的目标中间节点进行拆分,包括:针对每个所述目标中间节点,以该目标中间节点的首地址为起点,以所述第二最大传输长度为拆分步长对该目标中间节点,得到所述新中间节点。6.根据权利要求1所述的方法,所述控制DMA通过所述第一unit传输所述新边缘节点,以及通过所述第二unit传输所述新中间节点,包括:控制所述DMA采用Direct方式传输所述新边缘节点;将所述新中间节点组合成新的链表发送给所述DMA,以控制所述DMA采用链表方式传输所述新中间节点。7.一种DMA传输控制装置,包括:
第一拆分模块,用于针对与待传输数据对应的链表包括的边...

【专利技术属性】
技术研发人员:郭飞飞
申请(专利权)人:北京象帝先计算技术有限公司
类型:发明
国别省市:

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

1