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文件

相关推荐
✎ ﹏梦醒͜ღ҉繁华落℘10 小时前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
网络研究院11 小时前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智11 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
treesforest11 小时前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全
shushangyun_11 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
zd84510150011 小时前
RS485 总线详解
单片机·嵌入式硬件
2601_9618451511 小时前
粉笔行测题库|系统班|刷题
网络·百度·微信·微信公众平台·facebook·新浪微博
程序猿阿伟12 小时前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome
牛根生同志12 小时前
SPI数据收发的时候 TXE与RXNE标志位置位的时机
stm32·spi·transfer
InHand云飞小白12 小时前
无人值守站点网络困境?工业级路由器IR315破解连接难题
网络·物联网·4g·工业路由器·4g路由器·iiot·蜂窝路由器