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

Allwinner T113-s3 уделал HiFi4 DSP. Смеяться или плакать?

После небольшого перерыва (точнее, был занят другими делами) возобновил работы с T113-S3.

Запустил ядро, кеш, UART и LCD.

 

t113-lcd.thumb.jpg.44fe27c85242c502b5f493ec6bf795fe.jpg

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


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

В моем проекте дополнительно - SPI/QSPI, I2S, DMA, таймер, внутренний кодек, второе ядро, EHCI (со стеком от ST), система синхронизации ядер. CMSIS header для всего этого.

Качайте с github бранч develop.

Изменено пользователем GenaSPB

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


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

В 22.06.2022 в 14:48, GenaSPB сказал:

система синхронизации ядер.

Что это такое?

В 22.06.2022 в 14:30, repstosw сказал:

Запустил ядро, кеш, UART и LCD.

Случаем никто не в курсе, есть-ли дисплеи с подобным 40 пиновым шлейфом, но на диагонали 9-10" ?

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


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

Системой синхронизации назвал спинлоки и прддержание одинаковыми уровней приоритетов в gic каждого процессора. Т.е. в системе со вложениями прерываниями одно ядро может назначить обработчик на другом с требуемым приоритетом.

Ну у меня в проекте ручное распределение обработчиков прерывания я по ядра.

А уровни приоритетов в каждом gic доступны для изменения только самим подключённым процессором.

Mmu/ttb у каждого тоже своё, если что.  Таблица общая.

Изменено пользователем GenaSPB

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


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

В 23.06.2022 в 01:08, GenaSPB сказал:

Ну у меня в проекте ручное распределение обработчиков прерывания я по ядра.

У меня тоже, меня больше интересовала такая штука, сейчас интерпретатор вирт. задач и основная программа делят между собой 1 ядро, как в РТОС, вытесняющим методом, но если будет 2 ядра, то на одном оставил бы осн. программу, а другое отдал целиком под интерпретатор...

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


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

Подключил аналоговую камеру к T113-s3.   У неё композитный видео-сигнал NTSC/PAL. :sun_bespectacled:

Программная модель  TV декодера отличается от модели, применяемой в чипах  f1c100s/f1c200s/f1c500s.   В T113-s3  модель декодера как в F133-B/D1s.

 

Кадр 720x576 в формате YUV420 программно конвертируется в RGB888 и выводится на дисплей.

Ресурсов хватает - кэпчуринг засинхронизирован с развёрткой дисплея. Воспроизведение кадров идёт плавно и без рывков.

 

В идеале, конечно заставить  буфера Y и C  читаться контроллером дисплея, чтобы избежать конверсии и копирования с помощью CPU.

 

 

 

 

 

Изменено пользователем repstosw

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


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

В 23.06.2022 в 18:16, repstosw сказал:

заставить  буфера Y и C  читаться контроллером дисплея,

А в чем проблема? На слое V есть такие режимы (YUV420). У меня нет такой картинки, чтобы проверить, но когда включал, там все цветопредставления совсем другие отображались...

Изменено пользователем mantech

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


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

On 6/24/2022 at 4:36 PM, mantech said:

А в чем проблема? На слое V есть такие режимы (YUV420). У меня нет такой картинки, чтобы проверить, но когда включал, там все цветопредставления совсем другие отображались...

Проблема в том, что когда использую слои V,  то вместо YUV  получается RGB по отдельности.  Причём цветовая суб-дискретизация игнорируется.  В итоге вместо YUV420 мы имеем три равноправных канала: R,G,B.   Нафига такой режим нужен, спрашивается?   Ранее я писал, что у V3s также.

 

Изменено пользователем repstosw

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


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

В 24.06.2022 в 18:50, repstosw сказал:

В итоге вместо YUV420 мы имеем три равноправных канала: R,G,B.

В смысле? Можно по-подробнее, потому, что у меня как-то совсем на rgb было не похоже...

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


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

On 6/25/2022 at 3:42 AM, mantech said:

В смысле? Можно по-подробнее, потому, что у меня как-то совсем на rgb было не похоже...

Подробно опишу что я делаю:

 

1. Объявляю видео-плоскость (V, канал 0):

struct de_vi_t * vi = (struct de_vi_t *)(pdat->virt_de + T113_DE_MUX_CHAN + 0x1000 * 0); //видео-канал

 

