Lutovid 1 18 ноября, 2022 Опубликовано 18 ноября, 2022 · Жалоба Всем привет. У меня возникла необходимость подключить 2 axi ethernet subsystem к одному microblaze. С одним я работал, а вот с двумя не доводилось. Решил танцевать от примера echo, но пока меня интересует только ответ на ping. Подключил оба интерфейса. Запустил пример - все пингуется. Как только добавляю строки if (!xemac_add(echo_netif2, &ipaddr2, &netmask2, &gw2, mac_ethernet_address2, XPAR_AXI_ETHERNET_1_BASEADDR)) { xil_printf("Error adding N/W interface\n\r"); return -1; } Что бы добавить новый netif в lwip, отваливается и первый интерфейс. Кто это реализовывал? может у меня есть какое-то принципиальное недопонимание? Любой подсказке буду рад Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 18 ноября, 2022 Опубликовано 18 ноября, 2022 · Жалоба ТЗ бестолково написано чтоли* Если есть 2 потока Надо 2 обработчика. Тваюмать, я 64 обработчика делел и что??1 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lutovid 1 18 ноября, 2022 Опубликовано 18 ноября, 2022 · Жалоба On 11/18/2022 at 8:16 PM, krux said: ТЗ бестолково написано чтоли* Если есть 2 потока Надо 2 обработчика. Тваюмать, я 64 обработчика делел и что??1 Не понял Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lutovid 1 18 ноября, 2022 Опубликовано 18 ноября, 2022 · Жалоба https://lwip.fandom.com/wiki/Network_interfaces_management Как я понимаю если у нас есть уже один рабочий netif, то его не должно выбивать добавление нового Но я вижу обратное static struct netif server_netif; static struct netif server_netif2; struct netif *echo_netif; struct netif *echo_netif2; XUartLite UartLite; struct ip_addr ipaddr, netmask, gw; struct ip_addr ipaddr2, netmask2, gw2; /* the mac address of the board. this should be unique per board */ unsigned char mac_ethernet_address[] = { 0x00, 0x0a, 0x35, 0x00, 0x01, 0x02 }; unsigned char mac_ethernet_address2[] = { 0x00, 0x0a, 0x35, 0x00, 0x01, 0x03 }; void ProcUartCommand(u8 inp) { if(inp == '1') { xil_printf("adding netif\n\r"); if (!xemac_add(echo_netif2, &ipaddr2, &netmask2, &gw2, mac_ethernet_address2, XPAR_AXI_ETHERNET_1_BASEADDR)) { xil_printf("Error adding N/W interface\n\r"); } } } int main() { u8 UARTRecvBuffer[UART_BUFFER_SIZE]; u8 ReceivedCount = 0; XUartLite_Initialize(&UartLite, XPAR_UARTLITE_0_DEVICE_ID); echo_netif = &server_netif; echo_netif2 = &server_netif2; /* Define this board specific macro in order perform PHY reset on ZCU102 */ init_platform(); /* initliaze IP addresses to be used */ IP4_ADDR(&ipaddr, 192, 168, 7, 10); IP4_ADDR(&netmask, 255, 255, 255, 0); IP4_ADDR(&gw, 192, 168, 7, 1); IP4_ADDR(&ipaddr2, 192, 168, 7, 11); IP4_ADDR(&netmask2, 255, 255, 255, 0); IP4_ADDR(&gw2, 192, 168, 7, 1); print_app_header(); lwip_init(); /* Add network interface to the netif_list, and set it as default */ if (!xemac_add(echo_netif, &ipaddr, &netmask, &gw, mac_ethernet_address, XPAR_AXI_ETHERNET_0_BASEADDR)) { xil_printf("Error adding N/W interface\n\r"); return -1; } // if (!xemac_add(echo_netif2, &ipaddr2, &netmask2, // &gw2, mac_ethernet_address2, // XPAR_AXI_ETHERNET_1_BASEADDR)) { // xil_printf("Error adding N/W interface\n\r"); // return -1; // } netif_set_default(echo_netif); /* now enable interrupts */ platform_enable_interrupts(); /* specify that the network if is up */ netif_set_up(echo_netif); print_ip_settings(&ipaddr, &netmask, &gw); /* start the application (web server, rxtest, txtest, etc..) */ start_application(); /* receive and process packets */ while (1) { if (TcpFastTmrFlag) { tcp_fasttmr(); TcpFastTmrFlag = 0; } if (TcpSlowTmrFlag) { tcp_slowtmr(); TcpSlowTmrFlag = 0; } ReceivedCount += XUartLite_Recv(&UartLite,UARTRecvBuffer,UART_BUFFER_SIZE); if (ReceivedCount != 0) { ReceivedCount=0; ProcUartCommand(UARTRecvBuffer[0]); } xemacif_input(echo_netif); transfer_data(); } /* never reached */ cleanup_platform(); return 0; } Вот мой участок кода, который я правлю Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lutovid 1 13 декабря, 2022 Опубликовано 13 декабря, 2022 · Жалоба https://support.xilinx.com/s/question/0D52E00006hpi7ySAA/microblaze-dual-ethernet-problem-with-lwip?language=en_US Кто искал ответ на тот же вопрос что и я - в примере выше dma, но с fifo то же самое Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 15 декабря, 2022 Опубликовано 15 декабря, 2022 · Жалоба Может сделать 2 процессора и каждый с одним Ethernet? 2 потока и 2 обработчика... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться