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

 
 
26 страниц V  « < 13 14 15 16 17 > »   
Reply to this topicStart new topic
> Ethernet + Cyclone + Nios
vadimuzzz
сообщение Mar 8 2011, 23:52
Сообщение #211


Гуру
******

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



Цитата(covsh @ Mar 8 2011, 22:15) *
Всю тему прочил уже несколько раз, но ответов так и не нашел.

Собрал систему в sopc использую модель eth_ocm.
далее, создаю простую программу в nios и наталкиваюсь на то, что для успешной компиляции в проекте должен присутствовать InterNiche TCP/IP и соответсвенно UCOSII.
я прав или что-то путаю?

в этой теме есть ответ и примеры кода без InterNiche TCP/IP
Цитата
Хочу попробовать свои силы с компонентом triple speed Ethernet (TSE) но меня смущает что он time limited. Как можно это побороть?

"правильной" лицензией.
Цитата
с чего начать освоение 10/100 ethernet?

если будете делать по примерам из этого топика, то сначала почитайте про ваш PHY, у него может отличаться инициализация. потом почитать про SGDMA. ну, и иметь представление об ARP, ICMP. этого хватит, чтобы пропинговать плату.
Go to the top of the page
 
+Quote Post
covsh
сообщение Mar 9 2011, 07:52
Сообщение #212


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 7-04-05
Пользователь №: 3 947



Цитата(vadimuzzz @ Mar 9 2011, 02:52) *
в этой теме есть ответ и примеры кода без InterNiche TCP/IP

было бы очень любезно, если бы вы указали где найти.
перелистал всю тему и без толку.
в гугле нашел лишь то, что можно InterNiche запустить без rtos используя superloop
http://www.alterawiki.com/wiki/%22Super_Loop%22_NicheStack

Цитата
"правильной" лицензией.

а она вообще существует под 9.1 sp2 ? sm.gif


Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 9 2011, 08:04
Сообщение #213


Гуру
******

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



Цитата(covsh @ Mar 9 2011, 13:52) *
было бы очень любезно, если бы вы указали где найти.
перелистал всю тему и без толку.

ну вы блин даете. http://electronix.ru/forum/index.php?showt...st&p=751876 - это для TSE. несколько раньше было для опенкоровского. может не листать, а читать попробовать?
Go to the top of the page
 
+Quote Post
covsh
сообщение Mar 9 2011, 09:01
Сообщение #214


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 7-04-05
Пользователь №: 3 947



Уважаемый, vadimuzzz
Я начинающий в этом вопросе, прошу понимания у знатоков sm.gif

Последовательность моих действий:
Я использую Quartus II 9.1 sp2.
Использую компонент eth_ocm_91_0_beta.zip
установил модуль в “C:\altera\91\ip\user_components\eth_ocm” в соответствии с инструкцией.
Далее, создал систему в SOPC


После этого, перехожу в NIOS и создаю простой проект на основе шаблона «Hello World»
При компиляции возникает ошибка.
Код
nios2-elf-gcc -xc -MP -MMD -c  -I. -I./drivers/inc -I./HAL/inc -DSYSTEM_BUS_WIDTH=32 -D__hal__ -pipe -DALT_NO_INSTRUCTION_EMULATION -DALT_SINGLE_THREADED -DALTERA_TRIPLE_SPEED_MAC -DETH_OCM_PHY_MAX_PROFILES=3 -DETH_OCM_PHY_SUPPORT_DP83848C -DETH_OCM_PHY_SUPPORT_MVL88E1111    -O0 -g -Wall  -mno-hw-div -mhw-mul -mno-hw-mulx   -o obj/drivers/src/eth_ocm_phy.o c:/work/new_nios/Nios_c3_new/software/hello_bsp/drivers/src/eth_ocm_phy.c
c:/work/new_nios/Nios_c3_new/software/hello_bsp/drivers/src/eth_ocm_phy.c: In function `eth_ocm_phy_init':
c:/work/new_nios/Nios_c3_new/software/hello_bsp/drivers/src/eth_ocm_phy.c:160: error: structure has no member named `phyadd'

Чего не хватает в моем проекте?
Что идейно я упустил?

Цитата(vadimuzzz @ Mar 9 2011, 11:04) *
ну вы блин даете. http://electronix.ru/forum/index.php?showt...st&p=751876 - это для TSE. несколько раньше было для опенкоровского. может не листать, а читать попробовать?

вы имели ввиду вот это?
http://electronix.ru/forum/index.php?s=&am...st&p=687221
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 9 2011, 09:25
Сообщение #215


Гуру
******

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



Цитата(covsh @ Mar 9 2011, 15:01) *
вы имели ввиду вот это?
http://electronix.ru/forum/index.php?s=&am...st&p=687221

не совсем то.. там для TSE код, а опенкоровский закомментирован (он д.б. рабочий, но я лучше поищу последнюю актуальную версию). если вам не критично, начните с TSE. а я поищу у себя старый код для опенкоровского ядра. таких ошибок компиляции, как у вас, я не видел, тогда юзал квартус 7.2. ругается компилятор на поле в какой-то структуре, может быть там имя поменялось в новой версии?
Go to the top of the page
 
+Quote Post
covsh
сообщение Mar 9 2011, 13:07
Сообщение #216


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 7-04-05
Пользователь №: 3 947



Цитата(vadimuzzz @ Mar 9 2011, 12:25) *
не совсем то.. там для TSE код, а опенкоровский закомментирован (он д.б. рабочий, но я лучше поищу последнюю актуальную версию). если вам не критично, начните с TSE. а я поищу у себя старый код для опенкоровского ядра. таких ошибок компиляции, как у вас, я не видел, тогда юзал квартус 7.2. ругается компилятор на поле в какой-то структуре, может быть там имя поменялось в новой версии?

при вникании оказалось что все ошибки идут из-за отсутствия определения ALT_INICHE в eth_ocm.h
попытки определить его в ручную дают еще более серьезные ошибки sm.gif
однако, как только проект создается с поддержкой MicroC/OS-II RTOS и NicheStack TCP/IP Stack, компиляция проходит успешно.

видимо, либо где-то есть возможность конфигурирования либо эта штука сейчас работает только совместно с NicheStack TCP/IP Stack.

vadimuzzz, спасибо за ответ. начну разбираться с TSE. тем более, здесь много полезных исходников.

остался вопрос только с лицензированием TSE. если кто может помочь, напишите в личку sm.gif
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 15 2011, 03:38
Сообщение #217


Гуру
******

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



пример драйвера для опенкоровского модуля eth
Прикрепленные файлы
Прикрепленный файл  oc_eth.rar ( 3.72 килобайт ) Кол-во скачиваний: 116
 
Go to the top of the page
 
+Quote Post
nmurzin
сообщение Mar 31 2011, 06:54
Сообщение #218


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

Группа: Участник
Сообщений: 94
Регистрация: 24-11-10
Из: г.Зеленоград
Пользователь №: 61 141



Здравствуйте.

Начальство поручило мне освоить работу с Gigabit Ethernet.

У меня есть KIT на Cyclon III с микросхемой Marvell 88E111.

Меня интересует объем работы который мне предстоит пройти
прежде чем я смогу передавать данные с компьютера в ПЛИС.

Глядя на этот форум я увидел что к освоению Ethernet причастны:
- Sopc Builder.
- NIOS-IDE.
- Некий Компонент Lan91C111.
- DDR2 память.

Я ранее не работал c Sopc Builder .
Просвятите меня пожалуйста:

- Какое отношение имеют друг к другу Sopc Builder и NIOS ?
- Обязательно ли для этой задачи использовать Sopc Builder ?
- Какое отношение имеет DDR2 память к Ethernet ?
- Что за компонент Lan91C111 и для чего он нужен ?

- Ну и самый главный вопрос, за какое время в человекочасах решается данная задача ?
Поделитесь сколько времени у вас на это ушло.




Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 31 2011, 07:28
Сообщение #219


Гуру
******

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



Цитата(nmurzin @ Mar 31 2011, 13:54) *
- Какое отношение имеют друг к другу Sopc Builder и NIOS ?

NIOS - один из компонентов, используя которые как кирпичики, можно собрать в билдере систему (SOPC)
Цитата
- Обязательно ли для этой задачи использовать Sopc Builder ?

нет, но жизнь он упрощает здорово. есть куча готовых компонентов, можно писать свои.
Цитата
- Какое отношение имеет DDR2 память к Ethernet ?

никакого. просто, как правило, по Ethernet надо слить довольно большой объем данных, удобно складывать их там. или же хочется
систему с ниосом, эзернетом и какой-нибудь осью - опять память нужна
Цитата
- Что за компонент Lan91C111 и для чего он нужен ?

это контроллер эзернет (MAC+PHY в одном флаконе). ставят обычно на дешевых платах. у вас марвеловский PHY, для него нужна IP-корка эзернет,
либо альтеровская, либо своя или опенсорсная. для Lan91C111 она не нужна.

Цитата(nmurzin @ Mar 31 2011, 13:54) *
Поделитесь сколько времени у вас на это ушло.

это зависит от вашего опыта. работали ли вы с другими контроллерами (если да, то вариант с ниосом предпочтительнее) или ПЛИС
Go to the top of the page
 
+Quote Post
avacs
сообщение Apr 15 2011, 12:59
Сообщение #220





Группа: Участник
Сообщений: 13
Регистрация: 10-12-10
Из: RND
Пользователь №: 61 523



Ув. vadimuzzz... а вы пробовали использовать при передаче jumbo frame (>4кб)??? А то я или что то туплю или не понимаю, по описанию Marvell 88E1111 поддерживает jumbo >10 кб, но при попытке записать пакет выше 1530 байт вижу только мигание светодиода TX (плата DSP KIT CIII 3C120F780), а на другом конце на машине под Ubuntu 10.10 под Wireshark ничего не вижу... основа для работы с сетью Ваша (та что вы с dim99 ранее делали)... Длину массивов переменных увеличивал, может нужно было увеличить размер дескриптора SGDMA в SOPCe (у меня сейчас дескриптор 4096)? или я уже туплю и все до бонального просто....??
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 15 2011, 13:26
Сообщение #221


Гуру
******

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



нет, не пробовал. размер descriptor memory тут скорее всего ни при чем - сами дескрипторы всего 32 байта по-моему, в них только указатели лежат. надо смотреть настройки MAC-корки (инициализация и передача/прием - все, что связано с размером пакетов). попробуйте сигналтапом прицепиться к sgdma передатчика, посмотреть транзакции там.
Go to the top of the page
 
+Quote Post
almost
сообщение Apr 19 2011, 08:11
Сообщение #222


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

Группа: Свой
Сообщений: 199
Регистрация: 27-05-09
Из: Москва
Пользователь №: 49 648



Цитата(avacs @ Apr 15 2011, 16:59) *
Ув. vadimuzzz... а вы пробовали использовать при передаче jumbo frame (>4кб)??? А то я или что то туплю или не понимаю, по описанию Marvell 88E1111 поддерживает jumbo >10 кб, но при попытке записать пакет выше 1530 байт вижу только мигание светодиода TX (плата DSP KIT CIII 3C120F780), а на другом конце на машине под Ubuntu 10.10 под Wireshark ничего не вижу... основа для работы с сетью Ваша (та что вы с dim99 ранее делали)... Длину массивов переменных увеличивал, может нужно было увеличить размер дескриптора SGDMA в SOPCe (у меня сейчас дескриптор 4096)? или я уже туплю и все до бонального просто....??


Добрый день. А сколько места конкретно занимает данная SOPC? Интересно просто (у меня такой же кит), на таком же ките проект UDP + ethernet под RGMII занял сущие крохи- 1 процент от кристалла.
Go to the top of the page
 
+Quote Post
covsh
сообщение Apr 20 2011, 07:44
Сообщение #223


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 7-04-05
Пользователь №: 3 947



Здравствуйте!

Сначала хочу поблагодарить тов. vadimuzzz за исходник
который очень помог при старте.

Решил приделать к проекту vadimuzzz'a свой обработчик пакетов arp+ping
Как раз появилась очень хорошая статья по этому поводу.

Вылез большой глюк. Суть проблемы в следующем: прием пакетов начал работать очень странно.
Arp пакет принимает корректно, далее программа на него отвечает (все вижу по wireshark)
Следующим идет ping запрос и вот тут косяк – обработчик прерывания перестает вызываться (не останавливается по контрольной точке в самом начале tse_sgdmaRx_isr).

