repstosw 18 22 июня, 2022 Опубликовано 22 июня, 2022 · Жалоба После небольшого перерыва (точнее, был занят другими делами) возобновил работы с T113-S3. Запустил ядро, кеш, UART и LCD. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 22 июня, 2022 Опубликовано 22 июня, 2022 (изменено) · Жалоба В моем проекте дополнительно - SPI/QSPI, I2S, DMA, таймер, внутренний кодек, второе ядро, EHCI (со стеком от ST), система синхронизации ядер. CMSIS header для всего этого. Качайте с github бранч develop. Изменено 22 июня, 2022 пользователем GenaSPB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 22 июня, 2022 Опубликовано 22 июня, 2022 · Жалоба В 22.06.2022 в 14:48, GenaSPB сказал: система синхронизации ядер. Что это такое? В 22.06.2022 в 14:30, repstosw сказал: Запустил ядро, кеш, UART и LCD. Случаем никто не в курсе, есть-ли дисплеи с подобным 40 пиновым шлейфом, но на диагонали 9-10" ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 22 июня, 2022 Опубликовано 22 июня, 2022 (изменено) · Жалоба Системой синхронизации назвал спинлоки и прддержание одинаковыми уровней приоритетов в gic каждого процессора. Т.е. в системе со вложениями прерываниями одно ядро может назначить обработчик на другом с требуемым приоритетом. Ну у меня в проекте ручное распределение обработчиков прерывания я по ядра. А уровни приоритетов в каждом gic доступны для изменения только самим подключённым процессором. Mmu/ttb у каждого тоже своё, если что. Таблица общая. Изменено 22 июня, 2022 пользователем GenaSPB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 23 июня, 2022 Опубликовано 23 июня, 2022 · Жалоба В 23.06.2022 в 01:08, GenaSPB сказал: Ну у меня в проекте ручное распределение обработчиков прерывания я по ядра. У меня тоже, меня больше интересовала такая штука, сейчас интерпретатор вирт. задач и основная программа делят между собой 1 ядро, как в РТОС, вытесняющим методом, но если будет 2 ядра, то на одном оставил бы осн. программу, а другое отдал целиком под интерпретатор... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 23 июня, 2022 Опубликовано 23 июня, 2022 (изменено) · Жалоба Подключил аналоговую камеру к T113-s3. У неё композитный видео-сигнал NTSC/PAL. Программная модель TV декодера отличается от модели, применяемой в чипах f1c100s/f1c200s/f1c500s. В T113-s3 модель декодера как в F133-B/D1s. Кадр 720x576 в формате YUV420 программно конвертируется в RGB888 и выводится на дисплей. Ресурсов хватает - кэпчуринг засинхронизирован с развёрткой дисплея. Воспроизведение кадров идёт плавно и без рывков. В идеале, конечно заставить буфера Y и C читаться контроллером дисплея, чтобы избежать конверсии и копирования с помощью CPU. Изменено 24 июня, 2022 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 24 июня, 2022 Опубликовано 24 июня, 2022 (изменено) · Жалоба В 23.06.2022 в 18:16, repstosw сказал: заставить буфера Y и C читаться контроллером дисплея, А в чем проблема? На слое V есть такие режимы (YUV420). У меня нет такой картинки, чтобы проверить, но когда включал, там все цветопредставления совсем другие отображались... Изменено 24 июня, 2022 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 24 июня, 2022 Опубликовано 24 июня, 2022 (изменено) · Жалоба On 6/24/2022 at 4:36 PM, mantech said: А в чем проблема? На слое V есть такие режимы (YUV420). У меня нет такой картинки, чтобы проверить, но когда включал, там все цветопредставления совсем другие отображались... Проблема в том, что когда использую слои V, то вместо YUV получается RGB по отдельности. Причём цветовая суб-дискретизация игнорируется. В итоге вместо YUV420 мы имеем три равноправных канала: R,G,B. Нафига такой режим нужен, спрашивается? Ранее я писал, что у V3s также. Изменено 24 июня, 2022 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 24 июня, 2022 Опубликовано 24 июня, 2022 · Жалоба В 24.06.2022 в 18:50, repstosw сказал: В итоге вместо YUV420 мы имеем три равноправных канала: R,G,B. В смысле? Можно по-подробнее, потому, что у меня как-то совсем на rgb было не похоже... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 25 июня, 2022 Опубликовано 25 июня, 2022 · Жалоба 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. Что я делаю не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 25 июня, 2022 Опубликовано 25 июня, 2022 (изменено) · Жалоба В 25.06.2022 в 03:45, repstosw сказал: Что я делаю не так? Ясно, я несколько по-другому это представлял, что это не разные буферы для компонент, а что-то подобное RGB 565, в линейном пространстве... А все эти аппаратные декодеры, тоже в разные буферы компоненты раскидывают? Изменено 25 июня, 2022 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 25 июня, 2022 Опубликовано 25 июня, 2022 (изменено) · Жалоба On 6/25/2022 at 2:51 PM, mantech said: Ясно, я несколько по-другому это представлял, что это не разные буферы для компонент, а что-то подобное RGB 565, в линейном пространстве... А все эти аппаратные декодеры, тоже в разные буферы компоненты раскидывают? Всякие бывают. В том числе - и то, о чём говорите - interleaved format. Но аппаратные декодеры используют planar format - компоненты Y и UV раскидываются в разные буфера. Почему? Потому что иногда очень удобно отбросить компоненты UV, использовать только буфер Y - яркостная компонента. Для чёрно-белых телевизоров больше и не надо А UV чередуются. При этом размер каждой из них в 4 раза меньше, чем требуется на компоненту Y. Это всё из стандартов NTSC/PAL . Раскурил слои, настроил альфа-блендинг на T113-s3. Обнаружил только две плоскости - видео (VI) на 0-м канале и (UI) на 1-м канале. Больше не нашёл. Изменено 25 июня, 2022 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 25 июня, 2022 Опубликовано 25 июня, 2022 · Жалоба В 25.06.2022 в 11:30, repstosw сказал: Раскурил слои, настроил альфа-блендинг на T113-s3 Сильно отличается от v3s? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 25 июня, 2022 Опубликовано 25 июня, 2022 (изменено) · Жалоба 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, который прекрасно описан в линуксовых исходниках. Кстати, я погорячился, когда написал, что в Tina Linux SDK нет исходников. Они есть. Просто закопаны относительно далеко. Я поставил себе Folder Find Text - очень сильно помогает в поиске нужных файлов или нужной под-строки в файлах. http://www.webnav.ru/soft-win/folder-find-text/ Изменено 25 июня, 2022 пользователем repstosw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 25 июня, 2022 Опубликовано 25 июня, 2022 · Жалоба В 25.06.2022 в 13:13, repstosw сказал: Зато есть G2D, который прекрасно описан в линуксовых исходниках. Проверяли в работе? Если да, насколько в нем копирование и заполнение экранных областей быстрее, чем с НЕОНом? Мне от граф. ускорителя в основном только это и нужно. В 25.06.2022 в 13:13, repstosw сказал: Почти не отличаются. Это очень радует)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться