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

Ultrascale MPSoc. Сборка и дебаг софта под embedded Linux

Доброго времени суток!

Возникла задача внезапно начать работать с Xilinx, а точнее с ulatrascale+ MPSoc. На нем будет Linux, и надо отлаживать софт и драйверы.
В связи с чем возникли вопросы - а как компилить и отлаживать? Использовать Petalinux, или сторонний дистр, и т.д.

 

Я поковырялся в документации на Peta - и как-то она не воодушивила. Один из предлагаемых вариантов TCF Agent, но не хотелось бы привязываться к Vitis. Другой вариант который они предлагают - подсовывать исходники в сборочную систему yocto, и пересобирать весь образ. А это - пропустил точку с запятой в коде - 20 минут курим пока petalinux-build все не попробует собрать, чтоб сообщить об ошибке. Вообще не вариант. Кросс-компилятор - хорошо, пока не появятся зависимости от сторонних библиотек. Да и открыт вопрос с дебагом. Как я понял еще можно SDK от самого yocto использовать, тогда вопрос с библиотеками решается тем что все собирается в наитивной среде. Но тоже - куча лишних движений чтоб потом забросить собранный проект на плату, и там дебаджить через gdbserver. 

 

С альтеровским HPS проще - qemu образ или реальная железяка с поднятой системой (у меня там Arch был). На ней через NFS монтировал директорию хоста где лежат исходники. На хосте правил код, шел через ssh на плату, там компилился, и через cgdb отлаживался на самой плате. Можно тот же CLion подцепить, там есть фича с помощью которой он сам синхронизирует исходники на хосте и целевом устройстве, и там же компилится и запускает gdb сервак.

 

Собственно, кто какие варианты отладки использует? Можно ли к petalinux прикрутить gcc (я добавлял пакет в meta-user, он появился в диалоге конфигурации, но в собранной системе так и не появился)? Стоит ли вообще ковырять Petalinux, или проще с нормальным дистром работать?

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


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

Проще всего установить Xilinx SDK или Vitis. В нем компилить и отлаживать приложение под Linux. Готовый образ Linux есть на сайте Xilinx.

Можно установить petalinux и собрать свой образ. Плюс такого подхода - можно включать нужные опции ОС и библиотеки. Можно и компилить свое приложение компилятором из petalinux. Для этого создать SDK (petalinux-build --sdk), затем установить переменные окружения:

source images/linux/sdk/environment-setup-aarch64-xilinx-linux

и, как обычно, вызывать $(CROSS_COMPILE)gcc.

On 3/11/2021 at 5:29 PM, R6L-025 said:

Другой вариант который они предлагают - подсовывать исходники в сборочную систему yocto, и пересобирать весь образ.

Это метод для встраивания своего приложения в RootFS (готового, отлаженного). А не для разработки и отладки.

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


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

Да уже разобрался, примерно. Можно сгенерить в ёкте SDK, его использовать как sysroot, и компилить кросс-компилятором на хосте. А отлаживать по ssh на плате. С R5 ядром история похожая, только там sysroot не нужен, ибо baremetall/freertos. Единственная привязка к системе Vitis остается - xsct. Он нужен для загрузки эльфа в r5 проц. А после того как загружен - можно gdb использовать, который вместе с кросс-компилятором идет в составе petalinux пакета.

Да мне категорически не хочется использовать Vitis без необходимости. Eclipse как среда разработки - ну говно мамонта же. И работает так же. Со всякими глюками. В довесок мне надо использовать сторонние библиотеки под CMake. Eclipse по причине указанной выше CMake не умеет. Кроме того проект надо будет отдавать другим разработчикам, прикладникам. Они знать ничего не знают про vitis и сопутствующую периферию. Им просто надо писать код с минимум привязки к сторонним инструментам. Кросс-тулчейн я могу спокойно упаковать в docker контейнер, и отправить им хоть по почте. А с vitis который под 70 Gb весит... не разгуляешься. Ну и то что vitis использует кастомный формат проекта - тоже не радует. Формат жестко привязан только к Eclipse, и на другую IDE не перескочишь.

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


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

Vitis нужен. Там автоматом собирается FSBL ATF PMUFW DTB и собирается загрузочный образ

Ядро и U-boot скачиваете с оф. репозитория

Petalinux не нужен

Изменено пользователем карамболь

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


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

Ну, ATF не собирал, но все остальное и без vitis отлично собирается. FSBL - это просто обычный код под A/R ядро. Кросс-компилятор его вполне себе собирает. Я даж встроил в него тест памяти в самом начале его работы (попросили прикрутить). Без vitis обошлось. PFMU и DTB у меня собирается в petalinux, но, в будущем есть желание от него уйти на чистый yocto/buildroot + отдельно собирать все эти компоненты вместе с ядром и uboot

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


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

8 hours ago, R6L-025 said:

 PFMU и DTB у меня собирается в petalinux, но, в будущем есть желание от него уйти на чистый yocto/buildroot + отдельно собирать все эти компоненты вместе с ядром и uboot

Да, так и делают: Video-tutorial : Embedded FPGA - поднимаем Linux на Zynq-7000, EBAZ4205 Tutorial

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


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

2 часа назад, Raven сказал:

Да, видел что стрим был, но так руки пока и не дошли до него)

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


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

Мы в наших проектах используем buildroot + компилятор из https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/. Для правки и отладки Visual Code Studio. Им можно и R5 отлаживать под free-rtos.

Petalinux не используем совсем, только на начальном этапе когда нужно было понять что и как. Vitis почти не используем, так как достаточно Visual Code Studio. Используем его только для перетаскивания библиотек BSP & FSBL в основной код.

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


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

 

10 часов назад, byaaka сказал:

Им можно и R5 отлаживать под free-rtos

А через что отлаживаете? Ну, я имею в виду что в качестве дебаг сервера используется под R5 ядрами? Я только xsct понял как приспособить. Ну и вроде как можно TCF agent отдельно прицепить, но это извращение какое-то. 

А я выкрутился с IDE - перенес нужные проекты под cmake (в vitis максимум сгенерить ld скрипт, и платформенные библиотеки xilinx + freertos линкуемые отдельно к cmake проекту), к нему подключаю кросс-компилятор из состава petalinux.

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


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

используем openocd

http://openocd.org/doc/html/index.html
тут полезно посмотреть https://www.linuxembedded.fr/2018/08/openocd-from-scratch/
у нас jtag
Digilent HS3

Собственно по отладке https://github.com/Marus/cortex-debug и https://forum.sparkfun.com/viewtopic.php?f=168&t=51651&sid=540664963c1b9e4e0dc674c3f1ffa3eb
и ещё полезные ссылки
http://openocd.org/doc/html/CPU-Configuration.html
https://dev.to/rubberduck/debugging-rust-arm-cortexm-programs-with-visual-studio-code-336h
https://www.polidea.com/blog/how-to-set-up-the-open-source-ide-for-nrf5x-development/
https://www.segger.com/downloads/supported-devices.php (
XCZU7EV_R5_0 в моём случае)
Замудрёно, но разобраться реально.

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

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


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

14 минут назад, byaaka сказал:

Благодарю! Посмотрю. Вспоминал про openOCD, но не думал что он будет тут работать

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


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

я бы ещё добавил что для отладки и телеметрии используем пакет http://baical.net/index.html (очень удобно)

и межпроцессорный обмен по openamp с libmetal (требуется фикс, там бага и её не спешат править).

если нужно патчи для libmetal & openamp могу выложить

 

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

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


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

Спасибо, интересная штука - baikal. А Вы его как используете, для сборка метрик производительности?

На счет openAMP, libmetal - конечно интересно было бы посмотреть что там не так.
Я дней пять убил на то чтоб запустить libmetal-echo из из UG. Не вышло. openAMP как-то сразу заработал, но там, судя по документации ограничение на размер пакета 512 byte. Пока что пришел к тому что забил на эту пару, и сел писать свой драйвер для управления со стороны  APU модулем IPI. Но, было бы интересно посмотреть что за баг в openAMP/libmetal

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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