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

 
 
26 страниц V  « < 5 6 7 8 9 > »   
Reply to this topicStart new topic
> Ethernet + Cyclone + Nios
vadimuzzz
сообщение Nov 23 2009, 15:53
Сообщение #91


Гуру
******

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



Цитата(dim99 @ Nov 23 2009, 21:24) *
а где взять полярность или ее настройка не критична?

в том файле, что выше, есть и про полярность, как раз marvel-specific. но если Auto Negotiate проходит, то все автоматом выставляется (как линк/дуплекс). полярность нужна, если какой-нибудь олух кабель неправильно обожмет.
Go to the top of the page
 
+Quote Post
dim99
сообщение Nov 24 2009, 12:36
Сообщение #92


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

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



Сегодня попробовал забить ему жестко без всякого auto-neg параметры для 100 mbit.
Сначала делаю hard reset для PHY - 10 ms(с альтерафорум там висит скрин из даташита на микросхему).
загораются led и он начинает принимать пакеты от сети в режиме auto-neg, потом забиваю параметры для 100 mbit выключаю auto-neg и он тухнет.
не знаю. может ему soft reset после этой операции нужен.

в общем остался на auto-neg на 100 mbit full duplex.

wireshark принимает вот такой пакет:
Цитата
8 Frame 69 (126 bytes on wire, 126 bytes captured) Arrival Time: Nov 24, 2009 13:50:20.538005000
[Time delta from previous captured frame: 0.000003000 seconds]
[Time delta from previous displayed frame: 0.000003000 seconds]
[Time since reference or first frame: 1638.742094000 seconds]
Frame Number: 69 Frame Length: 126 bytes capture Length: 126 bytes
[Frame is marked: False]
[Protocols in frame: eth:mdshdr:fc] 0
Ethernet II, src: 00:07:ab:f0:Od:ba (00:07:ab:f0:Od:ba),
Dst: 00:00:00_00:00:00 (00:00:00:00:00:00) S
Destination: 00:00:00_00:00:00 (00:00:00:00:00:00)
Address: 00:00:00_00:00:00 (00:00:00:00:00:00)
0 = IG bit: individual address (unicast)
0 = LG bit: Globally unique address (factory default)
Ј[source: 00:07:ab:f0:Od:ba (00:07:ab:f0:Od:ba)
Address: 00:07:ab:f0:Od:ba (00:07:ab:f0:Od:ba)
0 = IG bit: individual address (unicast)
0 = LG bit: Globally unique address (factory default)
Type: unknown (0x0000)
Trai1er: 000000000000000000000000000000000000000000000000...
Frame check sequence: 0x00000000 [incorrect, should be 0xd762142d] В
mds Header(unknown(0)/unknown(0)) В
mds Header
...0 0000 0000 0000 = Packet Len: 0
0000 0000 00.. = Dst index: 0x0000
00 0000 0000 = src index: 0x0000
0000 0000 0000 = VSAN: 0
В mds Trailer
eof: unknown (0) CRC: 0x00000000

количество байтов принимается правильное и даже сегодня получил mac адрес, но сам пакет отнюдь не нулевой должен быть.
подозрение, что неправильно формируется дескриптор для sgdma из-за чего и не может нормально пакет передать.

где бы посмотреть как правильно настроить sgdma и создать дескриптор для передачи данных?

Сообщение отредактировал dim99 - Nov 24 2009, 12:52
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Nov 24 2009, 16:23
Сообщение #93


Гуру
******

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



смотреть в драйвере, м.б. тут фокусы с кэшем. смущает еще нулевая CRC, по идее PHY должен ее сам считать при правильных настройках. ну и ман по sgdma почитать. 5-й том квартус-хендбука. а инициализация точно нормально прошла? обнародуйте статусные регистры. а то я помню 2 недели вдоль и поперек TSE изучал, даже на опенкорес ушел, а дело было в хреновом кабеле.
Go to the top of the page
 
+Quote Post
maior
сообщение Nov 24 2009, 19:28
Сообщение #94


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

Группа: Свой
Сообщений: 177
Регистрация: 21-10-04
Пользователь №: 948



Я убил много времени пытаясь запустить этот марвел-аляску (88E1111), встроенный в упомянутый ЕДК 120К - и бросил это бесполезное занятие. Поставил DP83848 Ethernet адаптер (от MoreThanIP) через HSMC-СантаКруз переходник - и сразу все заработало как надо, включая Simple Socket Server (Iniche+MicroC/OS, etc). Интересно, есть такие гении, которым удалось таки разморозить эту аляску?
Go to the top of the page
 
+Quote Post
dim99
сообщение Nov 24 2009, 19:40
Сообщение #95


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

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



Цитата(vadimuzzz @ Nov 24 2009, 19:23) *
смотреть в драйвере, м.б. тут фокусы с кэшем. смущает еще нулевая CRC, по идее PHY должен ее сам считать при правильных настройках. ну и ман по sgdma почитать. 5-й том квартус-хендбука. а инициализация точно нормально прошла? обнародуйте статусные регистры. а то я помню 2 недели вдоль и поперек TSE изучал, даже на опенкорес ушел, а дело было в хреновом кабеле.


Есть ли смысл подключить signaltap и посмотреть передаются ли данные к PHY?
инициализацию и прочее постараюсь завтра выложить.

Цитата(maior @ Nov 24 2009, 22:28) *
Я убил много времени пытаясь запустить этот марвел-аляску (88E1111), встроенный в упомянутый ЕДК 120К - и бросил это бесполезное занятие. Поставил DP83848 Ethernet адаптер (от MoreThanIP) через HSMC-СантаКруз переходник - и сразу все заработало как надо, включая Simple Socket Server (Iniche+MicroC/OS, etc). Интересно, есть такие гении, которым удалось таки разморозить эту аляску?


Без паники ) я уже плююсь пакетами, осталось разобраться почему нулевыми.
Go to the top of the page
 
