Перейти к содержанию
    

??? TCP/IP стек - это бред???

TCP/IP стек - это не бред, это вполне понятный устоявшийся термин.

Буфер - тоже понятный термин.

Но что значит реализовать TCP/IP стек в буфере - я не понимаю.

 

В примере, который вы загрузили просто API для встроенного MAC контроллера.

А тест - просто передает и принимает фреймы Ethernet II

 

причем там кадры даже не IP передаются!

получше построю фразу:

в этом тесте передаются не IP кадры

у IP кадра должна стоять не длина, а тип 0x800

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Правильно будет работать программа если я вместо тех "не IP кадров" поставить TCP/IP стек? Конечно можно по экспериментировать, что я и сделаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас пример содержит инициализацию м/c phy, emac контроллера и передачу ethernet кадра в сеть. Для обмена не очень годится, поскольку нужно как минимум еще реализовать протоколы IP, ARP, UDP/TCP. Этот набор протоколов называеется "стек TCP/IP"

Например, Keil поставляет собственный стек TCP/IP в наборе:

http://www.keil.com/rl-arm/rl-tcpnet.asp

со своими примерами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На форуме по программированию под стеком TCP/IP понимается - его программная реализация!

Например uIP, lwIP, tnnet.... (keil вам уже приводили в пример)

Даже если брать классическое понятие "Стек протоколов TCP/IP" все равно его нельзя записать в буфер!

В буфер отправки можно записать - пакет, фрейм, кадр и т.п.

 

Вы понимаете разницу между пакетом (фреймом) и протоколом?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сижу, разбираюсь с кодом EMAC. Не могу понять какой там стек реализован в выходном буфере txptr. Как я понял, если я работаю с TCP/IP, то мне именно в этот буфер нужно стек TCP/IP записывать. Так?

Не путайте теплое с мягким.

Это не тот стек.

Тот, что Вы имеете ввиду, "стек микроконтроллера", куда пишутся данные.

Стек/stack по английски просто значит пачка,набор.

Вам говорят о "наборе протоколов" а не о том, куда писать данные

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы понимаете разницу между пакетом (фреймом) и протоколом?
Представление имею, в краймем случае почитаю в книжках, в интернете.

 

еще реализовать протоколы IP, ARP, UDP/TCP.
Они у меня уже есть, я года три назад их для AVR+CP2200 реализовавал. Правда TCP не отлаживал и как он работает пока не знаю.

Я всётаки (пусть нудно, по рабоче-крестьянски просто:)) хочу выяснить txptr это именно то место куда нужно записывать байтики протокола IP-TCP-двнные?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Представление имею, в краймем случае почитаю в книжках, в интернете.

 

Они у меня уже есть, я года три назад их для AVR+CP2200 реализовавал. Правда TCP не отлаживал и как он работает пока не знаю.

Я всётаки (пусть нудно, по рабоче-крестьянски просто:)) хочу выяснить txptr это именно то место куда нужно записывать байтики протокола IP-TCP-двнные?

 

Да. Вот здесь данные кадра константой 0x55 заполняются:

/* Skip the first 14 bytes for dst, src, and type/length */
  for ( i=0; i < BodyLength; i++ )
  {
    *(txptr+i+14) = 0x55;
  }

По идее здесь д.б. данные IP пакета.

Ну или этот кадр с 0x55 сниффером можно посмотреть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По идее здесь д.б. данные IP пакета.

не только там!

надо еще вместо длины записать тип 0x800

 

emac.* обеспечивает только канальный уровень.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пытаюсь запустить пример EMAC из пакета примеров. Программа виснет, ждёт окончания тайаута, в функции

DWORD PHYInit( DWORD PHYType )

при чтении и проверки флага BMCR_RESET

 

  WritePHY( PHY_BMCR, BMCR_RESET );
  for ( i = 0; i < 0x20; i++ );    /* short delay */

  timeout = MII_BMSR_TIMEOUT * 4;
  while ( timeout != 0 )
  {
    regValue = ReadPHY( PHY_BMCR );
    if ( (regValue & BMCR_RESET) == 0x0000 )
    {
      break;        /* Reset self cleaned once the reset process is complete */
    }
    timeout--;
  }

Что не так делаю?

 

В даташите не найду описание портов, регистров, флагов (PHY_BMCR, BMCR_RESET, ...).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В даташите не найду описание портов, регистров, флагов (PHY_BMCR, BMCR_RESET, ...).

В датащите на свой phy надеюсь? Это стандартный регистр (Basic Mode Control Register) и должен быть описан.

 

PS: Так и не выучили матчасть. А ведь это Вам советовал не я один в другой теме. =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

PS: Так и не выучили матчасть. А ведь это Вам советовал не я один в другой теме. =)

Эээ... это в какой теме. Посмотрел за "Всё время" темы не нашёл такой.

Ну да ладно.

У меня документация user.manual.lpc24xx_1.04.pdf. Там только упоминание о этих регистрах.

В датащите на свой phy надеюсь? Это стандартный регистр (Basic Mode Control Register) и должен быть описан.

Вообще тоя имел ввиду регистр

MII Mgmt Address Register (MADR - 0xFFE0 0028)

Унего два поля

4:0 REGISTER ADDRESS и 12:8 PHY ADDRESS

 

Сейчас для меня первый вопрос актуальнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем клон темы создали?

Сами же начали тему

http://electronix.ru/forum/index.php?showtopic=115044

 

это между прочим запрещено правилами форума!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эээ... это в какой теме. Посмотрел за "Всё время" темы не нашёл такой.

Ну да ладно.

Склероз подсказывает, что кое-что неплохо бы забыть? =) Вам выше модератор указал в "какой теме"

 

Сейчас для меня первый вопрос актуальнее.

Для Вас актуально изучить азы. Но Вы упорно продолжаете гнуть свою линию. Удачи! =)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем клон темы создали?

Сами же начали тему

http://electronix.ru/forum/index.php?showtopic=115044

 

это между прочим запрещено правилами форума!

Если считаете, что это клон удаляйте тему. Я считаю, что это другой вопрос, хоть и из одной тематике. А два вопроса в одной теме тоже не правильно.

 

Склероз подсказывает, что кое-что неплохо бы забыть? =) Вам выше модератор указал в "какой теме"

 

 

Для Вас актуально изучить азы. Но Вы упорно продолжаете гнуть свою линию. Удачи! =)

А по существу вопроса, почему виснет программа идущая с отладочной платой помочь можете?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Думаю правильным ответом будет "не знаю", потому что кто его знает почему у вас так происходит. Но предположения такие.

 

Физики не имеют строго описания где у них какие регистры. На это нет стандарта.

Физика (PHY) имеет тенденцию меняться и потому та программа что работала с одним видом физики может не работать с другим.

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...