1892ВМ14Я
Общая информация
Малопотребляющий многоядерный сигнальный микропроцессор 1892ВМ14Я для связных, навигационных, мультимедийных, встраиваемых, мобильных приложений, например: промышленных компьютеров, планшетов, тонких клиентов, средств защиты информации, IP‑видеокамер, IP-телефонов.
Представляет собой высокопроизводительную микропроцессорную систему на кристалле, включающую два DSP ядра ELcore-30M, два CPU ARM Cortex-A9, кодек H.264, графический 3D акселератор Mali-300, навигационный коррелятор ГЛОНАСС/GPS/Beidou и встроенные порты ввода/вывода.
- U-boot (SPL)
- Linux
- Отладочные модули
- Салют-ЭЛ24ПМ
- Салют-ЭЛ24ОМ1
- Салют-ЭЛ24Д1(2)
- Габаритный чертеж
Актуальная страница - https://support.elvees.com/docs/Microchips/1892VM14YA/
Вопросы по программному обеспечению
Каким образом можно сделать так, чтобы драйвер не проверял наличие 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?
Возможно ли использовать для сборки на ПЭВМ дистрибутив 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, где представлено более подробное описание этих режимов.