Оригинальный проект работает без нареканий. Прерывания есть по приему каждого пакета.

Прошу помощи у сообщества. Исходники прилагаю.

ps пробовал на 9.1 sp2, оптимизацию всю отключил. на 10.1 sp1 поведение аналогичное

Сообщение отредактировал covsh - Apr 20 2011, 09:36
Прикрепленные файлы
Прикрепленный файл  eht_problem.rar ( 11.53 килобайт ) Кол-во скачиваний: 70
 
Go to the top of the page
 
+Quote Post
covsh
сообщение Apr 25 2011, 07:33
Сообщение #224


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 7-04-05
Пользователь №: 3 947



разобрался в странном поведении своей программы.
причина заключалась в том что на этапе инициализации в процедуре MAC_init() прописывался один мак адрес
Код
IOWR_ALTERA_TSEMAC_MAC_0(TRIPLE_SPEED_ETHERNET_0_BASE,((int)(0x00) | (int)(0x07 <<  8) | (int)(0xAB << 16) | (int)(0xF0 << 24)));
IOWR_ALTERA_TSEMAC_MAC_1(TRIPLE_SPEED_ETHERNET_0_BASE,(((int)(0x0D) | (int)(0xBA <<  8)) & 0xFFFF));


а на этапе формирование ethernet пакета присваивал совершенно другие мак адреса.
исправил на нужные - все заработало.

есть еще одна проблема, причины которой я не могу понять
в программе есть структура arp сообщения
Код
typedef struct arp_message {
    alt_u16 hw_type; // протокол канального уровня (Ethernet)
    alt_u16 proto_type; // протокол сетевого уровня (IP)
    alt_u8 hw_addr_len; // длина MAC-адреса =6
    alt_u8 proto_addr_len; // длина IP-адреса =4
    alt_u16 type; // тип сообщения (запрос/ответ)
    alt_u8 mac_addr_from[6]; // MAC-адрес отправителя
    alt_u32 ip_addr_from; // IP-адрес отправителя
    alt_u8 mac_addr_to[6]; // MAC-адрес получателя, нули если неизвестен
    alt_u32 ip_addr_to; // IP-адрес получателя
}arp_message_t;


когда делаю такое присваивание
Код
arp_message_t *msg = (void*)(frame->data);

то поле типа alt_u32 ip_addr_from присваивает переменной со сдвижкой в 2 байта, т.е. захватывается кускок mac_addr_to.
аналочино и второе поле alt_u32 ip_addr_to присваивает с ошибкой.

пробовал делать выравнивание структуре вот так
Код
typedef struct arp_message {
    alt_u16 hw_type; // протокол канального уровня (Ethernet)
    alt_u16 proto_type; // протокол сетевого уровня (IP)
    alt_u8 hw_addr_len; // длина MAC-адреса =6
    alt_u8 proto_addr_len; // длина IP-адреса =4
    alt_u16 type; // тип сообщения (запрос/ответ)
    alt_u8 mac_addr_from[6]; // MAC-адрес отправителя
    alt_u32 ip_addr_from; // IP-адрес отправителя
    alt_u8 mac_addr_to[6]; // MAC-адрес получателя, нули если неизвестен
    alt_u32 ip_addr_to; // IP-адрес получателя
}arp_message_t __attribute__ ((aligned (4)));


убирать выравнивание массива
Код
volatile char pkt[1562];

ничего не помогает.
написал вместо alt_u32 alt_u8[4] работаю пока так.

как избавиться от какого явления?
исходник прикрепляю. там работающий arp+ping+ чуть udp

Сообщение отредактировал covsh - Apr 25 2011, 07:37
Прикрепленные файлы
Прикрепленный файл  arp_ping_udp.rar ( 12.18 килобайт ) Кол-во скачиваний: 84
 
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 25 2011, 23:04
Сообщение #225


Гуру
******

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



возможно (я код пока не смотрел) дело в настройках регистров MAC (Tx_Cmd_Stat Register и Rx_Cmd_Stat Register). там есть режим, когда по 32-битной границе выравнивается IP payload. поиграйте с битами TX_SHIFT16 и RX_SHIFT16 в соотв. регистрах.
Go to the top of the page
 
+Quote Post

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

 


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


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