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

 
 
26 страниц V  « < 12 13 14 15 16 > »   
Reply to this topicStart new topic
> Ethernet + Cyclone + Nios
vadimuzzz
сообщение Jan 19 2011, 10:47
Сообщение #196


Гуру
******

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



Цитата(Reanimator++ @ Jan 19 2011, 13:21) *
Да, может. MAC RAW mode.

значит, нет проблем. можно взять за основу драйвер lan91c111 и модифицировать его под этот чип
Go to the top of the page
 
+Quote Post
inco
сообщение Jan 24 2011, 14:38
Сообщение #197


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

Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984



Люди помогите разобраться с передачей по Ethernet.

Есть кит 4 циклона DK-START-4CGX15N.
Беру проект который выкладывал тут ув. vadimuzzz, ОГРОМНОЕ ему за это спасибо!

Немного подправил его под проект кита "board_update_portal". Компилирую его запускаю... и естественно
ничего не работает.

Долго не мог въехать что именно не работает не было ни передачи ни приёма (светодиоды кита rx, tx мигали), при этом пример кита со стеком IP от iniche работал.

Начал по шагам сравнивать инициализацию PHY и MAC, нашел одно отличие у себя и у примера из кита. После добавления такой строки в инициализацию MAC - приём заработал.

IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE, 0, ALTERA_TSE_PCS_IF_MODE, 0x03); // PCS SGMII mode enabled

А вот с передачей полная засада!

Уже не пойму куда смотреть. Лампочка tx на PHY (88E1111) мигает. Дескриптор возвращает
actual_bytes_transferred 0xc8, то есть вроде всё передал. Смотрю а пакета НЕТ!

Немного о конфигурации ПК. Для отладки Etherneta, стоит отдельная сетевая карта (вторая), IP прописал ей статический.

Приём на ките смотрю по запросам карточки. Она чего-то просит по широковещательному адресу FFFFFFFFFFFF у кита.
А на приёме у карточки из кита ничего нет! Может я ей неправильные пакеты шлю, хотя как я понял Wireshark должен показывать любые пакеты. Может чего-то на карточке в ПК надо сконфигурировать? Уже не знаю куда смотреть!!!

Прошу помощи у народа!

Файлы проекта (soft) прилагаю.

Прикрепленные файлы
Прикрепленный файл  kit_test.7z ( 7.12 килобайт ) Кол-во скачиваний: 66
 
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 24 2011, 15:00
Сообщение #198


Гуру
******

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



Цитата(inco @ Jan 24 2011, 20:38) *
А вот с передачей полная засада!

сейчас под рукой нет примера, но это точно связано с конфигурацией марвеловского PHY.
Последовательность запуска такая:

  1. Запись по адресу 0 значения 0x8000 (SwRst==1)
  2. Задержка
  3. Запись по адресу 0 значения 0х1000 (AutoNeg==1)
  4. Задержка
  5. Чтение значения из адреса 1, проверка бита 2 (Link==1), если не установлен - 1)
  6. Запись по адресу 27 нижних бит [3:0] == 4'b1111 (GMII,copper)//смотреть доки на плату, это для девборды циклон-3!
  7. При RGMII IF - запись по адресу 20 прочитанного значения с установленными битами 7,1//смотреть доки на плату, это для девборды циклон-3!
  8. Повторять пункты 1-5, до установления линка. (SwRst)


в принципе, все это есть в альтеровском драйвере, поищите процедуру с названием чипа
Go to the top of the page
 
+Quote Post
inco
сообщение Jan 24 2011, 17:06
Сообщение #199


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

Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984



Спасибо за направление! Завтра буду смотреть дальше.

А вы посмотрите пожалуйста, может найдете свой пример инициализации этого PHY.
И какой у Вас кит для 3 циклона, чтобы попробовать сравнить их?
Кстати описание этого марвела у меня есть, его тут выкладывали.

Еще раз большое спасибо, особенно за Ваш пример!!!
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 25 2011, 02:15
Сообщение #200


Гуру
******

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



CODE

alt_u32 t2;
IOWR_ALTERA_TSEMAC_MDIO_ADDR0(TSE_MAC_BASE,PHY);
t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x1B);//Extended PHY Specific Status Register
t2 &= 0xFFF0;
IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x1B,t2|0xB);//RGMII to Copper
t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x14);//Extended PHY Specific Control Register
IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x14,t2|0x82);//Add Delay to RX_CLK for RXD Outputs; Add Delay to GTX_CLK for TXD Inputs
t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,ALTERA_TSEMAC_PHY_ADDR_CONTROL);
IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,ALTERA_TSEMAC_PHY_ADDR_CONTROL,t2|PCS_CTL
_sw_reset);//Previous Operations Require SW Reset
do
{
t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,ALTERA_TSEMAC_PHY_ADDR_STATUS);
}
while((t2&0x04)==0);//wait for link-up

этот код проверялся на http://www.altera.com/products/devkits/altera/kit-cyc3.html
Go to the top of the page
 
+Quote Post
avacs
сообщение Jan 26 2011, 19:04
Сообщение #201





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



Цитата(inco @ Jan 24 2011, 17:38) *
Люди помогите разобраться с передачей по Ethernet.

Есть кит 4 циклона DK-START-4CGX15N.
Беру проект который выкладывал тут ув. vadimuzzz, ОГРОМНОЕ ему за это спасибо!

Немного подправил его под проект кита "board_update_portal". Компилирую его запускаю... и естественно
ничего не работает.

Долго не мог въехать что именно не работает не было ни передачи ни приёма (светодиоды кита rx, tx мигали), при этом пример кита со стеком IP от iniche работал.

Начал по шагам сравнивать инициализацию PHY и MAC, нашел одно отличие у себя и у примера из кита. После добавления такой строки в инициализацию MAC - приём заработал.

IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE, 0, ALTERA_TSE_PCS_IF_MODE, 0x03); // PCS SGMII mode enabled

А вот с передачей полная засада!

Уже не пойму куда смотреть. Лампочка tx на PHY (88E1111) мигает. Дескриптор возвращает
actual_bytes_transferred 0xc8, то есть вроде всё передал. Смотрю а пакета НЕТ!

Немного о конфигурации ПК. Для отладки Etherneta, стоит отдельная сетевая карта (вторая), IP прописал ей статический.

Приём на ките смотрю по запросам карточки. Она чего-то просит по широковещательному адресу FFFFFFFFFFFF у кита.
А на приёме у карточки из кита ничего нет! Может я ей неправильные пакеты шлю, хотя как я понял Wireshark должен показывать любые пакеты. Может чего-то на карточке в ПК надо сконфигурировать? Уже не знаю куда смотреть!!!

Прошу помощи у народа!

Файлы проекта (soft) прилагаю.


inco, недавно, сам мучался с такой же проблемой, правда на DSP 3C120 - CIII + Marvel 88E1111. пробовал проекты из данного топика, и оба запускались сразу на прием на 100Мб, а вот при передаче таже засада что и у Вас, светодиод мигает, а пакетов на другом конце в Wireshark - 0... КОРОЧЕ, ДОЛБАЛСЯ Я НЕДЕЛЮ ПОСЛЕ НОВОГО ГОДА... 3-й раз читал докуметацию (спасибо Little styart за доки и информацию).
Все заработало, когда поставил 1 бит в регистре 20 (0x14) Marvell. На всякий случай еще раз включил Ethernet передатчик...
Код
IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,MDIO_SPACE0,0x14,0xC53);
    IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,MDIO_SPACE0,0x00,0xB100); //peregrujaem MAC SOFT Reset

Да, на карточке тоже ставил 100 Мб, autonegotiation..., а то можно поставить такой режим что коннект будет восстанавливатся только после "передергивания" кабеля Ethernet. Надеюсь поможет! Удачи. beer.gif

Сообщение отредактировал avacs - Jan 26 2011, 19:07
Go to the top of the page
 
+Quote Post
inco
сообщение Jan 26 2011, 19:33
Сообщение #202


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

Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984



Спасибо за информацию!

Я уже это тоже попробовал. Почитал доку на марвел и тоже попробовал принудительно включить передатчик (нулевой бит в 20 регистре). Но не сильно помогло. Если до этого вообще не видел данных, то после включения передатчика увидел что иногда в карточку приходят пакеты. Но не понятно как. Я сделал посылку пакетов примерно раз в секунду, но минут за 5 приходит только от 1 до 3 пакетов и всё. Больше пока времени разбираться не было. Уже второй день загрузили другими делами, может завтра продолжу если время выберу.
Go to the top of the page
 
+Quote Post
avacs
сообщение Jan 26 2011, 21:01
Сообщение #203





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



Цитата(inco @ Jan 26 2011, 22:33) *
Спасибо за информацию!

Я уже это тоже попробовал. Почитал доку на марвел и тоже попробовал принудительно включить передатчик (нулевой бит в 20 регистре). Но не сильно помогло. Если до этого вообще не видел данных, то после включения передатчика увидел что иногда в карточку приходят пакеты. Но не понятно как. Я сделал посылку пакетов примерно раз в секунду, но минут за 5 приходит только от 1 до 3 пакетов и всё. Больше пока времени разбираться не было. Уже второй день загрузили другими делами, может завтра продолжу если время выберу.

icon, ты меня непонял (или я неправильно выразился, сразу извиняюсь).
Я тоже сначала думал, что дело в нулевом бите, типа не включил Transmitter и поэтому нет сообщений, но все оказалось чуть интереснее!
Там есть еще и первый бит, он дает какое то (там есть описание) смещение между тактами RX и TX,
Вот из оф документации:п. 4.12.2 (стр 252 и далее у MArvell 88E1111 datasheet),
Регистр 20, бит -1, (стр 170) -> "RGMII Transmit Timing Control" =>> "1 - Add delay to GTX_CLK for TXD Outputs", fo details see Page 218.
У меня после выстановки именно этого бита заработала передача!
Я думаю что все бы заработало сразу если бы при тактировании я поставил фазовый сдвиг между CLK_RX и CLK_TX в TSE.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 26 2011, 23:54
Сообщение #204


Гуру
******

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



Цитата(avacs @ Jan 27 2011, 03:01) *
Я думаю что все бы заработало сразу если бы при тактировании я поставил фазовый сдвиг между CLK_RX и CLK_TX в TSE.

кстати не факт sm.gif. дело в том, что у марвела куча режимов шины *MII. если на плате разведено под rgmii, то при ините надо это указать.
Go to the top of the page
 
+Quote Post
inco
сообщение Jan 27 2011, 06:10
Сообщение #205


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

Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984



На ките марвел подключен по SGMII двумя диффиринциальными проводами RX и TX и всё.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 27 2011, 07:11
Сообщение #206


Гуру
******

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



Цитата(inco @ Jan 27 2011, 12:10) *
На ките марвел подключен по SGMII двумя диффиринциальными проводами RX и TX и всё.

там вроде ничего особенного в этом режиме нет, надо только заменить в коде выше
IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x1B,t2|0xB);//RGMII to Copper
на
IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x1B,t2|0x4);//SGMII without clock to Copper.
и выбросить установку задержек.
примерно так:
CODE

alt_u32 t2;
IOWR_ALTERA_TSEMAC_MDIO_ADDR0(TSE_MAC_BASE,PHY);
t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x1B);//Extended PHY Specific Status Register
t2 &= 0xFFF0;
IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x1B,t2|0x4);//SGMII without clock to Copper.
t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,ALTERA_TSEMAC_PHY_ADDR_CONTROL);
IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,ALTERA_TSEMAC_PHY_ADDR_CONTROL,t2|PCS_CTL
_sw_reset);//Previous Operations Require SW Reset
do
{
t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,ALTERA_TSEMAC_PHY_ADDR_STATUS);
}
while((t2&0x04)==0);//wait for link-up
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jan 27 2011, 08:43
Сообщение #207


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



bb-offtopic.gif
Цитата(avacs @ Jan 26 2011, 22:04) *
спасибо Little styart за доки и информацию

Stewart Little, если Вы не против sm.gif


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
avacs
сообщение Jan 27 2011, 17:18
Сообщение #208





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



Цитата(Stewart Little @ Jan 27 2011, 11:43) *
bb-offtopic.gif

Stewart Little, если Вы не против sm.gif


bb-offtopic.gif Прошу прощения! перепутал... За инфу Спасибо! beer.gif
Go to the top of the page
 
+Quote Post
inco
сообщение Feb 3 2011, 11:02
Сообщение #209


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

Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984



Вроде заработала передача дело оказалось в этой строке:

Было: - передача не работала
IOWR_ALTERA_TSEMAC_TX_SECTION_FULL(TSE_MAC_BASE, 16);

Сделал как в примере кита:
IOWR_ALTERA_TSEMAC_TX_SECTION_FULL(TSE_MAC_BASE, 0);

И передача заработала!

А с инициализацией мака было всё в порядке.

Вот на всякий случай выкладываю весь кусок инициализации:
CODE
IOWR_ALTERA_TSEMAC_MDIO_ADDR1(TSE_MAC_BASE, 0);

// PHY and other board peripheral initialization
IOWR_ALTERA_TSEMAC_MDIO_ADDR0(TSE_MAC_BASE, PHY);
t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE, 1, 27); //Extended PHY Specific Status Register
t2 &= 0xFFF0;
IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE, 1, 27, t2 | 0x04); //SGMII without Clock with SGMII Auto-Neg to copper

if((IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE, 1, ALTERA_TSEMAC_PHY_ADDR_STATUS)
& PCS_ST_an_done) == 0) {
IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE, 1, ALTERA_TSEMAC_PHY_ADDR_CONTROL + 16, 0x78);
t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE, 1, ALTERA_TSEMAC_PHY_ADDR_CONTROL);
IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE, 1, ALTERA_TSEMAC_PHY_ADDR_CONTROL, t2 | PCS_CTL_sw_reset);
}

// Without next string don't work reading packet
IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE, 0, ALTERA_TSE_PCS_IF_MODE, 0x03); // PCS SGMII mode enabled

do {
Delay(0xFFFFF);
t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE, 1, ALTERA_TSEMAC_PHY_ADDR_STATUS);
} while((t2 & 0x04) == 0); //wait for link-up

/* Get the Rx and Tx SGDMA addresses */
sgdma_tx_dev = alt_avalon_sgdma_open(SGDMA_TX_NAME);
sgdma_rx_dev = alt_avalon_sgdma_open(SGDMA_RX_NAME);
IOWR_ALTERA_AVALON_SGDMA_CONTROL(SGDMA_RX_BASE,ALTERA_AVALON_SGDMA_CONTROL_SOFTW
ARERESET_MSK);
IOWR_ALTERA_AVALON_SGDMA_CONTROL(SGDMA_RX_BASE, 0x0);

/* reset the mac */

IOWR_ALTERA_TSEMAC_CMD_CONFIG(TSE_MAC_BASE, ALTERA_TSEMAC_CMD_SW_RESET_MSK | ALTERA_TSEMAC_CMD_TX_ENA_MSK | ALTERA_TSEMAC_CMD_RX_ENA_MSK);
while(IORD_ALTERA_TSEMAC_CMD_CONFIG(TSE_MAC_BASE) & ALTERA_TSEMAC_CMD_SW_RESET_MSK)
;

/* Initialize MAC registers */

IOWR_ALTERA_TSEMAC_FRM_LENGTH(TSE_MAC_BASE, ALTERA_TSE_MAC_MAX_FRAME_LENGTH);
IOWR_ALTERA_TSEMAC_RX_ALMOST_EMPTY(TSE_MAC_BASE, 8);
IOWR_ALTERA_TSEMAC_RX_ALMOST_FULL(TSE_MAC_BASE, 8);
IOWR_ALTERA_TSEMAC_TX_ALMOST_EMPTY(TSE_MAC_BASE, 8);
IOWR_ALTERA_TSEMAC_TX_ALMOST_FULL(TSE_MAC_BASE, 3);
IOWR_ALTERA_TSEMAC_TX_SECTION_EMPTY(TSE_MAC_BASE, TSE_MAC_TRANSMIT_FIFO_DEPTH - 16); //1024/4;
IOWR_ALTERA_TSEMAC_TX_SECTION_FULL(TSE_MAC_BASE, 0); //32/4; // start transmit when there are 48 bytes
IOWR_ALTERA_TSEMAC_RX_SECTION_EMPTY(TSE_MAC_BASE, TSE_MAC_RECEIVE_FIFO_DEPTH - 16); //4000/4);
IOWR_ALTERA_TSEMAC_RX_SECTION_FULL(TSE_MAC_BASE, 0);
IOWR_ALTERA_TSEMAC_TX_CMD_STAT(TSE_MAC_BASE,ALTERA_TSEMAC_TX_CMD_STAT_TXSHIFT16_
MSK);
// IOWR_ALTERA_TSEMAC_TX_CMD_STAT(TSE_MAC_BASE,0);
IOWR_ALTERA_TSEMAC_RX_CMD_STAT(TSE_MAC_BASE,ALTERA_TSEMAC_RX_CMD_STAT_RXSHIFT16_
MSK);
// IOWR_ALTERA_TSEMAC_RX_CMD_STAT(TSE_MAC_BASE,0);
IOWR_ALTERA_TSEMAC_CMD_CONFIG(TSE_MAC_BASE, ALTERA_TSEMAC_CMD_TX_ENA_MSK | ALTERA_TSEMAC_CMD_RX_ENA_MSK | ALTERA_TSEMAC_CMD_TX_ADDR_INS_MSK | ALTERA_TSEMAC_CMD_RX_ERR_DISC_MSK | ALTERA_TSEMAC_CMD_PAD_EN_MSK);
IOWR_ALTERA_TSEMAC_MAC_0(TSE_MAC_BASE,((int)(0x00) | (int)(0x07 << 8) | (int)(0xED << 16) | (int)(0x19 << 24)));
IOWR_ALTERA_TSEMAC_MAC_1(TSE_MAC_BASE,(((int)(0x03) | (int)(0x01 << 8)) & 0xFFFF));
alt_avalon_sgdma_register_callback(sgdma_rx_dev,
(alt_avalon_sgdma_callback)&tse_sgdmaRx_isr,
(alt_u16)ALTERA_TSE_SGDMA_INTR_MASK, sgdma_rx_dev);
Go to the top of the page
 
+Quote Post
covsh
сообщение Mar 8 2011, 16:15
Сообщение #210


Участник
*

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



Здравствуйте!
Я новичок с плис, начиная разбираться с ethernet на ките DK-N2EVAL-3C25N
Микросхема физического уровня dp83848.

Всю тему прочил уже несколько раз, но ответов так и не нашел.

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

Хорошо, создал новый проект на основе шаблона с UCOSII, и при запуске получил приглашение ввести серийный номер smile3046.gif

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

Направьте на путь истинный, с чего начать освоение 10/100 ethernet?

ps использую quartus II 9.1 sp1

Сообщение отредактировал covsh - Mar 8 2011, 16:34
Go to the top of the page
 
+Quote Post

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

 


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


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