Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ethernet на LPC2478.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Oleg_IT
Нужно связать макетку с установленной ARM LPC2478 с PC по Ethernet. В примерах нашёл только EMAC. Возникли два вопроса:
1. По коду не пойму где устанавливается IP адрес, вижу только MAC.
2. Компьютер, с которым нужно связаться имеет динамический IP, для выхода в интернет. Как программа в LPC2478 узнает, куда слать пакеты?

Чего-то я с этим запутался. Помогите.
Если есть другие примера использования Ethernet для LPC покажите, где их взять.
Lotor
Ох, наверное, Вам стоит почитать про разницу между сетевым и канальным уровнем в википедии. А потом подобрать для себя нужный tcp стек. Если работаете с Кейлом - то самое простое взять его стек.
Oleg_IT
Цитата(Lotor @ Aug 27 2013, 15:13) *
Ох, наверное, Вам стоит почитать про разницу между сетевым и канальным уровнем в википедии. А потом подобрать для себя нужный tcp стек. Если работаете с Кейлом - то самое простое взять его стек.

Конечно лучше воспользоваться готовым кодом, стеком. Где его найти?
Википедию посмотрю, но лучше более серьёзные книжки посмотреть.
Lotor
Цитата(Oleg_IT @ Aug 27 2013, 16:33) *
Конечно лучше воспользоваться готовым кодом, стеком. Где его найти?

Вы серьезно? Я же уже назвал ключевое слово - Keil...

Цитата(Oleg_IT @ Aug 27 2013, 16:33) *
Википедию посмотрю, но лучше более серьёзные книжки посмотреть.

Ну если википедия - это не серьезно, то спецификация на TCP/IP будет в самый раз. =) Ну или почитайте Richard Stevens "TCP/IP Illustrated".
Oleg_IT
Цитата(Lotor @ Aug 27 2013, 16:46) *
Вы серьезно? Я же уже назвал ключевое слово - Keil...

Увидел, спасибо. Я то подумал, что вы об установленном пакете Keil-а.

Цитата(Lotor @ Aug 27 2013, 16:46) *
Ну если википедия - это не серьезно, то спецификация на TCP/IP будет в самый раз. =) Ну или почитайте Richard Stevens "TCP/IP Illustrated".

Я предпочитаю толковые книги.
Oleg_IT
Со стеком надеюсь разберусь, UDP когда-то для AVR-ки делал. А вот со вторым вопросом пока туман, компьютер с динамическим IP подключён к роутеру и к нему же хочу ARM подключить. Куда, по какому IP, слать пакеты из ARM? Конечно можно его (ARM) сервером сделать и отвечать на запросы, но не хотелось бы так.
scifi
Цитата(Oleg_IT @ Aug 28 2013, 15:50) *
Куда, по какому IP, слать пакеты из ARM? Конечно можно его (ARM) сервером сделать и отвечать на запросы, но не хотелось бы так.

Разве не очевидно? Нужно как-то узнать, какой IP назначен компьютеру, и сообщить эту информацию этому самому ARM.
KRS
Так можно boradcast ом слать первоначальный запрос.
A. Fig Lee
На компьютере
ipconfig
или
ifconfig
напечатает ip address компа.

Можно через DNS, если хочется динамически
Oleg_IT
Посмотреть на компьютере адрес это, конечно очень просто, но это не выход, его нужно будет вводить в ARM, а для этого средства ввода и отображения чего вводишь городить придётся или через программатор. Средства ввода и отображения очень усложняет проект (это даже не проект, а инструмент в другом проекте), там нужно то снять данные с датчиков и передать их в компьютер.
А за boradcast спасибо.
Oleg_IT
Сижу, разбираюсь с кодом EMAC. Не могу понять какой там стек реализован в выходном буфере txptr. Как я понял, если я работаю с TCP/IP, то мне именно в этот буфер нужно стек TCP/IP записывать. Так?
Lotor
Цитата(Oleg_IT @ Aug 29 2013, 13:29) *
Сижу, разбираюсь с кодом EMAC. Не могу понять какой там стек реализован в выходном буфере txptr. Как я понял, если я работаю с TCP/IP, то мне именно в этот буфер нужно стек TCP/IP записывать. Так?

Цитата(Oleg_IT @ Aug 27 2013, 21:43) *
Я предпочитаю толковые книги.

Сдается мне после таких вопросов, что Вы совсем не читатель, а писатель...

PS: Определитесь со стеком, возьмите и изучите описание и примеры работы с ним. Если Вам повезет, в примерах будет драйвер для вашего PHY. Если же нет - то придется минимально переделать.
Oleg_IT
Причём тут читатель, писатель??? У меня конкретный вопрос по коду примера EMAC, а не по стеку, по стеку у меня пока вопросов нет.
У них в примере EMAC стек реализован или что???
KRS
Цитата(Oleg_IT @ Aug 29 2013, 13:29) *
Не могу понять какой там стек реализован в выходном буфере txptr. Как я понял, если я работаю с TCP/IP, то мне именно в этот буфер нужно стек TCP/IP записывать.

Я вот вообще ничего не понял.
Что значит стек в выходном буфере...
Как понять - записать TCP/IP стек в буфер...
это вообще о чем? Очень похоже на технический бред. Хотя конечно зависит от интерпретации слова стек!

EMAC.* - Это обычно всего лишь драйвер ( API ) для доступа к конкретному MAC (ethernet) контроллеру.
Oleg_IT
Цитата
Очень похоже на технический бред. Хотя конечно зависит от интерпретации слова стек!

??? TCP/IP стек - это бред??? Странно. Значит первый ответ на мой вопрос от Lotor, см. конец его сообщения, тоже бред.sm.gif
Не знаю, может у меня объяснить толково не получается, попробую еще раз.
EMAC, в данном контексте, это не "драйвер ( API )", а тестовая проект в который входит и тот самый драйвер (emac.c). Я считал, что набор тестовых программ, в который входит EMAC знаком всем, кто с LPC работает. В приложении архив с этим проектом. Там есть буфер txptr (emactest.c) в который прописывается адреса, данные (0x55),... И содержимое этого буфера передаётся в регистр передачи, функция EMACSend(...). И вот то, что в этом txptr буфере получается я не пойму.
KRS
Цитата(Oleg_IT @ Aug 29 2013, 21:00) *
??? TCP/IP стек - это бред???

TCP/IP стек - это не бред, это вполне понятный устоявшийся термин.
Буфер - тоже понятный термин.
Но что значит реализовать TCP/IP стек в буфере - я не понимаю.

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

причем там кадры даже не IP передаются!
получше построю фразу:
в этом тесте передаются не IP кадры
у IP кадра должна стоять не длина, а тип 0x800
Oleg_IT
Правильно будет работать программа если я вместо тех "не IP кадров" поставить TCP/IP стек? Конечно можно по экспериментировать, что я и сделаю.
psL
У вас пример содержит инициализацию м/c phy, emac контроллера и передачу ethernet кадра в сеть. Для обмена не очень годится, поскольку нужно как минимум еще реализовать протоколы IP, ARP, UDP/TCP. Этот набор протоколов называеется "стек TCP/IP"
Например, Keil поставляет собственный стек TCP/IP в наборе:
http://www.keil.com/rl-arm/rl-tcpnet.asp
со своими примерами.
KRS
На форуме по программированию под стеком TCP/IP понимается - его программная реализация!
Например uIP, lwIP, tnnet.... (keil вам уже приводили в пример)
Даже если брать классическое понятие "Стек протоколов TCP/IP" все равно его нельзя записать в буфер!
В буфер отправки можно записать - пакет, фрейм, кадр и т.п.

Вы понимаете разницу между пакетом (фреймом) и протоколом?
A. Fig Lee
Цитата(Oleg_IT @ Aug 29 2013, 05:29) *
Сижу, разбираюсь с кодом EMAC. Не могу понять какой там стек реализован в выходном буфере txptr. Как я понял, если я работаю с TCP/IP, то мне именно в этот буфер нужно стек TCP/IP записывать. Так?

Не путайте теплое с мягким.
Это не тот стек.
Тот, что Вы имеете ввиду, "стек микроконтроллера", куда пишутся данные.
Стек/stack по английски просто значит пачка,набор.
Вам говорят о "наборе протоколов" а не о том, куда писать данные
Oleg_IT
Цитата
Вы понимаете разницу между пакетом (фреймом) и протоколом?
Представление имею, в краймем случае почитаю в книжках, в интернете.

Цитата
еще реализовать протоколы IP, ARP, UDP/TCP.
Они у меня уже есть, я года три назад их для AVR+CP2200 реализовавал. Правда TCP не отлаживал и как он работает пока не знаю.
Я всётаки (пусть нудно, по рабоче-крестьянски простоsm.gif) хочу выяснить txptr это именно то место куда нужно записывать байтики протокола IP-TCP-двнные?
psL
Цитата(Oleg_IT @ Aug 30 2013, 14:54) *
Представление имею, в краймем случае почитаю в книжках, в интернете.

Они у меня уже есть, я года три назад их для AVR+CP2200 реализовавал. Правда TCP не отлаживал и как он работает пока не знаю.
Я всётаки (пусть нудно, по рабоче-крестьянски простоsm.gif) хочу выяснить 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 сниффером можно посмотреть.
KRS
Цитата(psL @ Aug 30 2013, 15:18) *
По идее здесь д.б. данные IP пакета.

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

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

Oleg_IT
Пытаюсь запустить пример 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, ...).
Lotor
Цитата(Oleg_IT @ Sep 17 2013, 16:31) *
В даташите не найду описание портов, регистров, флагов (PHY_BMCR, BMCR_RESET, ...).

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

PS: Так и не выучили матчасть. А ведь это Вам советовал не я один в другой теме. =)
Oleg_IT
Цитата(Lotor @ Sep 17 2013, 16:41) *
PS: Так и не выучили матчасть. А ведь это Вам советовал не я один в другой теме. =)

Эээ... это в какой теме. Посмотрел за "Всё время" темы не нашёл такой.
Ну да ладно.
У меня документация user.manual.lpc24xx_1.04.pdf. Там только упоминание о этих регистрах.
Цитата(Lotor @ Sep 17 2013, 16:41) *
В датащите на свой phy надеюсь? Это стандартный регистр (Basic Mode Control Register) и должен быть описан.

Вообще тоя имел ввиду регистр
MII Mgmt Address Register (MADR - 0xFFE0 0028)
Унего два поля
4:0 REGISTER ADDRESS и 12:8 PHY ADDRESS

Сейчас для меня первый вопрос актуальнее.
KRS
А зачем клон темы создали?
Сами же начали тему
http://electronix.ru/forum/index.php?showtopic=115044

это между прочим запрещено правилами форума!
Lotor
Цитата(Oleg_IT @ Sep 18 2013, 09:30) *
Эээ... это в какой теме. Посмотрел за "Всё время" темы не нашёл такой.
Ну да ладно.

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

Цитата(Oleg_IT @ Sep 18 2013, 09:30) *
Сейчас для меня первый вопрос актуальнее.

Для Вас актуально изучить азы. Но Вы упорно продолжаете гнуть свою линию. Удачи! =)
Oleg_IT
Цитата(KRS @ Sep 18 2013, 10:20) *
А зачем клон темы создали?
Сами же начали тему
http://electronix.ru/forum/index.php?showtopic=115044

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

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

Цитата(Lotor @ Sep 18 2013, 11:36) *
Склероз подсказывает, что кое-что неплохо бы забыть? =) Вам выше модератор указал в "какой теме"


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

А по существу вопроса, почему виснет программа идущая с отладочной платой помочь можете?
Golikov A.
всегда был сторонником того что легче ответить на вопрос, чем объяснить почему его не надо задавать.

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

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

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

Так же здорово будет проверить правильно ли вы определили адрес самой физики. Он часто задается ножками физики, а в программах обычно реализуют процедуру автопоиска адреса.
Oleg_IT
Спасибо, кое-что прояснилось, в частности отсутствие описания на 4:0 REGISTER ADDRESS и 12:8 PHY ADDRESS.
Цитата(Golikov A. @ Sep 18 2013, 14:01) *
Так же здорово будет проверить правильно ли вы определили адрес самой физики. Он часто задается ножками физики, а в программах обычно реализуют процедуру автопоиска адреса.

Автопоиск применяется в том отрывке кода, который я привёл ранее? Вся документация и примеры, которыми я пользуюсь, взяты с диска, идущий с отладочной платой, и там автопоиска нет. Где посмотреть его реализацию?
Oleg_IT
Фрагмент вынес сюда.

