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

"по 2) максимально быстро сумма считается компонентом с DMA (не sgdma, а именно компонент с Avalon-MM мастером). по идее, туда же можно прикрутить логику для работы с заголовками" - а нету ли примерчика как КС считать одновременно с передачей по DMA ?

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


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

Вылетаем на приеме с rc = -22

похоже на то, что данные не выровнены. попробуйте так:

    void* tx_data = (void*) ...; /* pointer to data to send */
    void* rx_buffer = (void*) ...; /* pointer to rx buffer */

 

а нету ли примерчика как КС считать одновременно с передачей по DMA ?

на альтере есть пример nios crc acceleration. не вижу проблем приделать к нему передачу по DMA

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


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

наконец-то дошли руки до альтеровского TSE. накидал проект NIOS+Ethernet и к нему драйвер. код, который приводили в этой ветке читать было лень, написал с нуля + кастрировал по возможности. что нужно, чтобы собрать и запустить: проверить в system.h имена/адреса компонентов, убрать Init_SDR (это для железа на моей плате), закомментировать alt_printf`ы (если нет jtag_uart). в network.c есть огрызок ARP+ICMP, так что проц может отвечать на пинги. пропажи/размножения пакетов не замечено.

int MAC_init() - инициализация

int tse_sgdmaRx_isr(void * context, alt_u32 irqnum) - обработчик прерывания на прием

int tse_mac_raw_send(char * data, unsigned data_bytes) - отсылка пакета (синхронная транзакция)

nios_eth.rar

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


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

vadimuzzz огромное спасибо! посмотрим внимательно!

 

Есть вопрос не совсем по TSE... с подобной проблемой ранее сталкивался dim99 - по шагам программа работает как надо, в "бегущем" режиме в памяти нули... но в моем случае проблемы уже с DMA... кеширование не использую, так что alt_dcache_flush не помогает... интересна природа явления...

ставлю контрольную точку за циклом передачи DMA после снятия сигнала bysy. и смотрю память - часть данных есть и где нужно, а часть данных нули (неизмененная)... через несколько шагов в низ по программе в памяти появляются пропавшие данные, но уже поздно... по шагам прохожу все данные оказываются на своих местах как нужно... в чем может быть фишка?

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


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

в чем может быть фишка?

трудно сказать, слишком неопределенно. если дело не в кэшах, то м.б. флаги оптимизации компилятора (наблюдал "интересные" вещи, если -Os включен). ну, а если проблема именно с DMA, то выбросить все лишнее и код смотреть. какой режим, память-память или с периферией?

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


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

Теперь и у меня встал вопрос Ethernet-a.

 

Есть своя отладочная плата с циклоном 2 и SDRAM, к ней можно прицепить все что угодно. Есть Nios2.

Нужен TCP порядка 16-32 сессий одновременно, поток данных небольшой (1 Мбит максимум).

 

Собственно, какой наикратчайший путь получения результата?

Т.е. какую выбрать микросхему, какую корку к ниосу прицепить и какую ось ставить чтобы у нее были драйвера к этой корке?

Есть ли накатанное решение или все с нуля пишут?

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


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

Т.е. какую выбрать микросхему, какую корку к ниосу прицепить и какую ось ставить чтобы у нее были драйвера к этой корке?

Есть ли накатанное решение или все с нуля пишут?

если ориентироваться NicheStack TCP/IP, то список поддерживаемых PHY можно посмотреть в драйверах. добавить свою микросхему - пару десятков строчек, если это простенькие чипы, а не монстры а-ля марвел.

 

если же хочется ось, то посмотрите тут:

http://www.alterawiki.com/wiki/UCOSII

http://www.alterawiki.com/wiki/ECos

http://www.alterawiki.com/wiki/FreeRTOS

http://www.alterawiki.com/wiki/UClinux

 

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


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

Почитал доки от альтеры, да все у них уже есть. Triple Speed Ethernet корка для работы с PHY (считай любым ибо стандартный интерфейс), для нее драйвера в BSP и NicheStack, завязанный на UCOS. Базовое решение есть, будем изучать.

Закажу DP83848C как первую микросхему из доки по TSE.

Очередной раз спасибо, ув. vadimuzz :)

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


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

Увы, TSE в мой дизайн уже не влезает (

С точки зрения стоимости выгоднее помещать MAC в плис (lan91c111 стоит почти тыщу, в то время как любой другой PHY порядка двух сотен).

С точки зрения простоты прицепляния по идее лучше внешний MAC. Есть ли альтернативы lan91c111 по цене? И если у PHY интерфейс стандартизирован, то как обстоит дело с внешним MAC?

У меня есть старый Ethernet модуль на основе Wiznet W5100 (там есть и PHY и MAC и TCP и даже PPPoE), можно ли к нему прицепить NicheStack? (просто надо больше чем 4 сокета визнетовских)

 

Или не морочать себе голову и развести плату с DP83848C и плисиной пожирнее?

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


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

наконец-то дошли руки до альтеровского TSE. накидал проект NIOS+Ethernet и к нему драйвер. код, который приводили в этой ветке читать было лень, написал с нуля + кастрировал по возможности. что нужно, чтобы собрать и запустить: проверить в system.h имена/адреса компонентов, убрать Init_SDR (это для железа на моей плате), закомментировать alt_printf`ы (если нет jtag_uart). в network.c есть огрызок ARP+ICMP, так что проц может отвечать на пинги. пропажи/размножения пакетов не замечено.

int MAC_init() - инициализация

int tse_sgdmaRx_isr(void * context, alt_u32 irqnum) - обработчик прерывания на прием

int tse_mac_raw_send(char * data, unsigned data_bytes) - отсылка пакета (синхронная транзакция)

 

Респект vadimuzzz за выложенный проект (я так понял это что то наподобие SDR приемника с Eth), очень помог в освении TSE.

Теперь вопрос ближе, ни кто не реализовывал Telnet server, без использования OS, на базе данного проекта. Я попытался... но чет не очень разобрался в протоколе Telnet... :laughing: Для анализа TCP\IP использую Wireshark, но наложение протокола Telnet на IP-TCP не понял. может кто подскажет где искать или кто делал или делает? Собственно нужен упрощенный телнет, с авторизацией и настройкой 5-10 параметров. Спасибо всем кто откликнется.

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


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

Увы, TSE в мой дизайн уже не влезает

TSE - это слишком неоднозначно, какую версию его вы пробовали? еще есть опенкоровский MAC. Сколько ресурсов доступно?

С точки зрения простоты прицепляния по идее лучше внешний MAC. Есть ли альтернативы lan91c111 по цене? И если у PHY интерфейс стандартизирован, то как обстоит дело с внешним MAC?

У меня есть старый Ethernet модуль на основе Wiznet W5100 (там есть и PHY и MAC и TCP и даже PPPoE), можно ли к нему прицепить NicheStack? (просто надо больше чем 4 сокета визнетовских)

я в свое время отказался от внешнего MAC именно из-за цены, ничего не нашел. даже сложилось мнение (личное), что внешние MAC`и в принципе непопулярны, потому и дороги. т.к. практически в любом семействе современных контроллеров/процессоров есть модификации с MAC на борту. ну и насчет простоты прицепляния поспорю - RMII - 6 проводов.

 

тут смотрели?

http://www.smsc.com/index.php?tid=145

http://www.smsc.com/index.php?tid=149

 

Теперь вопрос ближе, ни кто не реализовывал Telnet server, без использования OS, на базе данного проекта.

я видел, но не на базе этого проекта. поищите на alterawiki.com по superloop-что-то-там-сервер. смысл такой: в NicheStack есть возможность работать без оси (тот самый superloop). соответственно, для проекта будет достаточно собрать его с 2-мя либами: NicheStack и LibTSE. подозреваю, что это будет жрать довольно много памяти, как раз от этого я уходил, поэтому в том моем проекте код такой куцый.

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


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

А реализовать сервер Telnet, как у вас реализован был запрос ЭХО и АРП без использования NicheStack не пробовали (или может кто другой пробовал или сталкивался с подобной проблемой)? А то в принципе минималистически получилось бы... можно было бы написать свой клиент к своему своеобразному серверу... но хотелось бы сделать что-то ближе к стандартным вещам (типа стандартных протоколов)...

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


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

TSE - это слишком неоднозначно, какую версию его вы пробовали?

Я пока остановился на чтении документации ) там вроде как даже самый минимальный вариант больше 1500 LE требует.

Сколько ресурсов доступно?

; Device                            ; EP2C8Q208C8                                  ;
; Total logic elements              ; 6,484 / 8,256 ( 79 % )                       ;
;     Total combinational functions ; 5,844 / 8,256 ( 71 % )                       ;
;     Dedicated logic registers     ; 4,199 / 8,256 ( 51 % )                       ;
; Total registers                   ; 4267                                         ;
; Total pins                        ; 127 / 138 ( 92 % )                           ;
; Total memory bits                 ; 50,944 / 165,888 ( 31 % )                    ;
; Embedded Multiplier 9-bit elements; 4 / 36 ( 11 % )                              ;
; Total PLLs                        ; 1 / 2 ( 50 % )                               ;

Ну впрочем заниматься уталкиванием до предела не хочется для первой пробы - я для этого проекта могу и обойтись интерфейсом попроще, просто хотелось уже на нем попробовать Ethernet.

 

отказался от внешнего MAC именно из-за цены

Ну кстати те же W5100 и DP83848 стоят одинаково (~200р), хотя в первом все хардварное, даже ТСР, а второй только PHY.

Выглядит нелогично. Хотя мне важнее софтовая поддержка и время разработки ибо устройства практически единичные.

Мысль насчет контроллеров понял, PHY из них выносят насколько понимаю из-за потребления.

 

Собственно как всегда на рынке есть десятки решений, и информация о них может быть представлена одинаково красиво, но одно из них мейнстрим, а другие тупик - потому и спрашиваю что лучше осваивать )

 

будет жрать довольно много памяти, как раз от этого я уходил, поэтому в том моем проекте код такой куцый

Для onchip_mem делали? А какая плис?

 

avacs

А реализовать сервер Telnet без использования NicheStack

Ну вам же все-равно TCP нужен, так что без стека (хотя бы зарезанного) не получится.

Я когда использовал микрочиповский стек без оси то все по большому счету сводилось к периодическому вызову StackTask(), причем время между вызовами практически любое (ну, естественно, ограничивается объемами ходящей информации).

Полагаю что здесь что-то похожее.

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


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

Ну впрочем заниматься уталкиванием до предела не хочется для первой пробы - я для этого проекта могу и обойтись интерфейсом попроще, просто хотелось уже на нем попробовать Ethernet.

есть еще вариант - свой MAC написать, огрызок. как-нибудь займусь.

Ну кстати те же W5100 и DP83848 стоят одинаково (~200р), хотя в первом все хардварное, даже ТСР, а второй только PHY.

а w5100 может пакеты напрямую, минуя стек выдавать?

Для onchip_mem делали? А какая плис?

да, тогда была только внутренняя память, 3c25. в новом варианте уже есть sdram

 

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


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

свой MAC написать

Для меня пока проблемно счетчики с регистрами соединять в верилоге )

 

а w5100 может пакеты напрямую, минуя стек выдавать?

Да, может. MAC RAW mode.

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...