本发明专利技术公开了一种控制DMA访问不连续物理地址的方法,包括:对相邻两个物理存储块配置物理地址边界寄存器,每个物理地址边界寄存器与相邻的两个物理存储块间的空洞相对应,分别存有上一个物理存储块的结束物理地址和下一个物理存储块的开始物理地址;DMA控制器根据访问的物理地址更新其存储器地址,将更新后的存储器地址与物理存储块的结束物理地址比较,如果相等,则说明已传输到所述上一个物理存储块边界,将DMA控制器中的存储器地址更新为下一个物理存储块的开始物理地址,继续传输数据并比较,直到数据传输完成。因此,本发明专利技术在存储器物理地址不连续的情况,避免了DMA控制器访问到没有物理存储块的物理地址产生的读写失败。
【技术实现步骤摘要】
本专利技术涉及通信
,尤其涉及一种控制DMA访问不连续物理地址 的方法及DMA控制器。
技术介绍
为了提高数据传送的速率,人们提出使用DMA (Direct Memory Address, 直接存贮器地址)进行数据存取传送方式,即在一定时间段内,由DMAC(DMA 控制器)取代CPU( Centre Processor Unit,中央处理单元),获得总线控制权, 实现内存与外设或者内存的不同区域之间大量数据的快速传送。DMA传输包 括字节传输和块传输。图1是一个典型的DMAC的原理图,DMA控制器、CPU、存储器、数据端 口和状态/控制端口都通过总线连接。当从外围设备向存储器传输数据时,来 自输入设备的数据首先进入数据緩冲寄存器,然后通过数据端口到达总线; 来自输入设备的控制命令到达DMA请求触发器,DMA请求发送到DMAC,准 备命令到达状态/控制端口,以触发数据向总线发送。DMA控制器接收到DMA 请求后,向CPU发送HOLD (挂起命令),要求CPU放弃对地址总线、数据总 线和有关控制总线的使用权,CPU收到DMA请求后,无条件放弃总线控制权, 向DMA控制器发送HLDA (挂起响应),此时DMA控制器获取总线控制权, 对存储器进行内存寻址、计数数据传送个数,并开始通过总线连续传送数据。 每传送一个字节,自动修改当前地址及当前字节计数寄存器的内容,直到字 节数寄存器从设置值减到O终止计数,或由外部设备输入EOP (过程结束)有 效信号终结DMA传送,将总线控制权交给CPU。当从存储器向外围设备传输 数据时,过程与上述写入过程相反,不再赘述。其中,DMAC包括地址寄存器,用于存储DMA进行数据传输过程中的 存储器地址;计数器,用于对传输字节进行计数;控制/状态寄存器,用于存放通道已终止计数、通道有DMA请求等状态信息,使CPU可以随时了解各通 道的DMA状态。才各式如表l所示<table>table see original document page 6</column></row><table>D3到D0为对应通道3-0, Di^表示i通道已计数到终止或出现外加EOP信 号;D7到D4为对应通道3-0, Di-l表示通道i-4有DMA请求还未处理。其中,地址寄存器包括基地址寄存器,用于存放DMA传送的存储器首 址,传送过程中基地址寄存器的内容不变。当前地址寄存器,用于存放DMA 传送过程中的存储器地址,在每次传送后地址自动增l或减l (读出或写入的 顺序不同,例如先高位后低位,则减l操作,先低位后高位,则增l操作); 基字节计数寄存器,用于存放DMA传送的总字节数;当前字节数寄存器,用 于存放DMA传送过程中没有传送完的字节数,在每次传送完后,字节数计数 器减l,当值为0时,表示字节数传送完毕。基地址寄存器与当前地址寄存器 被同时写入某一起始地址,可用作内存区域的首地址或末地址。现有的DMA控制器对于连续的物理内存搬移是没有任何问题的,但是目 前许多情况下由于CPU芯片的种种要求,在内存管理池中会出现虚拟地址连 续,但是物理地址不连续的情况,即物理内存的地址不连续,为一块一块的。 在这种情况下,如果虚拟内存的管理不善,会出现提供给DMA的内存搬移起 始地址是有效的,但是搬移长度已经实际上经过了空洞,会导致部分DMA控 制器由于访问不存在的内存地址导致挂死。如图2所示,左边为虚拟地址空间, 右侧为物理地址空间。左侧的虛拟地址从0xl0000000 0x30000000是连续的。 其中0x10000000-0x20000000对应的物理地址为0x0 0x 10000000 , 0x20000000 0x30000000的虚拟地址对应的物理地址为 0x20000000 0x30000000,其中物理地址0xl0000000 0x20000000为存储空 洞,不对应任何物理实体。其中,虚拟地址和物理地址的关系由软件人员依 据CPU的寄存器进行配置。如果DMA向虚拟地址0xlFFFFF00 (物理地址0x0FFFFF00 )开始放入1K字节,在传输开始,虚拟地址OxlFFFFFOO对应的物理地址OxOFFFFFOO的物理 内存是存在的,可以正常操作;但在传输的过程中DMA物理地址访问到 0xl0000000 0x20000000范围内(0x0FFFFF00+lK=10000F24 ),由于该物理 地址没有物理内存,因此该写入请求无效导致DMA读写失败。
技术实现思路
本专利技术提供了一种控制DMA访问不连续物理地址的方法及DMA控制 器,以解决虚拟地址连续、物理内存地址不连续的系统中,DMA跨越物理存 储块边^H般移数据,导致DMA控制器读写失败的问题。本专利技术提供了一种控制DMA访问不连续物理地址的方法,包括以下步骤对相邻两个物理存储块配置物理地址边界寄存器,每个物理地址边界寄 存器与相邻的两个物理存储块间的空洞相对应,分别存有上一个物理存储块 的结束物理地址和下一个物理存储块的开始物理地址;所述DMA控制器根据访问的物理地址更新其存储器地址,将更新后的存 储器地址与所述物理存储块的结束物理地址比较,如果相等,则说明已传输 到所述上一个物理存储块边界,将所述DMA控制器中的存储器地址更新为下 一个物理存储块的开始物理地址,继续传输数据并比较,直到数据传输完成。其中,还包括如果更新后的存储器地址与所述物理存储块的结束物理地址不相等,则 说明没有传输到所述上一个物理存储块边界,继续传输数据比较。其中,所述对相邻两个物理存储块配置物理地址边界寄存器,具体包括 确定每个物理存储块的起始物理地址和结束物理地址; 按照地址顺序将第一个物理存储块的结束物理地址和第二个物理存储块 的开始物理地址写入第一物理地址边界寄存器,将第二个物理存储块的结束 物理地址和第三个物理存储块的开始物理地址写入第二物理地址边界寄存 器,依次类推;形成物理存储块与物理地址边界寄存器的对应关系。较,具体包括所述DMA控制器根据初始存储器地址确定对应的物理存储块;所述DMA控制器从所述物理存储块对应的物理地址边界寄存器中获取所述物理存储块的结束物理地址;所述DMA控制器将所述更新后的存储器地址与所述物理存储块的结束物理i也址比寿支。其中,所述传输数据包括从外部设备向物理存储块写数据,或从所述 存储块向外部设备读数据,或在不同存储块之间传输数据。本专利技术提供了 一种DMA控制器,用于对包括至少两个物理地址不连续的 物理存储块的访问进行控制,所述DMA控制器至少包括地址寄存器、比较 处理模块和至少一个物理地址边界寄存器,所述物理地址边界寄存器,与相邻的两个物理存储块间的空洞相对应,用于存有相邻两个物理存储块中上一个物理存储块的结束物理地址和下一个 物理存储块的开始物理地址;所述地址寄存器,用于存储当前存储器地址,并根据访问的物理地址更 新其存储器地址;所述比较处理模块,分别与所述地址寄存器和所述物理地址边界寄存器存储块的结束物理地址比较,如果相等,则说明已传输到所述物理存储块边 界,将所述地址寄存器中的存储器地址更新为下一个物理存储块的开始物理 地址,继续传输数据并比较。 其中,所述比较处理模本文档来自技高网...
【技术保护点】
一种控制DMA访问不连续物理地址的方法,其特征在于,包括以下步骤: 对相邻两个物理存储块配置物理地址边界寄存器,每个物理地址边界寄存器与相邻的两个物理存储块间的空洞相对应,分别存有上一个物理存储块的结束物理地址和下一个物理存储块的开始 物理地址; 所述DMA控制器根据访问的物理地址更新其存储器地址,将更新后的存储器地址与所述物理存储块的结束物理地址比较,如果相等,则说明已传输到所述上一个物理存储块边界,将所述DMA控制器中的存储器地址更新为下一个物理存储块的开始物理 地址,继续传输数据并比较,直到数据传输完成。
【技术特征摘要】
1、一种控制DMA访问不连续物理地址的方法,其特征在于,包括以下步骤对相邻两个物理存储块配置物理地址边界寄存器,每个物理地址边界寄存器与相邻的两个物理存储块间的空洞相对应,分别存有上一个物理存储块的结束物理地址和下一个物理存储块的开始物理地址;所述DMA控制器根据访问的物理地址更新其存储器地址,将更新后的存储器地址与所述物理存储块的结束物理地址比较,如果相等,则说明已传输到所述上一个物理存储块边界,将所述DMA控制器中的存储器地址更新为下一个物理存储块的开始物理地址,继续传输数据并比较,直到数据传输完成。2、 如权利要求l所述的方法,其特征在于,还包括 如果更新后的存储器地址与所述物理存储块的结束物理地址不相等,则说明没有传输到所述上一个物理存储块边界,继续传输数据比较。3、 如权利要求1所述的方法,其特征在于,所述对相邻两个物理存储块 配置物理地址边界寄存器,具体包括确定每个物理存储块的起始物理地址和结束物理地址; 按照地址顺序将第一个物理存储块的结束物理地址和第二个物理存储块 的开始物理地址写入第一物理地址边界寄存器,将第二个物理存储块的结束 物理地址和第三个物理存储块的开始物理地址写入第二物理地址边界寄存 器,依次类推;形成物理存储块与物理地址边界寄存器的对应关系。4、 如权利要求3所述的方法,其特征在于,所述将更新后的存储器地址 与所述物理存储块的结束物理地址比较,具体包括所述DMA控制器根据初始存储器地址确定对应的物理存储块;所述DMA控制器根据所述物理存储块与物理地址边界寄存器的对应关系,结束物理地址;所述DMA控J 物理地址比專交。5、 如权利...
【专利技术属性】
技术研发人员:高瑞昌,
申请(专利权)人:杭州华三通信技术有限公司,
类型:发明
国别省市:86[中国|杭州]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。