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

    

Nios2 + udp

Всем привет.

Столкнулся с проблемой нехватки скорости передачи пакетов udp из nios по GbE. В одном из гайдов altera в качестве решения проблемы было предложено увеличить кэш инструкций и данных в ниос до максимальных (64Кб). После данной манипуляции скорость передачи выросла в 3 раза и достигла нужной, но передается теперь всегда один и тот же пакет (udp заголовок меняется, а пользовательские данные нет).

Проект выглядит примерно так ADC -> fpga часть -> dual port on-chip memory-> nios -> ethernet.

Собственно вопрос, с чем может быть связана проблема. Dma не успевает?

Изменено пользователем Nick_TxD

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


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

2 Nick_TxD

телепаты в отпуске, потому было бы неплохо для начала узнать что именно вы используете для отправки udp пакетов - LWIP, NicheStack, .. - и в какой именно конфигурации.

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


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

NicheStack. Что подразумевается под конфигурацией?

Только начал заниматься ниосом

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


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

Столкнулся с проблемой нехватки скорости передачи пакетов udp из nios по GbE. В одном из гайдов altera в качестве решения проблемы было предложено увеличить кэш инструкций и данных в ниос до максимальных (64Кб). После данной манипуляции скорость передачи выросла в 3 раза и достигла нужной, но передается теперь всегда один и тот же пакет (udp заголовок меняется, а пользовательские данные нет).

Проект выглядит примерно так ADC -> fpga часть -> dual port on-chip memory-> nios -> ethernet.

Собственно вопрос, с чем может быть связана проблема. Dma не успевает?

Похоже, что весь пакет поместился в кэш данных, и всегда отправляется содержимое кэша, обращений к памяти не происходит.

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


Ссылка на сообщение
Поделиться на другие сайты
..Что подразумевается под конфигурацией?

Его можно собрать по разному, с разным функционалом - что то включить, что то выключить, ключевые слова: BTREE_ROUTES, ...

 

Касательно кеша - если у вас Nios2-f проц, то как вариант чтобы не переписывать код (нужно добавлять инвалидацию кэша) попробуйте сконфигурировать его без кэша данных.

Если Nios2-е проц, то там кеша вобще нет и значит проблема в чём то другом.

Детали ищите с помощью ключевого слова "alt_dcache_flush".

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


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

Kuzmi4

Без кэша отправляются пакеты без повторов, но с пропусками. Судя по всему nios не может отправлять такое количество пакетов.

Видимо стоит перейти к варианту с отправкой udp пакетов из fpga части, а прием управляющих tcp пакетов через nios.

Может кто-то поделиться подобным решением, либо направить в нужную сторону?

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


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

Просто режьте ваш стрим на пакеты, пакеты заворачиваете на проходе в udp.

посмотрите вот на этот пример.

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация