реклама на сайте
подробности

 
 
> (Nios II + Ethernet) на DK-NIOS-2S60N, Кто уже покорил LAN91C111 ?
Волощенко
сообщение Jan 9 2008, 12:22
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377



Всем привет!
Задача, понятно, не новая. Нужно непрерывно передавать пакеты UDP напрямую из одной точки А в точку В через LAN91C111, который входит в DK-NIOS. У меня, конкретно, DK-NIOS-2S60N (точка А), а компьютер (точка В) на расстоянии не дальше 50 метров.
Склоняюсь писать свой soft для LAN91C111 на основе hard-примера, из серии NiosII_standard, т.е. не применяя uC/OS-II и NicheStack. Отмечу только, что как пример веб-сервера, DK-NIOS работает нормально, но разобраться в пакете программ uC/OS-II и NicheStack и применить их под свою задачу не удалось.
По этому стоя у начала этой дороги, хотел бы спросить, что ждет там впереди, у тех, кто уже по ней возвращается (оборот мною заимствован). То есть, хотел бы знать, как эти и подобные проблемы решали другие.
Спасибо за ответы.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Postoroniy_V
сообщение Jan 10 2008, 00:20
Сообщение #2


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(Волощенко @ Jan 9 2008, 21:22) *
Всем привет!
Задача, понятно, не новая. Нужно непрерывно передавать пакеты UDP напрямую из одной точки А в точку В через LAN91C111, который входит в DK-NIOS. У меня, конкретно, DK-NIOS-2S60N (точка А), а компьютер (точка В) на расстоянии не дальше 50 метров.
Склоняюсь писать свой soft для LAN91C111 на основе hard-примера, из серии NiosII_standard, т.е. не применяя uC/OS-II и NicheStack. Отмечу только, что как пример веб-сервера, DK-NIOS работает нормально, но разобраться в пакете программ uC/OS-II и NicheStack и применить их под свою задачу не удалось.
По этому стоя у начала этой дороги, хотел бы спросить, что ждет там впереди, у тех, кто уже по ней возвращается (оборот мною заимствован). То есть, хотел бы знать, как эти и подобные проблемы решали другие.
Спасибо за ответы.

Ну если с uC/OS-II и NicheStack у вас всё плохо было, то значит и с ecos(rtos +tcp stack любой другой) тоже будет плохо smile.gif
Если же у вас точки А и В не будут менять "своё положение" - IP адреса, подсеть и т.д., то всё хорошо
в этом случае стек думаю и не нужен будет. Но такое решение - "решение для одного дня"


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
Волощенко
сообщение Jan 10 2008, 07:30
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377



To Postoroniy_V
Спасибо за ответ. Ethernet-100 нужен однонаправленный, непрерывный с максимальной скоростью, в обратном же направлении он используется, но редко. До этого была плата с PCI-интерфейсом, а теперь нужно вынести все аналоговые узлы из системного блока, уж очень много там помех: АЦП на 20МГц и 8 разрядов уже не хватает, требуется АЦП 40МГц на 14 разрядов. Да и аппаратной ЦОС хватит на долго.
В проблеме Ethernet-100 смущает то, что, в тексте основного Verilog-модуля, в данном случае NiosII_stratixII_2s60_RoHS_standard.v, обнаруживается следующее. У контроллера LAN91C111 есть достаточно много входов управления (см. например, стр.2-13 в mnl_nios2_board_stratixII_2s60_rohs.pdf), но в списке входов-выходов основного модуля часть этих управляющих входов не значится, они как бы висят в воздухе, но управлять то ими все равно надо, если софт писать самому. В то же время готовые тестовые программы «Web-Server» и «Simple Socket Server» на данном DK-NIOS успешно проходят, но это при работе в uC/OS-II.
Думаю, LAN91C111 применяется во многих DK-NIOS, да и аналогичная задача с точками А и В уже наверно встречалась. Как и каким способом ее решили? Только ли с помощью OS и стеков?
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Jan 16 2008, 04:32
Сообщение #4


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(Волощенко @ Jan 10 2008, 16:30) *
To Postoroniy_V
Спасибо за ответ. Ethernet-100 нужен однонаправленный, непрерывный с максимальной скоростью, в обратном же направлении он используется, но редко. До этого была плата с PCI-интерфейсом, а теперь нужно вынести все аналоговые узлы из системного блока, уж очень много там помех: АЦП на 20МГц и 8 разрядов уже не хватает, требуется АЦП 40МГц на 14 разрядов. Да и аппаратной ЦОС хватит на долго.
В проблеме Ethernet-100 смущает то, что, в тексте основного Verilog-модуля, в данном случае NiosII_stratixII_2s60_RoHS_standard.v, обнаруживается следующее. У контроллера LAN91C111 есть достаточно много входов управления (см. например, стр.2-13 в mnl_nios2_board_stratixII_2s60_rohs.pdf), но в списке входов-выходов основного модуля часть этих управляющих входов не значится, они как бы висят в воздухе, но управлять то ими все равно надо, если софт писать самому. В то же время готовые тестовые программы «Web-Server» и «Simple Socket Server» на данном DK-NIOS успешно проходят, но это при работе в uC/OS-II.
Думаю, LAN91C111 применяется во многих DK-NIOS, да и аналогичная задача с точками А и В уже наверно встречалась. Как и каким способом ее решили? Только ли с помощью OS и стеков?

Ну хорошо что у Вас разрешилось с lan91c111 smile.gif
os и стеки дают "приятную гибкость" smile.gif, но мне не ясно почему ос и стек помешает отсылать raw пакеты, и тем более не ясно кто и что мешает использовать dma в ниосе?
Тоесть, если нет знакомства с осью и стеками и дровами для езера и т.д., я уже писал Вам что ваше решение - "решение для одного дня". И раз ещё проблема со сроками, то делайте безо всяких осей и стеков.
Как бы там ни было, Вам решать. smile.gif
Удачи в реализации!


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
Волощенко
сообщение Jan 16 2008, 06:48
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377



Цитата(Postoroniy_V @ Jan 16 2008, 08:32) *
... Как бы там ни было, Вам решать. smile.gif
Да, режил делать без осей и стеков, сейчас этим и занимаюсь.

Цитата(Postoroniy_V @ Jan 16 2008, 08:32) *
... и тем более не ясно кто и что мешает использовать dma в ниосе?
Не совсем ясна идея применения здесь dma.

Цитата(Postoroniy_V @ Jan 16 2008, 08:32) *
... но мне не ясно почему ос и стек помешает отсылать raw пакеты ...
Здесь пока колебания между raw и udp. Параллельно со мной работает программист на Delphi, пока он связывает напрямую два компа, один из которых потом заменит DK-NIOS. До этого он под виндой работал с raw, а сейчас перешел на udp. Обнаружил, что в последнем случае скорость стала выше раз в пять, т.е. сейчас для udp около 75Мбит для Eth-100, даже через LAN.

Что-то я уперся в проблему структурирования иерархического проекта на Си в среде Nios II 7.2 IDE. В других средах (IAR и Keil) для МК это проблемы не вызывало, а здесь головная боль. Т.е. есть Си - main и куча подчиненных *.c, которые записаны в main через #include. Далее их нужно подключить-определить в проекте еще и через IDE, и здесь все начинается. Хелры что-то не помогают. Особенно достают глобальные переменные, которые я хочу описать в отдельном файле. Кто-то сталкивался?
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Jan 16 2008, 07:17
Сообщение #6


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(Волощенко @ Jan 16 2008, 15:48) *
Да, режил делать без осей и стеков, сейчас этим и занимаюсь.

Не совсем ясна идея применения здесь dma.

Здесь пока колебания между raw и udp. Параллельно со мной работает программист на Delphi, пока он связывает напрямую два компа, один из которых потом заменит DK-NIOS. До этого он под виндой работал с raw, а сейчас перешел на udp. Обнаружил, что в последнем случае скорость стала выше раз в пять, т.е. сейчас для udp около 75Мбит для Eth-100, даже через LAN.

Что-то я уперся в проблему структурирования иерархического проекта на Си в среде Nios II 7.2 IDE. В других средах (IAR и Keil) для МК это проблемы не вызывало, а здесь головная боль. Т.е. есть Си - main и куча подчиненных *.c, которые записаны в main через #include. Далее их нужно подключить-определить в проекте еще и через IDE, и здесь все начинается. Хелры что-то не помогают. Особенно достают глобальные переменные, которые я хочу описать в отдельном файле. Кто-то сталкивался?

1)идея юзать ДМА в том чтобы передачей сырых пакетов из ОЗУ в ЛАН91Ц111 занимался не проц.
2) есть майн, хочется ещё 1 модуль в другом файле определить, создаём файл в ИДЕ, или если он есть переписываем в директорию и жмем рефреш, после это маке файл изменится. затем создает хедер файл с функциями те что определены в этом новом модуле....всё вроде просто и ясно и ОЧЕНЬ очевидно
я честно сказать даже не ожидал что это такая проблема - добавить новых модулей и обьявление новых глобальныз переменных


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
Волощенко
сообщение Mar 21 2008, 11:12
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377



