repstosw 18 13 июля, 2022 Опубликовано 13 июля, 2022 (изменено) · Жалоба On 7/13/2022 at 5:39 AM, sasamy said: ниразу не видел чтобы кто-то софтовые унтайлеры использовал Используют: https://github.com/milosladni/sunxi-tvin2jpeg_h264/blob/master/tiled_yuv.S Но скорее из-за лени или не знания, что есть аппаратный детайлизатор в VE или DE. Про него писал здесь, работает намного быстрее, чем написанный на сях: --- Хочу вывести видеобуфер на TV. У T113-s3 есть TCON_TV и TVE - какой из них надо использовать, чтобы выводить композитный видео-сигнал на TV с видеобуфера ? Без дополнительных микросхем - сразу с ножки TVOUT0... Изменено 13 июля, 2022 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ozelot 9 13 июля, 2022 Опубликовано 13 июля, 2022 · Жалоба On 7/12/2022 at 11:47 PM, sasamy said: я не про фантазии говорил - напридумывать всякой мути можно, только не нужно :) какой смысл делать SoC в котором нельзя отобразить декодированные данные, DE для того и нужен чтобы аппаратно их обрабатывать В f1c преобразование тайлов может делать DEFE-модуль, основной функцией которого является аппаратное масштабирование. Его "выхлоп" записывается либо в память, либо сразу отдается на вход DEBE-модуля, задачей которого является альфа блендинг и цветокоррекция. Сейчас я из этой цепочки исключал DEFE, поэтому детайлизацию делал программно (но даже так производительности с головой хватает, чтобы декодировать пару mjpeg, mpeg потоков). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 0 13 июля, 2022 Опубликовано 13 июля, 2022 · Жалоба On 7/13/2022 at 4:15 AM, repstosw said: Используют: https://github.com/milosladni/sunxi-tvin2jpeg_h264/blob/master/tiled_yuv.S использовали, когда раскуривали sedarx бинари алвинера на алвинеровском ядре. На майнстримном ядре c v4l2 media codec и DRM/KMS в этом нет смысла https://linux-sunxi.org/Cedrus там используют dma-buf для обмена буферами между разными IP на уровне ядра, никто там ничего на CPU не делает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 13 июля, 2022 Опубликовано 13 июля, 2022 · Жалоба В 12.07.2022 в 23:47, sasamy сказал: DE для того и нужен чтобы аппаратно их обрабатывать. Только вот DE в данном случае именно для отображения, а не обработки, как g2d... В 12.07.2022 в 23:47, sasamy сказал: я не про фантазии говорил А в чем тут фантазия - это реальная задача. Или то, что написал можно как-то по-другому делать? Интересно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 0 13 июля, 2022 Опубликовано 13 июля, 2022 · Жалоба On 7/13/2022 at 9:14 AM, mantech said: Только вот DE в данном случае именно для отображения, а не обработки, как g2d... чтобы отобразить обрабатывать не надо ? разница только в том что при отображении IP блоки объединяются в конвеер через локальные буферы а не через внешнюю память On 7/13/2022 at 9:14 AM, mantech said: Или то, что написал можно как-то по-другому делать? и что вам мешает не использовать аппаратный видео декодер для одной маленькой картинки, кроме фантазий Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 13 июля, 2022 Опубликовано 13 июля, 2022 · Жалоба В 13.07.2022 в 09:29, sasamy сказал: разница только в том что при отображении поток идет напрямую во видеопамять, обработка подразумевает операции буфер-буфер, для последующего использования. В 13.07.2022 в 09:29, sasamy сказал: и что вам мешает не использовать аппаратный видео декодер мне ничего не мешает, кроме быстродействия, т.к. 800х600 - это уже не такая уж и маленькая картинка, плюс она может быть не одна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 13 июля, 2022 Опубликовано 13 июля, 2022 · Жалоба On 7/13/2022 at 11:15 AM, repstosw said: Хочу вывести видеобуфер на TV. У T113-s3 есть TCON_TV и TVE - какой из них надо использовать, чтобы выводить композитный видео-сигнал на TV с видеобуфера ? Без дополнительных микросхем - сразу с ножки TVOUT0... Всё-же наверное TVE нужен. TCON_TV даёт группы сигналов для микросхем ТВ-мониторов. Перенес код с Линукса касаемо TVE - не подаёт признаков жизни: телевизор не видит кадра и не детектится подключение штекера. В даташите такая картинка: Вопрос: откуда он YUV берёт? В описании регистров на TVE нет установки базового адреса буфера кадра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ozelot 9 13 июля, 2022 Опубликовано 13 июля, 2022 · Жалоба On 7/13/2022 at 10:29 AM, repstosw said: Всё-же наверное TVE нужен. TCON_TV даёт группы сигналов для микросхем ТВ-мониторов. В f1c нужны оба. TVE - это чип тв-энкодера (по простому эдакий ЦАП), который получает YUV со всей необходимой растактовкой от TCON. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 14 июля, 2022 Опубликовано 14 июля, 2022 (изменено) · Жалоба On 7/12/2022 at 8:09 PM, GenaSPB said: Вот у меня DMA0_PKG_IRQ_PEND ни разу не срабатывает... А вы перед тем как записать адрес дескриптора в регистр DMA_DESC_ADDR_REG, сбрасываете с кеша данных в память? Потом ещё нужно делать проверку чтением из этого регистра. Ну и сбросить биты прерываний не забыть: void DMA_Init(u32 dst,u32 src,u32 bc) { DMA_Clock(); #if DMA_CHANNEL < 8 DMA_IRQ_EN_REG0|=(3<<(DMA_CHANNEL*4)); //DMA 0..7 Interrupts Enable: Half & Full DMA_IRQ_PEND_REG0|=(7<<(DMA_CHANNEL*4)); //Reset DMA 0..7 INT #else DMA_IRQ_EN_REG1|=(3<<((DMA_CHANNEL-8)*4)); //DMA 8..15 Interrupts Enable: Half & Full DMA_IRQ_PEND_REG1|=(7<<((DMA_CHANNEL-8)*4)); //Reset DMA 8..15 INT #endif // dw=16 dm=IO db=8 dd=AC sw=16 sm=Lin sb=8 sd=DDR/SRAM DMA_Descriptor[0]=(1<<25)|(1<<24)|(2<<22)|(7<<16)|(1<<9)|(0<<8)|(2<<6)|(1<<0); //DMA Configuration DMA_Descriptor[1]=src; //DMA Source Address DMA_Descriptor[2]=dst; //DMA Destination Address DMA_Descriptor[3]=bc; //DMA Byte Counter DMA_Descriptor[4]=0; //DMA Parameter (Wait Clock Cycles=0) DMA_Descriptor[5]=(u32)DMA_Descriptor; //DMA Link cache_flush_range((u32)DMA_Descriptor,((u32)DMA_Descriptor)+sizeof(DMA_Descriptor)); DMA_DESC_ADDR_REG=(u32)DMA_Descriptor; //DMA Descriptor Address while(DMA_DESC_ADDR_REG!=(u32)DMA_Descriptor); } On 7/13/2022 at 12:38 AM, GenaSPB said: А чем вызван выбор 1008 МГц? Ни чем. Просто исторически сложилось. On 7/12/2022 at 6:18 PM, GenaSPB said: Но. Похоже старшие номера каналов щостурюпны толтко dsp ядру. Dmac более чем 7 не позволяет... Проверил каналы 8-15. Да, не работают с CPU. On 7/13/2022 at 5:00 PM, mantech said: мне ничего не мешает, кроме быстродействия, т.к. 800х600 - это уже не такая уж и маленькая картинка, плюс она может быть не одна. В вашем случае тогда через G2D: будет вывод RGB-картинки(или её области) в любое место, с любым размером и с авто-конверсией YUV в RGB. On 7/13/2022 at 6:44 PM, Ozelot said: В f1c нужны оба. TVE - это чип тв-энкодера (по простому эдакий ЦАП), который получает YUV со всей необходимой растактовкой от TCON. Теперь ясно. TVE - это не более чем кодер PAL/NTSC наподобие как микросхемы CXA1145 , AD724 и им подобные. Осталось понять, как на него подать YUV с TCON. И как с DE заводить на TCONTV. У T113-s3 отдельный TCON для TV. Изменено 14 июля, 2022 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 14 июля, 2022 Опубликовано 14 июля, 2022 (изменено) · Жалоба В 14.07.2022 в 04:38, repstosw сказал: В вашем случае тогда через G2D: Похоже, что так. Либо программно, в случае v3s. Кстати, никто не запускал LVDS для дисплея? Я посл. раз его запускал только в А10\А20, интересно, тут сильно отличается? и второе, до модуля вайфая не добрались?)) Изменено 14 июля, 2022 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 14 июля, 2022 Опубликовано 14 июля, 2022 · Жалоба On 7/14/2022 at 3:09 PM, mantech said: Кстати, никто не запускал LVDS для дисплея? Не планируется. On 7/14/2022 at 3:09 PM, mantech said: и второе, до модуля вайфая не добрались?)) Не планируется. Второй день бьюсь над запуском TCON_TV - не хочет падла запускаться. Выставил тактирование, параметры развёртки, разрешил всё что только можно - счётчик TV_DEBUG_REG не меняется. У TCON_LCD всё аналогично и работает. Правда, я сейчас TCON_TV запускаю без DE и TVE. Но счётчики развёртки должны же идти, а они не идут. И ещё в даташите на T113-s3 сбит порядок описания регистров: Смотрю тот же блок у H616 и F1C200, всё вроде тоже самое, он отличия как раз в месте где сбито.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 14 июля, 2022 Опубликовано 14 июля, 2022 (изменено) · Жалоба Запустил TCON_TV на T113-s3. Пока сам по себе: регистр TV_DEBUG_REG обновляется, и TV_GINT0_REG выставляет биты прерываний по отрисованной строке и кадру. С этим узлом всё оказалось ОЧЕНЬ непросто. Кроме штатного тактирования(через TCONTV_BGR_REG и TCONTV_CLK_REG ), нужно было дополнительно разрешить тактирование и выбрать источник тактирования в недокументированных регистрах DISPLAY_TOP (0x05460000). Подсмотрел в Линуксе ( de_lcd_type.h ): struct __de_lcd_top_dev_t { /* 0x00 - 0x0c */ union tcon_tv_setup_reg_t tcon_tv_setup; union dsi_src_select_reg_t dsi_src_select; union tcon_reservd_reg_t tcon_reg_0008; union tcon_reservd_reg_t tcon_reg_000c; /* 0x10 - 0x1c */ union tcon_reservd_reg_t tcon_reg_0010; union tcon_reservd_reg_t tcon_reg_0014; union tcon_reservd_reg_t tcon_reg_0018; union tcon_de_perh_reg_t tcon_de_perh; /* 0x20 - 0x2c */ union tcon_clk_gate_reg_t tcon_clk_gate; }; s32 tcon1_tv_clk_enable(u32 sel, u32 en) { unsigned int tcon_index = -1; if (sel >= DEVICE_NUM) return -1; if (!de_feat_get_tcon_type(sel)) return -1; tcon_index = de_feat_get_tcon_index(sel); if (tcon_index < 0) return -1; if (tcon_index == 0) { lcd_top[0]->tcon_tv_setup.bits.tv0_clk_src = TV_CLK_F_TVE; lcd_top[0]->tcon_clk_gate.bits.tv0_clk_gate = en; } else if (tcon_index == 1) { lcd_top[0]->tcon_tv_setup.bits.tv1_clk_src = TV_CLK_F_TVE; lcd_top[0]->tcon_clk_gate.bits.tv1_clk_gate = en; } return 0; } Мало того, нужно было включить тактирование для этого DISPLAY_TOP. Регистр называется неочевидно - DPSS_TOP_BGR_REG. Об этом узнал в sun8iw20p1-soc-system.dts : Quote disp: disp@0x5000000 { compatible = "allwinner,sunxi-disp"; reg = <0x0 0x05000000 0x0 0x3fffff>, /* de0 */ <0x0 0x05460000 0x0 0xfff>, /*display_if_top*/ <0x0 0x05461000 0x0 0xfff>, /* tcon-lcd0 */ <0x0 0x05470000 0x0 0xfff>, /* tcon-tv */ <0x0 0x05450000 0x0 0x1fff>; /* dsi0*/ clocks = <&clk_de>, <&clk_dpss_top>, <&clk_tcon_lcd>, <&clk_tcon_tv>, <&clk_lvds>, <&clk_mipi_host0>; После разрешения тактирования для DISPLAY_TOP и установки в его регистрах соответствующих бит, TCON_TV Заработал. Просмотрел даташиты на H616, v853, D1, F133, F1C200s - инфы по DISPLAY_TOP нет. Ребусы приходится разгадывать... А у вас были в жизни подобного рода ребусы? :) Изменено 14 июля, 2022 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 14 июля, 2022 Опубликовано 14 июля, 2022 · Жалоба В 14.07.2022 в 17:06, repstosw сказал: А у вас были в жизни подобного рода ребусы? :) Совсем недавно с усб хост на v3s. Китаезы с их "документацией"... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 14 июля, 2022 Опубликовано 14 июля, 2022 · Жалоба А у вас были в жизни подобного рода ребусы? :) Читаю эту нитку как приключенческий роман ;-) Возникла мысль, ведь есть же завсегдатаи электроникса - резиденты Китая? Джентльмены, почему б вам не скооперироваться и не обратиться к ним за содействием по части "доки"; пусть ихней "киргудой", но подробно. Не может быть, что бы настолько хреново было всё документировано. (вроде гугль тех. текст с "чайного" достойно переводит) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 14 июля, 2022 Опубликовано 14 июля, 2022 (изменено) · Жалоба On 7/15/2022 at 1:19 AM, mantech said: Совсем недавно с усб хост на v3s. Китаезы с их "документацией"... Что делает USB host? К нему флешку цеплять? Каким образом? Через переходник? (на плате Lichee Pi Zero разъём USB micro). Вам дали документацию? On 7/15/2022 at 8:10 AM, Obam said: Не может быть, что бы настолько хреново было всё документировано. (вроде гугль тех. текст с "чайного" достойно переводит) Проблема не в переводе с китайского на английский, а в том, что подробная документация есть только у линуксо-писателей. Меня бы устроил даташит на китайском. Но учитывая, что официальная и куцая бадяга на T113-s3 на 1360 страниц, представляю что в подробной документации будет идти счёт на десятки тысяч... И ещё, у меня сложилось впечатление, что китайцы просто угорают и копипастят разные ядра/их версии в разные модели чипов: захотели в H616 засунули De-interlacer версии 300, потом в T113-s3 засунули версию 110. В аудио-кодеке - в V3s добавили часть регистров через "узкое бутылочное горлышко", а в A13/T113-s3 их убрали, но сдвинули оффсеты регистрам, перекрутили позиции битов, добавли новые, часть убрали. Нафига так делать? Это конспирация такая - усложнить реверс и копания? Или это делается с целью чтоб не опознали ядра/корки как стыренные? Изменено 14 июля, 2022 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться