Golikov 0 27 октября, 2013 Опубликовано 27 октября, 2013 · Жалоба сетевые настройки, забиваете фиксированный IP тот что у вас, маску подсети что определилась, шлюз и все такое... в сетевом устройстве все тоже самое, только айпи сдвигаете, ну типа у компьютера 192.168.1.10, а плате дайте 192.168.1.20 например. Пинганите для теста без платы, чтобы убедиться что кроме нее нет случайно такого же узла. Потом пингуйте плату. Только учтите что ответ на пинг так же часть стэка, и без стэка пинга не будет. у LwIP есть процедура начальной инициализации, в зависимости от режим с операционкой или без нее. Дальше надо постоянно вызывать функции обработки ТРС сообщений. Которые внутри себя будут вызывать callback функции с принятыми данными и событиями. Насчет буферизации, для ТСР определен пакет от 56 до 1500 скольких то байт. Но никто не говорит что данные должны идти единым пакетом, более того есть оборудования (например wifi) который любит дробить и менять порядок пакетам, не всегда, но есть экземпляры. ТСР берет на себя сбор и выстраивание пакетов в нужном порядке. Более того у него есть так называемое окно, которое при заполнении не дает посылать данные дальше пока старые не будут приняты и обработаны, так что через ТСР можно послать бесконечной длинны поток данных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 28 октября, 2013 Опубликовано 28 октября, 2013 · Жалоба Тогда на первом этапе создам новое сетевое подключение по вышеописанной методике. Пропингую адрес, предназначенный для платы. Перепрошью плату с новыми настройками и проверю железо на примере от терры. Если будет пинговаться, пойдем дальше. Нужна будет помощь в создании своего проекта на основе имеющегося железа + драйвера от ST + LwIP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 2 ноября, 2013 Опубликовано 2 ноября, 2013 · Жалоба Только собрался создать новое соединение. Вдруг выясняется, что у меня новый айпи. Есть идеи кроме как новую карточку воткнуть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
сарматъ 0 6 ноября, 2013 Опубликовано 6 ноября, 2013 · Жалоба Этот только в 5 появился. Хотя это только визард создания проэкта. Внутри проэкта всеравно появятся другие визады по настройке RTOS, Ethernet, ETH-PHY, протоколов и т.д. поставил 5 посмотрел и примеры и то что делает визард... что то можно использовать, но очень многое остается за кадром как понимаю в проприетарной закрытой части .либ например алгоримы пререинициализации phy & mac... может быть есть где то примеры хорошей работы с ethernet? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vlad_new 1 6 ноября, 2013 Опубликовано 6 ноября, 2013 (изменено) · Жалоба Все что вам может понадобится - открыто. На сайте keil выложено куча примеров и ответов на разные вопросы. К тому же вам предлагают вариант с lwip. Вот здесь все что вам может понадобится. extern LOCALM nlocalm[]; // Local Machine Settings extern LOCALM localm[]; // for DHCP redy extern u8 lhost_name[]; // Name extern u8 own_hw_adr[]; // MAC Переинициализация PHY не требуется. Все срабатывает "на лету". Ну если хочется то: init_TcpNet(); в любой момент. Все структуры описаны в Net_lib.c, который пристегнут к визорту Net_Config.c в самом конце. Что касается "хорошей работы" - не понятно, что вы имеете ввиду. Создается впечетление, что, как тут кто то сказал -"Ваша беда в том, что вы хотите, что бы кто то за вас все сделал". С езернетом такое не прокатит. Удачи. Изменено 6 ноября, 2013 пользователем vlad_new Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
сарматъ 0 7 ноября, 2013 Опубликовано 7 ноября, 2013 · Жалоба хм... возможно я чего то не нашел, но то что мне нужно я не видел, к примеру, как обрабатывается ситуация пропадания появления линка? зависания phy? зависания мак контроллера? так же не увидел как вообще происходит инициализация езернета - есть только функции в драйверах но вот откуда они вызываюстя? откуда то из закрытых недр ос? то что переинициализация в кейле не требуется и она осуществляется на лету это здорово, но я делаю в жсс и на сам кейл перепозлать не собираюсь теперь уже точно ибо это кот в мешке по большому счету, что и как там происходит тайна за семью печатями разные стеки мне не нужны, обработку пакетов делаю сам, интересует именно инициализация и поддержка в работоспособном состоянии именно это я назвал "примером хорошей работы" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 8 ноября, 2013 Опубликовано 8 ноября, 2013 · Жалоба Прошу подсказать как мне настроить вторую сетевую карту, которая будет использоваться для работы с девайсом? При этом первая (на борту) уже используется под интернет. В частности что писать в строчку "шлюз"? Хотелось бы чтоб компьютер имел адрес 192.168.0.1, а девайс пусть будет 192.168.0.2 . Спасибо. Поторопился с вопросом. Нашел тут для чайников: http://2bubna.com.ua/index.php/nastroyka-s...-kompyuter.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 9 ноября, 2013 Опубликовано 9 ноября, 2013 · Жалоба Железо проверил, все работает. Наконец-то можно приступить к вопросам непосредственно касающимся названия темы. У меня заведен проект в кейле, состоящий из драйвера от СТ, инициализации пинов и тактирования. Прикрепляю его к посту (может кто найдет время глянуть на что оно похоже). Собственно вопрос в том, можно ли как-то убедится в работоспособности уже имющейся программной части? Как мне теперь добавить LwIP чтоб пинговаться начало? Спасибо. Буду рад любой помощи и подсказкам. ETH107.ZIP Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 10 ноября, 2013 Опубликовано 10 ноября, 2013 · Жалоба самый первый тест это попихать данные в МАК контроллер, и поглядеть wireSharkom лезут ли они в сеть. Я не умничая фигачил Hello world, и видел шарком плохой ошибочный пакет с моими данными. в обратную сторону я что-то в свое время быстрого и простого теста не придумал, надо на уровень драйвера винды спускаться... Но я подумал в одну сторону работает и в другую будет. LwIP - хорошо бы примеры поглядеть. Стэк от кейла как то легче прикручивается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 11 ноября, 2013 Опубликовано 11 ноября, 2013 · Жалоба Пытался скачать стек от кейла но так и не увидел где ссылка. А что надежней, от кейла или lwip? А попытаться передавать это значит писать в буфер и как-то командовать отправку? С буфером понятно, но как пнуть на отправку? Я так понял, что буфер имеет несколько страниц, в частности 8 на прием, а 2 на передачу? В смысле в реализации от терры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
сарматъ 0 11 ноября, 2013 Опубликовано 11 ноября, 2013 · Жалоба готовые стеки не использовал, начинал с приема арп пакета потом училс его отправлять, делал на основе примера от терры.. или пром? короче там где кусок от обработки камеры однако если делаете в кейле то там как то все очень по своему Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 11 ноября, 2013 Опубликовано 11 ноября, 2013 · Жалоба Пытался скачать стек от кейла но так и не увидел где ссылка. А что надежней, от кейла или lwip? А попытаться передавать это значит писать в буфер и как-то командовать отправку? С буфером понятно, но как пнуть на отправку? Я так понял, что буфер имеет несколько страниц, в частности 8 на прием, а 2 на передачу? В смысле в реализации от терры. Да фиг его знает что надежнее В LwIP есть исходники, если что можно переписать Стэк от кейла - закрытый, библиотека и досвидос, если что не так, только им писать С другой стороны кеил уважаемая фирма, и как в их среде можно выбрать из списка процессор и сразу его характеристики ставятся, так и стэк как то очень легко сам цепляется. как пнуть начало передачи в СТМ что-то не знаю... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 11 ноября, 2013 Опубликовано 11 ноября, 2013 · Жалоба А стек кейловский где скачать и где пишут про "прикрутить" библиотеку? Очень уж интригует что легко сам цепляется. Я думаю попробовать и то и то. Жизнь покажет. Только благоразумней начинать с того, что попроще дабы снизить вероятность ошибок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vlad_new 1 11 ноября, 2013 Опубликовано 11 ноября, 2013 · Жалоба Не надо ничего качать. Библиотека уже у вас лежит вот где то там ..\ARM\RV31\LIB\TCP_CM3.lib В визарте Net_Config.c ставите галочки какие надо. К пректу надо подключить драйвер ETH соответствующий вашему модему. В мэйне запускаете инициализацию портов. Затем запускается init_TcpNet(); далее в цыкле мэин вызавается timer_poll(); и main_TcpNet(); и все. Все остальное делается при помощи callback функций, которые запускаются из библиотеки кейла. Все нужные callback функции сначала должны быть объявлены и проинициализированы. К примеру callback для приема и передачи пакетов по UDP выглядит так: udp_soc=udp_get_socket(0,UDP_OPT_SEND_CS|UDP_OPT_CHK_CS,udp_callback); // UDP socket if(udp_soc!= 0) udp_open(udp_soc, 1000); // Open UDP port 1000 for communication Вот так ( к примеру ) выглядит прием команды по UDP и отправка разных параметров в ответ: u16 udp_callback1 (u8 socket, u8 *remip, u16 remport, u8 *buf, u16 len) { u8 *send; char tbf[4]; u32 dp; if((!memcmp(buf,"GET",3))||(!memcmp(buf,"Get",3))||(!memcmp(buf,"get",3))) { if(DHCP_off) strcpy(tbf,"OFF"); else strcpy(tbf,"ON"); dp=*(u32*)&localm[0]; send = udp_get_buf(256); // Len 256 !!! len=sprintf((char*)send, "\nMAC[%02X:%02X:%02X:%02X:%02X:%02X]" "\nIP[%d.%d.%d.%d]" "\nMASK[%d.%d.%d.%d]" "\nGW[%d.%d.%d.%d]" "\nDNS[%d.%d.%d.%d]" "\nDHCP_%s" "\nIP_DHCP[%d.%d.%d.%d]" "\nNAME[%s]\n", own_hw_adr[0], own_hw_adr[1], own_hw_adr[2], own_hw_adr[3], own_hw_adr[4], own_hw_adr[5], nlocalm[0].IpAdr[0], nlocalm[0].IpAdr[1], nlocalm[0].IpAdr[2], nlocalm[0].IpAdr[3], nlocalm[0].NetMask[0], nlocalm[0].NetMask[1], nlocalm[0].NetMask[2], nlocalm[0].NetMask[3], nlocalm[0].DefGW[0], nlocalm[0].DefGW[1], nlocalm[0].DefGW[2], nlocalm[0].DefGW[3], nlocalm[0].PriDNS[0], nlocalm[0].PriDNS[1], nlocalm[0].PriDNS[2], nlocalm[0].PriDNS[3], tbf, dp&0xFF, (dp>>8)&0xFF, (dp>>16)&0xFF, (dp>>24)&0xFF, (char*)lhost_name); udp_send (udp_soc1, remip, 1000, send, len); } return (0); } В lwip точно так же все делается через callback функции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smk 0 11 ноября, 2013 Опубликовано 11 ноября, 2013 · Жалоба Добавил библиотеку и файл Net_Config.c; подключил Net_Config.h Пишет вот такую ошибку: F:\PROGRAM\Keil454\ARM\RL\TCPnet\Config\Net_Config.c(859): error: #20: identifier "ERR_MEM_LOCK" is undefined Что можно сделать? Спасибо. С этим разобрался. Добавил в: typedef enum { /* << Fatal System Error Codes >> */ ERR_MEM_ALLOC, ERR_MEM_FREE, ERR_MEM_CORRUPT, ERR_MEM_LOCK, //вот сюда ERR_UDP_ALLOC, ERR_TCP_ALLOC, ERR_TCP_STATE } ERROR_CODE; Теперь другие ошибки: eth107.axf: Error: L6218E: Undefined symbol init_ethernet (referred from at_ethernet.o). eth107.axf: Error: L6218E: Undefined symbol send_frame (referred from at_ethernet.o). С этим сложнее. Может кто подскажет как поступить? Net_lib.c нужно включать в проект? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться