Dimonira 0 31 июля, 2023 Опубликовано 31 июля, 2023 · Жалоба Всем привет! Осваиваю сабж, продвинулся довольно далеко (особенно, если сравнивать с нулём). Пока сижу на плате Qmtech с Z7020 последний вариант. Она запускается только с SD-карточки (JTAG не в счёт). С карточки из комплекта (Peta)Linux 2018.x подымается, на карточке boot.ini и image.ub. Использую Unified 2023.1.1. Сделал виртуалку VMWare с Ubuntu 22.04, установил на ней всё для сборки Linux и прочих шалобушек (тоже под 2023.1). Поиграл недельку на бубне и удалось собрать u-boot, ядро, rootfs, devtree. Теперь пытаюсь это всё запустить на железке. Как рассказывает AMD, самый простой вариант фасовки SD-карты - с помощью файла extlinux.conf. В этом случае файл BOOT.ini должен содержать стандартный набор трёх файлов: FSBL, bit, U-Boot. Соответствующий пример BIF-файла: Quote //arch = zynq; split = false; format = BIN the_ROM_image: { [bootloader]D:\Projects\PLM\Xilinx\XC7Z020_STARTER_KIT_V01\Linux1\fsbl\executable.elf D:\Projects\PLM\Xilinx\XC7Z020_STARTER_KIT_V01\Linux1\zynq_wrapper.bit D:\Projects\PLM\Xilinx\XC7Z020_STARTER_KIT_V01\Linux1\images\u-boot.elf } Файл executable.elf - это FSBL (имя файла - автоматически), сгенерированный с помощью wsct и скрипта (zynq_wrapper.xsa - экспортированное "оборудование" из проекта Vivado): Quote set hwdsgn [hsi::open_hw_design zynq_wrapper.xsa] hsi::current_hw_design hsi::generate_app -hw $hwdsgn -os standalone -proc ps7_cortexa9_0 -app zynq_fsbl -compile -sw fsbl -dir fsbl/ hsi::close_hw_design $hwdsgn Файл extlinux.conf генерируется при компиляции ядра, но в нём я добавил параметр для загрузки корневой файловой системы ROOTFS (файл uramdisk.image.gz). Возможно, это надо было добавить как-то в конфигуратор сборки и тогда не пришлось бы править руками. Доработанный файл содержит следущее (добавил только initrd=/uramdisk.image.gz и поправил в mmc0): Quote label linux kernel /boot/uImage devicetree /boot/system.dtb append initrd=/boot/uramdisk.image.gz console=ttyPS0,115200 root=/dev/mmc0 rw rootwait загрузчик U-Boot по умолчанию ищет extlinux.elf в папках /extlinux или /boot/extlinux. На SD-карту (отформатировать в формате FAT32) записал следующие файлы: Quote BOOT.INI boot\uImage boot\system.dtb boot\uramdisk.image.gz boot\extlinux\extlinux.conf Вставил карточку в плату - всё взлетело! Вот начало лога загрузки: Spoiler U-Boot 2023.01 (Jul 28 2023 - 11:08:15 +0300) CPU: Zynq 7z020 Silicon: v3.1 DRAM: ECC disabled 512 MiB Core: 19 devices, 14 uclasses, devicetree: board Flash: 0 Bytes NAND: 0 MiB MMC: mmc@e0100000: 0 Loading Environment from FAT... *** Error - No Valid Environment Area found *** Warning - bad env area, using default environment In: serial@e0000000 Out: serial@e0000000 Err: serial@e0000000 Net: ZYNQ GEM: e000b000, mdio bus e000b000, phyaddr 0, interface rgmii-id Warning: ethernet@e000b000 (eth0) using random MAC address - 82:49:95:0b:a9:a6 eth0: ethernet@e000b000 Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... Found /boot/extlinux/extlinux.conf Retrieving file: /boot/extlinux/extlinux.conf 1: linux Retrieving file: /boot/uramdisk.image.gz Retrieving file: /boot/uImage append: initrd=/boot/uramdisk.image.gz console=ttyPS0,115200 root=/dev/mmc0 rw rootwait Retrieving file: /boot/system.dtb ## Booting kernel from Legacy Image at 02000000 ... Image Name: Linux-6.1.0-xilinx Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4621576 Bytes = 4.4 MiB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK ## Loading init Ramdisk from Legacy Image at 03100000 ... Image Name: Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 9156096 Bytes = 8.7 MiB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK ## Flattened Device Tree blob at 01f00000 Booting using the fdt blob at 0x1f00000 Working FDT set to 1f00000 Loading Kernel Image Loading Ramdisk to 1e218000, end 1ead3600 ... OK Loading Device Tree to 1e212000, end 1e217ac6 ... OK Working FDT set to 1e212000 Starting kernel ... Booting Linux on physical CPU 0x0 Linux version 6.1.0-xilinx (root@dimonira-virtual-machine) (arm-buildroot-linux-gnueabihf-gcc.br_real (Buildroot 2023.05.1) 11.4.0, GNU ld (GNU Binutils) 2.38) #1 SMP PREEMPT Fri Jul 28 15:51:19 MSK 2023 CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache OF: fdt: Machine model: xlnx,zynq-7000 ... Попробовал пару команд, вроде система живёт: Spoiler Welcome to Zynq Linux! Z7020 login: random: crng init done macb e000b000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready root # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 82:49:95:0B:A9:A6 inet addr:192.168.81.79 Bcast:192.168.81.255 Mask:255.255.255.0 inet6 addr: fe80::88d9:bc12:fae4:ff8b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:130 errors:0 dropped:0 overruns:0 frame:0 TX packets:46 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:15744 (15.3 KiB) TX bytes:4960 (4.8 KiB) Interrupt:39 Base address:0xb000 # uname -a Linux Z7020 6.1.0-xilinx #1 SMP PREEMPT Fri Jul 28 15:51:19 MSK 2023 armv7l GNU/Linux # Пока что-то не могу найти к конфигураторе ядра где задать строку приглашения. Но это не главное. Главное, что я теперь бьюсь над другим вариантом "комплектования" SD-карты, как на карте продавца - boot.ini и image.ub. Первый, как я понял годится тот же. Второй должен содержать сборную солянку из трёх образов, плюс скрипт типа boot.scr (?) Для генерации image.ub надо сделать текстовый файл image.its, содержимое которого похоже на файлы device tree. Вот в варианте без boot.scr: Spoiler /dts-v1/; / { description = "U-Boot fitImage for qmtech kernel"; #address-cells = <1>; images { kernel { description = "Linux Kernel"; data = /incbin/("uImage"); type = "kernel"; arch = "arm"; os = "linux"; compression = "none"; load = <0x10000000>; entry = <0x10000000>; hash { algo = "sha1"; }; }; fdt { description = "Flattened Device Tree blob"; data = /incbin/("system.dtb"); type = "flat_dt"; arch = "arm"; compression = "none"; hash { algo = "sha1"; }; }; ramdisk { description = "ramdisk"; data = /incbin/("uramdisk.image.gz"); type = "ramdisk"; arch = "arm"; os = "linux"; compression = "none"; hash { algo = "sha1"; }; }; }; configurations { default = "conf"; conf { description = "Boot Linux kernel with FDT blob + ramdisk"; kernel = "kernel"; fdt = "fdt"; ramdisk = "ramdisk"; hash { algo = "sha1"; }; }; }; }; А это вариант с boot.scr: Spoiler /dts-v1/; / { description = "U-Boot fitImage for qmtech kernel"; #address-cells = <1>; images { kernel { description = "Linux Kernel"; data = /incbin/("images/uImage"); type = "kernel"; arch = "arm"; os = "linux"; compression = "gzip"; load = <0x3000000>; entry = <0x3000000>; hash { algo = "sha1"; }; }; fdt { description = "Flattened Device Tree blob"; data = /incbin/("images/system.dtb"); type = "flat_dt"; arch = "arm"; compression = "none"; hash { algo = "sha1"; }; }; ramdisk { description = "ramdisk"; data = /incbin/("images/uramdisk.image.gz"); type = "ramdisk"; arch = "arm"; os = "linux"; compression = "lzma"; hash { algo = "sha1"; }; }; bootscript { description = "Bootscript"; data = /incbin/("boot.scr"); type = "script"; compression = "none"; }; }; configurations { default = "conf"; conf { description = "Boot Linux kernel with FDT blob + ramdisk"; kernel = "kernel"; fdt = "fdt"; ramdisk = "ramdisk"; bootscript = "bootscript"; hash { algo = "sha1"; }; }; }; }; В файле boot.scr написал следующее (где-то увидел, допилил до своего): Quote setenv bootargs "console=ttyPS0,115200 root=/dev/mmc0 rw rootwait" bootm 0x10000000 echo "Bad image or kernel!" reset Файлы uImage, system.dtb, uramdisk.image.gz и boot.scr должны лежать рядом с image.its. Команда для компиляции: Quote mkimage -f image.its image.ub Компиляция проходит успешно без ошибок и предупреждений (без бубна однако не обошлось). Например, лог для случая без boot.scr выглядит так: Spoiler FIT description: U-Boot fitImage for qmtech kernel Created: Sat Jul 29 20:28:30 2023 Image 0 (kernel) Description: Linux Kernel Created: Sat Jul 29 20:28:30 2023 Type: Kernel Image Compression: uncompressed Data Size: 4621640 Bytes = 4513.32 KiB = 4.41 MiB Architecture: ARM OS: Linux Load Address: 0x10000000 Entry Point: 0x10000000 Hash algo: sha1 Hash value: 82eeb2b97a5a7d3a815d9a5abfdb53a29a27d323 Image 1 (fdt) Description: Flattened Device Tree blob Created: Sat Jul 29 20:28:30 2023 Type: Flat Device Tree Compression: uncompressed Data Size: 10951 Bytes = 10.69 KiB = 0.01 MiB Architecture: ARM Hash algo: sha1 Hash value: d2836712687057664c45433564f4b0d834aafc28 Image 2 (ramdisk) Description: ramdisk Created: Sat Jul 29 20:28:30 2023 Type: RAMDisk Image Compression: uncompressed Data Size: 9156160 Bytes = 8941.56 KiB = 8.73 MiB Architecture: ARM OS: Linux Load Address: unavailable Entry Point: unavailable Hash algo: sha1 Hash value: 951e1d29cf7ec56242bf8306303dee63b883ff66 Default Configuration: 'conf' Configuration 0 (conf) Description: Boot Linux kernel with FDT blob + ramdisk Kernel: kernel Init Ramdisk: ramdisk FDT: fdt Hash algo: sha1 Hash value: unavailable На этом "успех" заканчивается, ибо после записи на флешку boot.ini и image.ub загрузки либо вообще нет, либо грузится только u-boot и не может загрузить ядро - заканчивается переходом в TFTPD и он умирает. Почему-то u-boot не видит файл образа на карточке, хотя по уверениям AMD он должен искать первым делом именно файл с именем image.ub. Вот пример лога загрузки: Spoiler U-Boot 2023.01 (Jul 28 2023 - 11:08:15 +0300) CPU: Zynq 7z020 Silicon: v3.1 DRAM: ECC disabled 512 MiB Core: 19 devices, 14 uclasses, devicetree: board Flash: 0 Bytes NAND: 0 MiB MMC: mmc@e0100000: 0 Loading Environment from FAT... *** Error - No Valid Environment Area found *** Warning - bad env area, using default environment In: serial@e0000000 Out: serial@e0000000 Err: serial@e0000000 Net: ZYNQ GEM: e000b000, mdio bus e000b000, phyaddr 0, interface rgmii-id Warning: ethernet@e000b000 (eth0) using random MAC address - 2e:84:28:f3:69:77 eth0: ethernet@e000b000 Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... No EFI system partition BootOrder not defined EFI boot manager: Cannot load any image JTAG: Trying to boot script at 3000000 ## Executing script at 03000000 Wrong image format for "source" command JTAG: SCRIPT FAILED: continuing... switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... BootOrder not defined EFI boot manager: Cannot load any image MMC Device 1 not found no mmc device at slot 1 Invalid bus 0 (err=-19) Failed to initialize SPI flash at 0:0 (error -19) QSPI: SCRIPT FAILED: continuing... no devices available NAND: SCRIPT FAILED: continuing... NOR: Trying to boot script at 3000000 ## Executing script at 03000000 Wrong image format for "source" command NOR: SCRIPT FAILED: continuing... starting USB... Bus usb@e0002000: USB EHCI 1.00 scanning bus usb@e0002000 for devices... 1 USB Device(s) found scanning usb for storage devices... 0 Storage Device(s) found Device 0: unknown device Device 1: unknown device BOOTP broadcast 1 BOOTP broadcast 2 BOOTP broadcast 3 BOOTP broadcast 4 DHCP client bound to address 192.168.81.64 (2843 ms) *** Warning: no boot file name; using 'C0A85140.img' ... Пробовал загружать в u-boot образ вручную и запускать его: Quote fatload mmc 0 0x1000000 image.ub bootm 0x1000000 Лог типа такого: Spoiler Zynq> fatload mmc 0 0x1000000 image.ub 13790752 bytes read in 768 ms (17.1 MiB/s) Zynq> bootm 0x1000000 ## Loading kernel from FIT Image at 01000000 ... Using 'conf' configuration Verifying Hash Integrity ... OK Trying 'kernel' kernel subimage Description: Linux Kernel Type: Kernel Image Compression: gzip compressed Data Start: 0x010000d0 Data Size: 4621640 Bytes = 4.4 MiB Architecture: ARM OS: Linux Load Address: 0x10000000 Entry Point: 0x10000000 Hash algo: sha1 Hash value: 82eeb2b97a5a7d3a815d9a5abfdb53a29a27d323 Verifying Hash Integrity ... sha1+ OK ## Loading ramdisk from FIT Image at 01000000 ... Using 'conf' configuration Verifying Hash Integrity ... OK Trying 'ramdisk' ramdisk subimage Description: ramdisk Type: RAMDisk Image Compression: lzma compressed Data Start: 0x0146b27c Data Size: 9156160 Bytes = 8.7 MiB Architecture: ARM OS: Linux Load Address: unavailable Entry Point: unavailable Hash algo: sha1 Hash value: 951e1d29cf7ec56242bf8306303dee63b883ff66 Verifying Hash Integrity ... sha1+ OK WARNING: 'compression' nodes for ramdisks are deprecated, please fix your .its file! ## Loading fdt from FIT Image at 01000000 ... Using 'conf' configuration Verifying Hash Integrity ... OK Trying 'fdt' fdt subimage Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed Data Start: 0x01468708 Data Size: 10951 Bytes = 10.7 KiB Architecture: ARM Hash algo: sha1 Hash value: d2836712687057664c45433564f4b0d834aafc28 Verifying Hash Integrity ... sha1+ OK Booting using the fdt blob at 0x1468708 Working FDT set to 1468708 Uncompressing Kernel Image Error: Bad gzipped data gzip compressed: uncompress error -1 Must RESET board to recover resetting ... Вопросы следующие: 1. ramdisk должен быть сжатый или нет? Где-то в логе увидел, что сжатие не поддерживается. Удалил признак сжатия из .its - предупреждение ушло, но пришло другое, что-то об другой ошибке с тем же результатом - сброс. 2. Есть ошибка на декомпрессию ядра: Quote Uncompressing Kernel Image Error: Bad gzipped data gzip compressed: uncompress error -1 Must RESET board to recover resetting ... Странно, что в варианте с extlinux.conf все образы работают. Как должно быть? 3. Адреса загрузки - это вообще песня! какие они должны быть? Что надо прописывать в its и что в скрипте загрузки boot.scr? 4. Самый интересный вопрос, почему u-boot не видит образа image.ub на карточке, если, как уверяет AMD, в случае environment по умолчанию, он должен искать именно его? У AMD есть следующее поведение "по умолчанию" (я это перевёл😞 Spoiler Загрузка с SD карты ------------------- Например, при загрузке с устройств MMC (SD-карта или eMMC) следующий сценарий запускается из файла boot.scr по умолчанию в среде U-Boot, предоставляемой Xilinx. Это может быть изменено в зависимости от ваших потребностей. if test "${boot_target}" = "mmc0" || test "${boot_target}" = "mmc1" ; then if test -e ${devtype} ${devnum}:${distro_bootpart} /image.ub; then fatload ${devtype} ${devnum}:${distro_bootpart} 0x10000000 image.ub; bootm 0x10000000; exit; fi if test -e ${devtype} ${devnum}:${distro_bootpart} /Image; then fatload ${devtype} ${devnum}:${distro_bootpart} 0x00200000 Image;; fi if test -e ${devtype} ${devnum}:${distro_bootpart} /system.dtb; then fatload ${devtype} ${devnum}:${distro_bootpart} 0x00100000 system.dtb; fi if test -e ${devtype} ${devnum}:${distro_bootpart} /rootfs.cpio.gz.u-boot; then fatload ${devtype} ${devnum}:${distro_bootpart} 0x04000000 rootfs.cpio.gz.u-boot; booti 0x00200000 0x04000000 0x00100000 exit; fi booti 0x00200000 - 0x00100000 exit; fi Дополнительные сведения об использовании команд boot и загрузочной системы приведены на странице U-Boot. Следует отметить, что в этой схеме файлы должны быть найдены в корневом каталоге файловой системы и соответствовать схеме именования: ------------------------------------------------------------------------------------------- Компонент Имя файла Адрес загрузки ------------------------------------------------------------------------------------------- U-Boot combined image file (image.ub) image.ub 0x10000000 Linux kernel image file (если image.ub не найден) Image 0x00200000 Linux device tree file (если image.ub не найден) system.dtb 0x00100000 Linux root filesystem image (если image.ub не найден) rootfs.cpio.gz.u-boot 0x04000000 ------------------------------------------------------------------------------------------- Примечание: В таблице выше представлены значения по умолчанию, указанные в предварительно созданном обеспечении. Инструменты PetaLinux автоматически настроят адреса флэш-памяти и загрузки соответствующим образом, чтобы они соответствовали относительным размерам каждого раздела полезной нагрузки. ВАЖНО отметить, что при загрузке с устройств MMC U-Boot загрузит все отдельные компоненты с загрузочного носителя в виде файлов. При загрузке с флэш-устройств все компоненты загружаются с помощью U-Boot, за исключением system.dtb. Для флэш-устройств предполагается, что файл system.dtb предварительно загружен FSBL по правильному адресу при загрузке из файла BOOT.BIN. Адреса Xilinx по умолчанию -------------------------- В режиме загрузки JTAG U-Boot будет искать boot.scr.uimg в DDR по адресу 0x20000000. Это задается переменной окружения SCRIPTADDR. В режиме загрузки eMMC/SD программа U-Boot будет искать файл с именем boot.scr.uimg в основном разделе файловой системы FAT. При загрузке с устройств QSPI или NAND U-Boot ожидает, что файл boot.scr.uimg будет перепрошит по адресу 0x3E80000. Это значение настраивается в переменной CONFIG_BOOT_SCRIPT_OFFSET. Приоритет метода загрузки ------------------------- Таким образом, порядок приоритета поиска загрузочных компонентов выглядит следующим образом: 1. Файл extlinux.conf (ищется в папках /extlinux или /boot/extlinux). 2. Файл boot.scr + файл image.ub. 3. Файл boot.scr + отдельные файлы (образ, system.dtb и т.д.). Нашёл тут про про boot.scr, но пока не вдавался, мозги уже кипят. В итоге, менял адреса, убирал упоминание о компрессии (не само сжатие ядра и rootfs), добавлял/убирал boot.scr - ничего не вышло. С использованием extlinux.conf всё грузится от лично, а в варианте boot.ini+image.ub - ничего! Кто может указать на косяки? Как должно быть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dimonira 0 31 июля, 2023 Опубликовано 31 июля, 2023 · Жалоба Сегодня продолжил танцевать с бубном... Пока безуспешно. На свой 1-й вопрос я почти ответил: ramdisk должен быть несжатый, но он у меня такой и был, несмотря на то, что назывался uramdisk.image.gz. Компрессия всё равно была отключена. Единственная разница исходного rootfs.cpio и uramdisk.image.gz - в подписи (которая делалась командой sudo mkimage -A arm -T ramdisk -C gzip -d rootfs.cpio uramdisk.image.gz). Подпись эта - некий заголовок в начале файла uramdisk.image.gz, а дальше идёт rootfs.cpio. Но, вычитал у AMD, что, как я понял, подпись нужна только для случая "старого" способа формирования образов в виде отдельных файлов. Для "нового" же, который называется FDT (с "плоскими" образами), вроде как не надо подписывать (тут подробнее). Поэтому решил попробовать вставить в сборный образ rootfs.cpio вместо uramdisk.image.gz. Для этого доработал image.its (заодно сразу указал пути в папку, где лежат исходные образы после buildroot): Spoiler /dts-v1/; / { description = "U-Boot fitImage for qmtech kernel"; #address-cells = <1>; images { kernel { description = "Linux Kernel"; data = /incbin/("./buildroot/images/uImage"); type = "kernel"; arch = "arm"; os = "linux"; compression = "gzip"; load = <0x8000>; entry = <0x8000>; hash { algo = "sha1"; }; }; fdt { description = "Flattened Device Tree blob"; data = /incbin/("./buildroot/images/system.dtb"); type = "flat_dt"; arch = "arm"; compression = "none"; hash { algo = "sha1"; }; }; ramdisk { description = "ramdisk"; data = /incbin/("./buildroot/images/rootfs.cpio"); type = "ramdisk"; arch = "arm"; os = "linux"; compression = "none"; hash { algo = "sha1"; }; }; }; configurations { default = "conf"; conf { description = "Boot Linux kernel with FDT blob + ramdisk"; kernel = "kernel"; fdt = "fdt"; ramdisk = "ramdisk"; hash { algo = "sha1"; }; }; }; }; Заодно задал адрес старта ядра тот же, который был задан в конфигурации buildroot в настройках kernel. Компилировал той же командой: Quote mkimage -f image.its image.ub Лог: Spoiler FIT description: U-Boot fitImage for qmtech kernel Created: Mon Jul 31 10:47:47 2023 Image 0 (kernel) Description: Linux Kernel Created: Mon Jul 31 10:47:47 2023 Type: Kernel Image Compression: gzip compressed Data Size: 4621640 Bytes = 4513.32 KiB = 4.41 MiB Architecture: ARM OS: Linux Load Address: 0x00008000 Entry Point: 0x00008000 Hash algo: sha1 Hash value: 82eeb2b97a5a7d3a815d9a5abfdb53a29a27d323 Image 1 (fdt) Description: Flattened Device Tree blob Created: Mon Jul 31 10:47:47 2023 Type: Flat Device Tree Compression: uncompressed Data Size: 10951 Bytes = 10.69 KiB = 0.01 MiB Architecture: ARM Hash algo: sha1 Hash value: d2836712687057664c45433564f4b0d834aafc28 Image 2 (ramdisk) Description: ramdisk Created: Mon Jul 31 10:47:47 2023 Type: RAMDisk Image Compression: uncompressed Data Size: 9156096 Bytes = 8941.50 KiB = 8.73 MiB Architecture: ARM OS: Linux Load Address: unavailable Entry Point: unavailable Hash algo: sha1 Hash value: 59d1b8b6db75d67820a74fd505648de893717c0b Default Configuration: 'conf' Configuration 0 (conf) Description: Boot Linux kernel with FDT blob + ramdisk Kernel: kernel Init Ramdisk: ramdisk FDT: fdt Hash algo: sha1 Hash value: unavailable Но это ничего не принесло. Лог загрузки был такой: Spoiler U-Boot 2023.01 (Jul 28 2023 - 11:08:15 +0300) CPU: Zynq 7z020 Silicon: v3.1 DRAM: ECC disabled 512 MiB Core: 19 devices, 14 uclasses, devicetree: board Flash: 0 Bytes NAND: 0 MiB MMC: mmc@e0100000: 0 Loading Environment from FAT... *** Error - No Valid Environment Area found *** Warning - bad env area, using default environment In: serial@e0000000 Out: serial@e0000000 Err: serial@e0000000 Net: ZYNQ GEM: e000b000, mdio bus e000b000, phyaddr 0, interface rgmii-id Warning: ethernet@e000b000 (eth0) using random MAC address - 62:c5:12:96:6a:05 eth0: ethernet@e000b000 Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... No EFI system partition BootOrder not defined EFI boot manager: Cannot load any image JTAG: Trying to boot script at 3000000 ## Executing script at 03000000 Wrong image format for "source" command JTAG: SCRIPT FAILED: continuing... switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... BootOrder not defined EFI boot manager: Cannot load any image MMC Device 1 not found no mmc device at slot 1 Invalid bus 0 (err=-19) Failed to initialize SPI flash at 0:0 (error -19) QSPI: SCRIPT FAILED: continuing... no devices available NAND: SCRIPT FAILED: continuing... NOR: Trying to boot script at 3000000 ## Executing script at 03000000 Wrong image format for "source" command NOR: SCRIPT FAILED: continuing... starting USB... Bus usb@e0002000: USB EHCI 1.00 scanning bus usb@e0002000 for devices... 1 USB Device(s) found scanning usb for storage devices... 0 Storage Device(s) found Device 0: unknown device Device 1: unknown device ethernet@e000b000 Waiting for PHY auto negotiation to complete.. done BOOTP broadcast 1 BOOTP broadcast 2 BOOTP broadcast 3 BOOTP broadcast 4 DHCP client bound to address 192.168.81.87 (3016 ms) *** Warning: no boot file name; using 'C0A85157.img' Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'C0A85157.img'. Load address: 0x0 Loading: * TFTP server died; starting again missing environment variable: pxeuuid Retrieving file: pxelinux.cfg/01-62-c5-12-96-6a-05 Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'pxelinux.cfg/01-62-c5-12-96-6a-05'. Load address: 0x2000000 Loading: * TFTP server died; starting again Retrieving file: pxelinux.cfg/C0A85157 Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'pxelinux.cfg/C0A85157'. Load address: 0x2000000 Loading: * TFTP server died; starting again Retrieving file: pxelinux.cfg/C0A8515 Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'pxelinux.cfg/C0A8515'. Load address: 0x2000000 Loading: * TFTP server died; starting again Retrieving file: pxelinux.cfg/C0A851 Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'pxelinux.cfg/C0A851'. Load address: 0x2000000 Loading: * TFTP server died; starting again Retrieving file: pxelinux.cfg/C0A85 Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'pxelinux.cfg/C0A85'. Load address: 0x2000000 Loading: * TFTP server died; starting again Retrieving file: pxelinux.cfg/C0A8 Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'pxelinux.cfg/C0A8'. Load address: 0x2000000 Loading: T TFTP server died; starting again Retrieving file: pxelinux.cfg/C0A Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'pxelinux.cfg/C0A'. Load address: 0x2000000 Loading: * TFTP server died; starting again Retrieving file: pxelinux.cfg/C0 Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'pxelinux.cfg/C0'. Load address: 0x2000000 Loading: * TFTP server died; starting again Retrieving file: pxelinux.cfg/C Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'pxelinux.cfg/C'. Load address: 0x2000000 Loading: * TFTP server died; starting again Retrieving file: pxelinux.cfg/default-arm-zynq-zynq Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'pxelinux.cfg/default-arm-zynq-zynq'. Load address: 0x2000000 Loading: * TFTP server died; starting again Retrieving file: pxelinux.cfg/default-arm-zynq Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'pxelinux.cfg/default-arm-zynq'. Load address: 0x2000000 Loading: T TFTP server died; starting again Retrieving file: pxelinux.cfg/default-arm Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'pxelinux.cfg/default-arm'. Load address: 0x2000000 Loading: * TFTP server died; starting again Retrieving file: pxelinux.cfg/default Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'pxelinux.cfg/default'. Load address: 0x2000000 Loading: * TFTP server died; starting again Config file not found BOOTP broadcast 1 DHCP client bound to address 192.168.81.87 (9 ms) Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'boot.scr.uimg'. Load address: 0x3000000 Loading: * TFTP server died; starting again BOOTP broadcast 1 DHCP client bound to address 192.168.81.87 (6 ms) Using ethernet@e000b000 device TFTP from server 192.168.81.18; our IP address is 192.168.81.87 Filename 'boot.scr.uimg'. Load address: 0x2000000 Loading: * TFTP server died; starting again Zynq> U-boot не видит image.ub несмотря на то, что в случае "using default environment" (см. лог) должени искать именно его. Тогда я попробовал загрузить image.ub вручную. Лог был такой: Spoiler Zynq> fatload mmc 0 0x8000 image.ub 13790688 bytes read in 768 ms (17.1 MiB/s) Zynq> bootm 0x8000 ## Loading kernel from FIT Image at 00008000 ... Using 'conf' configuration Verifying Hash Integrity ... OK Trying 'kernel' kernel subimage Description: Linux Kernel Type: Kernel Image Compression: gzip compressed Data Start: 0x000080d0 Data Size: 4621640 Bytes = 4.4 MiB Architecture: ARM OS: Linux Load Address: 0x00008000 Entry Point: 0x00008000 Hash algo: sha1 Hash value: 82eeb2b97a5a7d3a815d9a5abfdb53a29a27d323 Verifying Hash Integrity ... sha1+ OK ## Loading ramdisk from FIT Image at 00008000 ... Using 'conf' configuration Verifying Hash Integrity ... OK Trying 'ramdisk' ramdisk subimage Description: ramdisk Type: RAMDisk Image Compression: uncompressed Data Start: 0x0047327c Data Size: 9156096 Bytes = 8.7 MiB Architecture: ARM OS: Linux Load Address: unavailable Entry Point: unavailable Hash algo: sha1 Hash value: 59d1b8b6db75d67820a74fd505648de893717c0b Verifying Hash Integrity ... sha1+ OK ## Loading fdt from FIT Image at 00008000 ... Using 'conf' configuration Verifying Hash Integrity ... OK Trying 'fdt' fdt subimage Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed Data Start: 0x00470708 Data Size: 10951 Bytes = 10.7 KiB Architecture: ARM Hash algo: sha1 Hash value: d2836712687057664c45433564f4b0d834aafc28 Verifying Hash Integrity ... sha1+ OK Booting using the fdt blob at 0x470708 Working FDT set to 470708 Uncompressing Kernel Image Error: Bad gzipped data gzip compressed: uncompress error -1 Must RESET board to recover resetting ... U-Boot 2023.01 (Jul 28 2023 - 11:08:15 +0300) CPU: Zynq 7z020 Silicon: v3.1 DRAM: ECC disabled 512 MiB Core: 19 devices, 14 uclasses, devicetree: board Flash: 0 Bytes NAND: 0 MiB MMC: mmc@e0100000: 0 Loading Environment from FAT... *** Error - No Valid Environment Area found *** Warning - bad env area, using default environment ... Вроде как u-boot образ "съел", распознал, но теперь не может распаковать ядро - ошибка декомпрессии gzip. Почему в "простом" случае отдельных файлов-образов ошибки декомпрессии ядра не было? Что не хватает? И главное, где должно находиться и как выглядеть это "environment"? В файле сценария boot.scr? (до него пока не дошёл, как я понял, тот, что я делал ранее (первый пост), был для "старого" случая, а для нового с FDT он уже другой). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 41 31 июля, 2023 Опубликовано 31 июля, 2023 · Жалоба Я сначала потренировался через JTAG загрузку. 1. Грузится FSL 2. Грузится U-Boot 3. Грузится image.itb Всё загружается автоматом через xsct и запускается А потом уже на SPI/eMMC записал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dimonira 0 31 июля, 2023 Опубликовано 31 июля, 2023 · Жалоба Дык, по отдельности они все грузятся с карточки. Я же в первом посте написал - через extlinux.conf. Система работает. А вот создать один образ из отдельных не получается. Кстати, загрузка с SD и с SPI отличаются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dimonira 0 2 августа, 2023 Опубликовано 2 августа, 2023 · Жалоба Как часто бывает, ошибка приходит не одна. И тогда очень муторно разобраться. Сегодня таки я одну нашёл, исправил, и сборный image.ub вручную загружается корректно. Оказалось, что несмотря на настройки компиляции ядра в buildroot, что ядро надо сжать с помощью gzip: Ядро в итоге компилируется без сжатия, как я понял. Ибо, как только я исправил its: Spoiler /dts-v1/; / { description = "U-Boot fitImage for qmtech kernel"; #address-cells = <1>; images { kernel { description = "Linux Kernel"; data = /incbin/("./buildroot/images/uImage"); type = "kernel"; arch = "arm"; os = "linux"; compression = "none"; load = <0x8000>; entry = <0x8000>; hash { algo = "sha1"; }; }; fdt { description = "Flattened Device Tree blob"; data = /incbin/("./buildroot/images/system.dtb"); type = "flat_dt"; arch = "arm"; compression = "none"; hash { algo = "sha1"; }; }; ramdisk { description = "ramdisk"; data = /incbin/("./buildroot/images/rootfs.cpio"); type = "ramdisk"; arch = "arm"; os = "linux"; compression = "none"; hash { algo = "sha1"; }; }; }; configurations { default = "conf"; conf { description = "Boot Linux kernel with FDT blob + ramdisk"; kernel = "kernel"; fdt = "fdt"; ramdisk = "ramdisk"; hash { algo = "sha1"; }; }; }; }; И сгенерил новый image.ub, то после загрузки u-boot с SD карты успешно загрузил образ командами: Quote Zynq> fatload mmc 0 3000000 image.ub 13790688 bytes read in 767 ms (17.1 MiB/s) Zynq> bootm 3000000 ... Лог загрузки такой: Spoiler ## Loading kernel from FIT Image at 03000000 ... Using 'conf' configuration Verifying Hash Integrity ... OK Trying 'kernel' kernel subimage Description: Linux Kernel Type: Kernel Image Compression: uncompressed Data Start: 0x030000d0 Data Size: 4621640 Bytes = 4.4 MiB Architecture: ARM OS: Linux Load Address: 0x00008000 Entry Point: 0x00008000 Hash algo: sha1 Hash value: 82eeb2b97a5a7d3a815d9a5abfdb53a29a27d323 Verifying Hash Integrity ... sha1+ OK ## Loading ramdisk from FIT Image at 03000000 ... Using 'conf' configuration Verifying Hash Integrity ... OK Trying 'ramdisk' ramdisk subimage Description: ramdisk Type: RAMDisk Image Compression: uncompressed Data Start: 0x0346b27c Data Size: 9156096 Bytes = 8.7 MiB Architecture: ARM OS: Linux Load Address: unavailable Entry Point: unavailable Hash algo: sha1 Hash value: 59d1b8b6db75d67820a74fd505648de893717c0b Verifying Hash Integrity ... sha1+ OK ## Loading fdt from FIT Image at 03000000 ... Using 'conf' configuration Verifying Hash Integrity ... OK Trying 'fdt' fdt subimage Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed Data Start: 0x03468708 Data Size: 10951 Bytes = 10.7 KiB Architecture: ARM Hash algo: sha1 Hash value: d2836712687057664c45433564f4b0d834aafc28 Verifying Hash Integrity ... sha1+ OK Booting using the fdt blob at 0x3468708 Working FDT set to 3468708 Loading Kernel Image Loading Ramdisk to 1e21a000, end 1ead5600 ... OK Loading Device Tree to 1e214000, end 1e219ac6 ... OK Working FDT set to 1e214000 Starting kernel ... Booting Linux on physical CPU 0x0 Linux version 6.1.0-xilinx (root@dimonira-virtual-machine) (arm-buildroot-linux-gnueabihf-gcc.br_real (Buildroot 2023.05.1) 11.4.0, GNU ld (GNU Binutils) 2.38) #1 SMP PREEMPT Fri Jul 28 15:51:19 MSK 2023 CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache OF: fdt: Machine model: xlnx,zynq-7000 earlycon: cdns0 at MMIO 0xe0000000 (options '115200n8') printk: bootconsole [cdns0] enabled Memory policy: Data cache writealloc cma: Reserved 16 MiB at 0x1f000000 Zone ranges: Normal [mem 0x0000000000000000-0x000000001fffffff] HighMem empty Movable zone start for each node Early memory node ranges node 0: [mem 0x0000000000000000-0x000000001fffffff] Initmem setup node 0 [mem 0x0000000000000000-0x000000001fffffff] percpu: Embedded 12 pages/cpu s16788 r8192 d24172 u49152 Built 1 zonelists, mobility grouping on. Total pages: 130048 Kernel command line: earlycon Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear) mem auto-init: stack:off, heap alloc:off, heap free:off Memory: 482120K/524288K available (7168K kernel code, 248K rwdata, 1940K rodata, 1024K init, 121K bss, 25784K reserved, 16384K cma-reserved, 0K highmem) rcu: Preemptible hierarchical RCU implementation. rcu: RCU event tracing is enabled. rcu: RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2. rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2 NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 efuse mapped to (ptrval) slcr mapped to (ptrval) GIC physical location is 0xf8f01000 L2C: platform modifies aux control register: 0x72360000 -> 0x72760000 L2C: DT/platform modifies aux control register: 0x72360000 -> 0x72760000 L2C-310 erratum 769419 enabled L2C-310 enabling early BRESP for Cortex-A9 L2C-310 full line of zeros enabled for Cortex-A9 L2C-310 ID prefetch enabled, offset 1 lines L2C-310 dynamic clock gating enabled, standby mode enabled L2C-310 cache controller enabled, 8 ways, 512 kB L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76760001 rcu: srcu_init: Setting srcu_struct sizes based on contention. zynq_clock_init: clkc starts at (ptrval) Zynq clock init sched_clock: 64 bits at 167MHz, resolution 6ns, wraps every 4398046511103ns clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0x26703d7dd8, max_idle_ns: 440795208065 ns Switching to timer-based delay loop, resolution 6ns Console: colour dummy device 80x30 printk: console [tty0] enabled printk: bootconsole [cdns0] disabled Booting Linux on physical CPU 0x0 Linux version 6.1.0-xilinx (root@dimonira-virtual-machine) (arm-buildroot-linux-gnueabihf-gcc.br_real (Buildroot 2023.05.1) 11.4.0, GNU ld (GNU Binutils) 2.38) #1 SMP PREEMPT Fri Jul 28 15:51:19 MSK 2023 CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache OF: fdt: Machine model: xlnx,zynq-7000 earlycon: cdns0 at MMIO 0xe0000000 (options '115200n8') printk: bootconsole [cdns0] enabled Memory policy: Data cache writealloc cma: Reserved 16 MiB at 0x1f000000 Zone ranges: Normal [mem 0x0000000000000000-0x000000001fffffff] HighMem empty Movable zone start for each node Early memory node ranges node 0: [mem 0x0000000000000000-0x000000001fffffff] Initmem setup node 0 [mem 0x0000000000000000-0x000000001fffffff] percpu: Embedded 12 pages/cpu s16788 r8192 d24172 u49152 Built 1 zonelists, mobility grouping on. Total pages: 130048 Kernel command line: earlycon Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear) mem auto-init: stack:off, heap alloc:off, heap free:off Memory: 482120K/524288K available (7168K kernel code, 248K rwdata, 1940K rodata, 1024K init, 121K bss, 25784K reserved, 16384K cma-reserved, 0K highmem) rcu: Preemptible hierarchical RCU implementation. rcu: RCU event tracing is enabled. rcu: RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2. rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2 NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 efuse mapped to (ptrval) slcr mapped to (ptrval) GIC physical location is 0xf8f01000 L2C: platform modifies aux control register: 0x72360000 -> 0x72760000 L2C: DT/platform modifies aux control register: 0x72360000 -> 0x72760000 L2C-310 erratum 769419 enabled L2C-310 enabling early BRESP for Cortex-A9 L2C-310 full line of zeros enabled for Cortex-A9 L2C-310 ID prefetch enabled, offset 1 lines L2C-310 dynamic clock gating enabled, standby mode enabled L2C-310 cache controller enabled, 8 ways, 512 kB L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76760001 rcu: srcu_init: Setting srcu_struct sizes based on contention. zynq_clock_init: clkc starts at (ptrval) Zynq clock init sched_clock: 64 bits at 167MHz, resolution 6ns, wraps every 4398046511103ns clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0x26703d7dd8, max_idle_ns: 440795208065 ns Switching to timer-based delay loop, resolution 6ns Console: colour dummy device 80x30 printk: console [tty0] enabled printk: bootconsole [cdns0] disabled Calibrating delay loop (skipped), value calculated using timer frequency.. 333.33 BogoMIPS (lpj=1666666) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) CPU: Testing write buffer coherency: ok CPU0: Spectre v2: using BPIALL workaround CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 Setting up static identity map for 0x100000 - 0x100060 rcu: Hierarchical SRCU implementation. rcu: Max phase no-delay instances is 1000. smp: Bringing up secondary CPUs ... CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 CPU1: Spectre v2: using BPIALL workaround smp: Brought up 1 node, 2 CPUs SMP: Total of 2 processors activated (666.66 BogoMIPS). CPU: All CPU(s) started in SVC mode. devtmpfs: initialized VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4 clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns futex hash table entries: 512 (order: 3, 32768 bytes, linear) pinctrl core: initialized pinctrl subsystem NET: Registered PF_NETLINK/PF_ROUTE protocol family DMA: preallocated 256 KiB pool for atomic coherent allocations thermal_sys: Registered thermal governor 'step_wise' cpuidle: using governor menu amba f8801000.etb: Fixing up cyclic dependency with replicator amba f8803000.tpiu: Fixing up cyclic dependency with replicator amba f8804000.funnel: Fixing up cyclic dependency with replicator amba f889c000.ptm: Fixing up cyclic dependency with f8804000.funnel amba f889d000.ptm: Fixing up cyclic dependency with f8804000.funnel hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers. hw-breakpoint: maximum watchpoint size is 4 bytes. e0000000.serial: ttyPS0 at MMIO 0xe0000000 (irq = 26, base_baud = 6249999) is a xuartps printk: console [ttyPS0] enabled SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb mc: Linux media interface: v0.10 videodev: Linux video capture interface: v2.00 pps_core: LinuxPPS API ver. 1 registered pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]> PTP clock support registered EDAC MC: Ver: 3.0.0 FPGA manager framework Advanced Linux Sound Architecture Driver Initialized. vgaarb: loaded clocksource: Switched to clocksource arm_global_timer NET: Registered PF_INET protocol family IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear) tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear) Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear) TCP bind hash table entries: 4096 (order: 4, 65536 bytes, linear) TCP: Hash tables configured (established 4096 bind 4096) UDP hash table entries: 256 (order: 1, 8192 bytes, linear) UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear) NET: Registered PF_UNIX/PF_LOCAL protocol family RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. PCI: CLS 0 bytes, default 64 armv7-pmu f8891000.pmu: hw perfevents: no interrupt-affinity property, guessing. Trying to unpack rootfs image as initramfs... hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available workingset: timestamp_bits=30 max_order=17 bucket_order=0 jffs2: version 2.2. (NAND) (SUMMARY) В© 2001-2006 Red Hat, Inc. io scheduler mq-deadline registered io scheduler kyber registered zynq-pinctrl 700.pinctrl: zynq pinctrl initialized gpio gpiochip0: (zynq_gpio): not an immutable chip, please consider fixing it! dma-pl330 f8003000.dma-controller: Loaded driver for PL330 DMAC-241330 dma-pl330 f8003000.dma-controller: DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16 brd: module loaded loop: module loaded CAN device driver interface Freeing initrd memory: 8944K macb e000b000.ethernet eth0: Cadence GEM rev 0x00020118 at 0xe000b000 irq 39 (36:40:30:ca:05:75) e1000e: Intel(R) PRO/1000 Network Driver e1000e: Copyright(c) 1999 - 2015 Intel Corporation. usbcore: registered new interface driver usb-storage i2c_dev: i2c /dev entries driver cdns-wdt f8005000.watchdog: Xilinx Watchdog Timer with timeout 10s EDAC MC: ECC not enabled Xilinx Zynq CpuIdle Driver started sdhci: Secure Digital Host Controller Interface driver sdhci: Copyright(c) Pierre Ossman sdhci-pltfm: SDHCI platform and OF driver helper ledtrig-cpu: registered to indicate activity on CPUs clocksource: ttc_clocksource: mask: 0xffff max_cycles: 0xffff, max_idle_ns: 537538477 ns timer #0 at (ptrval), irq=42 usbcore: registered new interface driver usbhid usbhid: USB HID core driver fpga_manager fpga0: Xilinx Zynq FPGA Manager registered mmc0: SDHCI controller on e0100000.mmc [e0100000.mmc] using ADMA NET: Registered PF_INET6 protocol family Segment Routing with IPv6 In-situ OAM (IOAM) with IPv6 sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver NET: Registered PF_PACKET protocol family can: controller area network core NET: Registered PF_CAN protocol family can: raw protocol can: broadcast manager protocol can: netlink gateway - max_hops=1 Registering SWP/SWPB emulation handler of-fpga-region fpga-full: FPGA Region probed of_cfs_init of_cfs_init: OK ALSA device list: No soundcards found. Freeing unused kernel image (initmem) memory: 1024K Run /init as init process mmc0: new high speed SDHC card at address aaaa mmcblk0: mmc0:aaaa SE16G 14.8 GiB mmcblk0: p1 Starting syslogd: OK Starting klogd: OK Running sysctl: OK Saving 256 bits of non-creditable seed for next boot Starting haveged: haveged: command socket is listening at fd 3 OK Starting network: OK Starting dhcpcd... dhcpcd-10.0.1 starting 8021q: 802.1Q VLAN Support v1.8 forked to background, child pid 92 macb e000b000.ethernet eth0: PHY [e000b000.ethernet-ffffffff:00] driver [RTL8211E Gigabit Ethernet] (irq=POLL) macb e000b000.ethernet eth0: configuring for phy/rgmii-id link mode Welcome to Zynq Linux! Z7020 login: random: crng init done macb e000b000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready root # Осталось разобраться с тем, почему u-boot не хочет грузить image.ub в дефолтотвом environment? Я попробовал получить этот самый environment с помощью команды printenv и вот что получил: Spoiler Zynq> printenv arch=arm baudrate=115200 board=zynq board_name=zynq boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr} boot_efi_binary=load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootarm.efi; if fdt addr -q ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi boot_efi_bootmgr=if fdt addr -q ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr;fi boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_conf} boot_net_usb_start=usb start boot_prefixes=/ /boot/ boot_script_dhcp=boot.scr.uimg boot_scripts=boot.scr.uimg boot.scr boot_syslinux_conf=extlinux/extlinux.conf boot_targets=mmc0 jtag mmc0 mmc1 qspi nand nor usb0 usb1 pxe dhcp bootcmd=run distro_bootcmd bootcmd_dhcp=devtype=dhcp; run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; setenv efi_old_vci ${bootp_vci};setenv efi_old_arch ${bootp_arch};setenv bootp_vci PXEClient:Arch:00010:UNDI:003000;setenv bootp_arch 0xa;if dhcp ${kernel_addr_r}; then tftpboot ${fdt_addr_r} dtb/${efi_fdtfile};if fdt addr -q ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r}; else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi;fi;setenv bootp_vci ${efi_old_vci};setenv bootp_arch ${efi_old_arch};setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci; bootcmd_jtag=echo JTAG: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo JTAG: SCRIPT FAILED: continuing...; bootcmd_mmc0=devnum=0; run mmc_boot bootcmd_mmc1=devnum=1; run mmc_boot bootcmd_nand=nand info && nand read ${scriptaddr} ${script_offset_f} ${script_size_f} && echo NAND: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo NAND: SCRIPT FAILED: continuing...; bootcmd_nor=cp.b ${script_offset_nor} ${scriptaddr} ${script_size_f} && echo NOR: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo NOR: SCRIPT FAILED: continuing...; bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi bootcmd_qspi=sf probe 0 0 0 && sf read ${scriptaddr} ${script_offset_f} ${script_size_f} && echo QSPI: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo QSPI: SCRIPT FAILED: continuing...; bootcmd_usb0=devnum=0; run usb_boot bootcmd_usb1=devnum=1; run usb_boot bootcmd_usb_dfu0=setenv dfu_alt_info boot.scr ram $scriptaddr $script_size_f && dfu 0 ram 0 60 && echo DFU0: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo DFU0: SCRIPT FAILED: continuing...; bootcmd_usb_dfu1=setenv dfu_alt_info boot.scr ram $scriptaddr $script_size_f && dfu 1 ram 1 60 && echo DFU1: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo DFU1: SCRIPT FAILED: continuing...; bootcmd_usb_thor0=setenv dfu_alt_info boot.scr ram $scriptaddr $script_size_f && thordown 0 ram 0 && echo THOR0: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo THOR0: SCRIPT FAILED: continuing...; bootcmd_usb_thor1=setenv dfu_alt_info boot.scr ram $scriptaddr $script_size_f && thordown 1 ram 1 && echo THOR1: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo THOR1: SCRIPT FAILED: continuing...; bootdelay=2 bootfile=boot.scr.uimg bootfstype=fat bootm_low=0 bootm_size=20000000 cpu=armv7 distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done efi_dtb_prefixes=/ /dtb/ /dtb/current/ ethact=ethernet@e000b000 ethaddr=ae:0a:96:27:3d:bf fdt_addr_r=0x1f00000 fdtcontroladdr=1eada3d0 kernel_addr_r=0x2000000 load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile} loadaddr=0x0 mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi modeboot=sdboot pxefile_addr_r=0x2000000 ramdisk_addr_r=0x3100000 scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi; scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done; setenv devplist scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;run boot_efi_bootmgr;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootarm.efi; then echo Found EFI removable media binary efi/boot/bootarm.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${boot_syslinux_conf}; then echo Found ${prefix}${boot_syslinux_conf}; run boot_extlinux; echo EXTLINUX FAILED: continuing...; fi scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done script_offset_f=fc0000 script_offset_nor=0xE2FC0000 script_size_f=0x40000 scriptaddr=3000000 soc=zynq stderr=serial@e0000000 stdin=serial@e0000000 stdout=serial@e0000000 ubifs_boot=if ubi part ${bootubipart} ${bootubioff} && ubifsmount ubi0:${bootubivol}; then devtype=ubi; devnum=ubi0; bootfstype=ubifs; distro_bootpart=${bootubivol}; run scan_dev_for_boot; ubifsumount; fi usb_boot=usb start; if usb dev ${devnum}; then devtype=usb; run scan_dev_for_boot_part; fi vendor=xilinx Environment size: 5903/131067 bytes И я что-то не наблюдаю, где здесь загрузка образа с именем image.ub? А вот загрузка с помощью extlinux.conf, которая получается без проблем (первый пост) как раз в наличии. Видимо, надо смотреть конфигурацию u-boot, что-то там не настроено или "слетели" настройки по умолчанию. Получил окружение u-boot с поставляемой SD-карты, в нём как раз image.ub присутствует: Spoiler U-Boot 2019.01 (Apr 07 2023 - 03:00:06 +0000) Xilinx Zynq ZC702 CPU: Zynq 7z020 Silicon: v3.1 DRAM: ECC disabled 512 MiB MMC: mmc@e0100000: 0 Loading Environment from FAT... *** Warning - bad CRC, using default environment In: serial@e0000000 Out: serial@e0000000 Err: serial@e0000000 Net: ZYNQ GEM: e000b000, phyaddr ffffffff, interface rgmii-id eth0: ethernet@e000b000 U-BOOT for QMTECH_Starter_Kit_V2_XC7Z020 ethernet@e000b000 Waiting for PHY auto negotiation to complete..... done BOOTP broadcast 1 BOOTP broadcast 2 BOOTP broadcast 3 DHCP client bound to address 192.168.81.65 (759 ms) Hit any key to stop autoboot: 0 Zynq> printenv arch=arm autoload=no baudrate=115200 board=zynq board_name=zynq boot_img=BOOT.BIN boot_targets=mmc bootcmd=run default_bootcmd bootdelay=4 bootenv=uEnv.txt clobstart=0x10000000 console=console=ttyPS0,115200 cp_kernel2ram=mmcinfo && fatload mmc ${sdbootdev} ${netstart} ${kernel_img} cpu=armv7 default_bootcmd=run uenvboot; run cp_kernel2ram && bootm ${netstart} dfu_mmc_info=set dfu_alt_info ${kernel_image} fat 0 1\\;dfu_mmc=run dfu_mmc_info && dfu 0 mmc 0 dfu_ram=run dfu_ram_info && dfu 0 ram 0 dfu_ram_info=setenv dfu_alt_info image.ub ram $netstart 0x1e00000 dnsip=192.168.81.18 dtb_img=system.dtb dtbnetstart=0x23fff000 ethact=ethernet@e000b000 ethaddr=00:0a:35:00:1e:53 fault=echo ${img} image size is greater than allocated place - partition ${img} is NOT UPDATED fdtcontroladdr=1f2c3800 gatewayip=192.168.81.18 importbootenv=echo "Importing environment from SD ..."; env import -t ${loadbootenv_addr} $filesize install_boot=mmcinfo && fatwrite mmc ${sdbootdev} ${clobstart} ${boot_img} ${filesize} install_bootenv=mmcinfo && fatwrite mmc ${sdbootdev} ${clobstart} ${bootenv_img} ${filesize} install_kernel=mmcinfo && fatwrite mmc ${sdbootdev} ${clobstart} ${kernel_img} ${filesize} ipaddr=192.168.81.65 kernel_img=image.ub load_boot=tftpboot ${clobstart} ${boot_img} load_dtb=tftpboot ${clobstart} ${dtb_img} load_kernel=tftpboot ${clobstart} ${kernel_img} loadaddr=0x10000000 loadbootenv=load mmc $sdbootdev:$partid ${loadbootenv_addr} ${bootenv} loadbootenv_addr=0x00100000 modeboot=sdboot nc=setenv stdout nc;setenv stdin nc; netboot=tftpboot ${netstart} ${kernel_img} && bootm netmask=255.255.255.0 netstart=0x10000000 psserial0=setenv stdout ttyPS0;setenv stdin ttyPS0 sd_uEnvtxt_existence_test=test -e mmc $sdbootdev:$partid /uEnv.txt sd_update_dtb=echo Updating dtb from SD; mmcinfo && fatload mmc ${sdbootdev}:1 ${clobstart} ${dtb_img} && run install_dtb sdbootdev=0 serial=setenv stdout serial;setenv stdin serial serverip=192.168.0.111 soc=zynq stderr=serial@e0000000 stdin=serial@e0000000 stdout=serial@e0000000 test_crc=if imi ${clobstart}; then run test_img; else echo ${img} Bad CRC - ${img} is NOT UPDATED; fi test_img=setenv var "if test ${filesize} -gt ${psize}; then run fault; else run ${installcmd}; fi"; run var; setenv var thor_mmc=run dfu_mmc_info && thordown 0 mmc 0 thor_ram=run dfu_ram_info && thordown 0 ram 0 uenvboot=if run sd_uEnvtxt_existence_test; then run loadbootenv; echo Loaded environment from ${bootenv}; run importbootenv; fi; if test -n $uenvcmd; then echo Running uenvcmd ...; run uenvcmd; fi update_boot=setenv img boot; setenv psize ${bootsize}; setenv installcmd "install_boot"; run load_boot ${installcmd}; setenv img; setenv psize; setenv installcmd update_dtb=setenv img dtb; setenv psize ${dtbsize}; setenv installcmd "install_dtb"; run load_dtb test_img; setenv img; setenv psize; setenv installcmd update_kernel=setenv img kernel; setenv psize ${kernelsize}; setenv installcmd "install_kernel"; run load_kernel ${installcmd}; setenv img; setenv psize; setenv installcmd vendor=xilinx Environment size: 3045/524284 bytes Zynq> Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 2 августа, 2023 Опубликовано 2 августа, 2023 · Жалоба Смотрели? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dimonira 0 4 августа, 2023 Опубликовано 4 августа, 2023 · Жалоба On 8/3/2023 at 12:05 AM, gosha-z said: Смотрели? Смотрел. Там мало что объясняется. Шаг влево, шаг вправо - неизвестность. И до успешного результата ничего не доведено. Пока что я понял, что в доках Xilinx всё заточено под Petalinux, так что image.ub - это там. Если компилировать u-boot самому, то всё будет по-другому. Разбираю... ------------------------------- В итоге победил, система грузится из image.ub. Изучая окружение u-boot, которое я получил с помощью команды printenv, я понял, что мне эти скрипты не осилить. Точнее, не сами скрипты, а как их поменять в настройках конфигурации u-boot. В итоге я решил попробовать простой путь - изменить переменную окружения bootcmd, которая изначально была определена так Quote run distro_bootcmd Эта distro_bootcmd выполняет различные варианты загрузки с разных устройств и по сети. Мне это всё вроде не нужно (для платы), поэтому заменил команду на следующие: Quote imagestart=0x3000000; imagename=image.ub; mem dev 0; fatload mmc 0 ${imagestart} ${imagename}; bootm ${imagestart}; Команду вводил в этом меню конфигурирования u-boot: Больше ничего не менял, запустил сборку u-boot. После этого пересобрал boot.ini с новым u-boot.elf и записал на SD-карту файлы boot.ini и image.ub. Система загрузилась без проблем. Лог загрузки следующий: Spoiler U-Boot 2023.01 (Aug 04 2023 - 16:50:42 +0300) CPU: Zynq 7z020 Silicon: v3.1 DRAM: ECC disabled 512 MiB Core: 19 devices, 14 uclasses, devicetree: board Flash: 0 Bytes NAND: 0 MiB MMC: mmc@e0100000: 0 Loading Environment from FAT... *** Error - No Valid Environment Area found *** Warning - bad env area, using default environment In: serial@e0000000 Out: serial@e0000000 Err: serial@e0000000 Net: ZYNQ GEM: e000b000, mdio bus e000b000, phyaddr 0, interface rgmii-id Warning: ethernet@e000b000 (eth0) using random MAC address - 0a:99:9d:88:cd:23 eth0: ethernet@e000b000 Hit any key to stop autoboot: 0 Unknown command 'mem' - try 'help' 13790688 bytes read in 768 ms (17.1 MiB/s) ## Loading kernel from FIT Image at 03000000 ... Using 'conf' configuration Verifying Hash Integrity ... OK Trying 'kernel' kernel subimage Description: Linux Kernel Type: Kernel Image Compression: uncompressed Data Start: 0x030000d0 Data Size: 4621640 Bytes = 4.4 MiB Architecture: ARM OS: Linux Load Address: 0x00008000 Entry Point: 0x00008000 Hash algo: sha1 Hash value: 82eeb2b97a5a7d3a815d9a5abfdb53a29a27d323 Verifying Hash Integrity ... sha1+ OK ## Loading ramdisk from FIT Image at 03000000 ... Using 'conf' configuration Verifying Hash Integrity ... OK Trying 'ramdisk' ramdisk subimage Description: ramdisk Type: RAMDisk Image Compression: uncompressed Data Start: 0x0346b27c Data Size: 9156096 Bytes = 8.7 MiB Architecture: ARM OS: Linux Load Address: unavailable Entry Point: unavailable Hash algo: sha1 Hash value: 59d1b8b6db75d67820a74fd505648de893717c0b Verifying Hash Integrity ... sha1+ OK ## Loading fdt from FIT Image at 03000000 ... Using 'conf' configuration Verifying Hash Integrity ... OK Trying 'fdt' fdt subimage Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed Data Start: 0x03468708 Data Size: 10951 Bytes = 10.7 KiB Architecture: ARM Hash algo: sha1 Hash value: d2836712687057664c45433564f4b0d834aafc28 Verifying Hash Integrity ... sha1+ OK Booting using the fdt blob at 0x3468708 Working FDT set to 3468708 Loading Kernel Image Loading Ramdisk to 1e21a000, end 1ead5600 ... OK Loading Device Tree to 1e214000, end 1e219ac6 ... OK Working FDT set to 1e214000 Starting kernel ... Booting Linux on physical CPU 0x0 Linux version 6.1.0-xilinx (root@dimonira-virtual-machine) (arm-buildroot-linux-gnueabihf-gcc.br_real (Buildroot 2023.05.1) 11.4.0, GNU ld (GNU Binutils) 2.38) #1 SMP PREEMPT Fri Jul 28 15:51:19 MSK 2023 CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache OF: fdt: Machine model: xlnx,zynq-7000 earlycon: cdns0 at MMIO 0xe0000000 (options '115200n8') printk: bootconsole [cdns0] enabled Memory policy: Data cache writealloc cma: Reserved 16 MiB at 0x1f000000 Zone ranges: Normal [mem 0x0000000000000000-0x000000001fffffff] HighMem empty Movable zone start for each node Early memory node ranges node 0: [mem 0x0000000000000000-0x000000001fffffff] Initmem setup node 0 [mem 0x0000000000000000-0x000000001fffffff] percpu: Embedded 12 pages/cpu s16788 r8192 d24172 u49152 Built 1 zonelists, mobility grouping on. Total pages: 130048 Kernel command line: earlycon Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear) mem auto-init: stack:off, heap alloc:off, heap free:off Memory: 482120K/524288K available (7168K kernel code, 248K rwdata, 1940K rodata, 1024K init, 121K bss, 25784K reserved, 16384K cma-reserved, 0K highmem) rcu: Preemptible hierarchical RCU implementation. rcu: RCU event tracing is enabled. rcu: RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2. rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2 NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 efuse mapped to (ptrval) slcr mapped to (ptrval) GIC physical location is 0xf8f01000 L2C: platform modifies aux control register: 0x72360000 -> 0x72760000 L2C: DT/platform modifies aux control register: 0x72360000 -> 0x72760000 L2C-310 erratum 769419 enabled L2C-310 enabling early BRESP for Cortex-A9 L2C-310 full line of zeros enabled for Cortex-A9 L2C-310 ID prefetch enabled, offset 1 lines L2C-310 dynamic clock gating enabled, standby mode enabled L2C-310 cache controller enabled, 8 ways, 512 kB L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76760001 rcu: srcu_init: Setting srcu_struct sizes based on contention. zynq_clock_init: clkc starts at (ptrval) Zynq clock init sched_clock: 64 bits at 167MHz, resolution 6ns, wraps every 4398046511103ns clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0x26703d7dd8, max_idle_ns: 440795208065 ns Switching to timer-based delay loop, resolution 6ns Console: colour dummy device 80x30 printk: console [tty0] enabled printk: bootconsole [cdns0] disabled Booting Linux on physical CPU 0x0 Linux version 6.1.0-xilinx (root@dimonira-virtual-machine) (arm-buildroot-linux-gnueabihf-gcc.br_real (Buildroot 2023.05.1) 11.4.0, GNU ld (GNU Binutils) 2.38) #1 SMP PREEMPT Fri Jul 28 15:51:19 MSK 2023 CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache OF: fdt: Machine model: xlnx,zynq-7000 earlycon: cdns0 at MMIO 0xe0000000 (options '115200n8') printk: bootconsole [cdns0] enabled Memory policy: Data cache writealloc cma: Reserved 16 MiB at 0x1f000000 Zone ranges: Normal [mem 0x0000000000000000-0x000000001fffffff] HighMem empty Movable zone start for each node Early memory node ranges node 0: [mem 0x0000000000000000-0x000000001fffffff] Initmem setup node 0 [mem 0x0000000000000000-0x000000001fffffff] percpu: Embedded 12 pages/cpu s16788 r8192 d24172 u49152 Built 1 zonelists, mobility grouping on. Total pages: 130048 Kernel command line: earlycon Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear) mem auto-init: stack:off, heap alloc:off, heap free:off Memory: 482120K/524288K available (7168K kernel code, 248K rwdata, 1940K rodata, 1024K init, 121K bss, 25784K reserved, 16384K cma-reserved, 0K highmem) rcu: Preemptible hierarchical RCU implementation. rcu: RCU event tracing is enabled. rcu: RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2. rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2 NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 efuse mapped to (ptrval) slcr mapped to (ptrval) GIC physical location is 0xf8f01000 L2C: platform modifies aux control register: 0x72360000 -> 0x72760000 L2C: DT/platform modifies aux control register: 0x72360000 -> 0x72760000 L2C-310 erratum 769419 enabled L2C-310 enabling early BRESP for Cortex-A9 L2C-310 full line of zeros enabled for Cortex-A9 L2C-310 ID prefetch enabled, offset 1 lines L2C-310 dynamic clock gating enabled, standby mode enabled L2C-310 cache controller enabled, 8 ways, 512 kB L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76760001 rcu: srcu_init: Setting srcu_struct sizes based on contention. zynq_clock_init: clkc starts at (ptrval) Zynq clock init sched_clock: 64 bits at 167MHz, resolution 6ns, wraps every 4398046511103ns clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0x26703d7dd8, max_idle_ns: 440795208065 ns Switching to timer-based delay loop, resolution 6ns Console: colour dummy device 80x30 printk: console [tty0] enabled printk: bootconsole [cdns0] disabled Calibrating delay loop (skipped), value calculated using timer frequency.. 333.33 BogoMIPS (lpj=1666666) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) CPU: Testing write buffer coherency: ok CPU0: Spectre v2: using BPIALL workaround CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 Setting up static identity map for 0x100000 - 0x100060 rcu: Hierarchical SRCU implementation. rcu: Max phase no-delay instances is 1000. smp: Bringing up secondary CPUs ... CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 CPU1: Spectre v2: using BPIALL workaround smp: Brought up 1 node, 2 CPUs SMP: Total of 2 processors activated (666.66 BogoMIPS). CPU: All CPU(s) started in SVC mode. devtmpfs: initialized VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4 clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns futex hash table entries: 512 (order: 3, 32768 bytes, linear) pinctrl core: initialized pinctrl subsystem NET: Registered PF_NETLINK/PF_ROUTE protocol family DMA: preallocated 256 KiB pool for atomic coherent allocations thermal_sys: Registered thermal governor 'step_wise' cpuidle: using governor menu amba f8801000.etb: Fixing up cyclic dependency with replicator amba f8803000.tpiu: Fixing up cyclic dependency with replicator amba f8804000.funnel: Fixing up cyclic dependency with replicator amba f889c000.ptm: Fixing up cyclic dependency with f8804000.funnel amba f889d000.ptm: Fixing up cyclic dependency with f8804000.funnel hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers. hw-breakpoint: maximum watchpoint size is 4 bytes. e0000000.serial: ttyPS0 at MMIO 0xe0000000 (irq = 26, base_baud = 6249999) is a xuartps printk: console [ttyPS0] enabled SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb mc: Linux media interface: v0.10 videodev: Linux video capture interface: v2.00 pps_core: LinuxPPS API ver. 1 registered pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]> PTP clock support registered EDAC MC: Ver: 3.0.0 FPGA manager framework Advanced Linux Sound Architecture Driver Initialized. vgaarb: loaded clocksource: Switched to clocksource arm_global_timer NET: Registered PF_INET protocol family IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear) tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear) Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear) TCP bind hash table entries: 4096 (order: 4, 65536 bytes, linear) TCP: Hash tables configured (established 4096 bind 4096) UDP hash table entries: 256 (order: 1, 8192 bytes, linear) UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear) NET: Registered PF_UNIX/PF_LOCAL protocol family RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. PCI: CLS 0 bytes, default 64 armv7-pmu f8891000.pmu: hw perfevents: no interrupt-affinity property, guessing. Trying to unpack rootfs image as initramfs... hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available workingset: timestamp_bits=30 max_order=17 bucket_order=0 jffs2: version 2.2. (NAND) (SUMMARY) В© 2001-2006 Red Hat, Inc. io scheduler mq-deadline registered io scheduler kyber registered zynq-pinctrl 700.pinctrl: zynq pinctrl initialized gpio gpiochip0: (zynq_gpio): not an immutable chip, please consider fixing it! dma-pl330 f8003000.dma-controller: Loaded driver for PL330 DMAC-241330 dma-pl330 f8003000.dma-controller: DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16 brd: module loaded loop: module loaded CAN device driver interface Freeing initrd memory: 8944K macb e000b000.ethernet eth0: Cadence GEM rev 0x00020118 at 0xe000b000 irq 39 (0a:99:9d:88:cd:23) e1000e: Intel(R) PRO/1000 Network Driver e1000e: Copyright(c) 1999 - 2015 Intel Corporation. usbcore: registered new interface driver usb-storage i2c_dev: i2c /dev entries driver cdns-wdt f8005000.watchdog: Xilinx Watchdog Timer with timeout 10s EDAC MC: ECC not enabled Xilinx Zynq CpuIdle Driver started sdhci: Secure Digital Host Controller Interface driver sdhci: Copyright(c) Pierre Ossman sdhci-pltfm: SDHCI platform and OF driver helper ledtrig-cpu: registered to indicate activity on CPUs clocksource: ttc_clocksource: mask: 0xffff max_cycles: 0xffff, max_idle_ns: 537538477 ns timer #0 at (ptrval), irq=42 usbcore: registered new interface driver usbhid usbhid: USB HID core driver mmc0: SDHCI controller on e0100000.mmc [e0100000.mmc] using ADMA fpga_manager fpga0: Xilinx Zynq FPGA Manager registered NET: Registered PF_INET6 protocol family Segment Routing with IPv6 In-situ OAM (IOAM) with IPv6 sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver NET: Registered PF_PACKET protocol family can: controller area network core NET: Registered PF_CAN protocol family can: raw protocol mmc0: new high speed SDHC card at address aaaa can: broadcast manager protocol mmcblk0: mmc0:aaaa SE16G 14.8 GiB can: netlink gateway - max_hops=1 mmcblk0: p1 Registering SWP/SWPB emulation handler of-fpga-region fpga-full: FPGA Region probed of_cfs_init of_cfs_init: OK ALSA device list: No soundcards found. Freeing unused kernel image (initmem) memory: 1024K Run /init as init process Starting syslogd: OK Starting klogd: OK Running sysctl: OK Saving 256 bits of non-creditable seed for next boot Starting haveged: haveged: command socket is listening at fd 3 OK Starting network: OK Starting dhcpcd... dhcpcd-10.0.1 starting 8021q: 802.1Q VLAN Support v1.8 forked to background, child pid 91 macb e000b000.ethernet eth0: PHY [e000b000.ethernet-ffffffff:00] driver [RTL8211E Gigabit Ethernet] (irq=POLL) macb e000b000.ethernet eth0: configuring for phy/rgmii-id link mode Welcome to Zynq Linux! Z7020 login: random: crng init done macb e000b000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready root # Окружение для нового u-boot стало таким: Spoiler Zynq> printenv arch=arm baudrate=115200 board=zynq board_name=zynq boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr} boot_efi_binary=load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootarm.efi; if fdt addr -q ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi boot_efi_bootmgr=if fdt addr -q ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr;fi boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_conf} boot_net_usb_start=usb start boot_prefixes=/ /boot/ boot_script_dhcp=boot.scr.uimg boot_scripts=boot.scr.uimg boot.scr boot_syslinux_conf=extlinux/extlinux.conf boot_targets=mmc0 jtag mmc0 mmc1 qspi nand nor usb0 usb1 pxe dhcp bootcmd=imagestart=0x3000000; imagename=image.ub; mem dev 0; fatload mmc 0 ${imagestart} ${imagename}; bootm ${imagestart}; bootcmd_dhcp=devtype=dhcp; run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; setenv efi_old_vci ${bootp_vci};setenv efi_old_arch ${bootp_arch};setenv bootp_vci PXEClient:Arch:00010:UNDI:003000;setenv bootp_arch 0xa;if dhcp ${kernel_addr_r}; then tftpboot ${fdt_addr_r} dtb/${efi_fdtfile};if fdt addr -q ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r}; else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi;fi;setenv bootp_vci ${efi_old_vci};setenv bootp_arch ${efi_old_arch};setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci; bootcmd_jtag=echo JTAG: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo JTAG: SCRIPT FAILED: continuing...; bootcmd_mmc0=devnum=0; run mmc_boot bootcmd_mmc1=devnum=1; run mmc_boot bootcmd_nand=nand info && nand read ${scriptaddr} ${script_offset_f} ${script_size_f} && echo NAND: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo NAND: SCRIPT FAILED: continuing...; bootcmd_nor=cp.b ${script_offset_nor} ${scriptaddr} ${script_size_f} && echo NOR: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo NOR: SCRIPT FAILED: continuing...; bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi bootcmd_qspi=sf probe 0 0 0 && sf read ${scriptaddr} ${script_offset_f} ${script_size_f} && echo QSPI: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo QSPI: SCRIPT FAILED: continuing...; bootcmd_usb0=devnum=0; run usb_boot bootcmd_usb1=devnum=1; run usb_boot bootcmd_usb_dfu0=setenv dfu_alt_info boot.scr ram $scriptaddr $script_size_f && dfu 0 ram 0 60 && echo DFU0: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo DFU0: SCRIPT FAILED: continuing...; bootcmd_usb_dfu1=setenv dfu_alt_info boot.scr ram $scriptaddr $script_size_f && dfu 1 ram 1 60 && echo DFU1: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo DFU1: SCRIPT FAILED: continuing...; bootcmd_usb_thor0=setenv dfu_alt_info boot.scr ram $scriptaddr $script_size_f && thordown 0 ram 0 && echo THOR0: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo THOR0: SCRIPT FAILED: continuing...; bootcmd_usb_thor1=setenv dfu_alt_info boot.scr ram $scriptaddr $script_size_f && thordown 1 ram 1 && echo THOR1: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo THOR1: SCRIPT FAILED: continuing...; bootdelay=2 bootm_low=0 bootm_size=20000000 cpu=armv7 distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done efi_dtb_prefixes=/ /dtb/ /dtb/current/ ethaddr=1e:df:b1:05:a5:cb fdt_addr_r=0x1f00000 fdtcontroladdr=1eada3d0 kernel_addr_r=0x2000000 load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile} loadaddr=0x0 mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi modeboot=sdboot pxefile_addr_r=0x2000000 ramdisk_addr_r=0x3100000 scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi; scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done; setenv devplist scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;run boot_efi_bootmgr;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootarm.efi; then echo Found EFI removable media binary efi/boot/bootarm.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${boot_syslinux_conf}; then echo Found ${prefix}${boot_syslinux_conf}; run boot_extlinux; echo EXTLINUX FAILED: continuing...; fi scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done script_offset_f=fc0000 script_offset_nor=0xE2FC0000 script_size_f=0x40000 scriptaddr=3000000 soc=zynq stderr=serial@e0000000 stdin=serial@e0000000 stdout=serial@e0000000 ubifs_boot=if ubi part ${bootubipart} ${bootubioff} && ubifsmount ubi0:${bootubivol}; then devtype=ubi; devnum=ubi0; bootfstype=ubifs; distro_bootpart=${bootubivol}; run scan_dev_for_boot; ubifsumount; fi usb_boot=usb start; if usb dev ${devnum}; then devtype=usb; run scan_dev_for_boot_part; fi vendor=xilinx Environment size: 5937/131067 bytes Zynq> Сделал сравнение окружения для прежнего u-boot и нового: Чтобы получить окружение u-boot, я временно переименовал image.ub, чтобы он не грузился. В итоге u-boot после замены bootcmd заканчивает попытку загрузки очень быстро: Spoiler U-Boot 2023.01 (Aug 04 2023 - 16:50:42 +0300) CPU: Zynq 7z020 Silicon: v3.1 DRAM: ECC disabled 512 MiB Core: 19 devices, 14 uclasses, devicetree: board Flash: 0 Bytes NAND: 0 MiB MMC: mmc@e0100000: 0 Loading Environment from FAT... *** Error - No Valid Environment Area found *** Warning - bad env area, using default environment In: serial@e0000000 Out: serial@e0000000 Err: serial@e0000000 Net: ZYNQ GEM: e000b000, mdio bus e000b000, phyaddr 0, interface rgmii-id Warning: ethernet@e000b000 (eth0) using random MAC address - 1e:df:b1:05:a5:cb eth0: ethernet@e000b000 Hit any key to stop autoboot: 0 Unknown command 'mem' - try 'help' Failed to load 'image.ub' Wrong Image Format for bootm command ERROR: can't get kernel image! Никаких попыток загрузки с других источников нет. Так что получилось топорно, но я пока не силён в линуксах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться