STM32/GD32的以太网DMA描述符

继续梳理以太网的DMA描述符。

以太网DAM描述符的结构

有两种结构,链式结构和环形结构。

常用的是链式结构。

标准库中,关于DMA描述符的数据结构

以gd32f4xx_enet.c为例。

先说发送描述符。

系统分配了5个发送描述符。每个描述符对应的缓冲区大小为1524字节。

#define ENET_TXBUF_NUM                   5U                                     /*!< ethernet Tx DMA descriptor number */#define ENET_MAX_FRAME_SIZE                       1524U                                         /*!< header + frame_extra + payload + CRC */    #define ENET_TXBUF_SIZE                  ENET_MAX_FRAME_SIZE                    /*!< ethernet transmit buffer size */enet_descriptors_struct  txdesc_tab[ENET_TXBUF_NUM];        /*!< ENET TxDMA descriptor */uint8_t tx_buff[ENET_TXBUF_NUM][ENET_TXBUF_SIZE];           /*!< ENET transmit buffer */

注意,这里有一个5个元素的结构体数组:txdesc_tab,这就是发送描述符表;还有一个2维数组tx_buff,是5*1524个字节,这就是发送缓冲区;后面要说怎么用。

描述符初始化

调用以下函数初始化发送DMA描述符为链式结构:

    enet_descriptors_chain_init(ENET_DMA_TX);

初始化完成之后的效果:(借用网上的图)

这张图也挺好:

初始化后内存中的数据和DMA寄存器

5个描述符的地址分别为0x20000134、0x20000144...0x20000174。

并且,第一个描述符的next_desc_addr指向第二个描述符。

同样的,第二个的next指向第三个。。。最后一个的next指向第一个:

再看缓冲区的地址:

分别为0x20001F48、0x2000253C、0x20002B30、0x20003124、0x20003718。

描述符中的buffer1_addr分别指向各自的缓冲区:

DMA组的发送描述符表寄存器DMA_TDTADDR中保存的是第1个描述符的地址0x20000134

使能ENET后,当前的发送和接收描述符级缓冲区地址也已更新(只读寄存器):

验证运行过程中的状态

测试条件及方法:

查看当前的寄存器。

当前接收描述符地址:0x200000F4(描述符1);

当前接收缓冲区地址:0x20000778(缓冲区1);

看看缓冲区里面的数据:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/785137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四川古力未来科技抖音小店:把握电商新风口,前景无限广阔

在数字化浪潮席卷全球的今天&#xff0c;电商行业以其独特的魅力和无限潜力&#xff0c;成为了众多创业者和投资者关注的焦点。四川古力未来科技抖音小店&#xff0c;正是站在这一风口浪尖上的新兴力量&#xff0c;其前景之广阔&#xff0c;令人瞩目。 抖音&#xff0c;作为一款…

【AI+音乐】利用Suno A​I、Suno BI快速制作音乐MV

上周写过一篇 【人工智能】Suno AI让普通人也可以创作音乐 &#xff0c; Suno AI可以让我们普通人可以快速创造一首属于自己的音乐。 普通人是不是有制作MV的梦想&#xff0c; 这里介绍一个网站 Suno BI 。 官方地址&#xff1a; https://app.suno.bi/song 单击可创建具…

WIN10系统下误删除了用户重启无法登录

WIN10系统下误删除了用户重启无法登录 不小心在控制面板的用户组里面删除了当前的用户&#xff0c;在电脑重启后无论怎么输入密码都提示不正确不能登录。 在选择登录的界面同时点击 shift 和重启按钮&#xff1b;在进入的界面选择“疑难问题”&#xff1b;选择进入安全模式&…

java学习2

ArratList 集合入门 ArratList 类属于java.util包里面的使用前需要在代码开头添加一下代码 import java.util.ArrayList; 1.集合的长度是可变的&#xff0c;不像数组一样是固定的 2.泛型&#xff1a;限定集合中存储数据的类型 3.集合不能直接存基本数据类型&#xff0c;如…

发票是扫码验真好,还是OCR后进行验真好?

随着科技的进步&#xff0c;电子发票的普及使得发票的验真方式也在不断演进。目前&#xff0c;我们常见的发票验真方式主要有两种&#xff1a;一种是扫描发票上的二维码进行验真&#xff0c;另一种是通过OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别…

国内ip怎么来回切换:操作指南与注意事项

在数字化时代&#xff0c;互联网已经成为我们日常生活、学习和工作中不可或缺的一部分。然而&#xff0c;随着网络应用的不断深化&#xff0c;用户对于网络环境的稳定性和安全性要求也越来越高。其中&#xff0c;IP地址作为网络中的关键标识&#xff0c;其切换与管理显得尤为重…

RDGCN阅读笔记

Relation-Aware Entity Alignment for Heterogeneous Knowledge Graphs 面向异质知识图谱的关系感知实体对齐 Abstract 实体对齐是从不同的知识图(KGs)中链接具有相同真实世界实体的任务&#xff0c;最近被基于嵌入的方法所主导。这种方法通过学习KG表示来工作&#xff0c;以…

