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

 
 
26 страниц V  « < 9 10 11 12 13 > »   
Reply to this topicStart new topic
> Ethernet + Cyclone + Nios
vadimuzzz
сообщение Mar 23 2010, 08:05
Сообщение #151


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(dim99 @ Mar 23 2010, 13:50) *
Отправляю пакеты с pc, естественно посылается еще куча всего (broadcast к примеру), как среди этих всех пакетов отсеять свои?
Понятно, что нужно определить какую-то служебную информацию в пакете, чтоб считать его своим.

по MAC-адресам (это основной адрес вашего устройства) TSE фильтрует сам (при выключенном promisc). если этого недостаточно - можно делать дополнительные фильтры - по IP, протоколам, портам и т.п. - естественно, программно. broadcast тут не в кассу, т.к. нужен, например, для ARP. Хотите, скажем, попинговать адрес, сначала идет broadcast ARP-запрос: кто имеет такой-то айпишник, в ответ получает MAC-адрес.
Цитата
И как быть, если нужно обработать или скопировать пришедшие данные, когда уже пришел следующий пакет и возникает прерывание, ведь после него все мои данные от предыдущего пакета сотрутся?
Или нужно выключать dma, а после обработки включать и отсылать пакет на PC с сообщением об успешном приеме, чтобы синхронизироваться.

тут все от вашей задачи зависит. если кровь из носу надо несколько пакетов принять - делаете очередь пакетов (можно посмотреть в LwIP или NicheStack). а нет - затыкаете прием на время обработки пакета и отправки квитка о готовности.
Go to the top of the page
 
+Quote Post
wpost
сообщение Apr 1 2010, 16:28
Сообщение #152


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-04-10
Из: СПб
Пользователь №: 56 354



А кто-нить реализовывал UDP/IP на основе TSE и NicheStack???
Может кто-нить поделиться рабочим примером?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 2 2010, 03:57
Сообщение #153


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



наткнулся тут случайно: "Description: VHDL implementation of a UDP/IP core! Area-optimized for direct PC-FPGA communication! "

http://opencores.org/project,udp_ip__core
Go to the top of the page
 
+Quote Post
dim99
сообщение Apr 2 2010, 07:11
Сообщение #154


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Ну вот, стоило перенести свой ethernet в другой проект, как тут же всплыли старые ошибки.

После TseMacSgDmaReadInit заходит в TseMacRxRead выполняет
alt_avalon_sgdma_do_async_transfer(sgdma_rx_dev, (alt_sgdma_descriptor *)rxDesc);

и впадает в постоянную обработку прерывания TseMacSgDmaRxIsr.

Дескрипторы в норме, отдаю ему currdescriptor_ptr, который подготовлен для записи данных.
Результат выполнения async_transfer=0, ошибок нет.
В прошлый раз эта проблема решилась, когда оставил все дескрипторы, как в примере vadimuzzz.

Так теперь беру этот же работающий проект, переношу код и старые ошибки вылазят.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 2 2010, 08:14
Сообщение #155


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(dim99 @ Apr 2 2010, 13:11) *
Так теперь беру этот же работающий проект, переношу код и старые ошибки вылазят.

выкладывайте последнюю версию и содержимое регистров SGDMA до и после входа в обработчик прерывания
Go to the top of the page
 
+Quote Post
dim99
сообщение Apr 2 2010, 10:34
Сообщение #156


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Все разрешилось, прошу прощения.

В SOPC builder проморгал связь: descriptor_memory->sgdma_rx, отсюда и проблемы.
Go to the top of the page
 
+Quote Post
wpost
сообщение Apr 3 2010, 04:50
Сообщение #157


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-04-10
Из: СПб
Пользователь №: 56 354



пытаюсь сделать свой проект на основе hello_world от dim99 возникло несколько вопросов

1. какой объем памяти вы отводите под descriptor_memory?
2. можно ли выделить пространство в основной ОЗУ процессора под descriptor_memory или это обязательно должна быть отдельная память?
3. Как удалось наладить приемпакетов? (поделитесь, плз, последней версией hello_world.с)
Go to the top of the page
 
+Quote Post
dim99
сообщение Apr 3 2010, 06:43
Сообщение #158


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



1. descriptor_memory: 4k, хотя можно меньше - 4 дескриптора x размер дескриптора. (2 - прием\отправка, 2 заглушки)
2. лучше отдельной памятью, но наверное можно и в основной. (в примере была отдельная)
3. Прикрепленный файл  hello_world.rar ( 5.15 килобайт ) Кол-во скачиваний: 318
Go to the top of the page
 
+Quote Post
wpost
сообщение Apr 5 2010, 14:19
Сообщение #159


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-04-10
Из: СПб
Пользователь №: 56 354



Цитата(dim99 @ Apr 3 2010, 10:43) *
1. descriptor_memory: 4k, хотя можно меньше - 4 дескриптора x размер дескриптора. (2 - прием\отправка, 2 заглушки)
2. лучше отдельной памятью, но наверное можно и в основной. (в примере была отдельная)
3. Прикрепленный файл  hello_world.rar ( 5.15 килобайт ) Кол-во скачиваний: 318


Спасибо огромное!
передача вообще чисто работает, а вот с приемом есть трудность - пропадают первые 2 байта пакета... я, конечно, вышел из положения выставлением IP Align в мегафункции, но интересно где может быть косяк. (rx_pkt начинается с третьего байта).


З.Ы.: С ПЛИС я не новичок, а вот с ниос и С еще начинающий, так что извиняите за глупые вопросы из области программирования =)

Сообщение отредактировал wpost - Apr 5 2010, 14:19
Go to the top of the page
 
+Quote Post
dim99
сообщение Apr 5 2010, 19:24
Сообщение #160


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Да, отлаженный soft это всегда здорово, скажите отдельное спасибо vadimuzzz.

пропадают первые 2 байта пакета - это как раз и есть align ip.
Go to the top of the page
 
+Quote Post
wpost
сообщение Apr 6 2010, 04:06
Сообщение #161


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-04-10
Из: СПб
Пользователь №: 56 354



Цитата(dim99 @ Apr 5 2010, 23:24) *
пропадают первые 2 байта пакета - это как раз и есть align ip.


я так не думаю... при отправке четко: если нет IP align то отправляется с первого байта, если есть - то с третьего...
а на приеме мы тоже видим смещение на 2 байта (потеря без align и начало с первого байта с align)... ip Align просто компенсирует наш косяк...

когда я работал с TSE через конечные автоматы, то ip align работал четко симметрично на прием и передачу...
Go to the top of the page
 
+Quote Post
wpost
сообщение Apr 6 2010, 06:58
Сообщение #162


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-04-10
Из: СПб
Пользователь №: 56 354



похоже дело было в кривой цепочке include.... подцепил по другому все модули и проблема самоликвидировалась.... всё стало как нужно и на приеме... если Align то принимает 2 байта нулей, потом пакет, если не Align то сразу идет пакет...
Go to the top of the page
 
+Quote Post
dim99
сообщение Apr 6 2010, 15:21
Сообщение #163


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



wpost
Вы кстати как инициализировали PHY?
Хочется узнать, только у меня отпадает link, когда через MDIO выставляю контрольные биты для PHY(поэтому и приходится на PC режим задавать. чтобы срабатывал auto-neg).
Go to the top of the page
 
+Quote Post
wpost
сообщение Apr 6 2010, 18:16
Сообщение #164


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-04-10
Из: СПб
Пользователь №: 56 354



Цитата(dim99 @ Apr 6 2010, 19:21) *
wpost
Вы кстати как инициализировали PHY?
Хочется узнать, только у меня отпадает link, когда через MDIO выставляю контрольные биты для PHY(поэтому и приходится на PC режим задавать. чтобы срабатывал auto-neg).


я не спользую MDIO вообще.. PHY у меня DP83848I
auto-neg у меня жестко включен на уровне схемотехники (pin AN_EN pull-up)
вся инициализация сводится к достаточно длинному аппаратному ресету, выдаваемому альтерой на соответствующую ногу PHY. после чего сразу устанавливается линк на 100.
далее я записываю MAC адрес в соответстующие адреса мегафункции (TSE) и
записываю в управляющий регистр TSE в 0x00000023. где 3 означает включить прием и передачу, а 2 - говорит TSE автоматически убирать PAD (дополнение нулями маленьких пакетов до минимальной длины).

вот собственно и все настройки.
опыт применения DP83848I достаточно большой (3 года), но с другим процессором LPC2468. C MDIO за это время ни разу не заморачивались. auto-neg вроде как работает... хотя проверить трудно т.к. у меня все хабы и PC умеют переворачивать.
Go to the top of the page
 
+Quote Post
wpost
сообщение Apr 12 2010, 14:35
Сообщение #165


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 1-04-10
Из: СПб
Пользователь №: 56 354



И всетаки пример "Hello_world" принимает пакеты неправильно...
если отправлять одинокие редкие пакеты всё кажется лучезарно, но...
если отправить фрагментированный пакет (много не надо достаточно двух кусков), то в массиве rx_pkt оказывается только последний пакет, а первый пропадает.
я так понимаю что проблема в том, что они диут подряд и новый пакет перекрывает старый при вычитывании из SGDMA... изучение вопроса привело к обнаружению "Read until EOP = 0" см ниже

Цитата(vadimuzzz @ Mar 14 2010, 21:47) *
...

Код
alt_avalon_sgdma_construct_stream_to_mem_desc(
            (alt_sgdma_descriptor *) &desc[ALTERA_TSE_FIRST_RX_SGDMA_DESC_OFST],  // descriptor I want to work with
            (alt_sgdma_descriptor *) &desc[ALTERA_TSE_SECOND_RX_SGDMA_DESC_OFST],  // pointer to "next" <- это "левый" дескриптор
            uncached_packet_payload,            // starting write_address
            0,                                  // read until EOP
            0);


...


постановка "Read until EOP = 1" приводит к зацикливанию в прерывании на первом же заходе в него... т.е. на arp пакете... как решить проблему пока не знаю, если у кого есть мысли help!!!
Go to the top of the page
 
+Quote Post

26 страниц V  « < 9 10 11 12 13 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 16:34
Рейтинг@Mail.ru


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