Перейти к содержанию
    

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 minutes ago, mantech said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, aaarrr сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, jcxz said:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 minutes ago, Сергей Борщ said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...