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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> (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
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
Aprox
сообщение Jan 10 2008, 16:23
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(Волощенко @ Jan 10 2008, 10:30) *
To Postoroniy_V
Спасибо за ответ. Ethernet-100 нужен однонаправленный, непрерывный с максимальной скоростью, в обратном же направлении он используется, но редко.................
Думаю, LAN91C111 применяется во многих DK-NIOS, да и аналогичная задача с точками А и В уже наверно встречалась. Как и каким способом ее решили? Только ли с помощью OS и стеков?

У меня схожая задача и я тоже реально присматривался к DK-NIOS в качестве отправной точки для проектирования. Результаты неутешительные. Если с OS, стеком, да и вообще с NIOS, то конструкция становится похожей на быстродействующий микропроцессор с внешним MAC и PHY. Как показали испытания таких микропроцессоров, реально в 100Mbps сети по UDP удается предавать не быстрее 30Mbps. Много времени сжирает софт. Поэтому пришел к решению вести передачу данных RAW пакетами, без IP протоколов, стеков и OS. Hо в этом случае, FPGA и LAN9111 для 100Мbps не требуется. Вполне достаточно кристалла на базе ARM9 со встроенным MAC. Hапример, STR912FA за $14 может отсылать данные со скоростью 80Mbps с использованием RAW пакетов. Если же в нем использовать IP стек, OS, короче стандартный вариант, то получите по UDP не более 30Mbps. Т.е. вполне реальная альтернатива FPGA c NIOS. Зачем тогда, спрашивается, городить огород на FPGA?
Go to the top of the page
 
+Quote Post
Волощенко
сообщение Jan 11 2008, 06:42
Сообщение #5


Местный
***

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



To Aprox.
Спасибо за ответ и свои соображения. Мы тоже долго блуждали по поводу выбора архитектуры комплекса, в конце-концов остановились на упомянутом DK-NIOS, а он еще будет работать в связке с LM3S6965 Ethernet Evaluation Kits http://www.luminarymicro.com/products/kits.html Вместе они будут вести первичную обработку, а с противоположной стороны будет несколько компьютеров для вторичной обработки. Почему именно DK-NIOS, потому, что там, в FPGA нужно будет размещать еще много аппаратной ЦОС. А выбор в пользу покупки уже готовых плат связан со слабой конструкторской базой, да и время поджимает. Да, цены этих плат 1000 и 100 баксов, соответственно.
По поводу RAW пакетов, это как я понимаю чистые Ethernet пакеты и работа на MAC-уровне с собственными программами?
По поводу LAN91C111 дело сдвинулось, обнаружил, что внутри DK-NIOS этот контроллер включен по схеме ISA-Bus, и самое главное, что при обращении к нему, нужно к базовому адресу LAN91C111_BASE прибавлять смешение 0x0300 (основная особенность ISA). Жаль, потерял на это несколько дней.
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение Jan 11 2008, 08:19
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Цитата(Aprox @ Jan 10 2008, 18:23) *
Зачем тогда, спрашивается, городить огород на FPGA?

У меня тоже схожая задача правда я пока не могу решить делать с НИОСом, Микроблейзом или еще как-нибудь. Желание использовать FPGA а не Микрик обусловлено тем, что надо кроме выдачи данных по езернет делать еще кучу всякой работы и при этом иметь макисмальную гибкость. А для конечного устройства микрик наверное лучше будет и дешевле smile.gif
Go to the top of the page
 
+Quote Post
Aprox
сообщение Jan 11 2008, 12:56
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(Волощенко @ Jan 11 2008, 09:42) *
По поводу RAW пакетов, это как я понимаю чистые Ethernet пакеты и работа на MAC-уровне с собственными программами?


Да, в предельно простом случае это чистые Ethernet пакеты. Адресация ведется по физическим адресам. Для LAN9111 никаких особых софтов не потребуется, надо лишь правильно записывать его регистры подсовывать данные. Hа стороне компьютера для виндов потребуется, например, библиотека WinPCap. Для линукса ничего не потребуется.
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Jan 16 2008, 04:32
Сообщение #8


МедвеД Инженер 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
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 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
Сообщение #10


МедвеД Инженер 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
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 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
Postoroniy_V
сообщение Mar 28 2008, 04:10
Сообщение #12


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

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



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

имхо плохой у вас драйвер :-)
тут читайте как сделать хороший(PDF!)
http://www.smsc.com/main/anpdf/an96.pdf
страница 63 Enqueue packet into TX fifo


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
Волощенко
сообщение Mar 28 2008, 08:23
Сообщение #13


Местный
***

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



Цитата(Postoroniy_V @ Mar 28 2008, 08:10) *
имхо плохой у вас драйвер :-)
тут читайте как сделать хороший(PDF!)
http://www.smsc.com/main/anpdf/an96.pdf
страница 63 Enqueue packet into TX fifo

Спасибо за ответ!
Я уже использовал в работе документ an96.pdf. Мне не ясно, зачем Вы указали на этот пример "Enqueue packet into TX fifo" на стр.63, ведь он описывается в главе 9.10, посвященной конкретно серии тестов для MMU.
Я отталкивался от главы 9.3 "Transmitting A Packet", что на стр.59.
Весь вопрос в том, что запись следующего пакета в TX FIFO нельзя делать пока из MMU не будет полностью выдан текущий пакет, для этого и в "Enqueue packet into TX fifo" и в "Transmitting A Packet" в конце есть команда "Poll for TX INT" для ожидания флага конца выдачи.
Почему-то мне нигде не попадалась описание-объяснение процесса одновременной выдачи и загрузки в FIFO для LAN91C111. Это не возможно?
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Mar 30 2008, 23:48
Сообщение #14


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

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



Цитата(Волощенко @ Mar 28 2008, 17:23) *
Спасибо за ответ!
Я уже использовал в работе документ an96.pdf. Мне не ясно, зачем Вы указали на этот пример "Enqueue packet into TX fifo" на стр.63, ведь он описывается в главе 9.10, посвященной конкретно серии тестов для MMU.
Я отталкивался от главы 9.3 "Transmitting A Packet", что на стр.59.
Весь вопрос в том, что запись следующего пакета в TX FIFO нельзя делать пока из MMU не будет полностью выдан текущий пакет, для этого и в "Enqueue packet into TX fifo" и в "Transmitting A Packet" в конце есть команда "Poll for TX INT" для ожидания флага конца выдачи.
Почему-то мне нигде не попадалась описание-объяснение процесса одновременной выдачи и загрузки в FIFO для LAN91C111. Это не возможно?

такой вот вопрос к вам возник - а какого тогда спрашивается нужно 8 кб для буффера, и накой черт нужен этот мму? если по вашему получается
что запись следующего пакета в TX FIFO нельзя делать пока из MMU не будет полностью выдан текущий пакет, для этого и в "Enqueue packet into TX fifo" и в "Transmitting A Packet" в конце есть команда "Poll for TX INT" для ожидания флага конца выдачи.
и кстати пакет выдается не из мму smile.gif
зачем все эти навороты? smile.gif ведь можно было ограничиться 2 кб для передачитка и успокоится на этом biggrin.gif


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
Olegovich
сообщение Apr 2 2008, 08:02
Сообщение #15


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

Группа: Свой
Сообщений: 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

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

 


RSS Текстовая версия Сейчас: 14th July 2025 - 21:08
Рейтинг@Mail.ru


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