Товарищи, собрал проектик с XPS_ethernetlite, включил lwip, скачал пример xapp1026 и запутался.
Мне нужен простой метод передачи (пока только передачи) данных по сети без всяких наворотов и не обязательно на всей скорости. По примеру я окончательно запутался - там для моего случая Raw/s3an около 20ти сишных файлов, в которых, я так понял, варианты работы на все случаи жизни. Мне это все не нужно и я не могу перейти от сложного к простому, то есть попросту разгрести весь этот код. К тому же я не совсем понимаю по каким принципам работает ethernet: зачем ему "обязательно" контроллер прерываний? Для чего используется счетчик?
Из ПДФины по xapp1026 следует:
Creating an lwIP application using the RAW API
The lwIP RAW mode API is more complicated to use as it requires knowledge of lwIP internals.
The typical structure of a RAW mode program is as follows.
1. The first step is to initialize all lwIP structures using lwip_init.
! до команды нужно что-то задавать или нет? В примерах до lwip_init() задаются все IP-адреса. Какая вообще задача у этого lwip_init()?
2. Once lwIP has been initialized, an EMAC can be added using the xemac_add helper
function.
! в примере по этому поводу две строки (если упростить): xemac_add(netif, &ipaddr, &netmask, &gw, mac_ethernet_address, EMAC_BASEADDR)
netif_set_default(netif);
! больше к этому ничего не требуется?
3. Because the Xilinx lwIP adapters are interrupt based, enable interrupts in the processor
and in the interrupt controller.
! как я писал выше, мне не понятно в чем заключается смысл использования прерываний
4. Set up a timer should to interrupt at a constant interval. Usually, the interval is around 250
ms. Update the tcp timers at every timer interrupt.
! тоже что и по п.3. Зачем нам таймер?
5. Once the application is initialized, the main program enters an infinite loop performing
packet receive operation, and any other application specific operation it needs to do.
! если я правильно понимаю, то в главной программе void main()
мне нужно однократно проинициализировать какой-то application, чтобы в затем им пользоваться в цикле? Может для моего случая подойдут подпрограммы int start_application() и int transfer_data() из файла utxperf.c xapp1026? Я правда не понял где формируется отправляемый пакет данных.
6. The packet receive operation (xemacif_input), processes packets received by the
interrupt handler, and passes them onto lwIP, which then calls the appropriate callback
handlers for each received packet.
! в примере нашел xemacif_input(netif); но не понял как это работает. И вообще, почему они говорят только про операцию приема? Мне-то передавать нужно.
Помогиииите разобраться!