这里写目录标题
- 前言
- 一、概述
- 二、函数体
- 三、调用关系
前言
最近在学习zynq中的lwip协议族,找不到很好的记笔记的地方,所以就用csdn记录一下自己的学习过程。现在对lwip不熟悉,只是把官方的lwip echo server例程跑了一下,能跑通就一点点的照着学了,笔记都是根据自己的理解写的,而且部分内容可能也只针对lwip echo server例程有效,笔记可以供有缘人参考,但不敢保证全对,有不对的地方也期待有高人指点一二。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_40356705/article/details/136824649
一、概述
- 原型
void setup_isr (struct xemac_s *xemac)
- 参数
struct xemac_s *xemac :struct xemac_s类型的指针变量,
struct xemac_s变量具体作用如下:
1,EMACPS 接口的引用:该结构体可能包含一个指向EMACPS硬件实例的引用或句柄,用于后续与硬件进行交互。
2,状态信息:结构体可能包含表示EMACPS当前状态的信息,比如是否已初始化、是否正在发送或接收数据等。
3,配置参数:用于配置EMACPS的参数,比如MAC地址、IP地址、子网掩码等,可能会存储在结构体中。
4,发送和接收缓冲区:为了高效处理数据包的发送和接收,结构体可能包含指向发送和接收缓冲区的指针。
5,统计信息:发送和接收的数据包数量、错误计数等统计信息也可能会被存储在结构体中。
- 作用
二、函数体
void setup_isr (struct xemac_s *xemac)
{ xemacpsif_s *xemacpsif; // 获取EMACPS接口的指针,它存储在xemac结构体的state成员中 xemacpsif = (xemacpsif_s *)(xemac->state); /* * 设置回调函数 * 这里为EMACPS的几种事件类型设置处理函数 */ // 设置DMA发送完成事件的处理函数为emacps_send_handler,并传递xemac作为参数 XEmacPs_SetHandler(&xemacpsif->emacps, XEMACPS_HANDLER_DMASEND, (void *) emacps_send_handler, (void *) xemac); // 设置DMA接收完成事件的处理函数为emacps_recv_handler,并传递xemac作为参数 XEmacPs_SetHandler(&xemacpsif->emacps, XEMACPS_HANDLER_DMARECV, (void *) emacps_recv_handler, (void *) xemac); // 设置错误事件的处理函数为emacps_error_handler,并传递xemac作为参数 XEmacPs_SetHandler(&xemacpsif->emacps, XEMACPS_HANDLER_ERROR, (void *) emacps_error_handler, (void *) xemac);
}
函数特别简单,就是注册中断函数。这里主要关心emacps_recv_handler函数,经过注册后,每次收到数据,都会通过此函数处理。
三、调用关系
被low_level_init调用,调用了XEmacPs_SetHandler函数。