[发明专利]一种外设主动实现与CPU间数据交换的方法有效
申请号: | 201810078793.7 | 申请日: | 2018-01-26 |
公开(公告)号: | CN108388529B | 公开(公告)日: | 2021-03-09 |
发明(设计)人: | 郑容;王晓斌;陈伯芳;袁成伟;詹万鹏;危必波 | 申请(专利权)人: | 武汉中元华电电力设备有限公司 |
主分类号: | G06F13/32 | 分类号: | G06F13/32 |
代理公司: | 武汉开元知识产权代理有限公司 42104 | 代理人: | 唐正玉 |
地址: | 430223 湖北省武汉*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 外设 主动 实现 cpu 数据 交换 方法 | ||
1.一种外设主动实现与CPU间数据交换的方法,包括PCIE+DMA架构,所述的DMA具有主动实现地址维护、中断生成、消息报文生成、读写指令生成、读返回数据整理和信元管理功能;其特征在于按以下步骤进行:
(1)在初始化过程中,CPU分配一片固定的连续缓存空间给外设进行循环读写数据的操作,将该连续缓存空间分成若干等长度的小片缓存空间,并将该连续缓存空间的起始地址及小片缓存空间的长度以参数配置的方式告知外设,这样外设在进行数据的读写操作时,每一个待处理的数据报文的地址就已经固定下来;上述连续等长的小片缓存空间即构成读/写循环存储结构;
(2)当外设需向内存写入数据时,外设对每个报文进行递增式的循环编号,将代表报文序号的编号值嵌入到访问数据中,同时根据写循环存储结构计算的地址,在外设计算的写信元条件满足时,向循环存储结构的当前地址发起DMA写请求操作,DMA写信元机制保证即将发起的DMA写操作不会覆盖已有的,且未被CPU处理的数据,在DMA写请求操作过程中,对写入的报文数量和时间进行计数,当访问数量或超时条件满足时,外设需向固定的消息内存中写入消息报文,且向CPU发起中断报文,CPU收到中断报文后,读取消息报文的内容,并根据消息报文的内容管理内存;所述DMA 写信元机制:外设对写入内存的帧做循环计数;同时CPU对已处理内存中的帧做循环计数, 并将该已处理帧循环计数定时下发给外设;外设将当前写入帧对应的循环计数与最新的 CPU下发的已处理帧循环计数做减法,当差值比写操作对应循环缓存的数据块个数少时,认 为信元条件成立,发起当前DMA写操作;否则需等待CPU处理内存帧,并更新CPU已处理循环 计数值,信元条件成立之后,才能发起当前DMA写操作;
(3)当外设需从内存中读取数据时,根据外设计算的读信元决定是否发起读请求,DMA读信元包含接收数据信元和发起读请求信元两种信元;两种信元都满足时才能发起请求,再根据读循环存储结构计算的地址,再向读循环存储结构的当前地址发起DMA读请求操作,外设信元机制保证有足够的空间来接收读应答数据;在DMA进行读请求操作过程中,对读出的报文数量和时间进行计数,当收到包数或超时条件满足时,需向固定的消息内存发起消息报文,且向CPU发起中断报文,CPU收到中断报文后,更新并释放内存空间。
2.根据权利要求1所述的外设主动实现与CPU间数据交换的方法,其特征在于:所述步骤(1)中的参数包括:写操作对应的连续缓存的起始地址、写操作对应的连续缓存的数据块大小、写操作对应的连续缓存的数据块个数、读操作对应的连续缓存的起始地址、读操作对应的连续缓存的数据块大小和读操作对应的连续缓存的数据块个数。
3.根据权利要求1所述的外设主动实现与CPU间数据交换的方法,其特征在于:所述步骤(2)中的DMA写请求操作的为写操作对应连续缓存中数据块的起始地址。
4.根据权利要求1所述的外设主动实现与CPU间数据交换的方法,其特征在于:所述步骤(3)中的DMA读请求操作的为读操作对应连续缓存中数据块的起始地址。
5.根据权利要求2所述的外设主动实现与CPU间数据交换的方法,其特征在于:所述读/写操作对应的连续缓存数据块的起始地址均为:上一紧邻数据块起始地址加数据块长度,即从基地址开始累加数据块长度,构成后续数据块起始地址,注意达到数据块个数后地址回零。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉中元华电电力设备有限公司,未经武汉中元华电电力设备有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810078793.7/1.html,转载请声明来源钻瓜专利网。