R6L-025 1 11 марта, 2021 Опубликовано 11 марта, 2021 · Жалоба Доброго времени суток! Возникла задача внезапно начать работать с 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, или проще с нормальным дистром работать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dvorkin 1 14 мая, 2021 Опубликовано 14 мая, 2021 · Жалоба Проще всего установить 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 (готового, отлаженного). А не для разработки и отладки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 14 мая, 2021 Опубликовано 14 мая, 2021 · Жалоба Да уже разобрался, примерно. Можно сгенерить в ёкте 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 не перескочишь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 14 мая, 2021 Опубликовано 14 мая, 2021 (изменено) · Жалоба Vitis нужен. Там автоматом собирается FSBL ATF PMUFW DTB и собирается загрузочный образ Ядро и U-boot скачиваете с оф. репозитория Petalinux не нужен Изменено 14 мая, 2021 пользователем карамболь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 14 мая, 2021 Опубликовано 14 мая, 2021 · Жалоба Ну, ATF не собирал, но все остальное и без vitis отлично собирается. FSBL - это просто обычный код под A/R ядро. Кросс-компилятор его вполне себе собирает. Я даж встроил в него тест памяти в самом начале его работы (попросили прикрутить). Без vitis обошлось. PFMU и DTB у меня собирается в petalinux, но, в будущем есть желание от него уйти на чистый yocto/buildroot + отдельно собирать все эти компоненты вместе с ядром и uboot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 8 14 мая, 2021 Опубликовано 14 мая, 2021 · Жалоба 8 hours ago, R6L-025 said: PFMU и DTB у меня собирается в petalinux, но, в будущем есть желание от него уйти на чистый yocto/buildroot + отдельно собирать все эти компоненты вместе с ядром и uboot Да, так и делают: Video-tutorial : Embedded FPGA - поднимаем Linux на Zynq-7000, EBAZ4205 Tutorial Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 14 мая, 2021 Опубликовано 14 мая, 2021 · Жалоба 2 часа назад, Raven сказал: Да, так и делают: Video-tutorial : Embedded FPGA - поднимаем Linux на Zynq-7000, EBAZ4205 Tutorial Да, видел что стрим был, но так руки пока и не дошли до него) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
byaaka 0 19 мая, 2021 Опубликовано 19 мая, 2021 · Жалоба Мы в наших проектах используем buildroot + компилятор из https://toolchains.bootlin.com/downloads/releases/toolchains/aarch64/tarballs/. Для правки и отладки Visual Code Studio. Им можно и R5 отлаживать под free-rtos. Petalinux не используем совсем, только на начальном этапе когда нужно было понять что и как. Vitis почти не используем, так как достаточно Visual Code Studio. Используем его только для перетаскивания библиотек BSP & FSBL в основной код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 19 мая, 2021 Опубликовано 19 мая, 2021 · Жалоба 10 часов назад, byaaka сказал: Им можно и R5 отлаживать под free-rtos А через что отлаживаете? Ну, я имею в виду что в качестве дебаг сервера используется под R5 ядрами? Я только xsct понял как приспособить. Ну и вроде как можно TCF agent отдельно прицепить, но это извращение какое-то. А я выкрутился с IDE - перенес нужные проекты под cmake (в vitis максимум сгенерить ld скрипт, и платформенные библиотеки xilinx + freertos линкуемые отдельно к cmake проекту), к нему подключаю кросс-компилятор из состава petalinux. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
byaaka 0 20 мая, 2021 Опубликовано 20 мая, 2021 (изменено) · Жалоба используем 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 в моём случае)Замудрёно, но разобраться реально. Изменено 20 мая, 2021 пользователем byaaka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 20 мая, 2021 Опубликовано 20 мая, 2021 · Жалоба 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, но не думал что он будет тут работать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
byaaka 0 21 мая, 2021 Опубликовано 21 мая, 2021 (изменено) · Жалоба я бы ещё добавил что для отладки и телеметрии используем пакет http://baical.net/index.html (очень удобно) и межпроцессорный обмен по openamp с libmetal (требуется фикс, там бага и её не спешат править). если нужно патчи для libmetal & openamp могу выложить Изменено 21 мая, 2021 пользователем byaaka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 21 мая, 2021 Опубликовано 21 мая, 2021 · Жалоба Спасибо, интересная штука - baikal. А Вы его как используете, для сборка метрик производительности? На счет openAMP, libmetal - конечно интересно было бы посмотреть что там не так. Я дней пять убил на то чтоб запустить libmetal-echo из из UG. Не вышло. openAMP как-то сразу заработал, но там, судя по документации ограничение на размер пакета 512 byte. Пока что пришел к тому что забил на эту пару, и сел писать свой драйвер для управления со стороны APU модулем IPI. Но, было бы интересно посмотреть что за баг в openAMP/libmetal Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться