Jump to content

    
Sign in to follow this  
Oleg_IT

Ethernet на LPC2478.

Recommended Posts

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

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

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

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

 

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

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

 

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

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

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

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

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

 

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

Share this post


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

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

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

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

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

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

Share this post


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

 

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

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

Share this post


Link to post
Share on other sites
Представление имею, в краймем случае почитаю в книжках, в интернете.

 

Они у меня уже есть, я года три назад их для 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 сниффером можно посмотреть.

Share this post


Link to post
Share on other sites
По идее здесь д.б. данные IP пакета.

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

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

 

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

 

 

Share this post


Link to post
Share on other sites

Пытаюсь запустить пример 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, ...).

Share this post


Link to post
Share on other sites
В даташите не найду описание портов, регистров, флагов (PHY_BMCR, BMCR_RESET, ...).

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

 

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

Share this post


Link to post
Share on other sites
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

 

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

 

Share this post


Link to post
Share on other sites
Эээ... это в какой теме. Посмотрел за "Всё время" темы не нашёл такой.

Ну да ладно.

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

 

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

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

 

Share this post


Link to post
Share on other sites
А зачем клон темы создали?

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

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

 

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

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

 

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

 

 

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

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

 

Share this post


Link to post
Share on other sites

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

 

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

 

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

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

 

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this