+Quote Post
maior
сообщение Nov 24 2009, 19:47
Сообщение #96


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

Группа: Свой
Сообщений: 177
Регистрация: 21-10-04
Пользователь №: 948



Цитата(dim99 @ Nov 24 2009, 22:40) *
Без паники ) я уже плююсь пакетами, осталось разобраться почему нулевыми.


Да у меня он тоже дышал - но на ладан. Simple Socket Server так и не заработал.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Nov 24 2009, 23:42
Сообщение #97


Гуру
******

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



Цитата(dim99 @ Nov 25 2009, 01:40) *
Есть ли смысл подключить signaltap и посмотреть передаются ли данные к PHY?

конечно, правда имена у сигналов там того, ну хотя бы на участке sgdma - mac поглядеть.
Go to the top of the page
 
+Quote Post
dim99
сообщение Nov 25 2009, 13:37
Сообщение #98


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

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



Что-то с разбега не получилось за signal tap засесть, завтра попробую это сделать.

Предложение по поводу принять пакет - хорошее. только вот как и чем из-под винды его отправить?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Nov 25 2009, 15:53
Сообщение #99


Гуру
******

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



Цитата(dim99 @ Nov 25 2009, 19:37) *
Что-то с разбега не получилось за signal tap засесть, завтра попробую это сделать.

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

попинговать какой-нибудь левый адрес, которого в сети нет. пойдут ARP-пакеты с MAC-ом сетевухи в Src и broadcast(FF:FF:FF:FF:FF:FF) в Dst полях. см. http://ru.wikipedia.org/wiki/ARP
Go to the top of the page
 
+Quote Post
dim99
сообщение Nov 25 2009, 18:30
Сообщение #100


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

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



ну не может же быть, что ему не нравится память, отведенная для хранения принятых данных on-chip вместо ddr как в примере.
вот думаю выложить sopc, вдруг что-то напутал:
Прикрепленное изображение


Кстати, после отправки пакета проверяю некоторые регистры о том, как отправился пакет:
frame_transmited = IORD_16DIRECT(TSE_MAC_BASE,0x068);//frame trans 2
frame_transmited = IORD_16DIRECT(TSE_MAC_BASE,0x0F0);//octets trans 0
frame_transmited = IORD_16DIRECT(TSE_MAC_BASE,0x08C);//ifOutErrors 0
frame_transmited = IORD_16DIRECT(TSE_MAC_BASE,0x088);//ifInErrors 0

количество переданных пакетов - 2 все правильно - при формировании descriptor выставляю свойство start пакета.
расстраивает, что количество переданных октетов - 0

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

Сообщение отредактировал dim99 - Nov 25 2009, 18:51
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Nov 26 2009, 03:34
Сообщение #101


Гуру
******

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



по поводу нулевых CRC и SRC-MAC есть мысль: похоже косяк в настройках, выключен режим CRC offload и включена замена MAC-адреса тем, что лежит в регистрах(а они, видимо, нулевые). выложите код инициализации. ну и raw_send до кучи. по поводу SOPC: я не стал делать отдельное ОЗУ для дескрипторов, а замапил все в одну кучу. логика такая: выигрыш, который дает размещение пакета в отдельной памяти в момент приема/передачи пакета нивелируется тем, что когда пакет принят и проц хочет в нем поковыряться, придется копировать данные в основное ОЗУ, чтобы не блокировать прием.
Go to the top of the page
 
+Quote Post
dim99
сообщение Nov 26 2009, 08:13
Сообщение #102


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

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



нашел ошибку - неправильно формируется дескриптор.
Проверяю через alt_avalon_sgdma_check_descriptor_status(desc) и выдает разные ошибки, теперь вот сижу пытаюсь сделать нормальный дескриптор.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Nov 26 2009, 08:49
Сообщение #103


Гуру
******

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



Цитата(dim99 @ Nov 26 2009, 14:13) *
нашел ошибку - неправильно формируется дескриптор.
Проверяю через alt_avalon_sgdma_check_descriptor_status(desc) и выдает разные ошибки, теперь вот сижу пытаюсь сделать нормальный дескриптор.

так это, код инициализации выкладывайте и raw_send, быстрее дело пойдет
Go to the top of the page
 
+Quote Post
dim99
сообщение Nov 26 2009, 09:09
Сообщение #104


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

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



вот что есть на данный момент:
Цитата
alt_sgdma_descriptor *desc = (alt_sgdma_descriptor *) DESCRIPTOR_MEMORY_BASE;
alt_sgdma_descriptor *currdescriptor_ptr;

int tse_mac_raw_sendM(char * data, unsigned data_bytes)
{
unsigned int* ActualData;//pointer to the transmitting data
unsigned length = 128;
int tx_length;
char buf2[1560];
char *uncached_pkt = alt_remap_uncached ((volatile void*) pkt, 256);
char *uncached_buf2 = alt_remap_uncached ((volatile void*) buf2, 1560);

uncached_pkt[0]=0xCC;
uncached_pkt[1]=0xCC;
int k=0;
for(k=2;k<254;k++){
uncached_pkt[k]=0xA5;
}
uncached_pkt[254]=0xEE;
uncached_pkt[255]=0xEE;

int i=0;
for(i=0;i<length;i++) {
uncached_buf2[i] = uncached_pkt[i];
}
ActualData = (unsigned int*)buf2;
//-------------------
//clear bit-31 before passing it to SGDMA Driver
ActualData = (unsigned int*)alt_remap_cached ((volatile void*) ActualData, 256);

if( length > ALTERA_TSE_MIN_MTU_SIZE ) {
/* make sure there is room in the FIFO. */
alt_avalon_sgdma_construct_mem_to_stream_desc(
(alt_sgdma_descriptor *) desc, // descriptor I want to work with
(alt_sgdma_descriptor *) desc,// pointer to "next"
(alt_u32 *) ActualData, // starting read address
(length), // # bytes
1, // don't read from constant address
1, // generate sop
1, // generate endofpacket signal
0); // atlantic channel (don't know/don't care: set to 0)

int desc_stat=1;
desc_stat = alt_avalon_sgdma_check_descriptor_status(desc);//if 0 then packet is good

desc->read_burst = 128;
desc->write_burst = 128;
tx_length = tse_mac_sTxWriteM(desc);

}
return 0;
}


desc_stat = 119
проверяет в контрольном регистре дескриптора Owned_by_HW и выдает
#define EINPROGRESS 119 /* Connection already in progress */

пока char * data, unsigned data_bytes не использую.

дальше беру функцию из tse:
Код
alt_32 tse_mac_sTxWriteM(alt_sgdma_descriptor *txDesc)  
{
  alt_32 timeout;
  alt_u8 result = 0;
  alt_u16 actualBytesTransferred;
    
  // Make sure DMA controller is not busy from a former command
  // and TX is able to accept data
  timeout = 0;
  //tse_dprintf("\nWaiting while tx SGDMA is busy......... ");
  while ( (IORD_ALTERA_AVALON_SGDMA_STATUS(SGDMA_TX_BASE/*mi->tx_sgdma->base*/) & ALTERA_AVALON_SGDMA_STATUS_BUSY_MSK) ) {
           if(timeout++ == ALTERA_TSE_SGDMA_BUSY_TIME_OUT_CNT) {
            //tse_dprintf(4, "WARNING : TX SGDMA Timeout\n");
            return 0;//error//ENP_RESOURCE;  // avoid being stuck here
           }
  }

  // Set up the SGDMA
  // Clear the status and control bits of the SGDMA descriptor
  IOWR_ALTERA_AVALON_SGDMA_CONTROL (SGDMA_TX_BASE/*mi->tx_sgdma->base*/, 0);
  IOWR_ALTERA_AVALON_SGDMA_STATUS (SGDMA_TX_BASE/*mi->tx_sgdma->base*/, 0xFF);
  
  // Start SGDMA (blocking call)
  [i]result = alt_avalon_sgdma_do_sync_transfer(sgdma_tx_dev/*mi->tx_sgdma*/, &txDesc[0]);[/i]
  
  alt_u32 sgdma_res = 0;  
  sgdma_res = IORD_ALTERA_AVALON_SGDMA_STATUS(SGDMA_TX_BASE);
  
  /* perform cache save read to obtain actual bytes transferred for current sgdma descriptor */
  actualBytesTransferred = IORD_ALTERA_TSE_SGDMA_DESC_ACTUAL_BYTES_TRANSFERRED(&txDesc[0]);
  int frame_transmited=0;
    frame_transmited = IORD_16DIRECT(TSE_MAC_BASE,0x068);//frame trans
//    frame_transmited = IORD_16DIRECT(TSE_MAC_BASE,0x0F0);//octets trans
//    frame_transmited = IORD_16DIRECT(TSE_MAC_BASE,0x08C);//ifOutErrors
//    frame_transmited = IORD_16DIRECT(TSE_MAC_BASE,0x088);//ifInErrors
  
  return actualBytesTransferred;
}


Сообщение отредактировал dim99 - Nov 26 2009, 09:52
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Nov 26 2009, 10:03
Сообщение #105


Гуру
******

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



1. char buf2[1560]; - должен иметь квалификатор volatile, иначе компилятор может наоптимизировать, что без поллитры не разберешься.
2. почему 1, // don't read from constant address - в оригинале 0. по логике тоже д.б. 0
3.
Цитата
desc->read_burst = 128;
desc->write_burst = 128;

это зачем?
4. char buf2[1560] надо сделать глобальной переменной, иначе неясно, что произойдет при выходе из raw_send(функция не дожидается окончания передачи пакета)
5. tse_mac_sTxWriteM(desc) - код не меняли? таймаут сколько стоит?
6. код инициализации MAC/PHY тоже выкладывайте.
7.
Код
   sgdma_tx_dev = alt_avalon_sgdma_open("/dev/sgdma_tx");
   if(!sgdma_tx_dev) {
      dprintf("[triple_speed_ethernet_init] Error opening TX SGDMA\n");
      return ENP_RESOURCE;
   }
не забыли?

хотя по п.4 наврал, там синхронная передача вроде. но все равно, глобальная лучше для отладки.
Go to the top of the page
 
+Quote Post

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

 


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


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