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

mantech

Участник
  • Постов

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

  • Посещение

  • Победитель дней

    1

Весь контент mantech


  1. Нет, источник и получатель разные буферы по 8 мбайт, выровненные по 0х1000 первую не могу открыть, надо снова впн ставить, а во воторой что там делается, не понял, там походу в пределах вектора что-то вращают...
  2. Пробовал, все полосит и вообще мусор не экране, иногда в хардфаулт вылетает, видимо лезет за пределы экранного буфера. И не проверяли его вообще? ЗЫ. У вас случаем НЕОНовского варианта ротатора нет, чет в инете на эту тему совсем тускло... Нашел только на 90град и однобайтовая матрица.
  3. Вот интересно, т.е. чтобы работать автономно, ему нужен комп с ПО?)) И что за "автономность" получается? Автономный в моем понимании, подключил к компу, залил прошивку или неск. прошивок, отключил, принес к устройству, запитался от него или батарейки встроенной, нажал кнопочку "прошить", там что-то замигало, потом загорелось зеленое - ок или красное ошибка, вот это автономность.
  4. А откуда такая уверенность, что оно это может? Китаезы нарисовать на коробочке могут что угодно, как на заборе))) Вскройте его, может там обычный МК без доп памяти стоит и работает, как простой USB-JTAG... Типа такого - https://aliexpress.ru/item/1005001376821868.html?sku_id=12000016385698710
  5. Пока проверяю НЕОНовским копировщиком в экранную область Вы проверяли как поворачивается прямоугольник размером с весь экран? Если да, можете привести значения для вашего разрешения экрана для этих параметров? И какой режим экрана используете, у меня ABGR8888 sstride, ssizehw, tstride, tsizehw Единственное, чего я добился - это поворот квадратной области 1080х1080, полный прямоугольник не хочет ни в какую...
  6. Чет не едет этот поворот, может он вообще только квадратные объекты поворачивает? Сделал так: int G2D_ImageRotate(uint32_t *img_src,uint32_t *img_dest,uint16_t *width,uint16_t *height) { g2d_blt G2D_Rot; uint32_t w=width; uint32_t h=height; G2D_Rot.flag=G2D_BLT_ROTATE270; G2D_Rot.src_image.w=w;//Длина и ширина источника. G2D_Rot.src_image.h=h; G2D_Rot.src_rect.w=w; G2D_Rot.src_rect.h=h; G2D_Rot.src_image.format=G2D_FMT_ABGR_AVUY8888; G2D_Rot.src_image.pixel_seq=G2D_SEQ_NORMAL; G2D_Rot.src_image.addr[0]=(u32)(TMPIMG_BASE); //Y G2D_Rot.src_image.addr[1]=0; //UV G2D_Rot.src_rect.x=0; G2D_Rot.src_rect.y=0; G2D_Rot.dst_image.addr[0]=(u32)(SAVEFG_BASE); //Y G2D_Rot.dst_image.addr[1]=0; //UV G2D_Rot.dst_image.w=w; G2D_Rot.dst_image.h=h; G2D_Rot.dst_image.format=G2D_FMT_ABGR_AVUY8888; G2D_Rot.dst_image.pixel_seq=G2D_SEQ_NORMAL; G2D_Rot.dst_x=0;//координаты левого верхнего угла вывода изображения в финальном видеобуфере. G2D_Rot.dst_y=0; G2D_Rot.color=0x000000; G2D_Rot.alpha=0xFF; g2d_blit(&G2D_Rot); cache_flush_range((uint32_t)SAVEFG_BASE ,(uint32_t)(SAVEFG_BASE+0x800000)); //инвалидация кеша - декодер записал в память *width=h; *height=w; } Нужно просто заменить софтовый аналог: void ImageRotate(uint32_t *img_src,uint32_t *img_dest,uint16_t *width,uint16_t *height) { uint16_t i=0,q; uint32_t w; uint16_t lenx=*width; uint16_t leny=*height; uint32_t *src=(u32)(TMPIMG_BASE);//img_src; uint32_t *dests=(u32)SAVEFG_BASE;//img_dest; uint32_t *dest=dests; while (i<leny) { q=0; w=leny*(lenx-1); while (q<lenx) { q++;dest=dests+w;w=w-leny;*dest=*src; src++; } i++;dests=img_dest+i; } *width=leny; *height=lenx; } Жалко нет аналога на НЕОНе, каждый раз мозги выпаривать с этими корками... Задача просто повернуть на 270 картинку с исходным разрешением 1080х1920 в вид 1920х1080.
  7. Всем спасибо, буду разбираться. Кстати, этот g2d может ресайзинг делать из меньшей в большую и наоборот?
  8. Ну вот, а может там прорыв, не имеющий аналогов в мире... 20и летней давности)))))))
  9. Данные могут приходить от программного PNG декодера, поэтому сброс кэша нужен, и выходной поток тоже может быть использован в постобработке. Об этом я в курсе) Спасибо! Странно, но она работает))) Вот тут чет затупил, что это такое? first_dimension - это ширина источника, или что? Или это высота*ширину источника? Вот здесь, я так понял, что нужно поставить G2D_FMT_ABGR_AVUY8888, т.к. плоскость RGB ? Тут как понимаю 2 адреса из-за плоскости Y\C в RGB нужен только первый? Ну и вот тут бы пояснительную бригаду)))
  10. Не подскажет кто, нужно сделать поворот картинки на 90 град, программно получается медленно, а g2d чет не могу заставить это делать, что я делаю не так: int G2D_ImageRotate(uint16_t *width,uint16_t *height) { uint16_t w; uint32_t width1;uint32_t height1; *width=640; *height=640; G2D_BLT.flag=G2D_BLT_ROTATE90; G2D_BLT.src_image.w=*width; //размер исходного фрейма G2D_BLT.src_image.h=*height; G2D_BLT.src_image.format=G2D_FMT_ABGR_AVUY8888; G2D_BLT.src_image.pixel_seq=G2D_SEQ_NORMAL; G2D_BLT.src_rect.x=0; //координаты вырезки G2D_BLT.src_rect.y=0; G2D_BLT.src_rect.w=*width; //размер области вырезки G2D_BLT.src_rect.h=*height; G2D_BLT.dst_image.addr[1]=0; G2D_BLT.dst_image.addr[2]=0; G2D_BLT.dst_image.w=*width; //размер конечного фрейма (должен совпадать с размерами исходного фрейма для BLT) G2D_BLT.dst_image.h=*height; G2D_BLT.dst_image.format=G2D_FMT_ABGR_AVUY8888; G2D_BLT.dst_image.pixel_seq=G2D_SEQ_NORMAL; G2D_BLT.color=0x000000; G2D_BLT.alpha=0xFF; //Адреса откуда копировать для G2D G2D_BLT.src_image.addr[0]= (u32)TMPIMG_BASE; //Y яркостная составляющая //куда выводить //координаты G2D_BLT.dst_x=0; G2D_BLT.dst_y=0; G2D_BLT.dst_image.addr[0]=(u32)SAVEFG_BASE;// ПОЛУЧАТЕЛЬ !!! cache_flush_range((u32)TMPIMG_BASE ,(u32)(TMPIMG_BASE+TEMP_IMAGESIZE)); //инвалидация кеша - декодер записал в память vsync_flag=g2d_blit(&G2D_BLT); cache_flush_range((u32)SAVEFG_BASE ,(u32)(SAVEFG_BASE+TEMP_IMAGESIZE)); //инвалидация кеша - декодер записал в память /* w=*width; *width=*height; *height=w; */ }
  11. Наверно только для своих)) Если кто из здешних будет, киньте сюда тезисно, о чем хоть там вещали наши гении микроэлектроники))
  12. Повреждения бывают разные, может бэд сектора, или сломался разъем, а может к нему гранату привязали и бросили))))))
  13. Ммм да, мне кажется с этого и надо было начинать)))
  14. Ну да, по аналогии можно пробовать считать КПД человеческого мозга, жрет энергии он дофига, а результат работы, если смотреть на наше общество, скорее отрицательный))) Сам удивился подобной теме)))
  15. Так вроде задумано было, что линукс сидит только на кортексах, а ДСП работает в бареметал, ибо линукс на него не поставить в принципе, ну и это решает задачу реалтайма. Если б линукс можно было поставить только на одно ядро кортекса, а второе под реалтайм, тогда этот ДСП уже можно было отдать целиком под аудио или еще что... Ну а в случае отказа от линукса можно делать вообще что хочешь)))
  16. Ну можно еще просто спросить у того, кто уже расковырял, для этого и форум, чтоб не мариноваться каждому в "собственном соку"))) Ну да, по уму производитель должен предоставить еще и SDK для этого, чтоб не оставлять покупателя один на один с непонятным чудом, ИМХО... В свое время для IMX6 производитель предоставлял кроме линукса и вполне неплохой SDK бареметал - очень хороший пример заботы об потребителях из не только линуксового сообщества.
  17. Не вредно и не опасно, ЖК матрица - набор конденсаторов, пока они разряжаются можно наблюдать всякие эффекты... Выгорать там ничего не может, это просто пассивный конденсатор, заряд которого вызывает поляризацию молекул. Это не ОЛЕД, где действительно органика может деградировать. Была другая ситуация, в первых ЖК панелях при постоянном показе статической картинки происходила деградация ЖК, при одном и том же потенциале на пикселе, если это продолжалось недолго, то при "выключении" пикселя заряд спадал и работоспособность восстанавливалась, но если картинка висела долго, то повреждения становились фатальными. Затем сделали "финт ушами" и стали менять полярность с частотой кадров, чтобы такой эффект не повторялся.
  18. Если не сложно будет, попробуйте по быстродействию сравнить обычный код и vliw, будет интересно посмотреть...
  19. Там разве не через постоянно подключенный инет с сервера все разрешения выдаются? Без подключения работать не будет. Ну да, это конструктор, "кубики" складывает конкретный производитель.
  20. Это разве аллвиннер дает, а не экстенза или каденс? Если это официально, там разве нет каких-либо готовых примеров?
  21. Да, поэтому вот с этим связываться особо нет желания. Это все надо делать вручную, в эклипсе можно просто шелкнуть по ошибке и попадаешь в строку исходника, мелочь, а приятно))
  22. Это не удобно, в поиске ошибок где смотреть "выплев" компилятора? Как оттуда переходить к строке с ошибкой? Добавить новый файл или каталог опять ковырятся в батниках... Не защищаю всякие эклипсы и пр, ИАР был куда удобнее, там минимум настроек, но все только по-делу... ЗЫ. Кстати, смотрел что у вас в командной строке, там куча всяких непонятных параметров, почти как в эклипсе у меня, все выкинул, оставил только вот это "arm-none-eabi-gcc -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4" бинарник стал на 30кб меньше остальное не изменилось и стали норм инлайны неона компилироваться... Я подобное использовал только когда делал проги для АВРок на ассемблере, это было в конце 90х)) был dos-navigator и его редактор с подсветкой синтаксиса, после машинных кодов, а-ля Радио-86РК это было просто фантастикой, но после ИАРа я в такое больше "не играю"))))))
  23. Да все уже разобрался, версия тут не причем, просто в эклипсине куча всяких полей забита всяким мусором по умолчанию, почистил и заработало, другое дело, что PNG с неон-ускорением в либах не было, только jpeg, но как уже выяснил, аппаратный все-таки лучше... Если у кого есть ссылки на легкопортируемый png-neon декодер, буду признателен...
  24. У нас было так, если очень горит, но привезти могут через месяц и позже, направляли снабженца в Китай в командировку - так было быстрее)))
×
×
  • Создать...