CubeMX H743 lwip ETH初始化流程

初始化流程

cpp 复制代码
low_level_init();函数初始化网卡

    -》HAL_ETH_Init(); //设定mac等信息

    -》创建接收数据信号量
    -》创建数据输入任务函数

    HAL_ETH_Start_IT();  
    -> ETH_UpdateDescriptor();
        ->void HAL_ETH_RxAllocateCallback();分配描述符缓存空间
cpp 复制代码
DMA收到数据包
-》数据包写入到接收描述符缓冲区
->HAL_ETH_RxLinkCallback();组装pbuf链
-》ETH_IRQHandler     
    → HAL_ETH_IRQHandler 触发中断
        -》调用中断回调函数HAL_ETH_RxCpltCallback()
            ->释放接收数据包信号量
cpp 复制代码
ethernetif_input();//任务一直在等待收到数据包的信号量
-》 p = low_level_input( netif );
    -》HAL_ETH_ReadData(&heth, (void **)&p);//读取组装好的pbuf数据
    -》netif->input( p, netif);//数据交给lwip
    ->pbuf_free(p);//释放资源

描述符内存位置分配

ETH DMA可访问的内存地址如下图

可正常通信的描述符地址 举例 都在0x30000000之后

需要指定分配的buff地址。

由编译器指定位置

cpp 复制代码
__attribute__((at(0x30040000))) ETH_DMADescTypeDef  DMARxDscrTab[ETH_RX_DESC_CNT]; /* Ethernet Rx DMA Descriptors */
__attribute__((at(0x30040080))) ETH_DMADescTypeDef  DMATxDscrTab[ETH_TX_DESC_CNT]; /* Ethernet Tx DMA Descriptors */

魔术棒-》linker-》取消勾选 use memory layout from target dialog

编辑.sct文件

相关推荐
DianSan_ERP5 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅5 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
2501_946205525 天前
晶圆机器人双臂怎么选型?适配2-12寸晶圆的末端效应器有哪些?
服务器·网络·机器人
linux kernel5 天前
第七部分:高级IO
服务器·网络
Lester_11015 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元5 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
数字护盾(和中)5 天前
BAS+ATT&CK:企业主动防御的黄金组合
服务器·网络·数据库
三佛科技-187366133975 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315205 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件