Jump to content

    

GeorgK

Участник
  • Content Count

    58
  • Joined

  • Last visited

Community Reputation

0 Обычный

About GeorgK

  • Rank
    Участник
  • Birthday 07/27/1968

Информация

  • Город
    Москва

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. LWIP Socket API блокировка задачи

    Возможно, что-то не так с платформенно-зависимыми настройками, завязанными на многопоточность, мьютексы, почтовые ящики? Состояние портов получал MIIшными запросами к "физике" коммутатора, проблемы были только в результате ошибок в самодельном переключателе контекстов и при слишком частом их переключении (около 100000 раз в секунду). А так HTTP, DNS, DHCP, Telnet, NetConsole нормально работали. Делал по примерами из документации к lwIP.
  2. Кстати, в lwIP есть свой менеджер памяти - самостоятельно раздаёт память из выделенной области. Или это именно он глючный? Я-то с проблемами со стороны стека не сталкивался, возможно, из-за слишком щадящих условий.
  3. Вы совершенно правы, когда мне захотелось реализовать в загрузчике сетевую консоль (telnet, netconsole), именно по этой же причине пришлось переходить на lwIP - следующее поколение uIP и прикручивать многопоточность.
  4. Извиняюсь заранее, если это прописные истины.
  5. Там разве не по адресам-портам в том числе исходящим пакеты определяются? И по уникальному номеру соединения TCP. насколько помню, без проблем делал несколько "серверов" - DHCP, DNS, httpd.
  6. Первое, что приходит на ум - согласованный фильтр. Тем более на ПЛИС хорошо параллелятся обработки с разным сдвигом фазы.
  7. У lwIP есть свой менеджер памяти (это настраивается в заголовочном файле), ему просто выделяется область памяти, которой он будет распоряжаться. Так что в этой части вопросов возникнуть не должно. А если есть многозадачность, почему бы тогда не прибивать эту задачу и пускать заново? А что касается низкого уровня, ему нужны только функции "принять пакет" и "послать пакет", так что их можно и не трогать - ну придёт из очереди старый пакет и будет проигнорирован. А uIP многозадачность вообще не нужна, но возможно именно поэтому мне не удалось подружить его с телнетом - консоль выполнения команд всё-таки логично делать как отдельный поток.
  8. Может, при сборке загнать все изменяемые переменные стека в отдельный сегмент, и целиком обнулять его при необходимости?
  9. Может, они имели в виду, что не надо подливать жидкий азот, система замкнутого цикла типа холодильника с компрессором, который постепенно вырабатывает свой ресурс.
  10. На крайний случай можно создавать инклюженный фрагмент с макросом инициализации каким-нибудь скриптовым языком в процессе сборки.
  11. Почему не существует? Насколько помню, сводится к решению системы интегральных уравнений. При наличии аналитически заданного якобиана может сводиться к задаче поиска минимума (максимума) функции нескольких переменных. В форме физической реализации на лазере использовалось для восстановления расфокусированного изображения.
  12. Домашний/бюджетный/на попробовать вариант - Puhui T-890 у китайцев.
  13. Ещё апдейт был до 18.1.1.
  14. работа функции strcat

    Если нет itoa, можно взять простую реализацию: char *simple_itoa(ulong i) { /* 21 digits plus null terminator, good for 64-bit or smaller ints */ static char local[22]; char *p = &local[21]; *p-- = '\0'; do { *p-- = '0' + i % 10; i /= 10; } while (i > 0); return p + 1; } Если для простоты добавить в simple_itoa добавление в конец точки с запятой, останется только strcat-ом добавлять результаты работы simple_itoa к строке-буферу, начальное значение которой "W0;". Если числа точно в диапазоне 0-99 то можно ещё проще.
  15. Не скажу за все среды, но если сборка идёт с использованием командной строки LD, то можно использовать для него "скрипты" - там можно выводить в глобальные переменные константы-адреса секций и результаты операций над ними, можно добавлять новые секции и модифицировать существующие. Можно даже в два прохода компоновку делать - на первом допустим размер пользовательской секции задан нулевой, а на втором - как результат разбора файла от первого этапа с учётом получившихся размеров/адресов.