карамболь 0 13 апреля, 2020 Опубликовано 13 апреля, 2020 · Жалоба Здравствуйте, коллеги. Скоро предстоит миграция на Ксайлинг. Почитал на досуге документацию. PetaLinux это, конечно, очень хорошо, но хотелось бы узнать, есть ли ему классическая альтернатива. Сейчас работаю на Soc от Альтеры. Заливаю на Sd прелодер, ебут, его скрипт, dtb, рутфс, кернел ядра, битстрим и все замечательно грузится и работает. SDK вообще не запускаю. Из Квартуса беру только битстрим и папку handof из которой легко и просто собирается прелодер и ебут. Программу пишу на QT и в общем SDK вообще не нужен по сути. У Ксайлинг все иначе, весь софт (fsbl, u-boot и тд) лежит упакованный в одном файле с безумным пот сложности хэдэром (может привыкну еще). Года 3 назад имел дело с Zynq-7000 но писал только логику и софт без операционной системы. Вроде, все несложно было из SDK делался файл, грузил его на карту и работало. Можно ли обойтись без SDK в Ксайлинге и без PetaLinux ? Буду рад любым советам, особенно со ссылками. Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 13 апреля, 2020 Опубликовано 13 апреля, 2020 · Жалоба Без SDK - нельзя, ибо PMUFW и FSBL генерится из SDK. Без PetaLinux - можно и нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 13 апреля, 2020 Опубликовано 13 апреля, 2020 (изменено) · Жалоба 51 minutes ago, gosha-z said: Без SDK - нельзя, ибо PMUFW и FSBL генерится из SDK. Без PetaLinux - можно и нужно. кстати, насчет PMUFW. Если я не ошибаюсь, он для большинства задач не нужен. Или я не прав ? Если можно небольшой ликбез... И по поводу dt где его брать ? Как называется софтина, которая делает dts<->dtb, ну которая dtc называется в альтере, типа девайстри компилер. Рутфс с оф. сайта Дебиана можно взять ? Кернел с гитхаба ксайлинга ? Еще интересует, какой кросскомпилятор лучше использовать ? Изменено 13 апреля, 2020 пользователем карамболь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 13 апреля, 2020 Опубликовано 13 апреля, 2020 · Жалоба ага нашел про PMUFW... оно действительно нужно... только для чего пока не понял. Удивительно корявая документация у Ксайлинга, надо признать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 1 14 апреля, 2020 Опубликовано 14 апреля, 2020 · Жалоба 5 hours ago, карамболь said: ага нашел про PMUFW... оно действительно нужно... только для чего пока не понял. Удивительно корявая документация у Ксайлинга, надо признать У них есть неплохой мануал, где прямо по шагам расписано на какие кнопочки жать. Ну и в целом, на вики немало полезной информации. https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841738/Getting+Started Правда, у меня так и не получилось собрать полный образ по этому мануалу. Но тут, скорее, дело во мне) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 14 апреля, 2020 Опубликовано 14 апреля, 2020 · Жалоба 10 hours ago, карамболь said: И по поводу dt где его брать ? Генерить рыбу при помощи hsi и потом творчески подгонять под свое железо. 10 hours ago, карамболь said: девайстри компилер. Так и называется. Либо в _kernel_sources/scripts/dtc либо тут 10 hours ago, карамболь said: Рутфс с оф. сайта Дебиана можно взять ? Вот тут не скажу, я всегда buildroot'ом собираю. 10 hours ago, карамболь said: Кернел с гитхаба ксайлинга ? Да. 10 hours ago, карамболь said: какой кросскомпилятор лучше использовать ? gcc 8.4. Девятку использовать не надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 14 апреля, 2020 Опубликовано 14 апреля, 2020 · Жалоба Всем спасибо. Буду изучать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 2 июля, 2020 Опубликовано 2 июля, 2020 · Жалоба коллеги, какой кросс тулчейн посоветуете использовать ? Есть что-нибудь готовое или из сорцов собирать ? Хост - Дебиан Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 3 июля, 2020 Опубликовано 3 июля, 2020 · Жалоба Я из исходников собираю. Хост - CentOS 7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 3 июля, 2020 Опубликовано 3 июля, 2020 · Жалоба 17 minutes ago, gosha-z said: Я из исходников собираю. Хост - CentOS 7 1. А как насчет Линаро ? 2. Так ли нужен SDK ? Vitis для установки под 100 Гигов хочет, а как отдельно установить SDK я не нашел. Если я правильно понял, то все необходимое для запуска Линукс, можно скачать с репозитория ксайлинка и собирать без SDK. По сути, от SDK нужет только тулчейн. Я прав ? 3. Читаю разные доки и окончательно запутался. по поводу U-Boot Environment Variables. В одной доке его редактируют в SDK, путем копирования из одного хэдера в другой. В другой доке через uEnv.txt (где его брать ?). 4. Если правильно понял, то U-Boot Environment Variables можно хранить в SPI flash ? А как ее туда записать ? И можно ли хранить скрипт убута в отдельном файле на SD карте ? Вчера получил наконец плату живую, запустил из готового Линукс, убедился, что плата живая. Хочется полностью контролировать весь процесс. Попробовал импортировать настройки из Vivado в SDK, получил проект, но там кроме PMU, FSBL и битстрима ничего нет. В темплейтах надеялся увидеть ATF и DTS но их там нет. Если не сложно, не могли бы вы помочь мне упорядочить знания. А то информации много, но она разрозненная и нет полной ясности куда двигаться оптимально. Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 23 июля, 2020 Опубликовано 23 июля, 2020 · Жалоба On 7/3/2020 at 10:09 AM, карамболь said: 1. А как насчет Линаро ? 2. Так ли нужен SDK ? Vitis для установки под 100 Гигов хочет, а как отдельно установить SDK я не нашел. Если я правильно понял, то все необходимое для запуска Линукс, можно скачать с репозитория ксайлинка и собирать без SDK. По сути, от SDK нужет только тулчейн. Я прав ? 3. Читаю разные доки и окончательно запутался. по поводу U-Boot Environment Variables. В одной доке его редактируют в SDK, путем копирования из одного хэдера в другой. В другой доке через uEnv.txt (где его брать ?). 4. Если правильно понял, то U-Boot Environment Variables можно хранить в SPI flash ? А как ее туда записать ? И можно ли хранить скрипт убута в отдельном файле на SD карте ? Вчера получил наконец плату живую, запустил из готового Линукс, убедился, что плата живая. Хочется полностью контролировать весь процесс. Попробовал импортировать настройки из Vivado в SDK, получил проект, но там кроме PMU, FSBL и битстрима ничего нет. В темплейтах надеялся увидеть ATF и DTS но их там нет. Если не сложно, не могли бы вы помочь мне упорядочить знания. А то информации много, но она разрозненная и нет полной ясности куда двигаться оптимально. Спасибо 4. --- При компиляции u-boot у вас есть файл типа zynq_zed.h в котором прописываете CONFIG_EXTRA_ENV_SETTINGS, например так: /* Extra U-Boot Env settings */ #define CONFIG_EXTRA_ENV_SETTINGS \ "ethaddr=00:0a:35:00:01:22\0" \ "kernel_size=0x140000\0" \ "ramdisk_size=0x200000\0" \ "sdboot=echo Copying Linux from SD to RAM...;" \ "mmcinfo;" \ "fatload mmc 0 0x3000000 uImage;" \ "fatload mmc 0 0x2A00000 system.dtb;" \ "fatload mmc 0 0x2000000 uramdisk.image.gz;" \ "bootm 0x3000000 0x2000000 0x2A00000\0" \ "" #define CONFIG_BOOTCOMMAND "run sdboot" то есть есть команда sdboot которая и запускает скрипт. В команде sdboot можете указать загрузку напрямую из sd например (как у меня) или проверку наличия uEnv.txt файла и его чтение, и если такого нет, то загрузка далее продолжается (например опять же из sd). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 24 июля, 2020 Опубликовано 24 июля, 2020 · Жалоба Спасибо ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 24 июля, 2020 Опубликовано 24 июля, 2020 · Жалоба On 7/23/2020 at 5:36 PM, Alexey_Rostov said: 4. --- При компиляции u-boot у вас есть файл типа zynq_zed.h в котором прописываете CONFIG_EXTRA_ENV_SETTINGS, например так: /* Extra U-Boot Env settings */ #define CONFIG_EXTRA_ENV_SETTINGS \ "ethaddr=00:0a:35:00:01:22\0" \ "kernel_size=0x140000\0" \ "ramdisk_size=0x200000\0" \ "sdboot=echo Copying Linux from SD to RAM...;" \ "mmcinfo;" \ "fatload mmc 0 0x3000000 uImage;" \ "fatload mmc 0 0x2A00000 system.dtb;" \ "fatload mmc 0 0x2000000 uramdisk.image.gz;" \ "bootm 0x3000000 0x2000000 0x2A00000\0" \ "" #define CONFIG_BOOTCOMMAND "run sdboot" то есть есть команда sdboot которая и запускает скрипт. В команде sdboot можете указать загрузку напрямую из sd например (как у меня) или проверку наличия uEnv.txt файла и его чтение, и если такого нет, то загрузка далее продолжается (например опять же из sd). а из каких соображений берутся именно эти адреса в DDR для загрузки ? В вашем случае, если не ошибаюсь, самораспаковывающийся образ ядра и корневая ФС в ОЗУ. У меня Image несжатый. В моем случае какой адрес использовать ? Какая тут логика ? И как кернел использует остальное ОЗУ ? Куда в итоге распакуется ядро и rootfs ? Где бы про это почитать ? "fatload mmc 0 0x3000000 uImage;" \ "fatload mmc 0 0x2A00000 system.dtb;" \ "fatload mmc 0 0x2000000 uramdisk.image.gz;" \ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 24 июля, 2020 Опубликовано 24 июля, 2020 · Жалоба 3 hours ago, карамболь said: а из каких соображений берутся именно эти адреса в DDR для загрузки ? В вашем случае, если не ошибаюсь, самораспаковывающийся образ ядра и корневая ФС в ОЗУ. У меня Image несжатый. В моем случае какой адрес использовать ? Какая тут логика ? И как кернел использует остальное ОЗУ ? Куда в итоге распакуется ядро и rootfs ? Где бы про это почитать ? "fatload mmc 0 0x3000000 uImage;" \ "fatload mmc 0 0x2A00000 system.dtb;" \ "fatload mmc 0 0x2000000 uramdisk.image.gz;" \ Адреса в DDR: главное чтобы не перекрывались и в пределах диапазона. В интернете все есть, но вы пока с памятью не заморачивайтесь -- Linux сам разруливает работу с памятью (про initramfs / initrd позже посмотрите). https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt uImage это также несжатое ядро, только с оберткой u-boot. При работе с Linux на Zynq\ZynqMP без sd карты, я делаю так : 1. Создаю с помощью утилиты mkimage бинарный файл image.itb (или как в petalinux image.ub) . Это бинарник, который объединяет ядро, DT, файловую систему. Вот например исходник для ZYnq 7000 моего image.its файла из которого я получаю image.itb: /dts-v1/; / { description = "U-Boot fitImage for plnx_arm kernel"; #address-cells = <1>; images { kernel@0 { description = "Linux Kernel"; data = /incbin/("./zImage"); type = "kernel"; arch = "arm"; os = "linux"; compression = "none"; load = <0x80000>; entry = <0x80000>; hash@1 { algo = "sha1"; }; }; fdt@0 { description = "Flattened Device Tree blob"; data = /incbin/("./system.dtb"); type = "flat_dt"; arch = "arm"; compression = "none"; hash@1 { algo = "sha1"; }; }; ramdisk@0 { description = "ramdisk"; data = /incbin/("./rootfs.cpio"); type = "ramdisk"; arch = "arm"; os = "linux"; compression = "none"; hash@1 { algo = "sha1"; }; }; }; configurations { default = "conf@1"; conf@1 { description = "Boot Linux kernel with FDT blob + ramdisk"; kernel = "kernel@0"; fdt = "fdt@0"; ramdisk = "ramdisk@0"; hash@1 { algo = "sha1"; }; }; }; }; скрипт для сборки: #!/bin/bash mkimage -f image.its image.itb 2. Записываю во флеш память, откуда начинается загрузка BOOT.BIN (fsbl.elf, system.bit, u-boot.elf). 3. Запускаю загрузку из флеш до момента когда запустился u-boot. 4. В Xilinx SDK запускаю XSCT консоль и оттуда загружаю в DDR свой image.itb dow -data image.itb 0x30000000 после загрузки файла в DDR возвращаюсь к консоли u-boot и запускаю загрузку залитого в DDR image.itb bootm 30000000 5. Загрузка ядра и компании пошла можете image.itb кинуть на sd и загрузиться с нее (кстати именно так часто описывается во всех мануалах petalinux: записать на раздел fat32 sd карты BOOT.BIN и image.ub, а на раздел ext4 -- rootfs) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 24 июля, 2020 Опубликовано 24 июля, 2020 · Жалоба 1 hour ago, Alexey_Rostov said: Адреса в DDR: главное чтобы не перекрывались и в пределах диапазона. В интернете все есть, но вы пока с памятью не заморачивайтесь -- Linux сам разруливает работу с памятью (про initramfs / initrd позже посмотрите). https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt uImage это также несжатое ядро, только с оберткой u-boot. При работе с Linux на Zynq\ZynqMP без sd карты, я делаю так : 1. Создаю с помощью утилиты mkimage бинарный файл image.itb (или как в petalinux image.ub) . Это бинарник, который объединяет ядро, DT, файловую систему. Вот например исходник для ZYnq 7000 моего image.its файла из которого я получаю image.itb: /dts-v1/; / { description = "U-Boot fitImage for plnx_arm kernel"; #address-cells = <1>; images { kernel@0 { description = "Linux Kernel"; data = /incbin/("./zImage"); type = "kernel"; arch = "arm"; os = "linux"; compression = "none"; load = <0x80000>; entry = <0x80000>; hash@1 { algo = "sha1"; }; }; fdt@0 { description = "Flattened Device Tree blob"; data = /incbin/("./system.dtb"); type = "flat_dt"; arch = "arm"; compression = "none"; hash@1 { algo = "sha1"; }; }; ramdisk@0 { description = "ramdisk"; data = /incbin/("./rootfs.cpio"); type = "ramdisk"; arch = "arm"; os = "linux"; compression = "none"; hash@1 { algo = "sha1"; }; }; }; configurations { default = "conf@1"; conf@1 { description = "Boot Linux kernel with FDT blob + ramdisk"; kernel = "kernel@0"; fdt = "fdt@0"; ramdisk = "ramdisk@0"; hash@1 { algo = "sha1"; }; }; }; }; скрипт для сборки: #!/bin/bash mkimage -f image.its image.itb 2. Записываю во флеш память, откуда начинается загрузка BOOT.BIN (fsbl.elf, system.bit, u-boot.elf). 3. Запускаю загрузку из флеш до момента когда запустился u-boot. 4. В Xilinx SDK запускаю XSCT консоль и оттуда загружаю в DDR свой image.itb dow -data image.itb 0x30000000 после загрузки файла в DDR возвращаюсь к консоли u-boot и запускаю загрузку залитого в DDR image.itb bootm 30000000 5. Загрузка ядра и компании пошла можете image.itb кинуть на sd и загрузиться с нее (кстати именно так часто описывается во всех мануалах petalinux: записать на раздел fat32 sd карты BOOT.BIN и image.ub, а на раздел ext4 -- rootfs) Спасибо ! Для mpsoc аналогично (кроме нюансов pmu & atf) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться