泰国按摩群

弹出大秀直播

发布日期:2025-12-17 14:45    点击次数:182

联系于其他总线,以太网的常识零乱,固然,可赢得的府上也丰富。以太网的常识从驱动层到表层左券栈,很难一下消化,是以,不妨从点脱手,束缚地拓展和连合,从而酿成竣工地以太网常识框架,进而更好地惩办工程问题。本文,从通讯开赴,聊一聊以太网发送描述符(Transmit Descriptor)。指示:基于TC4xx商榷。

1、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),清晰如下:

图片

本站仅提供存储工作,所有这个词内容均由用户发布,如发现存害或侵权内容,请点击举报。




Powered by 泰国按摩群 @2013-2022 RSS地图 HTML地图

Copyright Powered by365站群 © 2013-2025