基于Spring Boot 3 + Spring Security6 + JWT + Redis实现接口资源鉴权

紧接上一篇文章&#xff0c;基于Spring Boot 3 Spring Security6 JWT Redis实现接口资源鉴权 系列文章指路&#x1f449; 系列文章-基于SpringBoot3创建项目并配置常用的工具和一些常用的类 项目源码&#x1f449; /shijizhe/boot-test 文章目录 1. 修改 UserDetailsServic…

使用hexo框架快速在github上搭建静态博客

今天来说一下使用hexo框架搭建静态博客&#xff0c;玩玩还不错。 我的操作系统 文章目录 一、部署到本地二、新建博客三、更换主题四、部署到github五、其他 一、部署到本地 首先下载好nodejs和git工具&#xff0c;建议直接去清华镜像源下载 node.js git 这中间环境变量的配置…

【精品方案】智慧金融大数据分析平台总体架构方案

以下是部分PPT内容&#xff0c;请您参阅。如需下载完整PPTX文件&#xff0c;请前往星球获取&#xff1a; 1.实现数据共享 通过数据平台实现数据集中&#xff0c;确保金融集团各级部门均可在保证数据隐私和安全的前提下使用数据&#xff0c;充分发挥数据作为企业重要资产的业务价…

milvus knowhere源码编译测试

简介 Knowhere 是 Milvus 的核心向量执行引擎&#xff0c;集成了Faiss、Hnswlib和Annoy等多个向量相似度搜索库。 编译环境 操作系统: Ubuntu 22.04.4 gcc/g:11.4.0 cmake: 3.27.7 安装依赖 apt install build-essential libopenblas-dev libaio-dev python3-dev python…

c语言例题,计算字符串长度,递归思想

c语言中&#xff0c;计算字符串长度算是一个比较经典的题了&#xff0c;而今天我们运用两种不同的求解方法来写出不同的程序来实现计算字符串的功能。 主函数 先看到主函数&#xff0c;主函数中设置了一串7个字符的字符串&#xff0c;而后面接下来定义了两个变量len1和len2&am…

Chatopera 云服务的智能问答引擎实现原理,如何融合 #聊天机器人 技术 #Chatbot #AI #NLP

观看视频 Bilibili: https://www.bilibili.com/video/BV1pZ421q7EH/YouTube: https://www.youtube.com/watch?vx0d1_0HQa8o 内容大纲 提前在浏览器打开网址&#xff1a; Chatopera 云服务&#xff1a;https://bot.chatopera.comChatopera 入门教程&#xff1a;https://dwz…

银狐再起风波:2024税务抽查引战勒索风暴

近日&#xff0c;在日常网络狩猎过程中&#xff0c;亚信安全威胁情报中心的研究专家偶然发现了一个团伙&#xff0c;该团伙不仅在QQ群内散播钓鱼链接&#xff0c;还通过伪造的下载网站推广含有恶意软件的EXE文件。面对这一明显的威胁传播行为&#xff0c;该专家迅速组织了威胁情…

个人偏好测验,职业倾向分析和HR人才测评量表

个人偏好测验&#xff0c;以人的15种需求为理论基础&#xff0c;用来鉴别我们在这15个维度的倾向&#xff0c;从而为分析人格特征、职业倾向提供依据。15种需求理论最早由美国心理学家murray在1938年提出。 个人偏好测验&#xff0c;也叫个人爱好测试&#xff0c;人的需求因子…

网络体系结构概述

目录 1. OSI/RM参考模型1.1. 物理层1.2. 数据链路层1.3. 网络层1.4. 传输层1.5. 会话层1.6. 表示层1.7. 应用层 2. TCP/IP参考模型3. 理解OSI七层模型 网络体系结构是线代网络技术的整体蓝图。 1. OSI/RM参考模型 开放互联参考模型&#xff08;Open System Interconnection/…

备考ICA----Istio实验12---配置双向TLS Istio Ingress Gateway实验

备考ICA----Istio实验12—配置双向TLS Istio Ingress Gateway实验 本实验部分配置延续上个Istio实验11 1. 重新配置secret 重新配置secret使其带有ca证书可以验证客户端证书是否合法 先删除原有secret,再配置新的secret # 删除原tls类型的secret kubectl -n istio-system d…

【Django开发】0到1美多商城项目md教程第4篇:图形验证码,1. 图形验证码接口设计【附代码文档】

美多商城完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;欢迎来到美多商城&#xff01;&#xff0c;项目准备。展示用户注册页面&#xff0c;创建用户模块子应用。用户注册业务实现&#xff0c;用户注册前端逻辑。图形验证码&#xff0c;图形验证码接口设…

网安基础2-Sniffer的使用与防范

1. 嗅探器sniffer的工作原理 能捕获经过该网络设备的报文&#xff0c;通过分析网络流量&#xff0c;找出关键信息&#xff0c;解决网络问题。 不同于键盘捕获程序&#xff0c;如keylogger利用中断或钩子技术&#xff0c;Sniffer将网络接口置成适当的模式&#xff0c;如杂收。…