Jump to content

    

Linux на Zynq

Привет всем!

У меня глупый вопрос из разряда "как пользоваться документацией", заранее прошу прощения:)

Возникла задача поднять Linux на плате zc702 с поддержкой hdmi. Я поднял для начала ОС без поддержки hdmi со всеми дефолтными настройками (https://medium.com/developments-and-implementations-on-zynq-7000-ap/install-ubuntu-16-04-lts-on-zynq-zc702-using-petalinux-2016-4-e1da902eaff7 - вот по этой инструкции), но дальше так и не смог построить методику разработки.

Для моих задач уже есть готовый пример от AD:

https://github.com/analogdevicesinc/hdl - вот с этого репозитория можно выдрать пример adv7511 который как раз мне нужен, далее генерируется hdf файл в вивадо - пока все понятно и с этим проблем не было(использовал версию вивадо 18.2 и соответствующую ветку репозитория)

Но далее:

https://wiki.analog.com/resources/tools-software/linux-build/generic/petalinux - вот инструкция как построить загрузочный модуль

https://wiki.analog.com/resources/tools-software/linux-build/generic/zynq - а вот инструкция по сборке ядра

Так вот - если следовать инструкциям для petalinux я получаю следующее(попробовал разные версии петалинукса):

Для petalinux 18.2

xakstreet@xakstreet-PC:~/Documents/Projects/Xilinx_Tools/Petalinux18_2$ source settings.sh
PetaLinux environment set to '/home/xakstreet/Documents/Projects/Xilinx_Tools/Petalinux18_2'
INFO: Checking free disk space
INFO: Checking installed tools
INFO: Checking installed development libraries
INFO: Checking network and other services
WARNING: No tftp server found - please refer to "PetaLinux SDK Installation Guide" for its impact and solution
xakstreet@xakstreet-PC:~/Documents/Projects/Xilinx_Tools/Petalinux18_2$ cd /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data
xakstreet@xakstreet-PC:~/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data$ petalinux-create -t project --template zynq --name PetaProj
INFO: Create project: PetaProj
INFO: New project successfully created in /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj
xakstreet@xakstreet-PC:~/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data$ cd PetaProj/
xakstreet@xakstreet-PC:~/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj$ petalinux-config --get-hw-description=/home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/adv7511_zc702.sdk
INFO: Getting hardware description...
INFO: Rename system_top.hdf to system.hdf
[INFO] generating Kconfig for project
                                                                                                                                                                                                                    
[INFO] menuconfig project
/home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/misc/config/Kconfig.syshw:30:warning: defaults for choice values not supported
/home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/misc/config/Kconfig:597:warning: config symbol defined without type
configuration written to /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/project-spec/configs/config

*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

[INFO] sourcing bitbake
[INFO] generating plnxtool conf
[INFO] generating meta-plnx-generated layer
[INFO] generating machine configuration
[INFO] generating bbappends for project . This may take time ! 
[INFO] generating u-boot configuration files
                                                                                                                                                                                                            
[INFO] generating kernel configuration files
[INFO] generating kconfig for Rootfs
[INFO] oldconfig rootfs
[INFO] generating petalinux-user-image.bb
xakstreet@xakstreet-PC:~/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj$ petalinux-build
[INFO] building project
[INFO] sourcing bitbake
INFO: bitbake petalinux-user-image
Parsing recipes: 100% |######################################################################################################################################################################| Time: 0:00:46
Parsing of 2559 .bb files complete (0 cached, 2559 parsed). 3432 targets, 148 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
Initialising tasks: 100% |###################################################################################################################################################################| Time: 0:00:05
Checking sstate mirror object availability: 100% |###########################################################################################################################################| Time: 0:00:11
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: device-tree-xilinx+gitAUTOINC+f38738e568-r0 do_patch: Command Error: 'quilt --quiltrc /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx+gitAUTOINC+f38738e568-r0/recipe-sysroot-native/etc/quiltrc push' exited with 0  Output:
Applying patch 0001-fix-the-clock-frequency-generation.patch
patching file device_tree/data/common_proc.tcl
Hunk #1 FAILED at 1264.
Hunk #2 FAILED at 1394.
Hunk #3 FAILED at 1523.
Hunk #4 succeeded at 2933 (offset 20 lines).
3 out of 4 hunks FAILED -- rejects in file device_tree/data/common_proc.tcl
Patch 0001-fix-the-clock-frequency-generation.patch does not apply (enforce with -f)
ERROR: device-tree-xilinx+gitAUTOINC+f38738e568-r0 do_patch: Function failed: patch_do_patch
ERROR: Logfile of failure stored in: /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx+gitAUTOINC+f38738e568-r0/temp/log.do_patch.18432
ERROR: Task (/home/xakstreet/Documents/Projects/Xilinx_Tools/Petalinux18_2/components/yocto/source/arm/layers/meta-xilinx/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bb:do_patch) failed with exit code '1'
NOTE: Tasks Summary: Attempted 2203 tasks of which 1776 didn't need to be rerun and 1 failed.

Summary: 1 task failed:
  /home/xakstreet/Documents/Projects/Xilinx_Tools/Petalinux18_2/components/yocto/source/arm/layers/meta-xilinx/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bb:do_patch
Summary: There were 2 ERROR messages shown, returning a non-zero exit code.
ERROR: Failed to build project

Для 18.3:

xakstreet@xakstreet-PC:~/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data$ source /home/xakstreet/Documents/Projects/Xilinx_Tools/Petalinux18_3/settings.sh
PetaLinux environment set to '/home/xakstreet/Documents/Projects/Xilinx_Tools/Petalinux18_3'
INFO: Checking free disk space
INFO: Checking installed tools
INFO: Checking installed development libraries
INFO: Checking network and other services
WARNING: No tftp server found - please refer to "PetaLinux SDK Installation Guide" for its impact and solution
xakstreet@xakstreet-PC:~/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data$ petalinux-create -t project --template zynq --name PetaProj
INFO: Create project: PetaProj
INFO: New project successfully created in /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj
xakstreet@xakstreet-PC:~/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data$ cd PetaProj/
xakstreet@xakstreet-PC:~/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj$ petalinux-config --get-hw-description=/home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/adv7511_zc702.sdk
INFO: Getting hardware description...
INFO: Rename system_top.hdf to system.hdf
[INFO] generating Kconfig for project
[INFO] menuconfig project
configuration written to /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/project-spec/configs/config

*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

[INFO] sourcing bitbake
[INFO] generating plnxtool conf
[INFO] generating meta-plnx-generated layer
[INFO] generating machine configuration
[INFO] generating bbappends for project . This may take time ! 
[INFO] generating u-boot configuration files
[INFO] generating kernel configuration files
[INFO] generating kconfig for Rootfs
[INFO] oldconfig rootfs
[INFO] generating petalinux-user-image.bb
xakstreet@xakstreet-PC:~/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj$ petalinux-build
[INFO] building project
[INFO] sourcing bitbake
INFO: bitbake petalinux-user-image
Parsing recipes: 100% |######################################################################################################################################################################| Time: 0:00:49
Parsing of 2576 .bb files complete (0 cached, 2576 parsed). 3452 targets, 149 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
Initialising tasks: 100% |###################################################################################################################################################################| Time: 0:00:05
Checking sstate mirror object availability: 100% |###########################################################################################################################################| Time: 0:00:11
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: device-tree-xilinx+gitAUTOINC+b7466bbeee-r0 do_compile: Function failed: do_compile (log file is located at /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx+gitAUTOINC+b7466bbeee-r0/temp/log.do_compile.22688)
ERROR: Logfile of failure stored in: /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx+gitAUTOINC+b7466bbeee-r0/temp/log.do_compile.22688
Log data follows:
| DEBUG: Executing shell function do_compile
| Error: /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx+gitAUTOINC+b7466bbeee-r0/pl-delete-nodes-zynq-zc702-adv7511.dtsi:13.15-27 Label or path axi_sysid_0 not found
| FATAL ERROR: Syntax error parsing input tree
| WARNING: /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx+gitAUTOINC+b7466bbeee-r0/temp/run.do_compile.22688:1 exit 1 from 'dtc -I dts -O dtb -R 8 -p 0x1000 -b 0 -i /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/../components/plnx_workspace/device-tree/device-tree -i /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work-shared/plnx-zynq7/kernel-source/include -i /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work-shared/plnx-zynq7/kernel-source/include -i /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx+gitAUTOINC+b7466bbeee-r0 -i/home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work-shared/plnx-zynq7/kernel-source/arch/arm/boot/dts -o ${DTS_NAME}.dtb `basename ${DTS_FILE}`.pp'
| ERROR: Function failed: do_compile (log file is located at /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx+gitAUTOINC+b7466bbeee-r0/temp/log.do_compile.22688)
ERROR: Task (/home/xakstreet/Documents/Projects/Xilinx_Tools/Petalinux18_3/components/yocto/source/arm/layers/meta-xilinx/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bb:do_compile) failed with exit code '1'
NOTE: Tasks Summary: Attempted 3250 tasks of which 2377 didn't need to be rerun and 1 failed.

Summary: 1 task failed:
  /home/xakstreet/Documents/Projects/Xilinx_Tools/Petalinux18_3/components/yocto/source/arm/layers/meta-xilinx/meta-xilinx-bsp/recipes-bsp/device-tree/device-tree.bb:do_compile
Summary: There was 1 ERROR message shown, returning a non-zero exit code.
ERROR: Failed to build project
xakstreet@xakstreet-PC:~/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj$ 

C 19.2 так же были проблемы - не буду приводить тут что бы не загромождать еще больше(в инструкции было написано, что нужен petalinux 18.3)

Таким образом у меня возникает вопрос как с этим тулом вообще работать?Где я мог ошибиться? есть ли у кого методика как с этим работать? так как мне представлялось что это должна быть уже давно отработанная алгоритмика действий. Сам я не работал ни с цинком ни с петалинуксом до настоящего момента...

Share this post


Link to post
Share on other sites

1. Выкинуть пиволинукс подальше.

2. Из hdf при помощи hsi генерите Device Tree и внимательно его читаете.

3. Собираете ядро из репозитория на гитхабе.

Share this post


Link to post
Share on other sites
1 hour ago, gosha-z said:

1. Выкинуть пиволинукс подальше.

2. Из hdf при помощи hsi генерите Device Tree и внимательно его читаете.

3. Собираете ядро из репозитория на гитхабе.

Первый-то пункт я понял, а можно пошаговую инструкцию к второму и третьему где-то найти? Я пока еще не понимаю что из этого как делается.

Спасибо.

Share this post


Link to post
Share on other sites

Исходная задача-то какая? Сделать framebuffer и вывести его на 7511?

Share this post


Link to post
Share on other sites
1 hour ago, gosha-z said:

Исходная задача-то какая? Сделать framebuffer и вывести его на 7511?

все так + прием с HID по USB(то бишь с клавиатуры)

Share this post


Link to post
Share on other sites
10 часов назад, Lutovid сказал:

Первый-то пункт я понял, а можно пошаговую инструкцию к второму и третьему где-то найти? Я пока еще не понимаю что из этого как делается.

а если подумать чисто по логике:

поискать в дереве проекта файл (видимо) конфигурации hdf и сконвертировать утилитой hsi в формат dts, в котором можно поизучать настройки аппаратуры

у вас xilinx и отсылка на гитхаб, чего проще https://github.com/xilinx

Цитата

Сам я не работал ни с цинком ни с петалинуксом до настоящего момента...

да примерно как в обычных мелких линуксах, если конечно с ними работали.. если нет, то будет _очень_ непросто..

Share this post


Link to post
Share on other sites
26 minutes ago, Jury093 said:

да примерно как в обычных мелких линуксах, если конечно с ними работали.. если нет, то будет _очень_ непросто..

не работал, но я не понимаю почему должно быть сложно просто собрать готовый пример - есть общее представление как что работает, но как говорится, куда и в какой последовательности нажимать не совсем понятно, так как я уже привел пример в теме как делая по инструкции можно не добиться ничего

Share this post


Link to post
Share on other sites

Не зная как оно работает, очень трудно понять почему оно не работает.

Share this post


Link to post
Share on other sites
20 минут назад, Lutovid сказал:

не работал, но я не понимаю почему должно быть сложно просто собрать готовый пример - есть общее представление как что работает, но как говорится, куда и в какой последовательности нажимать не совсем понятно, так как я уже привел пример в теме как делая по инструкции можно не добиться ничего

ответ вполне очевиден - это же линукс, в нем редко что бывает "из коробки", но обычно присутствуют советы на напильник и отсутствуют ссылки на документацию, и если что-то относительно гладко для х86, то для мелких, если есть своя экосистема (производитель, форумы, гитхаб), то считай повезло, а если нет, то нет..

в вашем случае видны ошибки при наложение патча (18.2) - если владеете навыками, то разбираетесь и патчите вручную, если нет - ищете решение проблемы в гугле. я в подобных случаях гуглю строку ошибки - если ошибка "ходовая", то решение всплывает в первых строчках поиска.. для 18.3 смотрите содержимое лога Logfile of failure stored in: /home/xakstreet и далее полный путь

инструкция.. их обычно пишет не ленивый человек-программист по принципу "пошаговая инструкция на момент сборки в хх году", а то, что через год-другой версии пакетов поменяются, и патчи стухнут к инструкции не подошьешь.. :)

