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

    

svedach

Свой
  • Публикаций

    135
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о svedach

  • Звание
    Частый гость
  • День рождения 03.05.1982

Информация

  • Город
    Беларусь

Посетители профиля

1 175 просмотров профиля
  1. Добрый день всем! Столкнулся с непонятной проблемой: при передаче пакетов UDP и работе TCP (прием соединения, прием данных, отправка данных, закрытие соединения) начинают появляться ошибки в статистике кучи LWIP: бывает так: MEM HEAP avail: 4000000 used: FC007B80 max: FC009E00 err: 16 бывает так: MEM HEAP avail: 4000000 used: 2380 max: 3C80 err: 2 иногда так: MEM HEAP avail: 4000000 used: F8006D80 max: FC004B00 err: 0 при этом пакеты передаются и система вроде работает. Проект: Vivado 2018.2, LWIP 2.0.2, баре метал, из прерываний ничего моего не передается. За основу веб-сервера взят эхо-сервер, переделан... Но использование чистого эхо-сервера дает такие же результаты. Если работать только с UDP или только TCP, то проблем с кучей не возникает... Может кто сталкивался? Несколько дней пытаюсь отследить ошибку и никак... Буду благодарен за любую инфу.
  2. Аналогичная проблема. Проекты собираю в Vivado 2018.1 а шью флешку через 2017.1...
  3. Попробуйте, может подойдет - делал для себя... Counter_DEBOUNCE.v
  4. Да, действительно это так! Проглядел... Параметр PBUF_TRANSPORT ситуацию улучшил, но не решил... Скорость отправки стала более 300 МБит/с, но через секунд 5 вылетает на выделении памяти. Все-таки проблема в куче, вот только как ее мониторить? Я смог бы снизить поток, зная, что куча заканчивается... Может кто знает?
  5. Проблема рушилась костылем в виде usleep(20) после pbuf_free(SrvcMsg_pBuff). Это немного снизило поток (до 200 МБит/с), но проработало всю ночь... Рабочее предположение пока - непонятки с кучей. Только почему она портится, ведь usleep(20) - это простой цикл, система BareMetal...
  6. Проект на Zynq. Есть интенсивная отправка UDP пакетов, начало по внешней команде. После начала отправки, через 2-3 секунды, процессор уходит в DataAbortHandler, уходит на выполнении udp_send(pcbServiceSnd, SrvcMsg_pBuff);. Код отправки (фрагмент, т.к. код с xemacif_input(&NetItfs) и т.д. в другой части): case MSG_SLOT_TX_WAIT: //Укладываем в сообщение уникальный идентификатор *(uint16_t*)&SrvcMsgQueue[Idx].Message.RawData[1] = SrvcMsgCounter; SrvcMsg_pBuff = pbuf_alloc(PBUF_RAW, sizeof(SrvcMsgHeader_Type) + SrvcMsgQueue[Idx].Message.PayloadLen, PBUF_RAM); if (SrvcMsg_pBuff != NULL) { memcpy(SrvcMsg_pBuff->payload, SrvcMsgQueue[Idx].Message.RawData, sizeof(SrvcMsgHeader_Type) + SrvcMsgQueue[Idx].Message.PayloadLen); udp_send(pcbServiceSnd, SrvcMsg_pBuff); pbuf_free(SrvcMsg_pBuff); SrvcMsgCounter++; SrvcMsgQueue[Idx].Busy = (SrvcMsgQueue[Idx].Message.Header.OpFlags & OP_FLAGS_CONFIRM_BIT) ? MSG_SLOT_NOT_CONFIRMED : MSG_SLOT_FREE; SrvcMsgQueue[Idx].ReSendTimeout = MSG_RESEND_TIMEOUT; SrvcMsgQueue[Idx].ReSendCounter = 0; } break; Грешил на нехватку кучи, пробовал задавать в линкере 64МБайта и для LWIP 32МБайта, на время успешной отправки это не повлияло (в пределах погрешности...). Настройки LWIP (в виде картинки, так наверное нагляднее...): Может кто сталкивался, буду рад любой информации...
  7. Цитата(Грендайзер @ Feb 5 2018, 17:28) А если я принимаю такты на клоковую ногу? Разве BUFG не нужен (ясно, что сапр сам его воткнёт, но всё же)? Желателен.
  8. ТС. А как у Вас расположены входы и выходы проекта? Может они по всему периметру кристалла раскиданы? И по этому Плейсер раскидывает ресуры по всему кристаллу... Если внутрь модуля залезть не можете/нецелесообразно, то все-таки рекомендую ставить регистры между модулями... Существенно улучшит времянку. Можно попытаться еще мультипатч констрейны использовать...
  9. Может организовать дополнительные регистры на входах и выходах модулей...
  10. Может быть ТС просто повезло с некоторыми PLL? 80 кГц - это очень мало и они не должны работать на такой частоте...
  11. ТС, "Например первый ПЛЛ выдает какие-то герцы вместо килогерц", в Altera можно PLL-ом генерировать килогерцы? В Xilinx ниже 4 МГц вроде как нельзя...
  12. Давайте ответим человеку. Каждый свое мнение. Он посчитает вероятность исходя из ответов Отвечаем только ДА или НЕТ! ДА! Всех с наступающим Новым годом! выполнения констрейнов и соответсвия поведения проектов в симуляции и реальности!!!
  13. Странно, я пробовал плата<->комп, с несколькими компами! Вылетает в ассерт и все... Ставишь скорость принудительно - все ОК!
  14. Насколько я понимаю, автосогласование скорости до сих пор не работает для встроенного MAC? Или у меня одного проблема? Решением так и остается установка фиксированной скорости вручную? Или я может не прочитал чего-то нужного... Подскажите, пожалуйста...