реклама на сайте
подробности

 
 
> Microblaze + ethernetlite через lwIP, помогите разобраться
zherdiy
сообщение Dec 1 2008, 14:52
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 93
Регистрация: 8-01-08
Из: Запорожье
Пользователь №: 33 895



Товарищи, собрал проектик с 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); но не понял как это работает. И вообще, почему они говорят только про операцию приема? Мне-то передавать нужно.

Помогиииите разобраться!
Прикрепленные файлы
Прикрепленный файл  xapp1026_raw_app_.rar ( 25.42 килобайт ) Кол-во скачиваний: 46
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zherdiy
сообщение Dec 4 2008, 07:02
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 93
Регистрация: 8-01-08
Из: Запорожье
Пользователь №: 33 895



Вдогонку.
Посмотрел пример с потоками: socket-тип. Вроде он проще для понимания, но я не понял одного - с какого бодуна компилятор требует обработчика прерываний (на этапе создания библиотек), если потоки не используют прерывания?
Go to the top of the page
 
+Quote Post
Костян
сообщение Dec 4 2008, 08:05
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Цитата(zherdiy @ Dec 4 2008, 05:02) *
Вдогонку.
Посмотрел пример с потоками: socket-тип. Вроде он проще для понимания, но я не понял одного - с какого бодуна компилятор требует обработчика прерываний (на этапе создания библиотек), если потоки не используют прерывания?

работая по сокетам, lwip требует для себя ОС (xilkernel ).
Go to the top of the page
 
+Quote Post
zherdiy
сообщение Dec 5 2008, 07:55
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 93
Регистрация: 8-01-08
Из: Запорожье
Пользователь №: 33 895



Цитата(Костян @ Dec 4 2008, 10:05) *
работая по сокетам, lwip требует для себя ОС (xilkernel ).


А подробнее об этом ядре можно? Я прочитал, что оно добавляет какие-то сервисы, но какие именно в случае с Ethernet не понятно.

По поводу необходимости прерываний вычитал следующее:
Creating an lwIP Application Using the Socket API
...
4. The xemacif_input_thread is then started by the network thread. This thread is
required for lwIP operation when using the Xilinx adapters. This thread takes care of
moving data received from the interrupt handlers to the tcpip_thread that is used by
lwIP for TCP/IP processing.
- Я понял, что прерывания использует поток xemacif_input_thread для получения данных из сети. Но ни описания работы этого потока, ни обработчика прерываний для него я в своем проекте не нашел. Единственное упоминание есть в библиотеке xadapter.h в виде строки: void xemacif_input_thread(struct netif *netif). Но это ведь только объявление потока без внутреннего содержания!

В общем, накатал, следуя примеру с SOCKETом, программу (см. прикреп. ниже), которая с частотой в 1mc передает в сеть данные пачками по 1024 значения от 0 до 1023. Но я не понял что делают некоторые функции (см. комент. типа "непонятная функция" и со знаком "?") и хотелось чтобы мне их кто-то прокоментировал. А еще я не понял куда вставляется IP-адрес получателя пакета.
Прикрепленные файлы
Прикрепленный файл  code.rar ( 1.91 килобайт ) Кол-во скачиваний: 62
 
Go to the top of the page
 
+Quote Post
Костян
сообщение Dec 5 2008, 08:15
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Цитата(zherdiy @ Dec 5 2008, 05:55) *
А подробнее об этом ядре можно? Я прочитал, что оно добавляет
В общем, накатал, следуя примеру с SOCKETом, программу (см. прикреп. ниже), которая с частотой в 1mc передает в сеть данные пачками по 1024 значения от 0 до 1023. Но я не понял что делают некоторые функции (см. комент. типа "непонятная функция" и со знаком "?") и хотелось чтобы мне их кто-то прокоментировал. А еще я не понял куда вставляется IP-адрес получателя пакета.

Ну говорю же Вам
xilkernel_main(); - передает управление ОС Xilkernel.

в которой есть один поток - main_thread()

в нем создается другой поток sys_thread_new(network_thread, NULL, DEFAULT_THREAD_PRIO);

и т.д ..


Код
size = sizeof(remote); // непонятная функция

что значит не понятная ? 07.gif 07.gif

Код
/* прослушка входящих подключений (в моем случае наверное не нужна)*/
   //lwip_listen(sock, 5);

Это вы так думаете.

Код
new_sd = lwip_accept(sock, (struct sockaddr *)&remote, &size); // непонятная функция

Почитайте что такое сокет и с чем его есть.


ключивой алгоритм
1. socket()
2. blind()
3. listen()
4. accept()
5. recv()
6. send()
........
7.close()
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zherdiy   Microblaze + ethernetlite через lwIP   Dec 1 2008, 14:52
- - zherdiy   size = sizeof(remote); - ну, не понимаю я что дела...   Dec 5 2008, 09:41
|- - Serg`   Цитата(zherdiy @ Dec 5 2008, 13:41) size ...   Dec 5 2008, 20:37
- - zherdiy   Да мне как-то нудно С ради самой С изучать. Я по н...   Dec 8 2008, 14:50
|- - Костян   Цитата(zherdiy @ Dec 8 2008, 12:50) Да мн...   Dec 8 2008, 15:44
- - zherdiy   Цитата1. Указываем в software platform setting гал...   Dec 9 2008, 08:33
- - Костян   ну вот ... вопросики пошли поинтереснее..... Опя...   Dec 9 2008, 09:05
- - zherdiy   Подправил. Теперь выдает следующие ошибки: region ...   Dec 10 2008, 07:28
- - Костян   Вы догадливы. Эта махина (xilkernel и lwip) прилич...   Dec 10 2008, 08:27
- - zherdiy   Да, насчет "serverThread" дуплянул. Тепе...   Dec 11 2008, 09:06
|- - Костян   Цитата(zherdiy @ Dec 11 2008, 07:06) ... ...   Dec 11 2008, 09:51
- - zherdiy   Мне нужен просто быстрый интерфейс передачи данных...   Dec 11 2008, 09:59
- - Костян   В таком случае lwip c xilkernel в топку. Очень тяж...   Dec 11 2008, 10:27
- - zherdiy   Так напрямую, через ethernetlite, я не смогу прото...   Dec 11 2008, 12:34
|- - Костян   Цитата(zherdiy @ Dec 11 2008, 10:34) Так ...   Dec 11 2008, 13:35
|- - vik0   Цитата(zherdiy @ Dec 11 2008, 14:34) ...н...   Dec 11 2008, 13:40
- - zherdiy   vik0, USB использовать не получится, так как я исп...   Dec 15 2008, 13:59
|- - Костян   Цитата(zherdiy @ Dec 15 2008, 11:59) Кост...   Dec 16 2008, 08:02
- - zherdiy   Насчет АЦП. См.картинку подключения АЦП+Усил на ки...   Dec 16 2008, 09:06
|- - Костян   Цитата(zherdiy @ Dec 16 2008, 07:06) Насч...   Dec 16 2008, 09:15
- - zherdiy   А мне не нужно так быстро считывать в микроблейз. ...   Dec 17 2008, 12:00
- - zherdiy   Написал, по примеру XAPP1026 програмульку для RAW....   Dec 22 2008, 13:39
- - zherdiy   Подскажите кто может: не поместился код в блочную ...   Dec 24 2008, 09:59
- - maugli   При включении конфигурируется только ПЛИС вместе с...   Dec 25 2008, 12:56
- - Дмитрий Мазунин   Неправильно только для законченного прибора. Если ...   Dec 25 2008, 14:18
- - Zinger   Подскажите пожалуйста. Недавно начал работать с Mi...   Dec 26 2008, 10:48
- - zherdiy   Дмитрий Мазунин У меня вроде как законченный приб...   Dec 26 2008, 14:15
|- - Костян   Цитата(zherdiy @ Dec 26 2008, 12:15) Тепе...   Dec 31 2008, 08:51
- - Zinger   Может я не совсем правильно выразил свой вопрос. С...   Dec 29 2008, 11:05
- - zherdiy   Похоже, что Дмитрий Мазунин об этом много знает. З...   Dec 29 2008, 11:28
- - Zinger   Да плохо что молчит, очень надо узнать как всеток...   Dec 29 2008, 13:37
- - maugli   Загрузить программу в DDR можно при помощи Xilinx ...   Dec 29 2008, 15:45
- - rvi   Главное, не забыть про канальный уровень и подстав...   Feb 11 2009, 14:01


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 02:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01429 секунд с 7
ELECTRONIX ©2004-2016