弹出大秀直播
发布日期:2025-12-17 14:45 点击次数:1821、Transmit Descriptor弹出大秀直播
咱们知谈:比较与CAN、Lin等总线,以太网的数据浑沌量比较大,eg:1500bytes。淌若让CPU干数据搬运责任,尤其无数数据搬运责任,这有点"屈才"。是以,系统预备中,为了最猛进度的开释CPU,在以太网的数据搬运中,会使用有益的DMA(Direct Memory Access)搬运。淌若念念让DMA知谈怎么搬运数据,就需要提前见告其搬运礼貌,因此,描述符(Descriptor)运用而生。关于以太网数据发送,则使用Transmit Descriptor描述以太网数据的发送礼貌。Transmit Descriptor有两种体式:Read体式和Write-Back体式。Transmit Descriptor Read Format如下所示:
图片弹出大秀直播
如上图,在进行数据发送时,需要翔实字节序(单片机一般是小端格局),而如上的描述符可能需要大端处理。
Transmit Normal Descriptor (Write-Back Format),清晰如下:
图片
当DMA完成数据搬运以后,会对描述符进行写回操作,主要操作TDES3的OWN和DESC STATUS位域,将发送景色响应给Application。(一)Application与DMA的"捏手"描述符是Application与DMA之间的纽带,Application通过描述符将待发送的信息填充到Transmit Descriptor中,DMA通过判断DES3.OWN赢得发送申请。即:Application需要发送数据时,将数据地址放入Buffer1(对应DES0),同期,将一些铁心信息写入可用的Transmit Descriptor中,临了,成立DES3.OWN = 1,申请DMA发送数据,这一步不错看作:Application将操作后的发送描述符铁心权交给DMA;当DMA发送完数据以后,将对应发送描述符的DES3.OWN复位(=0),这一步不错看作:DMA将成见描述符的铁心权返还给Application。通过DES3.OWN,Application与DMA进行不异,也即是"捏手"行为,进而保证数据有序交互,清晰如下:图片
DMA发送完成巧合罗致完成,一般会有中断触发,淌若有独特操作,也不错在中断回调函数中处理。2、描述符链表
本色使用中,经常使用环形DMA描述符结构(DMA Descriptor Ring),清晰如下:图片
如上结构,群众并不目生。这里,咱们需要翔实一些细节。(一)描述符停止当使用多个描述符时,描述符之间不错成立停止(eg:DMA_Ch(#i)_Control寄存器的DSL位域,Descriptor Skip Length)。停止成立几许需要字据手册条件,本文不错成立的数据停止:DWord(8 byte)的整数倍,淌若DSL = 0,则意味着描述符间莫得停止。(二)发送描述符操作的寄存器建壮以太网发送,还需措施悟与描述符操作关系的寄存器。本文聚焦发送关系的几个DMA寄存器:DMA_CHi_TXDESC_LIST_ADDRESS:发送描述符的基地址,泰国按摩群指向发送描述符链表的第一个描述符,运行化时赋值;
DMA_CHi_CURRENT_APP_TXDESC:刻下发送描述符,指向DMA刻下可用的描述符;
DMA_CHi_TXDESC_RING_LENGTH:存放发送描述符长度,可使用长度 = n + 1(n是寄存器中存储的本色值);
DMA_CHi_TXDESC_TAIL_POINTER:发送描述符尾指针,每次申请发送以太网Frame后,需要Application更新Transmit Descriptor地址,即:指向下一个可用的酣畅描述符地址。
淌若Current Descriptor Pointer == Descriptor Tail Pointer,则DMA会自动挂起(Suspend),住手数据搬运。当Application再次申请数据发送时,需要向Descriptor Tail Pointer中写入发送信息,偏移Descriptor Tail Pointer,使其蓬勃:Current Descriptor Pointer < Descriptor Tail Pointer。淌若Descriptor Tail Pointer偏移到尾部,则从头回到Descriptor Base Address。
3、以太网帧发送历程
以太网Frame的发送历程,清晰如下:
图片
具体发送历程解读:1、Application通过DMA_CHi_CURRENT_APP_TXDESC寄存器赢允洽前可用的发送描述符地址,将发送信息填充到可用的发送描述符中,即:见告DMA搬运礼貌。之后,Application将TDES3.OWN置位(=1),申请发送数据;2、DMA能否搬运数据,需要判断DMA的责任格局,淌若DMA处于Stop格局,需要从头启动DMA。通过判断DMA_CHj_Status (j=0-7)的TPS(Transmit Process Stopped)位域阐述其是否处于Stop格局。具体描述:淌若TPS == 1,清晰DMA处于Stop格局,需要向TPS位域写1捣毁,同期,进行DMA使能操作。固然,还不错进一步的搜检其他信息,eg:TBU(Transmit Buffer Unavailable);3、当Application将描述符的铁心权交给DMA以后,还需要Transmit Poll Demand,即:向DMA_CHi_TXDESC_TAIL_POINTER寄存器写入信息,一般写入下一个可用发送描述符地址,让DMA脱离挂起景色,去查询待处理的发送描述符信息;4、当DMA发送完数据以后,DMA_CHi_CURRENT_APP_TXDESC寄存器的发送描述符地址自动偏移一个,淌若Current Descriptor Pointer < Descriptor Tail Pointer,DMA不竭发送数据;淌若Current Descriptor Pointer == Descriptor Tail Pointer,DMA当场挂起(Suspend),住手数据搬运,同期,数据的发送景色回写(write-back)到TDES3中。数据的发送历程短处短处如上,建壮了数据发送,也就不难建壮数据的罗致过程。
(一)DMA景色变化历程
1、以太网专用DMA运行化以后,淌若没罕有据发送,插足Suspend景色。此时,DMA_CHi_TXDESC_TAIL_POINTER指向空,清晰如下:
图片
2、Application申请发送数据时,从DMA_CHi_CURRENT_APP_TXDESC寄存器赢得可用的发送描述符地址,填充发送礼貌。向DMA_CHi_TXDESC_TAIL_POINTER寄存器写入下一个可用描述符地址,使其蓬勃Current Descriptor Pointer < Descriptor Tail Pointer,即:触发DMA发送,清晰如下:图片
3、Frame发送完成以后,DMA_CHi_CURRENT_APP_TXDESC寄存器中的可用描述符地址,自动向后偏移一个,使得Current Descriptor Pointer == Descriptor Tail Pointer,DMA当场挂起(Suspend),清晰如下:图片
本站仅提供存储工作,所有这个词内容均由用户发布,如发现存害或侵权内容,请点击举报。- 上一篇:菲律宾一群美女视频大全
- 下一篇:柬埔寨老年人活动微信群