Цитата(сарматъ @ Sep 18 2013, 17:04) *
мне помогает вот этот сайтик все понятно рассказано про езернет кадр
http://www.xserver.ru/computer/protokol/tcpip/3/2.shtml
Я бы сюда ещё добавил конечный автомат TCP, если самому все реализовывать, то без него ни как.

Golikov A. Спасибо за подробный комментарий особенно про PHY. Разбираюсь, если что не так будет, обращусь ещё раз.

Модератору
1. Может последний комментарий Golikov A. поместить в важные темы, новичкам это будет полезно.
2. Где репутация пользователей? Хочется кому-то плюсы поставить, а кому-то минусыsm.gif
Golikov A.
Цитата(Oleg_IT @ Sep 19 2013, 10:02) *
Я бы сюда ещё добавил конечный автомат TCP, если самому все реализовывать, то без него ни как.


я очень ревностно отношусь к использованию чужих библиотек, да и то выбрал путь использования чужого ТСР стэка. Да! прочитать его весь надо, что делает каждая строчка понять надо, но писать заново не стоит, все равно получится тоже самое.

Там очень много мелочей которые чисто технические, без творчества, а прописать все их надо. В итоге ОЧЕНЬ много писанины, и не особо много славы....

Oleg_IT
Цитата(Golikov A. @ Sep 19 2013, 10:14) *
я очень ревностно отношусь к использованию чужих библиотек, да и то выбрал путь использования чужого ТСР стэка. Да! прочитать его весь надо, что делает каждая строчка понять надо, но писать заново не стоит, все равно получится тоже самое.

Там очень много мелочей которые чисто технические, без творчества, а прописать все их надо. В итоге ОЧЕНЬ много писанины, и не особо много славы....
С одной стороны согласен, исппользование рутинных библиотек полезно, но с другой стороны держать всё в своих руках тоже не плохо.
Есть у меня код mip, mtcp... Может их буду пользовать.
IgorKossak
Цитата(Oleg_IT @ Sep 19 2013, 09:02) *
Модератору
1. Может последний комментарий Golikov A. поместить в важные темы, новичкам это будет полезно.
2. Где репутация пользователей? Хочется кому-то плюсы поставить, а кому-то минусыsm.gif

1. Можно зафиксировать вверху подфорума только всю тему целиком или выделить комментарий Golikov A в отдельную тему с фиксацией вверху, но не в этом подфоруме, а в более близком по тематике. Что скажете?
2. Движком форума не предусмотрена.
Oleg_IT
На диске errata.lpc2478_1.1.pdf есть. Попробовал учесть рекомендацию из него (To use the Ethernet interface in RMII mode write a 1 to bit 12 in PINSEL2 register (located at 0xE002 C008).). Первый заход получился, таймаут прошёл сразу, но потом очередной раз слетела программа в JTAG программаторе. Восстановлю, продолжу мученияsm.gif

По поводу программатора (на его плате написано SLUE0700). Возможно, в дальнейшем исключить такую неприятность.


Цитата(IgorKossak @ Sep 19 2013, 12:43) *
1. Можно зафиксировать вверху подфорума только всю тему целиком или выделить комментарий Golikov A в отдельную тему с фиксацией вверху, но не в этом подфоруме, а в более близком по тематике. Что скажете?

Наверное лучше поместить в отдельную тему, во всей теме много лишнего. Ссылочку от сарматъ тудаже.
IgorKossak
Цитата(Oleg_IT @ Sep 19 2013, 11:47) *
Наверное лучше поместить в отдельную тему, во всей теме много лишнего. Ссылочку от сарматъ тудаже.

Выделил и закрепил здесь пока в этом подфоруме.
vassabi
Цитата("IgorKossak")
2. Движком форума не предусмотрена.

А в профиле юзера линк "Оценить" разве не то?
IgorKossak
Цитата(vassabi @ Sep 19 2013, 13:06) *
А в профиле юзера линк "Оценить" разве не то?

Далеко лезть. Не очевидно.
Oleg_IT
Цитата(IgorKossak @ Sep 19 2013, 13:21) *
Выделил и закрепил здесь пока в этом подфоруме.

Спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.