R6L-025 1 March 11, 2021 Posted March 11, 2021 · Report post Доброго времени суток! Возникла задача внезапно начать работать с 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, или проще с нормальным дистром работать? Quote Share this post Link to post Share on other sites More sharing options...
Dvorkin 1 May 14, 2021 Posted May 14, 2021 · Report post Проще всего установить 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 (готового, отлаженного). А не для разработки и отладки. Quote Share this post Link to post Share on other sites More sharing options...
R6L-025 1 May 14, 2021 Posted May 14, 2021 · Report post Да уже разобрался, примерно. Можно сгенерить в ёкте 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 не перескочишь. Quote Share this post Link to post Share on other sites More sharing options...
карамболь 1 May 14, 2021 Posted May 14, 2021 (edited) · Report post Vitis нужен. Там автоматом собирается FSBL ATF PMUFW DTB и собирается загрузочный образ Ядро и U-boot скачиваете с оф. репозитория Petalinux не нужен Edited May 14, 2021 by карамболь Quote Share this post Link to post Share on other sites More sharing options...
R6L-025 1 May 14, 2021 Posted May 14, 2021 · Report post Ну, ATF не собирал, но все остальное и без vitis отлично собирается. FSBL - это просто обычный код под A/R ядро. Кросс-компилятор его вполне себе собирает. Я даж встроил в него тест памяти в самом начале его работы (попросили прикрутить). Без vitis обошлось. PFMU и DTB у меня собирается в petalinux, но, в будущем есть желание от него уйти на чистый yocto/buildroot + отдельно собирать все эти компоненты вместе с ядром и uboot Quote Share this post Link to post Share on other sites More sharing options...
Raven 33 May 14, 2021 Posted May 14, 2021 · Report post 8 hours ago, R6L-025 said: PFMU и DTB у меня собирается в petalinux, но, в будущем есть желание от него уйти на чистый yocto/buildroot + отдельно собирать все эти компоненты вместе с ядром и uboot Да, так и делают: Video-tutorial : Embedded FPGA - поднимаем Linux на Zynq-7000, EBAZ4205 Tutorial Quote Share this post Link to post Share on other sites More sharing options...
R6L-025 1 May 14, 2021 Posted May 14, 2021 · Report post 2 часа назад, Raven сказал: Да, так и делают: Video-tutorial : Embedded FPGA - поднимаем Linux на Zynq-7000, EBAZ4205 Tutorial Да, видел что стрим был, но так руки пока и не дошли до него) Quote Share this post Link to post Share on other sites More sharing options...
byaaka 0 May 19, 2021 Posted May 19, 2021 · Report post Мы в наших проектах используем buildroot + компилятор из https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/. Для правки и отладки Visual Code Studio. Им можно и R5 отлаживать под free-rtos. Petalinux не используем совсем, только на начальном этапе когда нужно было понять что и как. Vitis почти не используем, так как достаточно Visual Code Studio. Используем его только для перетаскивания библиотек BSP & FSBL в основной код. Quote Share this post Link to post Share on other sites More sharing options...
R6L-025 1 May 19, 2021 Posted May 19, 2021 · Report post 10 часов назад, byaaka сказал: Им можно и R5 отлаживать под free-rtos А через что отлаживаете? Ну, я имею в виду что в качестве дебаг сервера используется под R5 ядрами? Я только xsct понял как приспособить. Ну и вроде как можно TCF agent отдельно прицепить, но это извращение какое-то. А я выкрутился с IDE - перенес нужные проекты под cmake (в vitis максимум сгенерить ld скрипт, и платформенные библиотеки xilinx + freertos линкуемые отдельно к cmake проекту), к нему подключаю кросс-компилятор из состава petalinux. Quote Share this post Link to post Share on other sites More sharing options...
byaaka 0 May 20, 2021 Posted May 20, 2021 (edited) · Report post используем 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.htmlhttps://dev.to/rubberduck/debugging-rust-arm-cortexm-programs-with-visual-studio-code-336hhttps://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 в моём случае)Замудрёно, но разобраться реально. Edited May 20, 2021 by byaaka Quote Share this post Link to post Share on other sites More sharing options...
R6L-025 1 May 20, 2021 Posted May 20, 2021 · Report post 14 минут назад, byaaka сказал: используем 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.htmlhttps://dev.to/rubberduck/debugging-rust-arm-cortexm-programs-with-visual-studio-code-336hhttps://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 в моём случае)Замудрёно, но разобраться реально. Благодарю! Посмотрю. Вспоминал про openOCD, но не думал что он будет тут работать Quote Share this post Link to post Share on other sites More sharing options...
byaaka 0 May 21, 2021 Posted May 21, 2021 (edited) · Report post я бы ещё добавил что для отладки и телеметрии используем пакет http://baical.net/index.html (очень удобно) и межпроцессорный обмен по openamp с libmetal (требуется фикс, там бага и её не спешат править). если нужно патчи для libmetal & openamp могу выложить Edited May 21, 2021 by byaaka Quote Share this post Link to post Share on other sites More sharing options...
R6L-025 1 May 21, 2021 Posted May 21, 2021 · Report post Спасибо, интересная штука - baikal. А Вы его как используете, для сборка метрик производительности? На счет openAMP, libmetal - конечно интересно было бы посмотреть что там не так. Я дней пять убил на то чтоб запустить libmetal-echo из из UG. Не вышло. openAMP как-то сразу заработал, но там, судя по документации ограничение на размер пакета 512 byte. Пока что пришел к тому что забил на эту пару, и сел писать свой драйвер для управления со стороны APU модулем IPI. Но, было бы интересно посмотреть что за баг в openAMP/libmetal Quote Share this post Link to post Share on other sites More sharing options...