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

    

AntLip

Участник
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
  • День рождения 11.10.1991

Информация

  • Город
    Беларусь
  1. Добрый день! Как и в примере, необходимо настроить синтезатор частоты ( я использую PicoZed FMC Carrier Gen2), но как это сделать я совсем не понимаю, даже не знаю где посмотреть и что почитать. Может кто-нибудь может подсказать дорогу в этом вопросе. И я дальше разбирался как настроить phy, расковырял lwip до его инициализации. Только заметил, что если есть ядро PCS/PMA то инициализация идет по другой ветке, но все останавливается на phy autonegatination.(Проверял на другой борде) как это правильно необходимо делать. Спасибо большое за внимание и помощь)))!!!!
  2. Доброго дня, Уважаемые форумчане! Может кто-либо перенаправлял ethernet с eth0(1), в части PS на модуль sfp (xapp 1082) на zynq. Есть проект, на меди все работает, но очень надо перевести его на оптику. После прочтения документации на ядро (при помощи которого должна и произойти эта магия), а так же вышеупомянутой документации (и только, так как самим проектом еще не разжился) представление весьма смутное. В примере эхо-сервера sfp настраивается с помощью I2C, у меня работать не хочет. Подскажите, пожалуйста, как этого зверя настроить. Спасибо большое за внимание и помощь)))!!!!
  3. Приведенный выще код для ethernet и есть из примера lwip. Обработку для приема я переписал. У меня было похожее с UART, но (как ни странно) проблема ушла тогда, когда я поставил объявление прерываний UART между инициализацией прерываний ethernet и их разрешением, дальше разбираться я не стал. Если ставить в то же место инициализацию для VDMA, прерывания VDMA работают до момента прихода первого сообщения из ethernet, дальше прерывания от VDMA перестают работать, но сообщения от ethernet обрабатываются нормально. Я не до конца понимаю одну вещь, как мне кажется. Перед разрешением прерываний в ethernet, настраивается XScuTimer,а после к нему привязывают XPAR_SCUGIC_SINGLE_DEVICE_ID. И инициализация с помощью XScuGic_DeviceInitialize, а не XScuTimer_LookupConfig -> XScuTimer_CfgInitialize. Может в этом есть нюанс. Ниже прикреплен Design Спасибо за помощь!
  4. 1. Приоритеты выставить можно, более того, я это делал. все равно при приходе первого сообщения из ethernet работа VDMA прерывается. 2. Да, флаг прерывания я сбрасываю. Спасибо за ответ.
  5. Добрый день! Делаю проект на Zynq, в проекте есть два VDMA(инициализированы и настроены по примеру в SDK) и ethernet (lwip, echo сервер ). Проблема заключается в том, что когда настроены и разрешены прерывания VDMA, не работает прием пакетов ethernet ( а очень надо!)) ). Решение у меня есть, но оно мне не нравиться, так как картинка идет менее качественная (субъективно видео чуть запаздывает). Я отключаю прерывания на VDMA и обрабатываю все в главном цикле. (Мне кажется, что это неправильно) Подскажите как правильно настроить прерывания в проекте, что бы все работало вместе. Код настройки прерываний VDMA int SetupIntrSystem(XAxiVdma *AxiVdmaPtr, u16 WriteIntrId) { int Status; XScuGic *IntcInstancePtr = &Intc; /* Instance of the Interrupt Controller */ XScuGic_Config *IntcConfig; IntcConfig = XScuGic_LookupConfig(INTC_DEVICE_ID); if (NULL == IntcConfig) { return XST_FAILURE; } Status = XScuGic_CfgInitialize(IntcInstancePtr, IntcConfig, IntcConfig->CpuBaseAddress); if (Status != XST_SUCCESS) { return XST_FAILURE; } XScuGic_SetPriorityTriggerType(IntcInstancePtr, WriteIntrId, 0xA0, 0x3); Status = XScuGic_Connect(IntcInstancePtr, WriteIntrId, (Xil_InterruptHandler)XAxiVdma_WriteIntrHandler, AxiVdmaPtr); if (Status != XST_SUCCESS) { return Status; } XScuGic_Enable(IntcInstancePtr, WriteIntrId); Xil_ExceptionInit(); Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_IRQ_INT, (Xil_ExceptionHandler)XScuGic_InterruptHandler, IntcInstancePtr); Xil_ExceptionEnable(); XAxiVdma_SetCallBack(&AxiVdma_1, XAXIVDMA_HANDLER_GENERAL, WriteCallBack_1, (void *)&AxiVdma_1, XAXIVDMA_WRITE); XAxiVdma_SetCallBack(&AxiVdma_1, XAXIVDMA_HANDLER_ERROR, WriteErrorCallBack_1, (void *)&AxiVdma_1, XAXIVDMA_WRITE); XAxiVdma_IntrEnable(&AxiVdma_1, XAXIVDMA_IXR_ALL_MASK, XAXIVDMA_WRITE); } Прерывания для ethernet Xil_ExceptionInit(); XScuGic_DeviceInitialize(INTC_DEVICE_ID); Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_IRQ_INT, (Xil_ExceptionHandler)XScuGic_DeviceInterruptHandler, (void *)INTC_DEVICE_ID); XScuGic_RegisterHandler(INTC_BASE_ADDR, TIMER_IRPT_INTR, (Xil_ExceptionHandler)timer_callback, (void *)&TimerInstance); XScuGic_EnableIntr(INTC_DIST_BASE_ADDR, TIMER_IRPT_INTR); Xil_ExceptionEnableMask(XIL_EXCEPTION_IRQ); XScuTimer_EnableInterrupt(&TimerInstance); XScuTimer_Start(&TimerInstance); Так же я настаивал прерывания при помощи других функций, по примеру VDMA. Может кто сказать разницу в этих способах настройки прерываний? Как сделать что бы все работало по прерываниям? Спасибо за внимание!
  6. Может кто-нибудь может подсказать как правильно выбрать частоту работы дизайна если известна частота работы камеры?
  7. Я нашел ошибку, дело было в неправильных синхросигналах
  8. А с памятью все ровно творится что-то неладное, запись в память при помощи vdma. Почему-то записывает в десять ячеек памяти вместо одной Может знает кто как это исправить?
  9. Что-то я не пойму в чем ошибся дальше. 1. На выходе vdma я вижу только 256 пикселей КодXil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xA4, 640*16); в настройках vdma я поменял значение HSIZE( прочитал что может необходимо в битах, хотя есть большие сомнения), после этого стало 256, а ранее на выходе было только 16 пикселей. Как это исправить, где я накосячил, подскажите пожалуйста? 2. Еще есть вопрос о том, возможно ли передать с помощью vdma по WDATA передать не так как у меня получается (дублируется один и тот же пиксель, видно на изображении, 01000100 ), а так, что бы или бит на транзакцию, а лучше два бита на транзакцию? 3. Про память,я так понимаю, вести речь пока не стоит, ведь там тоже твориться неладное. Значение HSIZE умножил на 40, тогда получилось что передает все 640 пикселов
  10. Вот, у меня получилось. Данные преодолели vdma, только теперь надо разобраться как они правильно должны лечь в память. Спасибо Большое ilyaprok за помощь.
  11. А, до меня, кажется, дошло. Спасибо
  12. Посидел я над документацией ядер, над vivado, ila и прочими штуками. Понял что ничего не понял. Так как информация, данные, через Video In to AXI4-Stream проходят, а сигналы TLAST и TUSER - нет, почему? Не понимаю! Вот так выглядит времянка на выходе вышеупомянутого ядра ну и design_1_i/axi_vdma_0_M_AXI_S2MM_WDATA[31:0] затесался Вот так сигналы синхронизации заходят в Video In to AXI4-Stream Вот так выглядит тестбенч на приблуду, которая иммитирует камеру Ну,собственно, проект (сигналы на vblank и hblank поданы тут единожды, в других вариациях они вообще не подключены, разницы я не заметил) А понять кто виноват и что делать не могу, то ли сигналы неправильно подобраны, то ли чего-то не хватает. Может я смотрю в ila и вижу то, что плохой ученик в книге Подскажите пожалуйста как это довести до ума!
  13. Цитатанадо вместо XPAR_AXI_VDMA_3_BASEADDR юзать XPAR_AXI_VDMA_0_BASEADDR. прочитайте кусок памяти командой чтения из предыдущего сообщения Я это сразу поправил, спасибо. А по сигналам... я сейчас решил посмотреть до конца, как и что формируется Спасибо за информацию. т.е. после инициализации должна начаться передача данных, правильно я понимаю? Посмотрел. Не формируются на выходе tlast и tuser нету, а tvalid и tready всегда в единице.
  14. Спасибо за ответы. Я наконец разобрался с ila (по крайней мере, мне удалось увидеть то, что я хотел). Я заметил ошибку и исправил ее, вы были правы, я не выдал там необходимые сигналы. Теперь информация доходит до vdma. Однако, я хотел бы поинтересоваться Цитата, дальше смотреть, работает ли сам VDMA, как это проверить, посмотреть данные на выходе S2MM?
  15. Я смотрел это видео, я только не понял как он работал с XMD console, это он симулировал работу SDK? Напрямую писал и читал из памяти?