Jump to content

    
Sign in to follow this  
mantech

LwIP Корректное завершение

Recommended Posts

1 час назад, GeorgK сказал:

Может, при сборке загнать все изменяемые переменные стека в отдельный сегмент, и целиком обнулять его при необходимости?

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

Отсюда вопрос, в чем принципиальное отличие uIP от LwIP? 

Сразу скажу, DNS,DHCP, SNMP не используются, Нужна работа с TCP пакетами, и верхний уровень - HTTP, FTP, Telnet, modbus-tcp

Share this post


Link to post
Share on other sites
3 минуты назад, mantech сказал:

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

Ну вот. Я сразу ведь писал.  :wink:

Только так и делать, да плюс - стартап полноценный и инит периферии в начальное состояние. Т.е. - что я писал в первом предложении.

3 минуты назад, mantech сказал:

Сразу скажу, DNS,DHCP, SNMP не используются, Нужна работа с TCP пакетами, и верхний уровень - HTTP, FTP, Telnet, modbus-tcp

Имхо - такое и самый "убогий" стек потянет. Хотя думаю что и для него для перезапуска нужен реинит периферии и нормальный стартап.  :unknw:

Share this post


Link to post
Share on other sites
23 minutes ago, mantech said:

Неа, не получится.

Не может не получиться. Если восстановлены RW и ZI-данные, то перезапуск ничем не отличается от обычного старта.

Share this post


Link to post
Share on other sites
1 минуту назад, aaarrr сказал:

Не может не получиться. Если восстановлены RW и ZI-данные, то перезапуск ничем не отличается от обычного старта.

Обычный старт выполняется на reset-state значениях в регистрах периферии. И в регистрах внешнего чипа Phy ethernet.

Share this post


Link to post
Share on other sites
1 minute ago, jcxz said:

Обычный старт выполняется на reset-state значениях в регистрах периферии. И в регистрах внешнего чипа Phy ethernet.

Речь о стеке LwIP, периферийные драйверы к нему уж никак не относятся.

Но разве что-то мешает сбросить MAC и PHY, и перезагрузить драйверы аналогичным образом?

Share this post


Link to post
Share on other sites

там еще обрабатываемые пакеты могут в общей куче (heap) находиться. Как-то их оттуда вычленить и освободить память будет очень непросто.

Share this post


Link to post
Share on other sites
15 minutes ago, Сергей Борщ said:

там еще обрабатываемые пакеты могут в общей куче (heap) находиться. Как-то их оттуда вычленить и освободить память будет очень непросто.

Тут или не ипользовать общую кучу в lwIP (по умолчанию так, если не ошибаюсь), или добавить обертку над системными malloc/free для стека.

Share this post


Link to post
Share on other sites

У lwIP есть свой менеджер памяти (это настраивается в заголовочном файле), ему просто выделяется область памяти, которой он будет распоряжаться. Так что в этой части вопросов возникнуть не должно. А если есть многозадачность, почему бы тогда не прибивать эту задачу и пускать заново? А что касается низкого уровня, ему нужны только функции "принять пакет" и "послать пакет", так что их можно и не трогать - ну придёт из очереди старый пакет и будет проигнорирован. А uIP многозадачность вообще не нужна, но возможно именно поэтому мне не удалось подружить его с телнетом - консоль выполнения команд всё-таки логично делать как отдельный поток.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this