Jump to content

    

Nios2 + udp

Всем привет.

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

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

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

Edited by Nick_TxD

Share this post


Link to post
Share on other sites

2 Nick_TxD

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
Всем привет.

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

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

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

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

Share this post


Link to post
Share on other sites
..Что подразумевается под конфигурацией?

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

 

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

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

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

Share this post


Link to post
Share on other sites

Kuzmi4

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this