Ситуация с непрерывной передачей UDP-пакетов с использованием LAN91C111 под управлением Nios II(fast) наконец-то разрешилась. Выдаю из DK-NIOS-2S60N, а комп принимает.
Пока достигнута средняя скорость около 21 Мбит/с, это для полезных данных (payload).
Драйвера на Си писал сам. Смущает то, что в LAN91C111 нельзя загружать в буфер следующий блок, пока не будет выдан текущий. Много времени тратится на вычисление CheckSum для UDP, наверное, придется использовать для нее аппаратную акселерацию, а также переключаться на DMA между памятью и LAN91C111.
Go to the top of the page
 
+Quote Post
Olegovich
сообщение Apr 2 2008, 08:02
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037



Цитата(Волощенко @ Mar 21 2008, 15:12) *
Ситуация с непрерывной передачей UDP-пакетов с использованием LAN91C111 под управлением Nios II(fast) наконец-то разрешилась. Выдаю из DK-NIOS-2S60N, а комп принимает.
Пока достигнута средняя скорость около 21 Мбит/с, это для полезных данных (payload).
Драйвера на Си писал сам. Смущает то, что в LAN91C111 нельзя загружать в буфер следующий блок, пока не будет выдан текущий. Много времени тратится на вычисление CheckSum для UDP, наверное, придется использовать для нее аппаратную акселерацию, а также переключаться на DMA между памятью и LAN91C111.

по ipv4 контрольная сумма для UDP необязательна, так что на ней можно сэкономить smile.gif
Go to the top of the page
 
+Quote Post
Волощенко
сообщение Apr 2 2008, 10:16
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377



Цитата(Olegovich @ Apr 2 2008, 11:02) *
по ipv4 контрольная сумма для UDP необязательна, так что на ней можно сэкономить smile.gif

Согласен, что можно, но по ТЗ требуется CheckSum считать...

Цитата(Postoroniy_V @ Mar 31 2008, 02:48) *
такой вот вопрос к вам возник - а какого тогда спрашивается нужно 8 кб для буффера, и накой черт нужен этот мму? если по вашему получается что запись следующего пакета в TX FIFO нельзя делать пока из MMU не будет полностью выдан текущий пакет, для этого и в "Enqueue packet into TX fifo" и в "Transmitting A Packet" в конце есть команда "Poll for TX INT" для ожидания флага конца выдачи.
и кстати пакет выдается не из мму
зачем все эти навороты? ведь можно было ограничиться 2 кб для передачитка и успокоится на этом

Не имею ничего против LAN91C111, но если бы возможность одновременной выдачи по TX и записи в FIFO при его 8кб существовала, то это очень важное качество было бы где-то описано. Не считаю себя новичком, чтобы не заметить такого (за плечами CS8900 и KSZ8841).
А по поводу CheckSum хочу применить Custom Insrtuctions (плюс еще DMA), а с освоением C2H придется подождать до лучших времен.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Волощенко   (Nios II + Ethernet) на DK-NIOS-2S60N   Jan 9 2008, 12:22
- - Aprox   Цитата(Волощенко @ Jan 10 2008, 10:30) To...   Jan 10 2008, 16:23
|- - Волощенко   To Aprox. Спасибо за ответ и свои соображения. Мы...   Jan 11 2008, 06:42
||- - Aprox   Цитата(Волощенко @ Jan 11 2008, 09:42) По...   Jan 11 2008, 12:56
|- - -=Vitaly=-   Цитата(Aprox @ Jan 10 2008, 18:23) Зачем ...   Jan 11 2008, 08:19
- - Postoroniy_V   Цитата(Волощенко @ Mar 21 2008, 20:12) Си...   Mar 28 2008, 04:10
|- - Волощенко   Цитата(Postoroniy_V @ Mar 28 2008, 08:10)...   Mar 28 2008, 08:23
|- - Postoroniy_V   Цитата(Волощенко @ Mar 28 2008, 17:23) Сп...   Mar 30 2008, 23:48
- - Postoroniy_V   Цитата(Волощенко @ Apr 2 2008, 19:16) ......   Apr 2 2008, 23:16


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 11:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01463 секунд с 7
ELECTRONIX ©2004-2016