Перейти к основному содержимому

1892ВМ14Я

На нашей плате нет 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?

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

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

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

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

Не загружается драйвер 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)?

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

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

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

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

В демо версии FreeRTOS реализована работа с L2-кэшем (см. файлы arm_cache.s и l2cc.c): https://nc2.elvees.com/index.php/s/AmPg52cfWnTFMyq?path=%2F1892VM14YA%2FFreeRTOS%2Fv1.0%2Fmcom02_freertos_demo

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

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

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).

Каким образом можно сделать так, чтобы драйвер не проверял наличие 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-флэш.

С какими заводскими настройками поставляется модуль Салют-ЭЛ24ПМ?

О заводских настройках можно почитать в документе: Спецификация заводских настроек модулей на базе 1892ВМ14Я

В частности, в конце SPI-флешки на модуле есть область памяти, где содержится структура следующего вида:

  • factory_eth_mac — Ethernet MAC-адрес модуля. Октеты MAC-адреса разделяются символом двоеточия;
  • factory_serial — серийный номер модуля;
  • factory_model — модель модуля (например, elvees,salute-el24d1-r1.3 для модуля Салют-ЭЛ24Д1 r1.3)

Имеет ли модуль Салют-ЭЛ24ПМ предустановленный MAC-адрес?

MAC-адрес прошивается в SPI-флеш в виде заводских настроек. U-Boot читает эти заводские настройки, сам использует этот MAC-адрес и передаёт его дальше Linux'у. Но пользователь может переопределить MAC-адрес, если изменит переменную окружения ethaddr в U-Boot и сохранит переменные через команду saveenv.

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

Линуксу надо сообщить, на какое именно устройство будет выводиться картинка. По умолчанию устройством для вывода графики является порт HDMI. По-хорошему, под Ваше конечное устройство надо пересобрать U-Boot, изменив параметр video в командной строке ядра. Например, "video=ej070na" (название брать из https://github.com/elvees/u-boot/blob/mcom02/arch/arm/dts/mcom02-salute-el24om1-r1.1-1.2.dtsi).

Альтернативно – можно не пересобирать U-Boot, а действовать в соответствии с инструкцией по запуску вывода изображения на LCD https://dist.elvees.com/mcom02/buildroot/v3.1/docs/html/test-guide/index.html

Возможно ли перепрошить загрузчик/поменять переменные окружения U-Boot в SPI-флеш без использования UART?

Возможно. Есть как минимум два способа:

  1. Через JTAG. Для этого вам нужно написать код, который вы загрузите по JTAG в память и запустите, а он сделает то, что вам нужно (перепрошьёт весь U-Boot и/или поменяет переменные U-Boot, хранящиеся в памяти SPI).
  2. Через внешний программатор (например, CH341A). Будьте крайне осторожны с этим способом, т.к. китайские программаторы подают сигналы с уровнем 5В, даже когда написано, что должны подавать 3.3В. Дешёвые необходимо специально дорабатывать. Мы не несём ответственности за ваши действия, если у вас в микросхеме сгорит SPI-интерфейс.

Есть своя разработанная плата, к которой подключается процессорный модуль Салют-ЭЛ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

Как измерить скорость считываниям данных с eMMC?

Можно использовать команду hdparm: -t /dev/mmcblk0p1