1892ВМ14Я

Материал из WIKI ELVEES

Общая информация

Фото процессора

Малопотребляющий многоядерный сигнальный микропроцессор 1892ВМ14Я для связных, навигационных, мультимедийных, встраиваемых, мобильных приложений, например: промышленных компьютеров, планшетов, тонких клиентов, средств защиты информации, IP‑видеокамер, IP-телефонов.

Представляет собой высокопроизводительную микропроцессорную систему на кристалле, включающую два DSP ядра ELcore-30M, два CPU ARM Cortex-A9, кодек H.264, графический 3D акселератор Mali-300, навигационный коррелятор ГЛОНАСС/GPS/Beidou и встроенные порты ввода/вывода.

Вопросы по программному обеспечению

Каким образом можно сделать так, чтобы драйвер не проверял наличие tda998x, или любым другим способом обеспечить нормальную загрузку драйвера?

Обнаружили такую вещь:

На нашей плате при загрузке выпадает вот такое сообщение:
[   11.570898] vpout-drm 38004000.vpout: failed to bind 0-0070 (ops tda998x_driver_exit [tda998x]): -6

[   11.584193] vpout-drm 38004000.vpout: master bind failed: -6

Судя по всему, драйвер vpout изначально проверяет, есть ли в системе tda998x, его не находит, после чего драйвер далее не загружается. (я пробовал убирать драйвер и заново вставлять его с помощью modeprobe, при этом папка /dev/dri всё равно не создаётся.

У нас в системе этого конвертера физически нет, нас интересует panel из этого списка.
[   11.590489] vpout-drm 38004000.vpout: bound 0-0070 (ops tda998x_driver_exit [tda998x])
[   11.598614] vpout-drm 38004000.vpout: bound panel1 (ops panel_ops [vpout_drm_panel])
[   11.626745] vpout-drm 38004000.vpout: bound panel0 (ops panel_ops [vpout_drm_panel])

При старте происходит попытка загрузить драйверы для тех устройств, которые прописаны в DTS. Наиболее правильным решением в этом случае будет удалить hdmi из DTS, пересобрать U-Boot и прошить его в SPI-флэш.

Можно получить настроенную для кросс-компиляции под buildroot виртуальную машину для ускорения тестирования нашего ПО под архитектурой САЛЮТ?

Да, такая виртуальная машина есть.

Ссылка для скачивания: https://box.elvees.com/index.php/s/BjagY77QYbHzoxm

Имя пользователя: user Пароля нет

Пароль от root: qweasd


Каких-то особенностей у этой виртуальной машины нет, это просто установленный CentOS версии, указанной в разделе 3.2 документа: https://nc2.elvees.com/index.php/s/AmPg52cfWnTFMyq?dir=undefined&path=%2F1892VM14YA%2Flinux%2FBuildroot%2Fv3.1%2Fdocs&openfile=13165

На нашей плате нет SD карты. Откуда можно загружаться?

Если у Вас нет возможности загрузить Linux с SD-карты, то Вы можете попробовать загрузить его из другого источника: с USB-носителя, из eMMC (если используете процессорный модуль Салют-ЭЛ24ПМ2), либо по TFTP и NFS.

Как прошить загрузчик в SPI-flash?

https://github.com/elvees/mcom02-flash-tools

Возможно ли использовать для сборки на ПЭВМ дистрибутив Linux, отличный от CentOS 7?

Да, это возможно, однако, работоспособность системы сборки в данном случае не гарантируется. Проверка системы сборки на всём множестве дистрибутивов системы Linux не представляется возможной.

Возможно ли использовать виртуальную машину для сборки?

Да, это возможно. Требования к виртуальной машине аналогичны требованиям к ПЭВМ.

Будет ли работать под buildroot микросхема PHY DP83865 без изменений ядра?

Драйвер для DP83865 входит в состав драйвера "Drivers for National Semiconductor PHYs". И в большинстве случаев специальные драйверы phy не требуются, т.к. они стандартные и с ними может работать generic-драйвер.

Обязательно ли прошивать образ U-Boot в SPI-флеш, если я собираю свой образ Buildroot?

Да, обязательно.

Не загружается драйвер delcore30m при выполнении команды modprobe delcore30m

Для корректной загрузки драйвера необходимо выполнить следующую последовательность команд:

modprobe -r avico
echo -n "37220000.dma" > /sys/bus/amba/drivers/dma-pl330/unbind
modprobe -r delcore30m
modprobe delcore30m

Существует ли сборка Buildroot с RT-ядром?

Нет. Если есть необходимость работать с операционной системой реального времени, то предлагаем рассмотреть FreeRTOS и ЗОСРВ "Нейтрино".

Доступно ли описание на открытую часть драйвера графического контроллера 1892ВМ14Я (FrameBuffer)?

Драйверы описаны в http://dist.elvees.com/support/1892VM14YA/linux/Buildroot/v3.1/docs/mcom02-linux-kernel-manual.pdf

Не загружается/некорректно работает ALT Linux/Astra Linux

Убедитесь, что в SPI-флеш прошит правильный загрузчик. Для корректной загрузки ALT Linux и Astra Linux требуется загрузчик U-Boot версии 2017.07.0.14 (соответствует Buildroot v2.9).

Какой компилятор используется в MCStudio для работы с DSP-ядром? Поддерживается ли C++?

Для работы с DSP ELCore-30M используется clang 4.0.
Для DSP ELCore-30M не следует писать код на C++. Вычислительные алгоритмы нужно разрабатывать на С и ассемблере.

Где можно посмотреть пример включения L2-кэш?

Отдельного примера включения кэша второго уровня у нас нет. В целом, работа с L2-кэшем не относится к специфике нашего процессора, это вопрос скорее к самой архитектуре ARM. Так что есть смысл поискать примеры работы с ним в интернете.

Со своей стороны можем дать ссылку на демо-версию FreeRTOS для 1892ВМ14Я: https://nc2.elvees.com/index.php/s/AmPg52cfWnTFMyq?path=%2F1892VM14YA%2FFreeRTOS%2Fv1.0%2Fmcom02_freertos_demo

В ней реализована работа с L2-кэшем (см. файлы arm_cache.s и l2cc.c).

Как наблюдать тестовый паттерн для вывода с камеры?

Введите команду для выбора паттерна (* - номер выхода):

v4l2-ctrl --device /dev/video* --set-ctrl test_pattern=1

После чего выполнить:

v4l2tofb -i 2 -w 1920 -h 1080

Можно ли для DSP ядер писать код на C?

Да, это возможно. Для этого Вам необходимо создать отдельный проект для DSP-ядра в виде библиотеки (File->New->Project…).В проекте есть два файла (func1.s и func2.c) в которых реализуется необходимый код.

В основном проекте для ARM-ядра необходимо указать добавленную библиотеку в DSP Linker и объявить используемые функции с ключевым словом extern. Данные функции можно вызывать инструкцией JS, дописав dsp0__ или dsp1__ перед именем функции:

Start_DSP0:
JS dsp0__test_calc

Ядро для исполнения выбирается тем, в регистры для какого ядра записывается указатель на функцию вызова (см. РП глава 4).

Вопросы по аппаратной части

Где взять референс-дизайн для собственных проектов?

В качестве референс-дизайна можно брать последнюю ревизию модуля Салют-ЭЛ24Д1, схема и проект выложены на сайте.

При подключении USB устройства оно не работает на плате, но оно исправно работает на другом компьютере. Вывод lsusb: "Bus 001 Device 007: ID 1a86:7523". В прошлый раз с подобной проблемой, вы посоветовали включить драйвер в котором есть id который был нужен. Подскажите, какой драйвер нужно включить в этот раз и где можно узнать, какие id относятся к какому драйверу на будущее.

Переходим в ядре в папку drivers/usb и там выполняем "grep -R 1a86". В результате присутствует device id 7523 в файле serial/ch341.c. Переходим в ту директорию и в файле Makefile ищем, от какого конфига зависит сборка этого файла. В данном случае это CONFIG_USB_SERIAL_CH341.

При подключении по jtag плата подключается, но не работает прошивка.

Проверьте что включён режим UART

Возможна ли отладка FreeRTOS на ЭЛ24ОМ1 при помощи J-Link или ST-Link?

Отладка при помощи J-Link или ST-Link не поддерживается. Для отладки рекомендуется использовать эмулятор mc-usb-jtag.

Какие микросхемы SPI Flash памяти поддерживаются BootROM 1892ВМ14Я (в режиме загрузки из SPI0)?

BootROM 1892ВМ14Я поддерживает любые микросхемы SPI-флеш памяти.

Есть ли внутри 1892ВМ14Я монитор питания и производится ли сброс по включению питания?

В микросхеме 1892ВМ14Я нет встроенного монитора питания. Сброс по включению питания не производится, его нужно делать принудительно.

Какую нужно устанавливать задержку после установления питания при принудительном сбросе?

Мы в своей аппаратуре используем супервизор питания TPS3838K33, который снимает сигнал сброса с RESET_PON через 10 мс после того, как напряжение питания 3.3В достигнет уровня 2.93В. Напряжение 3.3В заводится как на сам чип 1892ВМ14Я, так и на PMIC, который из этих 3.3В получает все остальные напряжения.

Есть своя разработанная плата, к которой подключается процессорный модуль Салют-ЭЛ24ПМ. К нашей плате подключается также внешний дисплей. На нашем оборудовании отсутствует HDMI-трансивер, а вместо него используется конвертор SN65LVDS93, подключённый напрямую к выходу интерфейса RGB-24 на модуле «САЛЮТ». Хотелось бы узнать, нет ли у Вас руководства для подключения внешнего дисплея? Может быть Вы можете дать какие-то рекомендации?

Создать новый DTS на базе https://github.com/elvees/u-boot/blob/mcom02/arch/arm/dts/mcom02-salute-el24om1-r1.1-1.2.dtsi#L170

Удалить из DTS лишние компоненты включая HDMI TDA-передатчик (строка 170). Оставить объявление одного монитора, например, https://github.com/elvees/u-boot/blob/mcom02/arch/arm/dts/mcom02-salute-el24om1-r1.1-1.2.dtsi#L114 Наблюдать переключение сигналов на VPOUT. Исходный код драйвера vpout-drm - https://github.com/elvees/linux/tree/mcom02/drivers/gpu/drm/vpout Краткое описание драйвера - https://dist.elvees.com/mcom02/buildroot/v3.1/docs/html/linux-kernel-manual/index.html#vpout-drm Обратите внимание, что ссылка на github указывает на последнюю версию ядра Linux. В зависимости от дистрибутива может использоваться другой слепок (commit) ядра Linux.

Соответствие ядра Linux и релизов Buildroot приведено в https://dist.elvees.com/mcom02/buildroot/v3.1/docs/html/buildroot-changelog/index.html

Особенности пайки

Есть ли особенности по пайке и реболингу, инструкции и рекомендации?

Температурный профиль пайки подбирается технологом при производстве аппаратуры. Технические требования к выполнению технологических операций пайки и профили указаны в ГОСТ Р 56427-2015. Насколько нам известно, наши потребители используют стандартный профиль пайки для BGA-микросхем. Данный профиль может быть скорректирован с учётом функциональных особенностей платы.

Нестандартные вопросы

Хотим организовать обмен через spi на базе MFBSP. Интерфейс точка-точка. Вопрос заключается в целесообразности применения линии SS. Если мы пропустим один такт на приёме или словим лишний разряд, сможет ли контроллер выровняться по какому-то тайм-ауту или ещё каким-либо способом?

Без ss в последовательном режиме в случае прихода лишнего импульса клока или потери импульса MFBSP сам не восстановит правильное выравнивание слов. Порт придётся программно выключать и включать. Наличие импульсов на ss позволит явно фиксировать окончание передачи и синхронизировать старт нового слова. Так что если именно последовательный режим будет выбран для соединения и есть риск проскока лишних импульсов, лучше строить передачу с ss.

Можно ли для защиты от влаги покрыть модуль лаком?

Да, покрыть модуль лаком можно, однако в таком случае гарантия на модуль пропадёт.

Как можно снизить энергопотребление 1892ВМ14Я в режиме гибернации?

По сути, все варианты энергосбережения – это только разные частные случаи, разнящиеся степенью отключения питания.

Какие существуют способы в принципе:

  • Отключить частоты от неиспользуемых блоков (регистры GATE_*).
  • Понизить до минимально допустимых значений частоты тех блоков, которые остаются затактированными.
  • Отключить неиспользуемые домены питания.

Определённый набор режимов энергосбережения реализован у нас в Linux. Они перечислены в документе https://dist.elvees.com/mcom02/buildroot/nightly/latest/docs/html/linux-kernel-manual/index.html#id18. Там же есть ссылка на kernel.org, где представлено более подробное описание этих режимов.