• LWIP DP83848 使用初级


    ETH_BSP_Config();     //DP83848
    
    LwIP_Init(); 
        Set_IP4_ADDR(&ipaddr,IMT407G_IP);
        Set_IP4_ADDR(&netmask, IMT407G_NETMASK);
        Set_IP4_ADDR(&gw, IMT407G_WG);
        //添加网络接口
        netif_add(&netif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &ethernet_input);
            netif->input = input;        //input 就是上面传进来的 ethernet_input
            
        
    
    //初始化
    ethernetif_init(struct netif *netif)
        //发送函数
        netif->output = etharp_output;
        netif->linkoutput = low_level_output;
        //初始化 netif 网络接口
        low_level_init(netif);
            //设置MAC地址
            /* initialize MAC address in ethernet MAC */ 
            ETH_MACAddressConfig(ETH_MAC_Address0, netif->hwaddr); 
            
            //设置 DMA 内存地址等信息
            /* Initialize Tx Descriptors list: Chain Mode */
            ETH_DMATxDescChainInit(DMATxDscrTab, &Tx_Buff[0][0], ETH_TXBUFNB);
            /* Initialize Rx Descriptors list: Chain Mode  */
            ETH_DMARxDescChainInit(DMARxDscrTab, &Rx_Buff[0][0], ETH_RXBUFNB);
        
    
    //接收
    //以太网卡有数据,就会有中断
    ETH_IRQHandler
        LwIP_Pkt_Handle();
            ethernetif_input(&netif);
                把网络数据包放到新的buff里面
                p = low_level_input(netif);
                    /* get received frame */
                    frame = ETH_Get_Received_Frame();
                        //从DMA 内存地址哪里获取 bufff数据
                        frame.buffer = DMARxDescToGet->Buffer1Addr;
                        //把数据包送到 LwIP 处理
                        err = netif->input(p, netif);
        
                        //input 就是上面传进来的 ethernet_input
                        ethernet_input
                            switch (type) 
                                case ETHTYPE_IP:
                                    //传到IP层
                                    ip_input(p, netif);
                                case ETHTYPE_ARP:
                                    
    发送
    netif->output = etharp_output;
        etharp_send_ip(netif, q, (struct eth_addr*)(netif->hwaddr), dest);
            netif->linkoutput(netif, p)
            //netif->linkoutput = low_level_output;                    
                /* Prepare transmit descriptors to give to DMA*/ 
                //启动DMA传输,让DMA从内存中把数据发送到 ETH 去
                ETH_Prepare_Transmit_Descriptors(framelength);
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
  • 相关阅读:
    oo第二次总结
    oo第一次总结
    OO最后一次博客儿
    OO作业总结第三弹
    OO作业总结第二弹
    初学面向对象
    hi🎈
    散列函数及其应用
    结对项目作业
    构建之法第四,第十四章读书有感 (另补第十七章)
  • 原文地址:https://www.cnblogs.com/2eggs/p/13298493.html
Copyright © 2020-2023  润新知