|
LWIP Как послать данные (tcp_write) по событию? |
|
|
|
Apr 29 2014, 09:49
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 22-12-05
Пользователь №: 12 577

|
Здравствуйте. Сделал на STM32F4 TCP/IP сервер c использованием lwip стека без OS. Все работает замечательно по типу запрос-ответ. Ответ процедурой tcp_write реализован как и требуется из callback. Но вот возникла необходимость посылать данные не по запросу, а по событию - по приходу строба на ножку. Делал ссылку на pcb во время коннекта клиента, и отправлял данные вне callback... Код struct tcp_pcb *Globalpcb; .... Globalpcb=pcb; ....
if(Globalpcb != NULL) { COUNT_TX=tcp_sndbuf(Globalpcb); if(COUNT_TX > Len) { err = tcp_write(Globalpcb, Data, Len, 1); tcp_output(Globalpcb); } } все работает..., но не долго - периодически стек падает. Вопрос как гармотно использовать tcp_write в данном случае чтобы не порушить стек? Кто сталкивался?
Сообщение отредактировал IgorKossak - Apr 29 2014, 11:34
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
|
|
|
|
|
 |
Ответов
|
Jun 11 2014, 05:54
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(Golikov A. @ Jun 11 2014, 12:03)  LwIP можно утоптать в работу на аж на 2 КБайтах РАМ, Она для того и сделана чтобы работать на супер маленьких AVR. Другое дело что она сможет на такой памяти потянуть... Больше вопрос в том сколько flash она сожрет Flash-а на этом проце нету, т.е. надо всё в RAM утоптать, вот и вопрос, сколько же код всех функций и прочего LwIP скушает? Цитата(scifi @ Jun 11 2014, 12:42)  У мну lwip занимает 21К байт памяти программ (Cortex-M3). Это Raw API, no OS. Полное приложение занимает 85К байт памяти программ. Это не считая константы, а их много: все веб-страницы там же. Приложение содержит много функционала. По моему опыту, 32К байт оперативной памяти для буферов lwip - это оч. комфортный объём, с которым веб интерфейс летатает. Наверняка и с 16К тоже будет летать. Вот и у меня на плате с Cortex-M3 вместе с проектом переработанным из примера Техаса под Cortex-M3 весь код прошивки уместился в 38 кБ. Попытка прикрутить LwIP к ARM9 (так же на основе примера Техаса, но для ARM9) не проходит, после комента кучи функций код занимает порядка 90 кБ, а если оставить как есть, то и в 128 кБ не помещается. Что-то, наверное, для либы можно оптимизировать?
|
|
|
|
|
Jun 11 2014, 06:42
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(scifi @ Jun 11 2014, 13:36)  Это я уже посмотрел. Как мне его включить или посмотреть включён ли он в моём проекте? Цитата(Golikov A. @ Jun 11 2014, 13:27)  по РАМ режут количество сокетов и их размеры для UDP и TCP по размеру библиотеки думаю очень должно помочь срезать весь дебаг, он там обширный и через printf, а эта библиотечка много кушает... Дебаг, если правильно понимаю, выключен Код #define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_OFF , сокеты так же Код #define LWIP_SOCKET 0
|
|
|
|
Сообщений в этой теме
js_slider LWIP Как послать данные (tcp_write) по событию? Apr 29 2014, 09:49 scifi Цитата(js_slider @ Apr 29 2014, 13:49) Но... Apr 29 2014, 10:44 js_slider Цитата(scifi @ Apr 29 2014, 13:44) Надеюс... Apr 29 2014, 11:53  scifi Цитата(js_slider @ Apr 29 2014, 15:53) Из... Apr 29 2014, 12:51  kolobok0 Цитата(js_slider @ Apr 29 2014, 15:53) Из... Apr 29 2014, 19:46   KnightIgor Цитата(kolobok0 @ Apr 29 2014, 20:46) поч... Apr 30 2014, 10:14 js_slider Благодарю всех откликнувшихся. Проблема решена. Де... May 3 2014, 16:58 TriAlexAnt Если можно, хочу задать вопрос в развитие данной т... May 7 2014, 12:26 scifi Цитата(TriAlexAnt @ May 7 2014, 16:26) Хо... May 7 2014, 13:50  TriAlexAnt Цитата(scifi @ May 7 2014, 16:50) HTTP не... May 7 2014, 14:04   scifi Цитата(TriAlexAnt @ May 7 2014, 18:04) А ... May 7 2014, 14:22  jcxz Цитата(scifi @ May 7 2014, 19:50) HTTP не... May 7 2014, 15:26 doom13 Хочу к своему проекту прикрутить либу LWIP, пока ч... May 19 2014, 08:09 scifi Цитата(doom13 @ May 19 2014, 16:19) Данна... May 19 2014, 08:40  doom13 Цитата(scifi @ May 19 2014, 15:50) Это си... May 19 2014, 08:47   scifi Цитата(doom13 @ May 19 2014, 16:57) Посов... May 19 2014, 08:54    doom13 Цитата(scifi @ May 19 2014, 16:04) Можно ... May 19 2014, 09:19 andrewlekar ЦитатаДанная либа не позволяет послать фрагментиро... May 20 2014, 00:39 doom13 Цитата(andrewlekar @ May 20 2014, 07:49) ... May 20 2014, 02:55 Golikov A. проблема в том что макс пакет около 1500 байт, 143... May 20 2014, 00:46 doom13 Цитата(Golikov A. @ May 20 2014, 07:56) п... May 20 2014, 03:34 Golikov A. А! ну у вас ошибка терминологии)
Если у вас е... May 20 2014, 03:04 Golikov A. странно это все для меня, ну если вы говорите.... ... May 20 2014, 03:39 doom13 В либе LwIP часто встречается термин PCB, если мож... Jun 3 2014, 09:18 scifi Цитата(doom13 @ Jun 3 2014, 17:28) В либе... Jun 3 2014, 09:36  doom13 Цитата(scifi @ Jun 3 2014, 16:46) Protoco... Jun 3 2014, 09:40 doom13 Нужна помощь, не могу понять, чего не хватает, что... Jun 4 2014, 04:41 Golikov A. как минимум надо дергать еще функции LwIP которые ... Jun 4 2014, 05:41 doom13 Цитата(Golikov A. @ Jun 4 2014, 12:51) ка... Jun 4 2014, 05:52  scifi Цитата(doom13 @ Jun 4 2014, 14:02) Почему... Jun 4 2014, 06:11   doom13 Цитата(scifi @ Jun 4 2014, 13:21) Что-то ... Jun 4 2014, 06:16    scifi Цитата(doom13 @ Jun 4 2014, 14:26) Я пока... Jun 4 2014, 06:47     doom13 Цитата(scifi @ Jun 4 2014, 13:57) Отправк... Jun 4 2014, 06:56      scifi Цитата(doom13 @ Jun 4 2014, 15:06) По иде... Jun 4 2014, 07:02       doom13 Цитата(scifi @ Jun 4 2014, 14:12)
Мы нав... Jun 4 2014, 07:14        scifi Цитата(doom13 @ Jun 4 2014, 15:24) Вы про... Jun 4 2014, 07:21 doom13 Короче передача заработала, проблема была в том, ч... Jun 4 2014, 08:13 scifi Цитата(doom13 @ Jun 4 2014, 16:23) Очеред... Jun 4 2014, 10:44  doom13 Цитата(scifi @ Jun 4 2014, 17:54) Что зна... Jun 4 2014, 13:33 doom13 WireShark для некоторых пакетов, отправляемых LwIP... Jun 5 2014, 02:35 doom13 Смотрю, что в ARP протоколе этих четырёх последних... Jun 5 2014, 03:48 jcxz ARP-кадр у вас вроде верный.
Не забыли, что пре пе... Jun 5 2014, 07:05  doom13 Цитата(jcxz @ Jun 5 2014, 14:15) ARP-кадр... Jun 5 2014, 07:32 doom13 Приветствую.
Разбирался с работой LwIP на плате с ... Jun 10 2014, 04:47 scifi Цитата(doom13 @ Jun 10 2014, 12:57) Можно... Jun 10 2014, 04:54  doom13 Цитата(scifi @ Jun 10 2014, 12:04)
Спаси... Jun 10 2014, 07:28 doom13 Возник вопрос, получится ли использовать LwIP и AM... Jun 11 2014, 03:11 scifi Цитата(doom13 @ Jun 11 2014, 11:21) Возни... Jun 11 2014, 05:32   doom13 Цитата(scifi @ Jun 11 2014, 13:07) Для на... Jun 11 2014, 05:59   doom13 Цитата(scifi @ Jun 11 2014, 13:07) Для на... Jun 11 2014, 09:25    scifi Цитата(doom13 @ Jun 11 2014, 17:35) Норма... Jun 11 2014, 09:29 Golikov A. по РАМ режут количество сокетов и их размеры для U... Jun 11 2014, 06:17
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|