| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Проблем с Ethernet комуникацията между LPC17xx и персоналния http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=9345 |
Страница 1 от 2 |
| Автор: | breaniac [ Съб Сеп 17, 2011 10:16 am ] |
| Заглавие: | Проблем с Ethernet комуникацията между LPC17xx и персоналния |
Здравейте на всички! Проблемът ми е следният: опитвам се да направя трансфер на данни по Еthernet от PC-то към микроконтролер LPC17xx. Незнам кой точно регистър от паметта да изчета за да мога да видя това което пращам от РС-то дали е прието от контролерът (дали самият той го е получил). Ако някой е имал подобен проблем или има някаква идея как може да се направи този трансфер моля нека да се отзове! Връзката между двете устройства съм я осъществил, и работи(изтествал съм я с RUN конзолата на РС-то, cmd->ping xxx.xxx.x.xxx). За проектът използвам следният сорс код : http://www.standardics.nxp.com/suppo...c17xx.keil.zip в него има дирестория с име EMAC, в нея се намира и самият проект. Този проект е на Keil, но може да се зарежда и с други компилатори, понеже е писан на С. Ще ви бъда благодарен ако някой помогне, че съм го загазил с този проект!!!!!! |
|
| Автор: | ike [ Съб Сеп 17, 2011 10:31 am ] |
| Заглавие: | Re: Проблем с Ethernet комуникацията между LPC17xx и персона |
Коментирали сме го вече тук: viewtopic.php?f=16&t=9347&p=118552#p118552 и тук viewtopic.php?f=2&t=9346&p=118553#p118553 |
|
| Автор: | breaniac [ Съб Сеп 17, 2011 3:37 pm ] |
| Заглавие: | Re: Проблем с Ethernet комуникацията между LPC17xx и персона |
ok ike, poblikuvah q na nqkolko mesta za6toto neznam kude trqbva6e da se poblikuva. |
|
| Автор: | bongo_x2 [ Съб Сеп 17, 2011 3:55 pm ] |
| Заглавие: | Re: Проблем с Ethernet комуникацията между LPC17xx и персона |
Не че аз съм човекът който ще ти помогне ама не можах да ти отворя линка: "404 Not Found". |
|
| Автор: | miro_atc [ Съб Сеп 17, 2011 6:47 pm ] | |||||||||
| Заглавие: | Re: Проблем с Ethernet комуникацията между LPC17xx и персона | |||||||||
Трудно ще го видиш в регистри По мрежата постоянно текат най-различни пакети, които постъпват във фифо-то на етнернет контролера. В това фифо няма много място, така че софтуера по-точно мрежовия стек (вероятно uIP или lwIP) постоянно трябва да изчита и обработва. Ако искаш да се ориентираш какво става трябва да си настроиш стека да логва пакетите, които получава/праща. Специално за lwIP има много настройки, така че можеш по протоколи да филтрираш и т.н. Друг е въпросът как точно ще си направиш лога, така като те гледам едва ли си наясно... Има и друг малко по-лесен подход. Инсталирай си Wireshark на компютъра и виж как изглеждат нещата от гледна точка на РС-то. Не знам какви протоколи ползваш но за TCP/IP има прозорци и потвърждения, така че може да стане ясно какво е получено. Ако пък не може да се ориентираш сам с Wireshark-a по-добре зарежи проекта |
||||||||||
| Автор: | itso.t [ Съб Сеп 17, 2011 10:29 pm ] | |||||||||
| Заглавие: | Re: Проблем с Ethernet комуникацията между LPC17xx и персона | |||||||||
Знаещите виетнамски във форума са изключително малко. Комуникацията на кирилица би била значително по-лесна... |
||||||||||
| Автор: | breaniac [ Нед Сеп 18, 2011 2:00 pm ] | ||
| Заглавие: | Re: Проблем с Ethernet комуникацията между LPC17xx и персона | ||
Изпращам zip с кодът върху който работя. Вътре нещата са организирани по прост начин, поне така пише в дескръпшана на кодът от NXP. Ако може някой да му хвърли едно око и даде идея къде трябва да се пипне какво. А за проблемът с линка по-горе се извинявам. Колкото до това че не съм наясно с някои от нещата така е, понеже за първи път се опитвам да осъществя такъв вид комуникация. Но съм сигурен че кодът който ползвам ще свърши работа, понеже в чуждестранни форуми четох че точно този код от NXP са го използвали хората и са направили комуникацията която аз искам - да пращам данни от PC-то и да ги получавам от MCU-от. Проблемът беше че никой от пичовете не беше качил преработката на въпросният код, за да видя идеята за това как да получа изпратените данни от компютърът в микроконтролерът. Именно затова и пиша тук, ако някой е правил подобно нещо да помогне.
|
|||
| Автор: | breaniac [ Нед Сеп 18, 2011 2:13 pm ] |
| Заглавие: | Re: Проблем с Ethernet комуникацията между LPC17xx и персона |
Само едно пояснение към програмата и по конкретно за main() функцията. В нея идеята ми е да се глобализира променлива, масив или каквото стане в зависимост от особеността на комуникацията |
|
| Автор: | miro_atc [ Нед Сеп 18, 2011 8:12 pm ] |
| Заглавие: | Re: Проблем с Ethernet комуникацията между LPC17xx и персона |
този код е твърде окастрен.. Едва ли човек с опит би го използвал... съответно трудно ще намериш някой да ти помогне. За сметка на това пък кодът е толкова прост, че няма накъде повече (сигурно няма и 1% от нормален стек). Така че би трябвало да се справиш сам. Имаш една функция дето трябва да се вика постоянно, вътре една стейт машина... Сядай и го разгледай, нищо работа е! После го пусни и дебъгни да видиш какво става. И едва тогава като се сблъскаш с конкретен проблем пиши по форумите. В момента звучиш като блондинка просто... |
|
| Автор: | breaniac [ Пон Сеп 19, 2011 7:24 pm ] |
| Заглавие: | Re: Проблем с Ethernet комуникацията между LPC17xx и персона |
miro_act , блондинка или не незнам със сигурност, но знам че на тоя свят всички се раждаме малко или повече блондинки и с времето променяме пигментът на косата |
|
| Автор: | miro_atc [ Пон Сеп 19, 2011 9:37 pm ] |
| Заглавие: | Re: Проблем с Ethernet комуникацията между LPC17xx и персона |
За да ти дам насока трябва да имам престава какво точно правиш и как го правиш... Аз нито мога да гадая добре, нито имам излишно време. Повярвай ми ще е много по-лесно за всички ако си разделиш нещата на стъпки и да си говорим за конкретни детайли. Това, което успях да "отгатна" (пак повтарям не ми е това силата) е, че: 1) Вероятно не ползваш дебъгер щом клатиш светодиоди... Не знам, нямаш jtag или поради друга причина, но ще ти е много по-лесно с дебъгер (а и за нас ще е). 2) Все пак си успял някак си да компилира и заредиш кода и даже имаш ping. Браво! Това показва че голяма част от нещата работят. Данните ти се четат от правилните регистри и те не са ти проблем. За всеки случай се убеди, че пингваш твоето устройсво а не нещо друго... виж дали IP-адреса е същия, може да го промениш и пак да провериш с пинг дали стария адрес ще спре да отговаря.. 3) Трябва да уточниш протокол за комуникация. Възможности много, но тъй като ползваш пример за веб сървър предполагам най-лесно ще ти е чрез tcp/ip socket. Имай предвид че кодът който ползваш е страшно скопен. Не проверява нищо, нито кой порт, нито кой сокет т.е ако се пробваш два сокета да отвориш едновременно ще стане боза. Както и да е... предполагаме че устройството ти ще седи и ще слухти за сокет. За целта някой трябва да го отвори. Може да ползваш telnet. Пак се пуска с run, но по-добре първо да пуснеш конзола (run cmd) и в конзолата пишеш tenet xxx.xxx.x.xxx (там какъвто ти е адреса). По подразбиране телнет ползва порт 23, но така или иначе твоя код не проверява порта тъй че е все тая. Та след като се отвори сокета каквото напишеш на компютъра ще отива в устройството и каквото ти отговори ще го виждаш... Ако не си наясно с телнет може да се пробваш първо с кой да е веб сървър. Примерно пишеш: telnet www.google.com 80 това отваря сокет към 80-ти порт и ако успее ще ти излезе черен екран с маркер. Веб сървърите очакват HTTP заявки, като най-простата е: GET / HTTP/1.0 след това чукаш два пъти enter. И ако имаш късмет сървъра ще ти върне някаква HTML страничка или ще те пренасочи с 302. После обикновено сървъра затваря сокета, т.е телнета излиза... Сега, може да си поиграеш с твоето устройство... Първата стъпка е да конектне, т.е. да ти излезе екрана с маркера. Би трябвало да стане щом пинг работи. След това може да ти излезе още на първия клавиш или да забие... но да не гадаем сега. Вероятно ще трябва да си допишеш кода, защото си махнал важна част... По принцип данните идват на пакети. Не ми се гледа сега колко точно е скопен кода ти. Най-вероятно очаква всичко да дойде на един пакет, но ти така или иначе си махнал тая част от код. Значи ти викаш тая DoNetworkStuff() постоянно, тя си вади пакетите. Някои обработва (пинг примерно) други ще ги остави на теб да обработиш. За целта след всяко извикване може да проверяваш: if (SocketStatus & SOCK_DATA_AVAILABLE) и ако има данни да ги обработиш и след като ги обработиш трябва да освободиш буфера с TCPReleaseRxBuffer(); В примерния веб сървър както може да видиш директно освобождават. Изобщо не се интересуват какво са получили, приемат че е заявка и отговарят с някаква страничка... Не се прави така, но това е друга тема. Данните са ти в RxTCPBuffer ако не си забелязал... но имай предвид, че може да ги получаваш на части според това как ще се нацепят на пакети. Вече ти ще трябва да си решиш дали да ги сглобяваш и после как да ги обработваш. И ако нещо не работи следващия път описваш какво пробваш и какво се получава. Само "не работи" казват блондинките |
|
| Автор: | breaniac [ Вто Сеп 20, 2011 7:33 pm ] |
| Заглавие: | Re: Проблем с Ethernet комуникацията между LPC17xx и персона |
Ok, miro_act. Малко пъти съм ползвал форуми, и не съм наясно за това как се отбелязва самият проблем, затова съм го споменал накратко, без да се впускам в подробности, за което се извинявам. Колкото до дебъгер, да ползвам ULINK2, а контролерът е на развойната платка MCB1700. Нещата ги правя чрез JTAG, а за компилатор ползвам средата и възможностите на Keil uVision4. Това което ме притесняваше в кода, понеже съм го дръпнал от сайта на NXP,е че според мен не е имплементиран режимът за получаване на данните. Изпращането работи (по долу в main-a съм закоментирал една част) един HTTP сървър. Този сървър го зареждам с браузърът и всичко си е OK. Но ще видя да пробвам нещата за които говориш и ако има някакво развитие пак ще пиша. Благодаря за съветите и извинявайте ако съм сгафил с нещо. |
|
| Автор: | miro_atc [ Вто Сеп 20, 2011 9:16 pm ] |
| Заглавие: | Re: Проблем с Ethernet комуникацията между LPC17xx и персона |
щом браузърът работи значи и получаването работи. Те просто не гледат какво се получава, само че се получило нещо и хоп изпращат страница. И няма какво да се извиняваш, няма глупави въпроси - само глупави отговори |
|
| Автор: | miro_atc [ Сря Сеп 28, 2011 9:17 am ] |
| Заглавие: | Re: Проблем с Ethernet комуникацията между LPC17xx и персона |
Е браво, напредваш много Лошото е, че сега трябва да разгледам по-подробно тоя стек за да мога ти помогна. Но си мисля че няма нужда да слизаш на толкова ниско ниво. Със сигурност в тоя стек са спестени доста неща, но получаването в някаква форма би трябвало да бачка. Според мен трябва да проверяваш за SOCK_DATA_AVAILABLE и като се вдигне да видиш каква част от данните са ти дошли, да си ги вземеш и евентуално да продължиш да чакаш остатъка (ако чакаш още данни). Без да се занимаваш с фреймове... То ако трябва и това да правиш ще е прекалено. |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|