|
Spartan 6 + LwIP, как добиться максимальной скорости |
|
|
|
Apr 26 2013, 17:51
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Всем привет. Наконец то запустил LwIP на микроблайзе в спартане 6. Микроблайз работает на 100 МГц, мак контроллер МАК - лите, физика гигабитная, но зарезана на 100 МБит.
У меня получилось передача по ТСР со скоростью 15 Мбит. Это если слать с компьютера большой файл пакетами по 5000 байт. Если пакеты длинные (10-50Кбайт), то скорость падает до 7 МБит, а если коротенькими пакетиками то скорость падает до каких то очень мизирных значений. Шлю из C# через TcpClient. В Спартане реализован эхо сервер, шлю пакет потом принимаю его обратно, считаю время между отправкой и приемом. Также время смотрел в wireshark, там отмечается время когда прошел пакет в плис, и когда пошел обратно АКК. Скорость 15 МБит - реальность
Я так понимаю что основной затык в ядре микроблайз, LwIP работает из DDR, потому что после того как я его подключил проект вырос до каких то неприличных 120 КБайт, и во внутреннюю память не влез. DDR не двух портовый, а данные и программа лежат в одной памяти, кеши все включил, но lwIP активно создает буфера в куче.
Собственно вопрос что надо сделать чтобы получить те данные что заявлены в описании LwIP для мак лите, а именно 50 Мбит прием, 38 Мбит передача?
|
|
|
|
|
 |
Ответов
|
May 1 2013, 10:55
|
Местный
  
Группа: Свой
Сообщений: 203
Регистрация: 12-11-10
Из: Poland
Пользователь №: 60 842

|
Цитата(Golikov A. @ May 1 2013, 10:45)  Мне как раз интересно зачем делают шину АХИ лайт 50, почему не 100? Есть где то какие то описания? Есть какие то ограничения?
Просто у меня проект с 64 Кбайт кэша так и не запустился, падает после подключения кеша инструкций. С 32 Кбайтами кэша работает. Вот думаю может работает на переделе, и чуть увеличу нагрузку начнет сбоить... Не понимаю ни как проверить, ни как обеспечить запас... Потому, что не нужно  . Через AXI lite в типичных системах доступны регистры периферии операции с которыми сравнительно редкие. Также стоит учесть что, как правило, единственный мастер на шине - микроблейз, транзакции генерируются программно - например *(uint32_t* GPIO_REG_ADDR) = val; - и процессор просто не состоянии ее загрузить. Можно и 100 - но тогда больше вероятность (зависит от чипа и от размера проекта), что не сойдутся тайминги и придется добавлять промежуточные регистры (FULLY_REGISTERED или LIGHT_WEIGT вместо BYPASS) - а оно надо? Да и потребляет больше на 100. Кстати о таймингах - в процессе синтеза они анализируются для наихудшего случая (температура 85 и минимальное напряжения питания). Так что описанные симптомы указывают что таки не сошлись, а вы не заметили, либо внешние условия совсем плохи (напряжение питания, целостность сигналов). P.S. Если нужно только мигать LED раз в секунду - можно частоту шины установить 5Гц (насколько я помню одна транзакция столько около 5 тактов занимает) - и тогда в программе вообще не придется задержек делать - процессор 99.999999% времени будет в состоянии ожидания. P.P.S. Мне показалось у AXI-based систем довольно крутой "порог вхождения", приходилось и документацию от ARM читать (AXI = AMBA) и с ChipScope ночами сиживать... Зато потом - sky is the limit
Сообщение отредактировал akorud - May 1 2013, 11:12
|
|
|
|
|
May 1 2013, 11:36
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата(akorud @ May 1 2013, 14:55)  Потому, что не нужно  . Через AXI lite в типичных системах доступны регистры периферии операции с которыми сравнительно редкие. Также стоит учесть что, как правило, единственный мастер на шине - микроблейз, транзакции генерируются программно - например *(uint32_t* GPIO_REG_ADDR) = val; - и процессор просто не состоянии ее загрузить. Можно и 100 - но тогда больше вероятность (зависит от чипа и от размера проекта), что не сойдутся тайминги и придется добавлять промежуточные регистры (FULLY_REGISTERED или LIGHT_WEIGT вместо BYPASS) - а оно надо? Да и потребляет больше на 100. Кстати о таймингах - в процессе синтеза они анализируются для наихудшего случая (температура 85 и минимальное напряжения питания). Так что описанные симптомы указывают что таки не сошлись, а вы не заметили, либо внешние условия совсем плохи (напряжение питания, целостность сигналов). P.S. Если нужно только мигать LED раз в секунду - можно частоту шины установить 5Гц (насколько я помню одна транзакция столько около 5 тактов занимает) - и тогда в программе вообще не придется задержек делать - процессор 99.999999% времени будет в состоянии ожидания. P.P.S. Мне показалось у AXI-based систем довольно крутой "порог вхождения", приходилось и документацию от ARM читать (AXI = AMBA) и с ChipScope ночами сиживать... Зато потом - sky is the limit  Я планировал через акси лайт набивать фифо модуля, который потом будет данные наружу синхронно пихать по нескольким каналам. Но в целом и 50МГц мне подойдет... Только вот вопрос, передачи по акси лайт не блокирующая? То есть если я в цикле что-то пишу, я же так и буду стоять ждать? В операционной системе понятно что другие процессы будут выполняться, а без операционки я так в этом процессе и повисну? Причем я так понимаю записывая в память просто через указатель, у меня даже нет шансов во время ожиданий что-то еще поделать. Или я не прав? Тайминги я не то чтобы не заметил  Я просто даже не уверен что знаю где смотреть. Я в микроблайзе ваще по нулям и плисинами давно не занимался, а еще все так поменялось пока я армами занимался...  Был уверен что если частота задана, клок визард все клоки создал, то процессор просто не соберется если что-то не так с таймингами... Где посмотреть? Подскажите пожалуйста. У меня питальник всего 800 мА на 12 вольт. Вроде бы в стандартном варианте плисинка жрет по 12 вольтам (ну понятно что до плисины куча регуляторов и преобразователей) около 300 мА, и я думал что это с запасиком... Но регистры я добавил на шину что на память идет, это мне позволило стабильно запускать проект с 32 КБайтами кеша, хотя среда говорила что никаких бонусов не будет, и предлагала Light Wight вместо Full registered, но я не пошел на поводу  ... а вот 64 КБайта так и не пустились..... последние про порог вхождения если честно я ваще не понял  ... типа трудно разобраться, но потом быстро поедем? Меня не покидает чувство какого-то наколеночного продукта если честно. Проц - это проц, он сделан, описан, оттестирован, а тут шуршал шуршал, что-то собрал, оно как-то завелось, а вот как хрен знает... Все время сижу и думаю вот оно сейчас работает, а завтра? А если дождь пойдет?
|
|
|
|
Сообщений в этой теме
Golikov A. Spartan 6 + LwIP Apr 26 2013, 17:51 Methane Цитата(Golikov A. @ Apr 26 2013, 20:51) С... Apr 26 2013, 18:00 Golikov A. Спасибо капитан очевидность.
Вопрос к тем кто уже... Apr 27 2013, 04:37 Methane Цитата(Golikov A. @ Apr 27 2013, 07:37) С... Apr 27 2013, 04:47 Golikov A. 1514 байт по данным ваершарка.
на самом деле я ду... Apr 27 2013, 05:42 Methane Цитата(Golikov A. @ Apr 27 2013, 08:42) 1... Apr 27 2013, 05:55 Golikov A. Потому я и спрашиваю кто это делал.
Я уже крутил... Apr 27 2013, 06:44 Methane Цитата(Golikov A. @ Apr 27 2013, 09:44) П... Apr 27 2013, 06:49 Corvus Я делал Начните с xapp1026, цифры, что там заяв... Apr 27 2013, 14:18 Golikov A. я начал с MACLite без дма, без фифо, на акси лайте... Apr 27 2013, 17:09 Corvus Цитата(Golikov A. @ Apr 27 2013, 21:09) В... Apr 27 2013, 18:04 Golikov A. Спасибо погляжу.
Про инвалидате кэша это понятно... Apr 27 2013, 20:38 Corvus Цитата(Golikov A. @ Apr 28 2013, 00:38) п... Apr 28 2013, 05:13 Golikov A. То есть LWiP сам переходит на отложенное подтвержд... Apr 28 2013, 06:23 akorud Из опыта: DDR тут практически не влияет если кеш р... Apr 28 2013, 17:39 Methane Цитата(akorud @ Apr 28 2013, 20:39) В lwI... Apr 28 2013, 17:50 Golikov A. Цитата(akorud @ Apr 28 2013, 21:39) Из оп... Apr 28 2013, 18:15  alexPec А может чтобы исключить задержки подтверждения и о... Apr 28 2013, 19:59  akorud Цитата(Golikov A. @ Apr 28 2013, 20:15) Е... Apr 29 2013, 07:23 Golikov A. Вот кручу кэши,
Кэш данные на 2 Бандка ДДР(адреса... Apr 29 2013, 09:28 akorud Цитата(Golikov A. @ Apr 29 2013, 11:28) В... Apr 29 2013, 19:04 Golikov A. А что за плисины, какие частоты и сколько они в ит... Apr 29 2013, 20:43 akorud Цитата(Golikov A. @ Apr 29 2013, 22:43) А... Apr 30 2013, 21:06 Golikov A. я без операционки...
А почему частота системной ш... May 1 2013, 04:36 akorud Цитата(Golikov A. @ May 1 2013, 06:36) я ... May 1 2013, 08:09   akorud Цитата(Golikov A. @ May 1 2013, 13:36) Я ... May 1 2013, 11:59 Golikov A. А где времянку глянуть, это чей отчет? в суммари д... May 1 2013, 13:26 akorud Цитата(Golikov A. @ May 1 2013, 15:26) хо... May 1 2013, 18:41 Golikov A. с цинком не было готового модуля, а с разводкой ДД... May 1 2013, 19:06 akorud Цитата(Golikov A. @ May 1 2013, 21:06) с ... May 1 2013, 19:52  Golikov A. Цитата(akorud @ May 1 2013, 23:52) Zynq и... May 2 2013, 03:54   akorud Цитата(Golikov A. @ May 2 2013, 05:54) Бу... May 6 2013, 17:58 Golikov A. Спасибо большое!
у меня отличие что виктим ... May 6 2013, 18:23 akorud Цитата(Golikov A. @ May 6 2013, 20:23) Сп... May 6 2013, 18:59  Golikov A. Цитата(akorud @ May 6 2013, 22:59) 6S45-3... May 7 2013, 06:07   akorud Цитата(Golikov A. @ May 7 2013, 08:07) А ... May 7 2013, 09:49 Golikov A. то есть system.ucf вообще пуст? или он каким то ви... May 8 2013, 06:21 akorud Цитата(Golikov A. @ May 8 2013, 08:21) то... May 8 2013, 07:17 Golikov A. угум спасибо. Это успокаивает, я все думал может т... May 8 2013, 09:59 rsv Вообще говоря могучий констрейн на ddr нужен, и со... May 8 2013, 13:39 akorud Цитата(rsv @ May 8 2013, 15:39) Вообще го... May 8 2013, 15:08 Golikov A. про ДДР понятно, иначе оно и работать не будет. Та... May 9 2013, 04:55 akorud Цитата(Golikov A. @ May 9 2013, 06:55) # ... May 9 2013, 06:00 Golikov A. это маленький кусок.
Там акси и акси лайт
акси ла... May 9 2013, 17:50
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|