Полная версия этой страницы:
Ethernet на LPC2478.
Oleg_IT
Aug 27 2013, 11:04
Нужно связать макетку с установленной ARM LPC2478 с PC по Ethernet. В примерах нашёл только EMAC. Возникли два вопроса:
1. По коду не пойму где устанавливается IP адрес, вижу только MAC.
2. Компьютер, с которым нужно связаться имеет динамический IP, для выхода в интернет. Как программа в LPC2478 узнает, куда слать пакеты?
Чего-то я с этим запутался. Помогите.
Если есть другие примера использования Ethernet для LPC покажите, где их взять.
Ох, наверное, Вам стоит почитать про разницу между сетевым и канальным уровнем в википедии. А потом подобрать для себя нужный tcp стек. Если работаете с Кейлом - то самое простое взять его стек.
Oleg_IT
Aug 27 2013, 12:33
Цитата(Lotor @ Aug 27 2013, 15:13)

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

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

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

Вы серьезно? Я же уже назвал ключевое слово -
Keil...
Увидел, спасибо. Я то подумал, что вы об установленном пакете Keil-а.
Цитата(Lotor @ Aug 27 2013, 16:46)

Ну если википедия - это не серьезно, то спецификация на TCP/IP будет в самый раз. =) Ну или почитайте Richard Stevens "TCP/IP Illustrated".
Я предпочитаю толковые книги.
Oleg_IT
Aug 28 2013, 11:50
Со стеком надеюсь разберусь, UDP когда-то для AVR-ки делал. А вот со вторым вопросом пока туман, компьютер с динамическим IP подключён к роутеру и к нему же хочу ARM подключить. Куда, по какому IP, слать пакеты из ARM? Конечно можно его (ARM) сервером сделать и отвечать на запросы, но не хотелось бы так.
Цитата(Oleg_IT @ Aug 28 2013, 15:50)

Куда, по какому IP, слать пакеты из ARM? Конечно можно его (ARM) сервером сделать и отвечать на запросы, но не хотелось бы так.
Разве не очевидно? Нужно как-то узнать, какой IP назначен компьютеру, и сообщить эту информацию этому самому ARM.
Так можно boradcast ом слать первоначальный запрос.
A. Fig Lee
Aug 28 2013, 12:29
На компьютере
ipconfig
или
ifconfig
напечатает ip address компа.
Можно через DNS, если хочется динамически
Oleg_IT
Aug 28 2013, 18:09
Посмотреть на компьютере адрес это, конечно очень просто, но это не выход, его нужно будет вводить в ARM, а для этого средства ввода и отображения чего вводишь городить придётся или через программатор. Средства ввода и отображения очень усложняет проект (это даже не проект, а инструмент в другом проекте), там нужно то снять данные с датчиков и передать их в компьютер.
А за boradcast спасибо.
Oleg_IT
Aug 29 2013, 09:29
Сижу, разбираюсь с кодом EMAC. Не могу понять какой там стек реализован в выходном буфере txptr. Как я понял, если я работаю с TCP/IP, то мне именно в этот буфер нужно стек TCP/IP записывать. Так?
Цитата(Oleg_IT @ Aug 29 2013, 13:29)

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

Я предпочитаю толковые книги.
Сдается мне после таких вопросов, что Вы совсем не читатель, а писатель...
PS: Определитесь со стеком, возьмите и изучите описание и примеры работы с ним. Если Вам повезет, в примерах будет драйвер для вашего PHY. Если же нет - то придется минимально переделать.
Oleg_IT
Aug 29 2013, 11:40
Причём тут читатель, писатель??? У меня конкретный вопрос по коду примера EMAC, а не по стеку, по стеку у меня пока вопросов нет.
У них в примере EMAC стек реализован или что???
Цитата(Oleg_IT @ Aug 29 2013, 13:29)

Не могу понять какой там стек реализован в выходном буфере txptr. Как я понял, если я работаю с TCP/IP, то мне именно в этот буфер нужно стек TCP/IP записывать.
Я вот вообще ничего не понял.
Что значит стек в выходном буфере...
Как понять - записать TCP/IP стек в буфер...
это вообще о чем? Очень похоже на технический бред. Хотя конечно зависит от интерпретации слова стек!
EMAC.* - Это обычно всего лишь драйвер ( API ) для доступа к конкретному MAC (ethernet) контроллеру.
Oleg_IT
Aug 29 2013, 17:00
Цитата
Очень похоже на технический бред. Хотя конечно зависит от интерпретации слова стек!
??? TCP/IP стек - это бред??? Странно. Значит первый ответ на мой вопрос от Lotor, см. конец его сообщения, тоже бред.

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

??? TCP/IP стек - это бред???
TCP/IP стек - это не бред, это вполне понятный устоявшийся термин.
Буфер - тоже понятный термин.
Но что значит реализовать TCP/IP стек в буфере - я не понимаю.
В примере, который вы загрузили просто API для встроенного MAC контроллера.
А тест - просто передает и принимает фреймы Ethernet II
причем там кадры даже не IP передаются!получше построю фразу:
в этом тесте передаются не IP кадры
у IP кадра должна стоять не длина, а тип 0x800
Oleg_IT
Aug 30 2013, 03:40
Правильно будет работать программа если я вместо тех "не 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" все равно его нельзя записать в буфер!
В буфер отправки можно записать - пакет, фрейм, кадр и т.п.
Вы понимаете разницу между пакетом (фреймом) и протоколом?
A. Fig Lee
Aug 30 2013, 10:45
Цитата(Oleg_IT @ Aug 29 2013, 05:29)

Сижу, разбираюсь с кодом EMAC. Не могу понять какой там стек реализован в выходном буфере txptr. Как я понял, если я работаю с TCP/IP, то мне именно в этот буфер нужно стек TCP/IP записывать. Так?
Не путайте теплое с мягким.
Это не тот стек.
Тот, что Вы имеете ввиду, "стек микроконтроллера", куда пишутся данные.
Стек/stack по английски просто значит пачка,набор.
Вам говорят о "наборе протоколов" а не о том, куда писать данные
Oleg_IT
Aug 30 2013, 10:54
Цитата
Вы понимаете разницу между пакетом (фреймом) и протоколом?
Представление имею, в краймем случае почитаю в книжках, в интернете.
Цитата
еще реализовать протоколы IP, ARP, UDP/TCP.
Они у меня уже есть, я года три назад их для AVR+CP2200 реализовавал. Правда TCP не отлаживал и как он работает пока не знаю.
Я всётаки (пусть нудно, по рабоче-крестьянски просто

) хочу выяснить txptr это именно то место куда нужно записывать байтики протокола IP-TCP-двнные?
Цитата(Oleg_IT @ Aug 30 2013, 14:54)

Представление имею, в краймем случае почитаю в книжках, в интернете.
Они у меня уже есть, я года три назад их для 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 сниффером можно посмотреть.
Цитата(psL @ Aug 30 2013, 15:18)

По идее здесь д.б. данные IP пакета.
не только там!
надо еще вместо длины записать тип 0x800
emac.* обеспечивает только канальный уровень.
Oleg_IT
Sep 17 2013, 12:31
Пытаюсь запустить пример 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, ...).
Цитата(Oleg_IT @ Sep 17 2013, 16:31)

В даташите не найду описание портов, регистров, флагов (PHY_BMCR, BMCR_RESET, ...).
В датащите на свой phy надеюсь? Это стандартный регистр (Basic Mode Control Register) и должен быть описан.
PS: Так и не выучили матчасть. А ведь это Вам советовал не я один в другой теме. =)
Oleg_IT
Sep 18 2013, 05:30
Цитата(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
Сейчас для меня первый вопрос актуальнее.
А зачем клон темы создали?
Сами же начали тему
http://electronix.ru/forum/index.php?showtopic=115044это между прочим запрещено правилами форума!
Цитата(Oleg_IT @ Sep 18 2013, 09:30)

Эээ... это в какой теме. Посмотрел за "Всё время" темы не нашёл такой.
Ну да ладно.
Склероз подсказывает, что кое-что неплохо бы забыть? =) Вам выше модератор указал в
"какой теме"Цитата(Oleg_IT @ Sep 18 2013, 09:30)

Сейчас для меня первый вопрос актуальнее.
Для Вас актуально изучить азы. Но Вы упорно продолжаете гнуть свою линию. Удачи! =)
Oleg_IT
Sep 18 2013, 09:22
Цитата(KRS @ Sep 18 2013, 10:20)

А зачем клон темы создали?
Сами же начали тему
http://electronix.ru/forum/index.php?showtopic=115044это между прочим запрещено правилами форума!
Если считаете, что это клон удаляйте тему. Я считаю, что это другой вопрос, хоть и из одной тематике. А два вопроса в одной теме тоже не правильно.
Цитата(Lotor @ Sep 18 2013, 11:36)

Склероз подсказывает, что кое-что неплохо бы забыть? =) Вам выше модератор указал в
"какой теме"Для Вас актуально изучить азы. Но Вы упорно продолжаете гнуть свою линию. Удачи! =)
А по существу вопроса, почему виснет программа идущая с отладочной платой помочь можете?
Golikov A.
Sep 18 2013, 10:01
всегда был сторонником того что легче ответить на вопрос, чем объяснить почему его не надо задавать.
Думаю правильным ответом будет "не знаю", потому что кто его знает почему у вас так происходит. Но предположения такие.
Физики не имеют строго описания где у них какие регистры. На это нет стандарта.
Физика (PHY) имеет тенденцию меняться и потому та программа что работала с одним видом физики может не работать с другим.
Поэтому думаю правильным будет посмотреть что за физика стоит на вашем ките, проверить по ее описанию правильный ли адрес регистра и бита ресета который проверяется.
Так же здорово будет проверить правильно ли вы определили адрес самой физики. Он часто задается ножками физики, а в программах обычно реализуют процедуру автопоиска адреса.
Oleg_IT
Sep 18 2013, 11:48
Спасибо, кое-что прояснилось, в частности отсутствие описания на 4:0 REGISTER ADDRESS и 12:8 PHY ADDRESS.
Цитата(Golikov A. @ Sep 18 2013, 14:01)

Так же здорово будет проверить правильно ли вы определили адрес самой физики. Он часто задается ножками физики, а в программах обычно реализуют процедуру автопоиска адреса.
Автопоиск применяется в том отрывке кода, который я привёл ранее? Вся документация и примеры, которыми я пользуюсь, взяты с диска, идущий с отладочной платой, и там автопоиска нет. Где посмотреть его реализацию?
Oleg_IT
Sep 19 2013, 06:02
Фрагмент вынес сюда.Цитата(сарматъ @ Sep 18 2013, 17:04)

мне помогает вот этот сайтик все понятно рассказано про езернет кадр
http://www.xserver.ru/computer/protokol/tcpip/3/2.shtmlЯ бы сюда ещё добавил конечный автомат TCP, если самому все реализовывать, то без него ни как.
Golikov A. Спасибо за подробный комментарий особенно про PHY. Разбираюсь, если что не так будет, обращусь ещё раз.
Модератору
1. Может последний комментарий Golikov A. поместить в важные темы, новичкам это будет полезно.
2. Где репутация пользователей? Хочется кому-то плюсы поставить, а кому-то минусы
Golikov A.
Sep 19 2013, 06:14
Цитата(Oleg_IT @ Sep 19 2013, 10:02)

Я бы сюда ещё добавил конечный автомат TCP, если самому все реализовывать, то без него ни как.
я очень ревностно отношусь к использованию чужих библиотек, да и то выбрал путь использования чужого ТСР стэка. Да! прочитать его весь надо, что делает каждая строчка понять надо, но писать заново не стоит, все равно получится тоже самое.
Там очень много мелочей которые чисто технические, без творчества, а прописать все их надо. В итоге ОЧЕНЬ много писанины, и не особо много славы....
Oleg_IT
Sep 19 2013, 08:23
Цитата(Golikov A. @ Sep 19 2013, 10:14)

я очень ревностно отношусь к использованию чужих библиотек, да и то выбрал путь использования чужого ТСР стэка. Да! прочитать его весь надо, что делает каждая строчка понять надо, но писать заново не стоит, все равно получится тоже самое.
Там очень много мелочей которые чисто технические, без творчества, а прописать все их надо. В итоге ОЧЕНЬ много писанины, и не особо много славы....
С одной стороны согласен, исппользование рутинных библиотек полезно, но с другой стороны держать всё в своих руках тоже не плохо.
Есть у меня код mip, mtcp... Может их буду пользовать.
IgorKossak
Sep 19 2013, 08:43
Цитата(Oleg_IT @ Sep 19 2013, 09:02)

Модератору
1. Может последний комментарий Golikov A. поместить в важные темы, новичкам это будет полезно.
2. Где репутация пользователей? Хочется кому-то плюсы поставить, а кому-то минусы

1. Можно зафиксировать вверху подфорума только всю тему целиком или выделить комментарий Golikov A в отдельную тему с фиксацией вверху, но не в этом подфоруме, а в более близком по тематике. Что скажете?
2. Движком форума не предусмотрена.
Oleg_IT
Sep 19 2013, 08:47
На диске 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 программаторе. Восстановлю, продолжу мучения

По поводу программатора (на его плате написано SLUE0700). Возможно, в дальнейшем исключить такую неприятность.
Цитата(IgorKossak @ Sep 19 2013, 12:43)

1. Можно зафиксировать вверху подфорума только всю тему целиком или выделить комментарий Golikov A в отдельную тему с фиксацией вверху, но не в этом подфоруме, а в более близком по тематике. Что скажете?
Наверное лучше поместить в отдельную тему, во всей теме много лишнего. Ссылочку от сарматъ тудаже.
IgorKossak
Sep 19 2013, 09:21
Цитата(Oleg_IT @ Sep 19 2013, 11:47)

Наверное лучше поместить в отдельную тему, во всей теме много лишнего. Ссылочку от сарматъ тудаже.
Выделил и закрепил
здесь пока в этом подфоруме.
vassabi
Sep 19 2013, 10:06
Цитата("IgorKossak")
2. Движком форума не предусмотрена.
А в профиле юзера линк "Оценить" разве не то?
IgorKossak
Sep 19 2013, 11:32
Цитата(vassabi @ Sep 19 2013, 13:06)

А в профиле юзера линк "Оценить" разве не то?
Далеко лезть. Не очевидно.
Oleg_IT
Sep 19 2013, 12:00
Цитата(IgorKossak @ Sep 19 2013, 13:21)

Выделил и закрепил
здесь пока в этом подфоруме.
Спасибо.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.