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

    

winniethepooh

Участник
  • Публикаций

    68
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о winniethepooh

  • Звание
    Участник

Контакты

  • Сайт
    http://
  • ICQ
    0
  1. логика работы драйвера построена так что бы не отвлекать проц(используя dma разместить пакеты. ну вы должны это знать сами..) у меня тоже проблема с медленной обработкой пакетов, я думаю это в уровне между стеком и пользовательским приложением(обработка совтовых прерываний, переключение из режима ядра в режим пользователя). я потратил много времени просматривая движение пакетов вверх по стеку и видел что они передаются без задержки. На уровне где расположены сокеты перестал работат printk и посмотреть где точно происходит задержка и потеря пакетов не удалось. я предполагаю учитывая тяжеловесность слоя сокетов (я использую ARM Cortex-M3 144 Мгц, 16Мб ОЗУ uClinux) что задержка происходит в этом слое.
  2. ничего не знаю про тест openwrt, но сомневаюсь что он может показать в каком слое стека застревают пакеты.
  3. почему вы думаете драйвер нагружает а не сокет например?
  4. посмотрите https://people.cs.clemson.edu/~westall/853/notes/
  5. если я не ошибаюсь, сетевое устройство может убрать ip заголовок из пакета(зависит от настоек NIC).
  6. вставлять заголовки может как ядра так и сетевое устройство..
  7. да это интересно, что то в пакетах делает их невидимыми для ОС? может можно сравнить с пакетами от другой системы..
  8. сбрасывать пакеты сетевое устройство может по причине отсутствия свободных дескрипторов. попробуйте изменить кол-во дескрипторов, например #define DEF_RXDESC_NUM (100 вместо 4 если память позволяет..) если все пакеты теряются на нижнем уровне то это должно помочь.
  9. В DMA входящие пакеты складывает? drop для пакетов не происходит? должна быть функция опроса типа RXDESC receive (RECEIVE DESCRIPTOR) читающая статусы имеющихся дескрипторов пакетов на предмет передачи их наверх (netif_rx) есть выходные данные у этой функции?
  10. почему старый драйвер не хочет работать с другим ядром я не могу предположить, но есть вероятно другие драйвера для нового ядра и можно посмотреть в чем отличия..,(изменился номер прерывания, не так регистрируется обработчик, не конфликтует ли с другим устройством т.к. общее прерывание) кажется была у linux возможность посмотреть на каких устройствах какие номера обработчиков зарегистрированы..
  11. непроинициализировано (неправвильно или неисправно) сетевое устройство, как бы самое простое предположение..
  12. я вообще не специалист по сетевому стеку, но насколько я понимаю сетевое устройство дергает хардверным прерыванием далее начинает работать драйвер сетевого ус-ва и для начала я бы посмотрел обрабатываются ли прерывания и что на входе у драйвера. Полинг (если я не ошибаюсь запускают софтверные прерывания когда в кольцевом буфере появляются данные от сетевого устройства). Вставить в код printf там где вызываются обработчики. Простите если не въехал в "тему" я просто пытаюсь сказать как бы я действовал на вашем месте.
  13. web server arm cortex m3 nommu

    около 40 американских денег, по сроку ничего не могу сказать
  14. web server arm cortex m3 nommu

    в данный момент присматриваюсь к i.MX 6SoloX Processors. одно из преимуществ наличие двух процессоров в одном корпусе. на cortex a-9 можно запустить линукс, на cortex m-4 freertos. мне кажется это интересной особенностью данного устройства. а вы что думаете?