首页 > 其他分享 >zynq Lwip学习笔记-setup_isr 函数

zynq Lwip学习笔记-setup_isr 函数

时间:2024-04-06 09:02:22浏览次数:16  
标签:emacps Lwip xemacpsif isr setup EMACPS handler xemac void

这里写目录标题

前言

最近在学习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函数。

标签:emacps,Lwip,xemacpsif,isr,setup,EMACPS,handler,xemac,void
From: https://blog.csdn.net/weixin_40356705/article/details/137412991

相关文章

  • 【WCH以太网接口系列芯片】STM32+CH390+Lwip协议栈简单应用测试
    本篇文章基于STM32F103和CH390H芯片进行例程移植及相关注意事项,简单验证TCP\UDP\Ping基础功能。硬件:STM32F103开发板+沁恒CH390H的评估版图一示,SPI使用接口为:INT->PA0,RST->PA1,CS->PA2,SCK->PA5,MISO->PA6,MOSI->PA7,WOL->PA8。 图一 软件移植:采用的沁恒官方提供的CH......
  • 使用inno setup 打包Pyinstaller生成的文件夹
    背景:pyinstaller6.5.0、InnoSetup6.2.21. 需要先使用pyinstaller打包,生成包括exe在内的可执行文件夹注意:直接使用pyinstaller打包,生成的文件夹较大,建议在python安装路径中的Scripts文件夹中,将脚本等文件复制过来,将打包命令中的pyinstaller替换为pyinstaller.exe打包,生成的文......
  • Java登陆第三十六天——VUE3响应式入门、setup语法糖
    当浏览器接收到服务端返回的页面后,浏览器会把页面解析成DOM树,DOM树中各个元素会相应的显示在浏览器上。VUE提供的响应式数据可以在页面不刷新的情况下更新数据。响应式数据App.vue<script>//等价于setup语法糖。固定的写法,不会改。exportdefault{setup(){letsum......
  • Cisco ISR 4000 Series IOS XE Release IOSXE-17.13.1a ED
    CiscoISR4000SeriesIOSXEReleaseIOSXE-17.13.1aED思科4000系列集成服务路由器系统软件请访问原文链接:https://sysin.org/blog/cisco-isr-4000/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org思科4000系列集成服务路由器让您的分支机构站点为实施全数......
  • setuptools 对于现代python包支持的简单试用
    以前我们编写python包通过setuptools是编写配置setup.cfg以及一个setup.py文件,现代的玩法是基于pyproject.toml以下是一个简单学习项目准备使用venvclipython-mvenvvenvsourcevenv/bin/activate创建项目文件pyproject.toml,里边包含了build......
  • Elasticsearch 8.x以上实现初始化用户密码,elasticsearch-setup-passwords interactive
    Elasticsearch8.x以上,默认自动开启x-pack验证,在首次启动时,会设置密码,当再次执行elasticsearch-setup-passwordsinteractive就会报错,提示使用elasticsearch-reset-passwords,但是用户太多,还是想要能像8.x以下一直敲回车,设置密码。今天偶然Elasticsearch报错,发现一个方法可以使用,......
  • zynq Lwip学习笔记-recv_callback函数
    文章目录前言一、概述二、函数体三调用位置前言最近在学习zynq中的lwip协议族,找不到很好的记笔记的地方,所以就用csdn记录一下自己的学习过程。现在对lwip不熟悉,只是把官方的lwipechoserver例程跑了一下,能跑通就一点点的照着学了,笔记都是根据自己的理解写的,而且部......
  • zynq Lwip学习笔记-accept_callback函数
    文章目录前言`一、概述二、函数体三、调用关系前言`最近在学习zynq中的lwip协议族,找不到很好的记笔记的地方,所以就用csdn记录一下自己的学习过程。现在对lwip不熟悉,只是把官方的lwipechoserver例程跑了一下,能跑通就一点点的照着学了,笔记都是根据自己的理解写的,而......
  • Python实战:打包与分发setup.py与pip
    一、引言在Python开发中,打包和分发项目是一个重要的环节。为了让其他开发者能够使用我们的项目,我们需要将项目打包成一个可安装的Python包。此外,为了方便地管理和安装Python包,Python社区开发了一个强大的包管理工具——pip。本文将详细介绍Python打包与分发的过程,包括使用s......
  • Preview pipeline: Display_Out SetupTargetBuffer
    camx/src/core/hal/camxhaldevice.cppCamxResultHALDevice::ProcessCaptureRequest(Camera3CaptureRequest*pRequest){result=GetCHIAppCallbacks()->chi_override_process_request(reinterpret_cast<constcamera3_device*>(&m_c......