Share this post


Link to post
Share on other sites
1 hour ago, Jury093 said:

в вашем случае видны ошибки при наложение патча (18.2) - если владеете навыками, то разбираетесь и патчите вручную, если нет - ищете решение проблемы в гугле. я в подобных случаях гуглю строку ошибки - если ошибка "ходовая", то решение всплывает в первых строчках поиска.. для 18.3 смотрите содержимое лога Logfile of failure stored in: /home/xakstreet и далее полный путь

Ниже приведено содержание этих логов(он печетался в консоль) - например для 18.3, гуглить - естественно гуглил, но пока информации не нашел. А из лога видно, что не был найден axi_sysid_0 - но где он не был найден и почему - это мне не понятно.

Но я Вас в общем понял - с такой постановкой вопроса я тут ответа не найду, спасибо

 

Log data follows:
| DEBUG: Executing shell function do_compile
| Error: /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx+gitAUTOINC+b7466bbeee-r0/pl-delete-nodes-zynq-zc702-adv7511.dtsi:13.15-27 Label or path axi_sysid_0 not found
| FATAL ERROR: Syntax error parsing input tree
| WARNING: /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx+gitAUTOINC+b7466bbeee-r0/temp/run.do_compile.22688:1 exit 1 from 'dtc -I dts -O dtb -R 8 -p 0x1000 -b 0 -i /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/../components/plnx_workspace/device-tree/device-tree -i /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work-shared/plnx-zynq7/kernel-source/include -i /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work-shared/plnx-zynq7/kernel-source/include -i /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx+gitAUTOINC+b7466bbeee-r0 -i/home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work-shared/plnx-zynq7/kernel-source/arch/arm/boot/dts -o ${DTS_NAME}.dtb `basename ${DTS_FILE}`.pp'
| ERROR: Function failed: do_compile (log file is located at /home/xakstreet/Documents/Projects/VivadoProj_18_2/zc702_hdmi/hdl/projects/adv7511/zc702/Linux_data/PetaProj/build/tmp/work/plnx_zynq7-xilinx-linux-gnueabi/device-tree/xilinx+gitAUTOINC+b7466bbeee-r0/temp/log.do_compile.22688)

 

Share this post


Link to post
Share on other sites
1 minute ago, Lutovid said:

Syntax error parsing input tree

Ну вот вам и ответ на вопрос. А заодно и пояснение, почему пиволинукс надо отправить подальше.

Читать сюда

Share this post


Link to post
Share on other sites
11 minutes ago, gosha-z said:

Ну вот вам и ответ на вопрос. А заодно и пояснение, почему пиволинукс надо отправить подальше.

Читать сюда

Спасибо, пытался пройтись по той инструкции, но где-то налажал, и показалось что с петалинуксом проще, но не тут то было, попробую еще раз по нему пройтись

Share this post


Link to post
Share on other sites
1 minute ago, Lutovid said:

пытался пройтись по той инструкции, но где-то налажал

В чем конкретно была лажа, по-вашему?

Share this post


Link to post
Share on other sites
1 minute ago, gosha-z said:

В чем конкретно была лажа, по-вашему?

В процессе генерации uImage я полагаю, просто на мой взгляд проблема не в самом итоговом dtb, а именно в том как создавать u-boot. Я лучше пройдусь еще раз по всему и тогда сформулирую ответ корректнее

Share this post


Link to post
Share on other sites
1 minute ago, Lutovid said:

проблема не в самом итоговом dtb, а именно в том как создавать u-boot

А U-Boot-то зачем трогать? Сделали его один раз - и пусть стоит. Сделали для него специальный отдельный минимальный .dts - и пусть себе сидит во флеше и не отсвечивает.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now