2. Инициализирую её (приведена часть инициализации):

	write32((virtual_addr_t)&vi->cfg[0].attr, (1 << 0) | (0x0A << 8) | (0<<15)); //Video Overlay, PLANAR YUV420

	write32((virtual_addr_t)&vi->cfg[0].size, size);
	write32((virtual_addr_t)&vi->cfg[0].coord, 0);

	write32((virtual_addr_t)&vi->cfg[0].pitch[0], TVD_WIDTH  ); //ширина для компоненты Y
	write32((virtual_addr_t)&vi->cfg[0].pitch[1], TVD_WIDTH/2); //ширина для компоненты U
	write32((virtual_addr_t)&vi->cfg[0].pitch[2], TVD_WIDTH/2); //ширина для компоненты V

	write32((virtual_addr_t)&vi->cfg[0].top_laddr[0], Y_Buff);  //адрес буфера для компоненты Y
	write32((virtual_addr_t)&vi->cfg[0].top_laddr[1], U_Buff);  //адрес буфера для компоненты U
	write32((virtual_addr_t)&vi->cfg[0].top_laddr[2], V_Buff);  //адрес буфера для компоненты V

	write32((virtual_addr_t)&vi->ovl_size[0], size  ); //размер оверлея для компоненты Y
	write32((virtual_addr_t)&vi->ovl_size[1], size  ); //размер оверлея для компоненты UV

 

3.  После успешного инита TCONLCD и DE, записываю данные в буфер компоненты Y:

for(int i=0;i<TV_WIDTH*TV_HEIGHT;i++)Y_Buf[i]=128; //запись данных в буфер Y-компоненты

И я вижу на экране не серый цвет, а красный!

 

4. Пробую записать данные в буфера цвето-разностных компонент U, V:

for(int i=0;i<(TV_WIDTH/2)*(TV_HEIGHT/2);i++)U_Buf[i]=128; //запись данных в буфер U-компоненты

for(int i=0;i<(TV_WIDTH/2)*(TV_HEIGHT/2);i++)V_Buf[i]=128; //запись данных в буфер V-компоненты

 

Я вижу вместо цветоразностных компонент - две компоненты:  зелёный и синий!

Причём, они по ширине в половину экрана, а не полностью, как это требует цветовая суб-дискретизация YUV420.

 

Делаю вывод:  вместо YUV420 имеем раздельные плоскости R,G,B.  Видео-система интерепретирует данные в видеопамяти как раздельные плоскости RGB, а не YUV.

 

Что я делаю не так?

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


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

В 25.06.2022 в 03:45, repstosw сказал:

Что я делаю не так?

Ясно, я несколько по-другому это представлял, что это не разные буферы для компонент, а что-то подобное RGB 565, в линейном пространстве...

А все эти аппаратные декодеры, тоже в разные буферы компоненты раскидывают?

Изменено пользователем mantech

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


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

On 6/25/2022 at 2:51 PM, mantech said:

Ясно, я несколько по-другому это представлял, что это не разные буферы для компонент, а что-то подобное RGB 565, в линейном пространстве...

А все эти аппаратные декодеры, тоже в разные буферы компоненты раскидывают?

Всякие бывают.  В том числе - и то, о чём говорите - interleaved format.

 

Но аппаратные декодеры используют planar format - компоненты Y и UV раскидываются в разные буфера. Почему? Потому что иногда очень удобно  отбросить компоненты UV, использовать только буфер Y - яркостная компонента.  Для чёрно-белых телевизоров больше и не надо :biggrin:

 

А UV чередуются. При этом  размер каждой из них в 4 раза меньше, чем требуется на компоненту Y.  Это всё из стандартов NTSC/PAL .

 

Раскурил слои, настроил альфа-блендинг на T113-s3.  Обнаружил только две плоскости - видео (VI) на 0-м канале и (UI) на 1-м канале.  Больше не нашёл.

 

 

Изменено пользователем repstosw

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


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

В 25.06.2022 в 11:30, repstosw сказал:

Раскурил слои, настроил альфа-блендинг на T113-s3

Сильно отличается от v3s?

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


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

On 6/25/2022 at 7:18 PM, mantech said:

Сильно отличается от v3s?

 

Почти не отличаются.

 

Разница только в том, что :

 

-   у V3s : CH0 VI,  CH1 VI,  CH2 UI. 

-   А у T113: CH0 VI,  CH1 UI, и больше нету (исходя из личного опыта).

 

Только у плоскости UI есть альфа на уровне пикселей. У VI только на уровне слоя.

 

Блендер и роутер , разбитовка регистров практически совпадают.

 

Зато есть G2D, который прекрасно описан в линуксовых исходниках. :yes:

 

Кстати, я погорячился, когда написал, что в Tina Linux SDK нет исходников. Они есть. Просто закопаны относительно далеко. Я поставил себе Folder Find Text - очень  сильно помогает в поиске нужных файлов или нужной под-строки в файлах.  http://www.webnav.ru/soft-win/folder-find-text/

 

Изменено пользователем repstosw

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


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

В 25.06.2022 в 13:13, repstosw сказал:

Зато есть G2D, который прекрасно описан в линуксовых исходниках.

Проверяли в работе? Если да, насколько в нем копирование и заполнение экранных областей быстрее, чем с НЕОНом?  Мне от граф. ускорителя в основном только это и нужно.

В 25.06.2022 в 13:13, repstosw сказал:

Почти не отличаются.

Это очень радует))

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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