发明名称 一种实现DMA数据传输的方法及装置
摘要 本发明涉及实现DMA数据传输的方法及装置,其传输过程为:把总的DMA传输分割成若干个DMA传输单元后再逐个传输;每一DMA传输单元的传输完成后发送一个中断,然后获取中断并累计DMA传输数据量大小,同时查询是否存在I/O读写操作请求,若有则响应I/O读写请求,等I/O读写操作完成后清除中断标识,若无I/O读写操作请求则在本次DMA传输单元的传输完成后清除中断标识;中断标识清除后启动下一个DMA传输单元的传输,直至总的DMA传输完成。本发明在海量数据DMA过程中仍然能对设备进行快速的I/O读写操作。
申请公布号 CN101634975B 申请公布日期 2011.09.14
申请号 CN200910041976.2 申请日期 2009.08.20
申请人 广东威创视讯科技股份有限公司 发明人 赵群英;田启金
分类号 G06F13/28(2006.01)I;G06F9/48(2006.01)I 主分类号 G06F13/28(2006.01)I
代理机构 广州市华学知识产权代理有限公司 44245 代理人 李卫东;黄磊
主权项 一种实现DMA数据传输的方法,其特征在于传输过程为:DMA传输模块把DMA请求传输的总数据分割成若干个DMA传输单元后再通过通用DMA控制器逐个传输;每一DMA传输单元的传输完成后通用DMA控制器发送一个中断给DMA传输模块,然后DMA传输模块获取中断并累计DMA传输数据量大小,同时中断处理模块查询是否存在I/O读写操作请求,若有则中断处理模块响应I/O读写请求,等I/O读写操作完成后清除中断标识,若无I/O读写操作请求则中断处理模块直接清除中断标识;中断标识清除后启动下一个DMA传输单元的传输,直至DMA请求传输的总数据传输完成;具体包括如下步骤:步骤1:DMA传输控制模块收到DMA传输请求并根据DMA传输请求把发起DMA操作的源地址、目标地址和DMA传输的总大小发送到DMA传输模块,同时设置每个DMA传输单元的大小,所述DMA传输单元的大小按下面的方法计算:系统传输的速度为vMB/秒,每个I/O操作等待的最大时间为tmax秒,每次DMA传输的数据量为dMB,每个DMA传输单元的大小da为:da=v*tmaxMB;当da>d则每个DMA传输单元的大小为d,当da≤d则每个DMA传输单元的大小为da;步骤2:DMA传输模块根据设定好的每个DMA传输单元传输数据的大小把DMA请求传输的总数据分成一个或多个DMA传输单元;步骤3:DMA传输模块根据顺序依次把各个DMA传输单元发送给通用DMA控制器进行DMA传输操作;同时I/O操作控制模块在DMA数据传输过程中,收到I/O读写操作请求,则把该I/O读写操作请求放入I/O队列中;步骤4:通用DMA控制器每完成一个DMA传输单元的传输操作就发送一个中断给DMA传输模块,DMA传输模块收到此中断后,判断DMA请求传输的总数据是否传输结束,并修改DMA传输模块的DMA参数寄存器里所存储的已完成数据传输数量;同时产生一个中断给中断处理模块;步骤5:中断处理模块接收到DMA传输模块发送的中断后,若DMA请求传输的总数据没有传输完成则查询I/O队列,如果存在I/O读写操作请求,则I/O读写操作控制模块把I/O队列的I/O读写操作请求发送给I/O读写操作模块,等待I/O读写操作完成后,中断处理模块清除DMA中断标识,执行步骤6;如果无I/O读写操作请求,则中断处理模块直接清除DMA中断标识,执行步骤6;若DMA请求传输的总数据已经传输完成,则DMA数据传输结束;步骤6:DMA传输模块等待DMA中断标识被清除,当中断标识被清除后,则启动下一个DMA传输单元的传输,执行步骤7;步骤7:执行步骤3、步骤4、步骤5、步骤6,直到DMA请求传输的总数据传输完成。
地址 510663 广东省广州市高新技术产业开发区彩频路6号