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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Ethernet контроллер W5100 от Wiznet, проблемы.
Zemlyanov
сообщение Jul 8 2010, 13:14
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 25-12-07
Пользователь №: 33 630



Делаю преобразователь RS 232 >Ethernet. В качестве Ethernet контроллер решил использовать W5100 от Wiznet. Контроллер связал с МК по SPI интерфейсу. Заработал сразу без проблем ,ping , connect к серверу все на ура. После этого я решил отладить передачу данных от W5100 в качестве клиента на сервер. И вот тут начались проблемы . Начинаю передавать данные в размере 10 байт на сервер , но приходит не 10 байт, а 4 пакета по 1460 байт и в последнем пакете последние данные это то что я послал, и это происходит при первой посылке все остальные посылки отправляют столько байт сколько передал.
На сколько я понял, проблема в следующем в W5100 есть регистр Sn_TX_RR (Socket n TX Read Pointer Register) [R] в котором находиться адрес начал передаваемых данных и регистр Sn_TX_WR (Socket n TX Write Pointer Register) [R/W] в котором находится адрес конца передаваемых данных .При первой передаче в регистре Sn_TX_RR находиться случайный адрес и он превышает или находится фиг знает где относительно адрес конца передачи, получается что контроллер по кругу считывает данные со своих регистров доходит до адреса конца чтения и после этого контроллер устанавливает правильное значение в этом регистре и все остальные передачи идут без проблем . Вопрос -как установить правильное значение регистра Sn_TX_RR для первого пакета данных , ведь этот регистр только для чтения и значения в нем контроллер W5100 меняет аппаратно ?
Go to the top of the page
 
+Quote Post
Yarst
сообщение Sep 16 2010, 13:16
Сообщение #2





Группа: Новичок
Сообщений: 3
Регистрация: 16-09-10
Пользователь №: 59 518



Здравствуйте, Zemlyanov!
Пытаюсь разобраться с контроллером W5100, тоже по SPI. Протокол TCP. Устройство - клиент. Дошел до инициализации регистров "Socket 0 Destination IP Address Register" и не могу поменять их значения. Что не так - не могу понять, вроде все делаю в полном соответствие с Datasheet-ом.
Не могли бы Вы рассказать о последовательности инициализации W5100, которую Вы применяли?
Более подробное описание моей проблемы представлено на ветке http://electronix.ru/forum/index.php?showtopic=80490.
С уважением, Ярослав.


--------------------
www.yarst.org - сайт о том, что можно сделать своими руками.
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение Feb 6 2011, 16:25
Сообщение #3


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



Цитата
4 пакета по 1460 байт

А чем кончилось, а? У меня всплыло похожее число. Мелкие пакеты UDP, в пределах байтов 100, уходят из W5100 в компьютер нормально. С увеличением длины отправляемого пакета начинают появляться сбои: вместо одного нужного в компьютер приходят несколько по 1472 байта (1514 с заголовком). Причём моя программа выгребает из сокета по 6 таких пакетов, а сниффер видит больше 30. Пакет длиннее примерно 1500 байтов вообще не отправить.
Я думал, что дело в слишком большой частоте обращения к W5100, замедлил обмен в 4 раза - всё то же самое.
Откуда эти 1514?
Заранее признателен.


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
Zemlyanov
сообщение Feb 7 2011, 12:05
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 25-12-07
Пользователь №: 33 630



Проблема в не правильном указании адреса начало и конца чтения данных. У вас и на 100 байтах будут проблемы когда вы достигните конца выделенной памяти под сокет, после чего w5100 пошлет в сеть все что находится в выделенной памяти под другие сокеты а затем вернется на начало и все будет норм пока не достигнет опять конца выделенной памяти. В указании адреса нужно было накладывать
битовую маску. Ниже рабочий код передачи, посмотрите в чем отличия у вас и сделайте как у меня. И все будет ОК. Кстати такая же проблема у вас будет и при приеме данных, поэтому нужно сделать аналогичные изменения и для функции приема данных.
Код
void transmit(unsigned char socket_no,unsigned char get_size,unsigned char *packet)
{  

unsigned int get_offset,fi,get_start_address,i8,;
unsigned int get_free_size;  
unsigned char hi,low;    
    
      do
      {
         get_free_size=check_TX_buffer(2,Sock0);      
      }
    while(get_free_size < get_size);
    
      hi=wiz_rd(0x0424);
      get_offset=hi;                                          
      low=wiz_rd(0x0425);
      get_offset=(get_offset<<8)|low;
       fi=(get_offset&0x07ff);

                                                          
  
       get_start_address =0x4000+ fi;      
      
          

       for(i8=0;i8<get_size;++i8)                    
       {      if (get_start_address==0x4800){get_start_address=0x4000;}
                
           wiz_wr( get_start_address++,packet[TCP_data+i8]);
           ++get_offset;

       }
      
     wiz_wr(Sn_TX_WR0(socket_no),(make8(get_offset,1)));
    
       wiz_wr(Sn_TX_WR1(socket_no),(make8(get_offset,0)));
    
      
    
       wiz_wr(Sn_CR(socket_no),Sn_CR_SEND);        
       while(wiz_rd(Sn_CR(socket_no)));              
      
}


У меня теперь другая проблема с w5100. wireshark показывает что в обмене данных присутствует TCP Dup ACK и TCP Out-Of-Order пакеты

w5100 является клиентом(TCP) в сети и шлет на сервер PC пакет данных 107 байт , после чего сервер шлет ему ответ 17 байт. Почему в обмене присутствуют TCP Dup ACK и TCP Out-Of-Order? Проверялось в таких условиях - PC(сервер) свич w5100(клиент)
, поэтому проблем с сетью быть не может.
В принципе эта проблема не сильно напрягает но люди у которых к одному серверу подключено более 100 клиентов жалуются что на сервер идет лишняя нагрузка из за этих пакетов. Получается что w5100 не отсылает вовремя АСК пакет и сервер шлет повторно TCP Dup ACK. Что то я в регистрах напутал или это такая особенность W5100. Кто что скажет по этому поводу?

Вот какой лог обмена данными показывает программа wireshark. 172.17.226.3 (клиент w5100)
172.17.229.94(сервер ПК)
Код
56    3.717    172.17.226.3    172.17.229.94    TCP    commplex-main > commplex-main [PSH, ACK] Seq=1 Ack=1 Win=2048 Len=107
58    3.886    172.17.229.94    172.17.226.3    TCP    commplex-main > commplex-main [ACK] Seq=1 Ack=108 Win=64679 Len=0
59    3.886    172.17.229.94    172.17.226.3    TCP    [TCP Dup ACK 58#1] commplex-main > commplex-main [ACK] Seq=1 Ack=108 Win=64679 Len=0
60    4.015    172.17.229.94    172.17.226.3    TCP    commplex-main > commplex-main [PSH, ACK] Seq=1 Ack=108 Win=64679 Len=17
61    4.015    172.17.229.94    172.17.226.3    TCP    [TCP Out-Of-Order] commplex-main > commplex-main [PSH, ACK] Seq=1 Ack=108 Win=64679 Len=17
64    4.217    172.17.226.3    172.17.229.94    TCP    commplex-main > commplex-main [ACK] Seq=108 Ack=18 Win=2048 Len=0


Сообщение отредактировал Zemlyanov - Feb 7 2011, 12:07
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение Feb 7 2011, 12:38
Сообщение #5


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



Большое спасибо. Буду разбираться. Правда, у меня код на AHDL и VHDL, а C я не знаю sad.gif


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
Zemlyanov
сообщение Feb 7 2011, 16:25
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 25-12-07
Пользователь №: 33 630



Код
  
       hi=wiz_rd(0x0424);// считываете данные из регистра Sn_TX_WR (Socket n TX Write Pointer Register) старший байт
      get_offset=hi;                                          
      low=wiz_rd(0x0425);//считываете данные из регистра Sn_TX_WR (Socket n TX Write Pointer Register) младший байт байт
      get_offset=(get_offset<<8)|low;// преобразуем  в 16 байтовое число
       fi=(get_offset&0x07ff); // Накладываем на это число битовую маску , эта маска для сокета 0 и 2кб памяти
       get_start_address =0x4000+ fi;//  к началу физ.памяти сокета прибавляем полученое выше значение

дальше начинаем записывать в w5100 данные начиная с определенного нами адреса по ходу дела проверяя не достигли ли мы конца памяти выделенной под сокет ,если достигли то начинаем писать с начального адреса.
После того как записали данные в w5100 , записываем в регистр Sn_TX_WR адрес где находиться конец данных для передачи. Затем командой send передаем данные. Во основном допускают две ошибки - не делают битовую маску или не делают проверки конечного адреса выделенного под сокет.
Микросхема w5100 мне понравилась , стабильно работает, у меня уже больше 400 девайсов молотят круглые сутки , и никаких глюков при работе данной микросхемы я не замечал.
Одно не нравиться что жрет много, до 180 ма при передаче.

Сообщение отредактировал Zemlyanov - Feb 7 2011, 16:41
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение Feb 13 2011, 20:58
Сообщение #7


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



Большое спасибо, я нашёл у себя лажу, теперь W5100 работает стабильно.
Но возник новый вопрос. Когда размер пакета UDP превышает те самые 1472 байта, W5100 разбивает пакет на две части: в первой части опять 1472 байта, а во второй - остаток.
Я попробовал записывать разные числа в регистр S0_MSS, но ничего не изменилось. А больше ничего в голову не пришло.
Как бы это побороть, чтобы пакеты не разбивались?
Заранее признателен.


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение Feb 14 2011, 19:22
Сообщение #8


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



Спасибо, разобрался, есть такое слово - MTU. Вот так век живёшь, век учишься...


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Mar 14 2011, 09:29
Сообщение #9


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(DSIoffe @ Feb 13 2011, 23:58) *
...Когда размер пакета UDP превышает те самые 1472 байта, W5100 разбивает пакет на две части: в первой части опять 1472 байта, а во второй - остаток....


немного по данному вопросу.
1) необходимо убедиться что именно так на самом деле. критерий - хороший снифер. только на него необходимо опираться. и второй момент - подсоединять кросовером(перевёрнутым) кабелем прямо к плате(без роутеров, набов, свитчей). данную длину выставляет софтверный слой хоста либо любьая железка по пути маршрутиризации. если соединить на прямую то вы снифером это должны наблюдать.

2) в своё время я не нашёл ни одного открытого протокола со сборкой пакетов на IP уровне. так что если делаете свой стэк - имейте ввиду это дробление, либо не используйте пакеты длиннее 1500 байт (хотя если выставить меньшую длину - то плакали многие девайсы и их разработчики).


удачи вам
(круглый)
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение Mar 14 2011, 09:42
Сообщение #10


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



Спасибо, всё так: моё устройство подключено кабелем прямо к компьютеру, смотрел сниффером. Видимо, это в компьютере задано. Проще всего мне оказалось собрать пакеты программно, потому что я всегда знаю ожидаемый размер.


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
Errorkpi
сообщение Apr 6 2011, 09:41
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 14-04-09
Пользователь №: 47 659



А где-то есть описание использования драйвера от производителя энтой микрухи.
А то по коду, что-то не все понятно, особенно с некоторыми параметрами функций и последовательностью инициализации.....
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение Apr 6 2011, 10:34
Сообщение #12


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



Лучше всего читать datasheet. Там описаны все регистры и алгоритмы для разных протоколов. Всё очень хорошо и понятно. Единственное, на мой взгляд, туманное место - описание управления адресацией при достижении верхнего адреса буфера. Всего-то сбросить адресный счётчик, но на псевдо-си это впечатляет. Для первого ознакомления можно почитать вот это: http://www.dsioffe.narod.ru/articles/W5100.doc, но осторожно, там в коде ошибки.


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
Errorkpi
сообщение Apr 6 2011, 10:45
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 14-04-09
Пользователь №: 47 659



Прочитал, конечно впечатляет, но немного не то. Я хотел использовать ихнюю готовую библиотеку (как раз для Atmela). Там, вроде-бы, все реализовано; даже описание сокетов есть, вот только документации по использованию этого набора утилит я так и не нашел.
Или вы все-таки советуете напрямую с регистрами общаться и по даташиту все делать?

Таки нашел оригинальный сайт (http://www.wiznet.co.kr/), но там тоже с документированием библиотек напряг

Сообщение отредактировал Errorkpi - Apr 6 2011, 10:46
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение Apr 6 2011, 10:50
Сообщение #14


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



Да я вообще проект для ПЛИС писал по тому даташиту на AHDL, и ничего sm.gif Советую, да.


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
Errorkpi
сообщение Apr 6 2011, 11:09
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 14-04-09
Пользователь №: 47 659



Курю даташит. Вроде все понятно, пока sm.gif
Будем разбираться.
Go to the top of the page
 
+Quote Post
Errorkpi
сообщение Apr 6 2011, 12:10
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 14-04-09
Пользователь №: 47 659



тут в соседней теме прочитал следующее:
Цитата
Сначала на W5100 выдается аппаратный сигнал Reset (на вывод "/RESET" выдается 0);
Через 100мс аппаратный сигнал Reset снимается (на вывод "/RESET" выдается 1);
Еще через 100мс на W5100 выдается команда "софтового" сброса. Для этого в регистр "Mode Register" (с адресом $0000) заносится значение b10000000 (устанавливается бит RST);
Сразу после этого начинается, собственно, процесс инициализации внутренних регистров.


Но почему-то ничего подобного я не нашел wacko.gif в даташите..... Это подтвержденная информация?
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение Apr 6 2011, 13:29
Сообщение #17


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



Я софтового сброса не делал, только аппаратный. В том числе и на ходу. В даташите в разделе "5.1 Initialization" велено этот регистр использовать, надо понимать, что весь. Но прямого указания на необходимость программного сброса нет. Фред Иди предлагает этот регистр не трогать, оставить как есть по умолчанию.
Я не по злобе пренебрёг софтовым сбросом, просто забыл. Но ничего плохого в связи с этим не заметил.
Моё мнение - и без него хорошо, но написать пару лишних строк кода не обременительно sm.gif


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
Errorkpi
сообщение Apr 6 2011, 13:31
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 14-04-09
Пользователь №: 47 659



А выдержка по времени??? или это было притянуто за уши из временных диаграмм работы? Но судя по ним, время на рестарт чипа равно 10мс + 2мкс

Сообщение отредактировал Errorkpi - Apr 6 2011, 13:35
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение Apr 6 2011, 14:25
Сообщение #19


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



Табличка "AC Characteristics". Не менее 2 мкс импульс сброса и не менее 10 мс подождать после его окончания. Я это и делаю. Кто такой PLOCK - не изволили написать. Возможно, захват какого-то ФАПЧ. Нужна ли пауза на PLOCK после программного сброса - дело тёмное. Можно попытаться найти программный сброс в исходниках атмеловских драйверов, чисто по адресу регистра.


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
Errorkpi
сообщение Apr 8 2011, 06:34
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 14-04-09
Пользователь №: 47 659



Ну я собственно об этом и писал 2мкс + 10мс. Только я энто на графиках сброса увидел 65стр. в даташите. Просто меня удивили числа в алгоритме на соседней теме 100мс. Явное отличие на 3 и 1 порядка соответственно, думал что я чего-то недопонимаю. Но учитывая возможные нестабильности, нарастания и спадания импульсов и ТКЕ я наверно выберу временные рамки в 5 и 15мс соответственно.

Сообщение отредактировал Errorkpi - Apr 8 2011, 06:35
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение Apr 8 2011, 07:10
Сообщение #21


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



Ну да, запас - это святое. А что за соседняя тема?


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
Errorkpi
сообщение Apr 8 2011, 14:51
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 14-04-09
Пользователь №: 47 659



http://electronix.ru/forum/index.php?showt...mp;#entry911225
Кстати у человека при описании получился неплохой гайд по инициализации микрухи (ну на начальном этапе sm.gif )

Сообщение отредактировал Errorkpi - Apr 8 2011, 14:52
Go to the top of the page
 
+Quote Post
Unfog
сообщение May 20 2012, 17:37
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 20-05-12
Из: Санкт-Петербург
Пользователь №: 71 932



Дабы не плодить темы, напишу здесь.
Работаю W5100 (WIZ812MJ) + FPGA

Чип инициализируется, распределение памяти 2к на сокет. (UDP)
Сокет открывается (регистр статуса = 0x22). Пинг идет.
Адреса, порт, подсеть устанавливаю.

Далее читаю Sn_TX_WR, маскирую 0x7FF, прибавляю 0x4000, записываю один байт. Sn_TX_WR увеличиваю на 1. Говорю SEND. Регистр команд равен 0. Т.е. вроде послал. Но ничего не происходит. Снифер молчит, TX_LED молчит.
В чем может быть проблема?

Есть странность, если открыть сокет и нечего не делать, пинг идет. Если пытаться что-то послать, пинг отваливается. Хотя WIZ говорит, что сокет открыт.
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Oct 7 2013, 18:21
Сообщение #24


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



QUOTE (Unfog @ May 20 2012, 21:37) *
Дабы не плодить темы, напишу здесь.
Работаю W5100 (WIZ812MJ) + FPGA
....

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


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Oct 8 2013, 17:01
Сообщение #25


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



QUOTE (Lmx2315 @ Oct 7 2013, 22:21) *
Решили ли проблему?
з.ы.
прошло много времени - если кто знает ответ, подскажите, та же проблема только с w5200.
Пингуется, говорит что сокет открыл - а сканер портов не видит на нём открытых сокетов .


..проблема решилась, не надо порты сканировать а надо просто терминалом к сокету подключиться.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
pokk
сообщение Oct 10 2013, 02:11
Сообщение #26


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

Группа: Участник
Сообщений: 91
Регистрация: 3-07-11
Пользователь №: 66 028



Здравствуйте, возникла у меня вот такая проблема w5100 не даёт устанавится TCP соединению разывает его флагом reset.

Всё более менее работает странички открываются картинки выдаются но иногда при retransmission происходит сброс а бразуер всё шлёт и шлёт retransmission и на этом всё зависает пока куда-то вся инициализация не слетит


Код
22068    2652.981635000    192.168.1.63    192.168.1.4    TCP    54        52877 > 5000 [FIN, ACK] Seq=361 Ack=12 Win=64230 Len=0
22069    2652.982735000    192.168.1.4    192.168.1.63    TCP    60        5000 > 52877 [ACK] Seq=12 Ack=362 Win=2048 Len=0
22070    2653.820030000    192.168.1.4    192.168.1.63    TCP    60        [TCP Retransmission] 5000 > 52877 [FIN, ACK] Seq=3084509875 Ack=3252656888 Win=2048 Len=0
22071    2653.820069000    192.168.1.63    192.168.1.4    TCP    54        52877 > 5000 [RST] Seq=3252656888 Win=0 Len=0
22072    2653.822132000    192.168.1.4    192.168.1.63    TCP    60        [TCP Retransmission] 5000 > 52877 [FIN, ACK] Seq=3084509875 Ack=3252656888 Win=2048 Len=0
22073    2653.822156000    192.168.1.63    192.168.1.4    TCP    54        52877 > 5000 [RST] Seq=3252656888 Win=0 Len=0
22074    2653.822936000    192.168.1.4    192.168.1.63    TCP    60        [TCP Retransmission] 5000 > 52877 [FIN, ACK] Seq=3084509875 Ack=3252656888 Win=2048 Len=0
22075    2653.822959000    192.168.1.63    192.168.1.4    TCP    54        52877 > 5000 [RST] Seq=3252656888 Win=0 Len=0
22079    2653.825881000    192.168.1.4    0.0.0.0            TCP    60        5000 > 0 [FIN, ACK] Seq=1 Ack=1 Win=2048 Len=0
22094    2653.972698000    192.168.1.63    192.168.1.4    TCP    66        52880 > 5000 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=4 SACK_PERM=1
22095    2653.982600000    192.248.1.4    0.0.0.0             TCP    60        5000 > 0 [FIN, ACK] Seq=1 Ack=1 Win=2048 Len=0
22096    2653.989771000    192.240.1.4    0.0.0.0             TCP    60        5000 > 0 [FIN, ACK] Seq=1 Ack=1 Win=2048 Len=0
22102    2654.017253000    192.240.1.4    0.0.0.0            TCP    60        [TCP Retransmission] 5000 > 0 [FIN, ACK] Seq=1 Ack=1 Win=2048 Len=0


После этого всё даже ping не работает.


Код
    CHIP_WRITE(0x0000,0);
//GWR (Gateway IP Address Register) [R/W] [0x0001 – 0x0004] [0x00]
    CHIP_WRITE(0x0001,192);
    CHIP_WRITE(0x0002,168);
    CHIP_WRITE(0x0003,1);
    CHIP_WRITE(0x0004,18);
//SUBR (Subnet Mask Register) [R/W] [0x0005 – 0x0008] [0x00]
    CHIP_WRITE(0x0005,255);
    CHIP_WRITE(0x0006,255);
    CHIP_WRITE(0x0007,255);
    CHIP_WRITE(0x0008,0);
//SHAR (Source Hardware Address Register) [R/W] [0x0009 – 0x000E] [0x00]
//This register sets up the Source Hardware address.
    CHIP_WRITE(0x0009,0x00);
    CHIP_WRITE(0x000A,0x08);
    CHIP_WRITE(0x000B,0xDC);
    CHIP_WRITE(0x000C,0x01);
    CHIP_WRITE(0x000D,0x02);
    CHIP_WRITE(0x000E,0x03);
//SIPR (Source IP Address Register) [R/W] [0x000F – 0x0012] [0x00]
//This register sets up the Source IP address.
    CHIP_WRITE(0x000F,192);
    CHIP_WRITE(0x0010,168);
    CHIP_WRITE(0x0011,1);
    CHIP_WRITE(0x0012,4);
//IR (Interrupt Register) [R] [0x0015] [0x00]
//This register is accessed by the host processor to know the cause of an interrupt.
//Any interrupt can be masked in the Interrupt Mask Register (IMR). The /INT signal retain low
//as long as any masked signal is set, and will not go high until all masked bits in this Register
//have been cleared.
//    7         6        5      4       3       2       1      0
//CONFLICT UNREACH  PPPoE  Reserved S3_INT S2_INT S1_INT S0_INT
    //CHIP_WRITE(0x0015,);
      CHIP_WRITE(0x0016,0);

      CHIP_WRITE(0x0017,0x00);  // таймаут 400ms
      CHIP_WRITE(0x0018,0xc8);

      //CHIP_WRITE(0x0017,0x0f);  // таймаут 400ms
      //CHIP_WRITE(0x0018,0xA0);

      CHIP_WRITE(0x0019,0x08);

//Значение регистра "RX Memory Size Register" ($001A) устанавливается в b00000011. Считываем, проверяем, Ok!
//Значение регистра "TX Memory Size Register" ($001B) устанавливается в b00000011. Считываем, проверяем, Ok!
      CHIP_WRITE(0x001A,0x06);
      CHIP_WRITE(0x001B,0x06);
//Значение регистра "Interrupt Mask Register" ($0016)
//Значение регистра "Retry Time-value Register" ($0017)
//Значение регистра "Retry Time-value Register" ($0018)




Go to the top of the page
 
+Quote Post
pokk
сообщение Oct 10 2013, 09:01
Сообщение #27


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

Группа: Участник
Сообщений: 91
Регистрация: 3-07-11
Пользователь №: 66 028



Что-то понять не могу с регистра статуса Sn_SR (Sn_SR (Socket nStatus Register) [R] [0x0403, 0x0503, 0x0603, 0x0703] [0x00]
This register has the status value of socket n. The main status is shown in the below diagram.
) считываются какие-то значения которые не соответствуют командам
(0x38, 0x7 и другие ) и не как не хочет читаться SOCK_ESTABLISHED (это всё происходит так когда reset полез )

Подскажите как происходит работа с регистром прерываний (Sn_IR (Socket nInterrupt Register)) что куда прерывает и как ?
или его тупо так же как регистр статуса читать ? тогда в чём отличие ?


Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:56
Рейтинг@Mail.ru


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