реклама на сайте
подробности

 
 
12 страниц V  « < 2 3 4 5 6 > »   
Reply to this topicStart new topic
> STM32F107 + RTL8201 + lwip-1.4.0, драйвер PHY для lwip
Golikov A.
сообщение Oct 27 2013, 12:14
Сообщение #46


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



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

Только учтите что ответ на пинг так же часть стэка, и без стэка пинга не будет.

у LwIP есть процедура начальной инициализации, в зависимости от режим с операционкой или без нее.

Дальше надо постоянно вызывать функции обработки ТРС сообщений. Которые внутри себя будут вызывать callback функции с принятыми данными и событиями.

Насчет буферизации, для ТСР определен пакет от 56 до 1500 скольких то байт. Но никто не говорит что данные должны идти единым пакетом, более того есть оборудования (например wifi) который любит дробить и менять порядок пакетам, не всегда, но есть экземпляры. ТСР берет на себя сбор и выстраивание пакетов в нужном порядке. Более того у него есть так называемое окно, которое при заполнении не дает посылать данные дальше пока старые не будут приняты и обработаны, так что через ТСР можно послать бесконечной длинны поток данных.



Go to the top of the page
 
+Quote Post
smk
сообщение Oct 28 2013, 08:02
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Тогда на первом этапе создам новое сетевое подключение по вышеописанной методике. Пропингую адрес, предназначенный для платы. Перепрошью плату с новыми настройками и проверю железо на примере от терры. Если будет пинговаться, пойдем дальше. Нужна будет помощь в создании своего проекта на основе имеющегося железа + драйвера от ST + LwIP.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
smk
сообщение Nov 2 2013, 05:59
Сообщение #48


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Только собрался создать новое соединение. Вдруг выясняется, что у меня новый айпи. Есть идеи кроме как новую карточку воткнуть?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Nov 6 2013, 10:15
Сообщение #49


Частый гость
**

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



Цитата(vlad_new @ Oct 23 2013, 22:16) *
Этот только в 5 появился. Хотя это только визард создания проэкта. Внутри проэкта всеравно появятся другие визады по настройке RTOS, Ethernet, ETH-PHY, протоколов и т.д.


поставил 5 посмотрел и примеры и то что делает визард...
что то можно использовать, но очень многое остается за кадром как понимаю в проприетарной закрытой части .либ
например алгоримы пререинициализации phy & mac...

может быть есть где то примеры хорошей работы с ethernet?
Go to the top of the page
 
+Quote Post
vlad_new
сообщение Nov 6 2013, 21:57
Сообщение #50


Местный
***

Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127



Все что вам может понадобится - открыто. На сайте 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 в самом конце.
Что касается "хорошей работы" - не понятно, что вы имеете ввиду. Создается впечетление, что, как тут кто то сказал -"Ваша беда в том, что вы хотите, что бы кто то за вас все сделал".
С езернетом такое не прокатит. Удачи.


Сообщение отредактировал vlad_new - Nov 6 2013, 22:04
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Nov 7 2013, 06:56
Сообщение #51


Частый гость
**

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



хм... возможно я чего то не нашел, но то что мне нужно я не видел, к примеру, как обрабатывается ситуация пропадания появления линка? зависания phy? зависания мак контроллера? так же не увидел как вообще происходит инициализация езернета - есть только функции в драйверах но вот откуда они вызываюстя? откуда то из закрытых недр ос? то что переинициализация в кейле не требуется и она осуществляется на лету это здорово, но я делаю в жсс и на сам кейл перепозлать не собираюсь теперь уже точно ибо это кот в мешке по большому счету, что и как там происходит тайна за семью печатями

разные стеки мне не нужны, обработку пакетов делаю сам, интересует именно инициализация и поддержка в работоспособном состоянии именно это я назвал "примером хорошей работы"
Go to the top of the page
 
+Quote Post
smk
сообщение Nov 8 2013, 12:51
Сообщение #52


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Прошу подсказать как мне настроить вторую сетевую карту, которая будет использоваться для работы с девайсом? При этом первая (на борту) уже используется под интернет. В частности что писать в строчку "шлюз"? Хотелось бы чтоб компьютер имел адрес 192.168.0.1, а девайс пусть будет 192.168.0.2 . Спасибо.

Поторопился с вопросом. Нашел тут для чайников: http://2bubna.com.ua/index.php/nastroyka-s...-kompyuter.html


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
smk
сообщение Nov 9 2013, 12:26
Сообщение #53


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Железо проверил, все работает. Наконец-то можно приступить к вопросам непосредственно касающимся названия темы. У меня заведен проект в кейле, состоящий из драйвера от СТ, инициализации пинов и тактирования. Прикрепляю его к посту (может кто найдет время глянуть на что оно похоже). Собственно вопрос в том, можно ли как-то убедится в работоспособности уже имющейся программной части? Как мне теперь добавить LwIP чтоб пинговаться начало? Спасибо. Буду рад любой помощи и подсказкам.

Прикрепленный файл  ETH107.ZIP ( 972 килобайт ) Кол-во скачиваний: 88


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Nov 10 2013, 21:37
Сообщение #54


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



самый первый тест это попихать данные в МАК контроллер, и поглядеть wireSharkom лезут ли они в сеть. Я не умничая фигачил Hello world, и видел шарком плохой ошибочный пакет с моими данными.

в обратную сторону я что-то в свое время быстрого и простого теста не придумал, надо на уровень драйвера винды спускаться... Но я подумал в одну сторону работает и в другую будет.

LwIP - хорошо бы примеры поглядеть. Стэк от кейла как то легче прикручивается.
Go to the top of the page
 
+Quote Post
smk
сообщение Nov 11 2013, 07:28
Сообщение #55


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Пытался скачать стек от кейла но так и не увидел где ссылка. А что надежней, от кейла или lwip? А попытаться передавать это значит писать в буфер и как-то командовать отправку? С буфером понятно, но как пнуть на отправку? Я так понял, что буфер имеет несколько страниц, в частности 8 на прием, а 2 на передачу? В смысле в реализации от терры.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Nov 11 2013, 11:28
Сообщение #56


Частый гость
**

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



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

однако если делаете в кейле то там как то все очень по своему
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Nov 11 2013, 12:50
Сообщение #57


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата(smk @ Nov 11 2013, 11:28) *
Пытался скачать стек от кейла но так и не увидел где ссылка. А что надежней, от кейла или lwip? А попытаться передавать это значит писать в буфер и как-то командовать отправку? С буфером понятно, но как пнуть на отправку? Я так понял, что буфер имеет несколько страниц, в частности 8 на прием, а 2 на передачу? В смысле в реализации от терры.


Да фиг его знает что надежнее
В LwIP есть исходники, если что можно переписать
Стэк от кейла - закрытый, библиотека и досвидос, если что не так, только им писать

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


как пнуть начало передачи в СТМ что-то не знаю...
Go to the top of the page
 
+Quote Post
smk
сообщение Nov 11 2013, 13:05
Сообщение #58


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



А стек кейловский где скачать и где пишут про "прикрутить" библиотеку? Очень уж интригует что легко сам цепляется. Я думаю попробовать и то и то. Жизнь покажет. Только благоразумней начинать с того, что попроще дабы снизить вероятность ошибок.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
vlad_new
сообщение Nov 11 2013, 13:53
Сообщение #59


Местный
***

Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127



Не надо ничего качать. Библиотека уже у вас лежит вот где то там ..\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 функции.
Go to the top of the page
 
+Quote Post
smk
сообщение Nov 11 2013, 17:08
Сообщение #60


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Добавил библиотеку и файл 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 нужно включать в проект?


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post

12 страниц V  « < 2 3 4 5 6 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 08:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01507 секунд с 7
ELECTRONIX ©2004-2016