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

相关推荐
域智盾软件3 小时前
电脑加密软件 5 个高频问题:选型、落地、排错一次讲清
网络·电脑
LCG米8 小时前
STM32串口接收卡死根因排查:ORE溢出标志陷阱、错误标志清除顺序与中断恢复实测
stm32·单片机·嵌入式硬件·串口·嵌入式
Eloudy9 小时前
全文 - IMEX 第01节 -IMEX overview
运维·服务器·网络
物联网软硬件开发-轨物科技9 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
Escalating_xu9 小时前
【Linux 网络编程】TCP 跨平台实战:用 Windows 客户端访问 Linux 服务器
linux·服务器·网络
创界工坊工作室10 小时前
38-基于单片机的老人健康监测系统
单片机·嵌入式硬件·51单片机·proteus
是真的小外套11 小时前
2024年软考中级信息安全工程师|选择题考点+案例分析真题解析(含答案)
android·网络
三佛科技-1341638421212 小时前
20W~200W副边反馈SSR隔离方案HN1562+碳化硅MOS(含光耦817,431)
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
小天源13 小时前
让访问数据可解释:IP 地球大屏、地区库更新与运行维护设计
网络·网络协议·tcp/ip
老李IT笔记13 小时前
连不上不一定是网不好:新系统不认的服务端配置卡在哪一档
运维·服务器·网络