Dimonira 0 September 5 Posted September 5 · Report post Всем привет! После минимального освоения сборки и загрузки линукса в Zynq-7, надо освоить аналогичные действия на софтовом Microblaze. Имеется плата Microphase A7-Lite с установленными fpga XC7A100T-2FGG484, DDR3 MT41K256M16TW-107:P (D9SHD), QSPI flash, RGMII RTL8211E, HDMI, EEPROM, 2xLED, 3xBUTTON . Сразу скажу, что по мере освоения стало понятно, что установленного QSPI flash 16МБ для этих целей недостаточно. Так что заменил IS25LP128FBLE (16МБ) на MX25L25645GM2I-10G (32МБ). Подключение: Чтобы не парить мозг каждый раз назначением ножек и т.п., когда делается новый проект для этой платы, сделал для платы "пакет поддержки", чтобы процесс был аналогичен прочим готовым платам для разработчиков. Дело не сильно хитрое, но пришлось пройти обряд танцев с бубном, ибо, если что-то Vivado не понравится в файлах описания платы, то он тупо ничего не скажет, просто платы в общем списке плат не окажется. Далее, посмотрев видео о том, как быстро "поднять" Petalinux + Microblaze на другой похожей по сути плате Arty A7-100 и почитав документацию, собрал свой проект в Vivado: Настройки ограничений касались только QSPI: Quote set_property BITSTREAM.CONFIG.CONFIGRATE 33 [current_design] set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design] set_property CONFIG_MODE SPIx4 [current_design] Чтобы флешка стала загрузочной, выставил соответствующую опцию (она disable, т.к. параметры настройки корки сделаны в "пакете поддержки"): Далее стандартные шаги по компиляции, экспорту оборудования в файл. Затем переход на виртуальную машину vmware с установленной Ubuntu, Vivado, Petalinux и прочим зоопарком. Запускаю терминал в папке, в которой будет создан проект с именем "qspi". 1. Начальные действия по созданию проекта Petalinux: Quote source ~/petalinux/2023_1/settings.sh petalinux-create --type project --template microblaze --name qspi cd qspi 2. Копирую в папку проекта файл описания оборудования, экспортированный из Vivado. 3. Запускаю конфигурирование проекта в соответствии с оборудованием: Quote petalinux-config --get-hw-description=. Когда откроется окно конфигуратора, делаю следующие настройки. Снимаю галку TFTPD: Quote Image Packaging Configuration->[ ]Copy final images to tftpboot Задаю настройки областей в памяти QSPI Flash: Quote Primary Flash (axi_quad_spi_0) ---> [ ] Advanced Flash Auto Configuration *** partition 0 *** (spi0-fpga) name (0x400000) size *** partition 1 *** (spi0-boot) name (0x100000) size *** partition 2 *** (spi0-bootenv) name (0x100000) size *** partition 3 *** (spi0-kernel) name (0x1900000) size *** partition 4 *** () name Область spi0-fpga для бит-файла fpga, модифицированного внедрённым кодом загрузчика первого этапа FS-Boot. С запасом - 4 МБ. Область spi0-boot - для загрузчика u-boot. Его размер чуть более 526 кБ, так что взял с запасом 1 МБ. Область spi0-bootenv - резерв под bootenv, тоже взял с запасом, округлив для простоты до 1 МБ (хотя столько не надо). Область spi0-kernel - под образ ядра линукс, точнее, FIT-файл image.ub, составленный из следующего (содержимое готового файла, взято командой dumpimage -l image.ub, но это уже после компиляции): Quote FIT description: Kernel fitImage for PetaLinux/6.1.5-xilinx-v2023.1+gitAUTOINC+716921b6d7/microblaze-generic-7a100t Created: Fri Apr 21 10:47:58 2023 Image 0 (kernel-1) Description: Linux kernel Created: Fri Apr 21 10:47:58 2023 Type: Kernel Image Compression: gzip compressed Data Size: 3860528 Bytes = 3770.05 KiB = 3.68 MiB Architecture: MicroBlaze OS: Linux Load Address: 0x80000000 Entry Point: 0x80000000 Hash algo: sha256 Hash value: fad3b9a9155a3013c2f6874225276da8988483f8ee3e9349e31872a194706ab5 Image 1 (fdt-system-top.dtb) Description: Flattened Device Tree blob Created: Fri Apr 21 10:47:58 2023 Type: Flat Device Tree Compression: uncompressed Data Size: 16809 Bytes = 16.42 KiB = 0.02 MiB Architecture: MicroBlaze Hash algo: sha256 Hash value: 543745f752da3494a97bdf8b1372c46466c02d9a5b88d94c83a2dc0ccf704616 Image 2 (ramdisk-1) Description: petalinux-image-minimal Created: Fri Apr 21 10:47:58 2023 Type: RAMDisk Image Compression: uncompressed Data Size: 9219377 Bytes = 9003.30 KiB = 8.79 MiB Architecture: MicroBlaze OS: Linux Load Address: unavailable Entry Point: unavailable Hash algo: sha256 Hash value: ac6f980065616e1777f22393e5b3492ed8f49961cdaac7af8bc8727eb5893fd5 Default Configuration: 'conf-system-top.dtb' Configuration 0 (conf-system-top.dtb) Description: 1 Linux kernel, FDT blob, ramdisk Kernel: kernel-1 Init Ramdisk: ramdisk-1 FDT: fdt-system-top.dtb Hash algo: sha256 Hash value: unavailable Почему 0x1900000 (25МБ) - чуть ниже. Задаю настройки u-boot, находящиеся здесь: Quote u-boot Configuration->u-boot script configuration->QSPI/OSPI image offsets Меняю только те, что для FIT-образа (мой случай): Quote (0x600000) QSPI/OSPI fit image offset (0x1900000) QSPI/OSPI fit image size Офсет взят исходя из того, что перед FIT образом в flash лежат: fpga=4МБ + u-boot=1МБ + bootenv=1МБ = 6МБ => 0x600000. Размер под FIT образ взят до конца размера флешки 32МБ с учётом того, что в последний 1МБ пишется скрипт загрузки boot.scr: 32МБ (0x2000000) - 6МБ - 1МБ = 25МБ (0x1900000). Почему-то эти настройки человек из видео не делал, но у него всё запускается и грузится (правда, у него Vivado 2018). В документации (UG1144, стр.69) прямо написано: Quote Note: You should check and update offset which is specified in petalinux-config → u-boot Configuration → u-boot script configuration QSPI/OSPI fit image offset should be match with the kernel offset in petalinux-config → Subsystem AUTO Hardware Settings → Flash Settings. If they do not match, the process can fail at U-Boot prompt. 4. В конце надо сохранить конфигурацию. После выхода из конфигуратора будет сгенерирована конфигурация проекта. 5. Конфигурирование файловой системы rootfs (можно выбрать программы для установки, но это увеличивает размер образа!): Quote petalinux-config -c rootfs Я выбрал только эти две (вторая в надежде на то, что система будет время синхронизировать по NTP, но не знаю как в деле): Quote Filesystem Packages->base->[*]busybox Filesystem Packages->network->ntp->[*]ntp В видео человек ещё выбирал Python и с ним всё умещалось в 16МБ на его плате Arty-A7. В моём случае можно было выбрать только Python3, но это увеличивает размер image.ub до 25МБ, что под завязку или не влезет в 32МБ (6МБ ведь занято уже). Далее сохраняем настройки и выходим. 6. Запускаю построение petalinux: Quote petalinux-build 7. После успешной сборки выходные файлы образов будут в папке images/linux: На всякий случай, вот содержимое файла boot.prm: Quote =================================== Configuration Memory information =================================== File Format MCS Interface SPIX4 Size 32M Start Address 0x00000000 End Address 0x01FFFFFF Addr1 Addr2 Date File(s) 0x00000000 0x003A607B Sep 3 00:19:37 2023 /home/dimonira/petalinux/a7lite/qspi/images/linux/download.bit 0x00400000 0x00480A03 Sep 3 00:14:16 2023 /home/dimonira/petalinux/a7lite/qspi/images/linux/u-boot-s.bin 0x00600000 0x0127DF87 Sep 3 00:18:12 2023 /home/dimonira/petalinux/a7lite/qspi/images/linux/image.ub 0x01F00000 0x01F00BBD Sep 3 00:09:24 2023 /home/dimonira/petalinux/a7lite/qspi/images/linux/boot.scr 8. Подготовка окружения Vivado (у вас путь установки Vivado может отличаться): Quote source ~/Xilinx/Vivado/2023.1/settings64.sh 9. Генерация mcs файла для прошивки (у вас название бит-файла может отличаться): Quote petalinux-package --boot --force --fpga design_1_wrapper.bit --u-boot --kernel --flash-size 32 --flash-intf SPIx4 Лог: Quote [INFO] Sourcing buildtools WARNING: Auto detecting MMI file with XSA INFO: Creating download.bit... INFO: Fpga bitstream: /home/dimonira/petalinux/a7lite/qspi/design_1_wrapper.bit INFO: Fpga bitstream MMI file: /tmp/tmp.BEaIaXg56e/design_1_wrapper.mmi INFO: Fsbl file: /home/dimonira/petalinux/a7lite/qspi/images/linux/fs-boot.elf INFO: Output download.bit: /home/dimonira/petalinux/a7lite/qspi/images/linux/download.bit INFO: Add bitstream "/home/dimonira/petalinux/a7lite/qspi/images/linux/download.bit" to 0. INFO: Add datafile "/home/dimonira/petalinux/a7lite/qspi/images/linux/u-boot-s.bin" to 0x400000. INFO: Add datafile "/home/dimonira/petalinux/a7lite/qspi/images/linux/image.ub" to 0x600000. INFO: Add datafile "/home/dimonira/petalinux/a7lite/qspi/images/linux/boot.scr" to 0x1f00000. INFO: Generating MCS file... 10. Далее стандартная процедура прошивки итогового файла boot.mcs в QSPI flash средствами Vivado. 11. Теперь о грустном. Система НЕ запускается! Судя по логу, который я ловлю терминалом: Quote FS-BOOT First Stage Bootloader (c) 2013-2014 Xilinx Inc. Build date: May 1 2023 00:38:12 Serial console: Uartlite FS-BOOT: Booting from FLASH. FPGA успешно загружается и загрузчик первого этапа FS-BOOT запускается и начинает работать (по крайней мере выводит в лог сообщения). И раз он работает, значит работает и проект, во всяком случае Microblaze+BRAM+UART+клоки. Но FS-BOOT работает из локальной памяти FPGA и должен загрузить уже во внешнюю DDR3 следующий загрузчик - U-BOOT, но судя по всему этого то и не происходит. В чём могут быть грабли? Читая документацию, я так до конца и не понял, как работает вывод CCLK? В начале понятно, выдаёт клоки на загрузку бит-файла в FPGA, но что потом в USER-MODE, будут клоки идти или нет? Бит настройки "Enable STARTUP primitive" я установил, но достаточно ли этого? В документации нет конкретики (или не нашёл). Осциллографом пока поленился тыкать, надо делать "преобразования" на столе. Другой момент. Я посмотрел содержимое итогового файла прошивки boot.mcs. По смещению 0x400000 (после бит-файла), где должен находится u-boot, я вижу заголовок: Где (см. UG1144 стр.200): 0xb8b40008 - маркер 0x80000000 - размер BIN-образа 0x80100000 - стартовый адрес загрузки образа, по которому FS-BOOT загружает U-BOOT 0x9400c001 - где начинается BIN-образ Непонятно второе и последнее значения. Ну, размер ладно, больше - не меньше. Но адрес 0x9400c001 откуда взят? И что это за адрес, внутри флешки или в адресном пространстве Microblaze? В проекте память Microblaze распределена так: Ничего похожего на 0x9400c001 не наблюдаю. Во всяком случае, U-BOOT лежит во флешке и смещение по идее должно быть взято оттуда. И ещё. Есть подозрения на endian. Я так и не понял, на видео у человека после загрузки системы в логах видно, что Microblaze работает в little-endian. Но в документации (UG984) написано: Quote Big endian format is supported when using the MMU in virtual or protected mode (C_USE_MMU > 1) or when reorder instructions are enabled ( C_USE_REORDER_INSTR = 1). ... The C_ENDIANNESS parameter is always set to little endian Но у меня как раз и стоит в настройках Microblaze Linux MMU + Virtual (как в видео). Плюс я где-то видел при компиляции big-endian, но где не могу вспомнить. Сам я ничего не менял, даже непонятно где это выставляется, видимо косвенно. Где искать проблему? PS. Работоспособность DDR3 проверил в другом проекте bare-metal на Microblaze с использованием моего "пакета поддержки" и стандартного шаблона mem_test - работает. Quote Share this post Link to post Share on other sites More sharing options...
Dimonira 0 September 5 Posted September 5 · Report post Продолжил разбираться. Создал проект на основе шаблона mba_fs_boot для отладки FS-BOOT: Конечно, без обычного обряда танца с бубном не обошлось - проект не собирался из-за ошибок, вызванных отсутствием нескольких определений констант. Одно из определений - CONFIG_PRIMARY_FLASH_SPI. Судя по всему, это определяется в проекте Petalinux, а Vitis про это не знает. Другие константы - адреса и размеры, которые в заголовке xparameters.h, описывающем аппаратуру платы, есть, но имена имеют другие. Так что для успеха компиляции добавил в fs-boot.h (после #include "xparameters.h") следующие строки: #define CONFIG_PRIMARY_FLASH_SPI #define CONFIG_FS_BOOT_OFFSET 0x400000 #define CONFIG_XILINX_ERAM_SIZE (XPAR_MIG_7SERIES_0_HIGHADDR-XPAR_MIG_7SERIES_0_BASEADDR) #define CONFIG_XILINX_ERAM_START XPAR_MIG_7SERIES_0_BASEADDR #include "spi-flash.h" Включить spi-flash.h пришлось из-за ругани компилятора на отсутствие объявления функции spi_flash_read. CONFIG_FS_BOOT_OFFSET = 0x400000 - это адрес старта размещения u-boot в флешке (точнее на заголовок перед ним). А в файл xspi.h в аналогичное место вставил это: #define CONFIG_PRIMARY_FLASH_SPI_BASEADDR XPAR_AXI_QUAD_SPI_0_BASEADDR #define CONFIG_FLASH_SPI_MODE XPAR_AXI_QUAD_SPI_0_SPI_MODE #define CONFIG_FLASH_SPI_FIFO_DEPTH XPAR_AXI_QUAD_SPI_0_FIFO_DEPTH Для избегания пары предупреждений пришлось убрать volatile в вызовах spi_flash_read. Но это не критично. Далее запустил отладку и пошёл. Выяснилось, что: 1. FS-BOOT выполняется корректно. 2. Смещение для поиска u-boot в флешке записано корректно, а вот Xilinx дезинформировал, что размер u-boot берётся из заголовка по смещению 0x4. На самом деле целевой адрес загрузки и размер u-boot читаются как два соседних слова, в итоге всё корректно: 0x80100000 - целевой адрес загрузки 0x000808F8 - размер u-boot (526584 байта), точно, как на самом деле размер файла u-boot.bin. 3. Слово 0x9400c001, которое было непонятно, на самом деле первое слово кода u-boot. Оно как раз находится по смещению 0x10C и называется в руководстве как "Where the BIN file start". Следующие картинки всё показывают, в том числе отличие u-boot.bin от u-boot-s.bin (последний тот же u-boot.bin, но с заголовком в начале). В итоге FS-BOOT корректно реально загружает u-boot в DDR3 (видно на картинке по дампу памяти с началом в 0x80100000) и передаёт управление на его начало. В терминале я вижу: Quote FS-BOOT First Stage Bootloader (c) 2013-2014 Xilinx Inc. Build date: Sep 5 2023 20:27:39 Serial console: Uartlite FS-BOOT: Booting from FLASH. Jumping to 0x80100000 А вот дальше - тишина. Не работает u-boot! Почему - непонятно. Во весь рост встаёт вопрос о endian. Я с Microblaze детально не знаком и по двоичному коду не могу понять какой endian. Может знает кто? Или есть другие идеи? Надо разбираться с u-boot... Или с endian у Microblaze, попробую покрутить его настройки. Quote Share this post Link to post Share on other sites More sharing options...
Dimonira 0 September 5 Posted September 5 · Report post Конечно u-boot не сконфигурирован, как оказалось... Посмотреть какой реальный endian у Microblaze можно в файле design_1_wrapper.mmi, в котором приводится описание памяти (как раз для внедрения FS-BOOT в бит-файл): Quote <Processor Endianness="Little" InstPath="design_1_i/microblaze_0"> А вот с u-boot сложнее. Как выяснилось, он почему-то оказался настроен под virtex5 и big endian! Для его конфигурирования делается команда: Quote petalinux-config -c u-boot После её запуска придётся подождать, пока не появится окно конфигуратора. Кратко пока поменял вот что: MicroBlaze architecture-> (0x1F00000) Boot script offset [не менял, просто для справки, что оно тут - смещение для размещения boot.scr] MicroBlaze architecture-> (artix7) Targeted FPGA family [было: virtex5!!!] Endianness selection (Little endian) [было: Big endian!!!] API->[ ] Enable U-Boot API [?наверное можно при надобности выбрать, оставил] Boot options->Boot media->[*] Support for booting from QSPI flash [не обязательно, но по-моему укоротит скрипт boot.scr до запуска сразу с заданного места - QSPI flash] Boot options->[ ] Enable preboot [снял галку, вроде мне не нужно] Device Drivers->Ethernet PHY (physical media interface) support [отключил ненужные PHY] (где-то включил RGMII, посмотреть, может ещё что-то ненужное отключить) Компиляция... Пока не пошло 😞 Quote Share this post Link to post Share on other sites More sharing options...
Dimonira 0 September 6 Posted September 6 · Report post Опять вернулся к FS-BOOT. Подхожу отладчиком к команде перехода на начало u-boot на адрес 0x80100000. Вызвал окно дизассемблера. Но после нажатия на шаг вперёд ничего не происходит! Процессор стоит на месте! Если нажать на паузу, то возникает окно, где об этом сообщается - процессор стоит на адресе 0xb5c: Причём, если посмотреть содержимое регистров, то адрес точки перехода 0x80100000 в регистре r7, но этот регистр в команде перехода не участвует! А далее команды зацикливания, там процессор и стоит. Получается, что до u-boot дело не доходит. В чём может быть проблема? Кэш? Но вроде он отключается в начале FS-BOOT: XCACHE_DISABLE_CACHE(); Quote Share this post Link to post Share on other sites More sharing options...
Dimonira 0 September 6 Posted September 6 · Report post Ничего с полным проектом так и не добился. Создал проект попроще, только процессор, ddr3, uart, gpio, timer, qspi: Далее сделал всё аналогично предыдущему, настроил только адреса и размеры, а настройки rootfs и u-boot не менял. После этого u-boot таки загрузился! Но радость была короткой: u-boot почему-то не захотел увидеть флешку и что-либо грузить с неё. Лог при старте такой: Spoiler U-Boot 2023.01 (Mar 29 2023 - 13:08:40 +0000) Model: Xilinx MicroBlaze DRAM: 512 MiB Core: 7 devices, 7 uclasses, devicetree: embed Loading Environment from nowhere... OK In: serial Out: serial Err: serial Model: Xilinx MicroBlaze U-BOOT for microblaze-generic Hit any key to stop autoboot: 0 JTAG: Trying to boot script at 9f200000 ## Executing script at 9f200000 Trying to load boot images from jtag Wrong Image Format for bootm command ERROR: can't get kernel image! Trying to load boot images from qspi Далее зависает. Иногда возникает исключение: Spoiler U-Boot 2023.01 (Mar 29 2023 - 13:08:40 +0000) Model: Xilinx MicroBlaze DRAM: 512 MiB Core: 7 devices, 7 uclasses, devicetree: embed Loading Environment from nowhere... OK In: serial Out: serial Err: serial Model: Xilinx MicroBlaze U-BOOT for microblaze-generic Hit any key to stop autoboot: 0 JTAG: Trying to boot script at 9f200000 ## Executing script at 9f200000 Trying to load boot images from jtag Wrong Image Format for bootm command ERROR: can't get kernel image! Trying to load boot images from qspi Hardware exception at 0x1ee7ffb4 address Illegal op-code exception Return address from exception 0x1ee7ffb8 ### ERROR ### Please RESET the board ### Прервав выполнение u-boot, я попробовал команду из boot.scr, которая инициализирует флешку: Quote sf probe 0 0 0 Именно на ней u-boot и зависает. В чём может быть проблема? Может частота клоков большая, 50 МГц? Но флешка может вдвое больше. Странно, fs-boot работал с флешкой без проблем, хотя в конфигурации стоит 33 МГц. Похоже без осциллографа не обойтись. Quote Share this post Link to post Share on other sites More sharing options...
fguy 0 September 7 Posted September 7 · Report post 11 часов назад, Dimonira сказал: Именно на ней u-boot и зависает. В чём может быть проблема? А с чего вы взяли что он должен увидеть вашу флэшку? Вы поставили контролер qspi по произвольным адресам, а что там прописано в u-boot смотрели? u-boot грузится вместе с плис, т.к. должен быть интегрирован в лмб память микроблэйза - все остальные загрузки делаются уже софтово микроблэйзом. Если есть сомнения в работе ядра qspi, то запустите на микроблэйзе тесты флэшки из исходников этого ядра. Quote Share this post Link to post Share on other sites More sharing options...
Dimonira 0 September 7 Posted September 7 · Report post On 9/7/2023 at 11:25 AM, fguy said: А с чего вы взяли что он должен увидеть вашу флэшку? Вы поставили контролер qspi по произвольным адресам, а что там прописано в u-boot смотрели? u-boot грузится вместе с плис, т.к. должен быть интегрирован в лмб память микроблэйза - все остальные загрузки делаются уже софтово микроблэйзом. Если есть сомнения в работе ядра qspi, то запустите на микроблэйзе тесты флэшки из исходников этого ядра. Вы, видимо невнимательно читали. Загрузчик fs-boot грузится вместе с плис (а не u-boot) и работает, из флешки загружает код u-boot в память ddr3. Это всё делает microblaze из флешки через контроллер qspi. Значит железо заработало, а дальше не работает u-boot. Причину я только что выяснил. Всё оказалось банально, как только я достал осциллограф и обнаружил, что тактовые импульсы на флешку нестабильны, то они есть, то они пропадают. После того, как я увидел, что была попытка таки начала работы u-boot и загрузка ядра, я задумался, что что-то не так с железкой. Недолго чесал репу и предположил - дело в питании, плате не хватает тока! Дело в том, что плата запитывается от двух USB-C разъёмов - jtag и uart, питание с которых объединено дерез диоды и далее идёт на dc/dc. Плюс, точнее по факту минус: у платы нет кнопки сброса плис на PROG, только на user i/o. В результате для полного сброса надо передёргивать питание. Я плату запитывал двумя кабелями с одного usb3.0 хаба TP-LINK, один из выходов которого 1.5А, другой стандартный. Плата кушает под 0.5А, но, видимо, хаб не даёт такого тока в момент старта (при старте может и больше бросок), и плата встаёт раком. Тогда я подал питание на плату с отдельного блока питания на разъём jtag, причём увеличил до 5.5В (чтобы перекрыть питание с второго usb), а потом подключил к хабу второй конец с uart. И всё пошло! Зря я тужился с настройками и компиляциями u-boot, только время терял. Ладно хоть освоил "тему". Лог загрузки, правда не с самого начала (было 4 секунды, и плюс я пока втыкал и запускал терминал), такой: Spoiler SF: 26214400 bytes @ 0x600000 Read: OK ## Loading kernel from FIT Image at 90000000 ... Using 'conf-system-top.dtb' configuration Trying 'kernel-1' kernel subimage Description: Linux kernel Type: Kernel Image Compression: gzip compressed Data Start: 0x90000114 Data Size: 3860528 Bytes = 3.7 MiB Architecture: MicroBlaze OS: Linux Load Address: 0x80000000 Entry Point: 0x80000000 Hash algo: sha256 Hash value: bfc32d71b8e6d4298f68e13770714ce3056e25a0c783b0b89d37d0dcc54e2e08 Verifying Hash Integrity ... sha256+ OK ## Loading ramdisk from FIT Image at 90000000 ... Using 'conf-system-top.dtb' configuration Trying 'ramdisk-1' ramdisk subimage Description: petalinux-image-minimal Type: RAMDisk Image Compression: uncompressed Data Start: 0x903b1fdc Data Size: 8719663 Bytes = 8.3 MiB Architecture: MicroBlaze OS: Linux Load Address: unavailable Entry Point: unavailable Hash algo: sha256 Hash value: 111181d1bf9c93b5a4c5a16078899ee3abdad29fcd7d3878bb3190f254b898de Verifying Hash Integrity ... sha256+ OK ## Loading fdt from FIT Image at 90000000 ... Using 'conf-system-top.dtb' configuration Trying 'fdt-system-top.dtb' fdt subimage Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed Data Start: 0x903aea58 Data Size: 13485 Bytes = 13.2 KiB Architecture: MicroBlaze Hash algo: sha256 Hash value: 62cf4979d8f617408708416c472d3671b4cfdc3cb81ead06b315542075584dff Verifying Hash Integrity ... sha256+ OK Booting using the fdt blob at 0x903aea58 Working FDT set to 903aea58 Uncompressing Kernel Image Loading Ramdisk to 9f656000, end 9fea6d2f ... OK Loading Device Tree to 9f64f000, end 9f6554ac ... OK Working FDT set to 9f64f000 Starting kernel ... Ramdisk addr 0x9f656000, FDT at 0x9f64f000 earlycon: uartlite_a0 at MMIO 0x40600000 (options '115200n8') printk: bootconsole [uartlite_a0] enabled cma: Reserved 16 MiB at 0x9e400000 Linux version 6.1.5-xilinx-v2023.1 (oe-user@oe-host) (microblazeel-xilinx-linux-gcc (GCC) 12.2.0, GNU ld (GNU Binutils) 2.39.0.20220819) #1 Fri Apr 21 07:47:58 UTC 2023 setup_memory: max_mapnr: 0x20000 setup_memory: min_low_pfn: 0x80000 setup_memory: max_low_pfn: 0xa0000 setup_memory: max_pfn: 0xa0000 Zone ranges: DMA [mem 0x0000000080000000-0x000000009fffffff] Normal empty HighMem empty Movable zone start for each node Early memory node ranges node 0: [mem 0x0000000080000000-0x000000009fffffff] Initmem setup node 0 [mem 0x0000000080000000-0x000000009fffffff] setup_cpuinfo: initialising cpu 0 setup_cpuinfo: Using full CPU PVR support wt_msr_noirq pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768 pcpu-alloc: [0] 0 Built 1 zonelists, mobility grouping on. Total pages: 130048 Kernel command line: console=ttyUL0,115200 earlycon root=/dev/ram0 rw 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:all(zero), heap alloc:off, heap free:off Memory: 485600K/524288K available (6090K kernel code, 566K rwdata, 1520K rodata, 180K init, 296K bss, 22304K reserved, 16384K cma-reserved, 0K highmem) NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 irq-xilinx: /amba_pl/interrupt-controller@41200000: num_irq=4, sw_irq=0, edge=0x6 xilinx_timer_init: Timer base: 0xf0020000, Clocksource base: 0xf0020010 clocksource: xilinx_clocksource: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604467 ns sched_clock: 32 bits at 100MHz, resolution 10ns, wraps every 21474836475ns /amba_pl/timer@41c00000: irq=1, cpu_id 0 xilinx_timer_shutdown xilinx_timer_set_periodic Calibrating delay loop... 49.35 BogoMIPS (lpj=246784) pid_max: default: 4096 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) devtmpfs: initialized clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns futex hash table entries: 16 (order: -4, 448 bytes, linear) NET: Registered PF_NETLINK/PF_ROUTE protocol family DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations audit: initializing netlink subsys (disabled) audit: type=2000 audit(0.310:1): state=initialized audit_enabled=0 res=1 gpio gpiochip0: (40000000.gpio): not an immutable chip, please consider fixing it! 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 vgaarb: loaded clocksource: Switched to clocksource xilinx_clocksource NET: Registered PF_INET protocol family IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear) tcp_listen_portaddr_hash hash table entries: 256 (order: 0, 5120 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: 5, 163840 bytes, linear) TCP: Hash tables configured (established 4096 bind 4096) UDP hash table entries: 256 (order: 1, 12288 bytes, linear) UDP-Lite hash table entries: 256 (order: 1, 12288 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 32 Trying to unpack rootfs image as initramfs... workingset: timestamp_bits=30 max_order=17 bucket_order=0 Key type cifs.idmap registered romfs: ROMFS MTD (C) 2007 Red Hat, Inc. io scheduler mq-deadline registered io scheduler kyber registered Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled 40600000.serial: ttyUL0 at MMIO 0x40600000 (irq = 2, base_baud = 0) is a uartlite printk: console [ttyUL0] enabled printk: console [ttyUL0] enabled printk: bootconsole [uartlite_a0] disabled printk: bootconsole [uartlite_a0] disabled brd: module loaded spi-nor spi0.0: found mx25l25635e, expected n25q512a spi-nor spi0.0: mx25l25635e (32768 Kbytes) Freeing initrd memory: 8512K 4 fixed-partitions partitions found on MTD device spi0.0 Creating 4 MTD partitions on "spi0.0": 0x000000000000-0x000000400000 : "spi0-fpga" 0x000000400000-0x000000500000 : "spi0-boot" 0x000000500000-0x000000600000 : "spi0-bootenv" 0x000000600000-0x000001f00000 : "spi0-kernel" NET: Registered PF_PACKET protocol family Key type dns_resolver registered Key type encrypted registered Freeing unused kernel image (initmem) memory: 180K This architecture does not have kernel memory protection. Run /init as init process with arguments: /init with environment: HOME=/ TERM=linux INIT: version 3.04 booting Starting mdev... OK Fri Mar 9 12:34:56 UTC 2018 random: crng init done Configuring packages on first boot.... (This may take several minutes. Please do not power off the machine.) Running postinst /etc/rpm-postinsts/100-sysvinit-inittab... update-rc.d: /etc/init.d/run-postinsts exists during rc.d purge (continuing) Removing any system startup links for run-postinsts ... /etc/rcS.d/S99run-postinsts INIT: Entering runlevel: 5 Configuring network interfaces... Cannot find device "eth0" Starting Dropbear SSH server: Generating 2048 bit rsa key, this may take a while... Public key portion is: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCZbnNUeWQwRomopd6kPdwS4M+QhS2kg7526j63cqBTzvACzUOFrFdhBECrpdgcQR0J3qVmgBfHyKTfsZMQavzyGicR0MOGRFcGVf1YuMWv/Y7keE3hUMoK+vBk9I28LuD7y+1IVsmmA+BffRyJNbwoahmm6cgtJDsAZQPaY1LyaibJ7syzPs4epr0M05jOcgic2yimp3XAD3G2LpIJM4yZ4qY24nlcPk7we8Huxocvjq035MFR3uu4Ud53kcL/Dy79bYbHVrAr0iiSuLg7Ywt0ekbUKART54vXKQcwpdUT2Ve3bXeAgCNv0xsvq2mUuGlwE4g5emBjyKMymuZhOhXR root@minlinux Fingerprint: SHA256:moGh7slzMOGA3w9y5MefEx+vbuOE5ji2yMd6OM/NyWw dropbear. Starting internet superserver: inetd. Starting syslogd/klogd: done Starting tcf-agent: OK PetaLinux 2023.1+release-S05010539 minlinux ttyUL0 minlinux login: Из-за того, что в этом проекте нет сетевого контроллера (eth0), на некоторых сетевых моментах ядро тупило, но в итоге дошло до запроса логина. Теперь надо вернуться к предыдущему проекту с ethernet и попробовать его. Quote Share this post Link to post Share on other sites More sharing options...
Dimonira 0 September 9 Posted September 9 · Report post Радость была недолгой. На следующий день я слегка поменял настройки системы, после чего загрузка снова прекратилась. Самое интересное, что прошитый вчерашний проект, тоже не загружался, хотя загружался накануне. Потом я снова почитал документацию - PG153 и оказалось, что я делал тактовую частоту ext_spi_clk 100МГц, что судя по таблице недопустимо: Причём, указанные клоки для режима SPIx1, а для других неведомы. Я сделал 66.6, но это тоже не помогло. Сейчас 50 - безрезультатно. Добавил констрейны для QSPI (из PG153) - лучше не стало. Снова взял осциллограф. Оказалось, что когда крутишь плату в руках и подключаешь землю щупа к земле платы, то она часто загружается как положено. Если ядро уже загрузилось, то дальше глюков нет. Выходит глюки именно при обмене по QSPI. Когда загрузки ядра нет, осциллограф говорит, что импульсов на выходе CCLK нет вообще (есть только в момент загрузки бит-файла в fpga). Если подаю питание и импульсы CCLK какое-то продолжительное время есть, значит загрузка ядра пошла (хотя, может и не до конца). Так что дело было не в питании, все dc/dc на плате выдают нужные напряжения. Основной такт 50 МГц тоже нормальный. Может микросхемы дохлые, флешку брал на Aliexpress, как и саму плату... Quote Share this post Link to post Share on other sites More sharing options...
Dimonira 0 September 9 Posted September 9 · Report post Всё, в главном вроде разобрался, линукс стартует стабильно, плата работает от одного порта хаба. Правда, пока оставил ext_spi_clk = 50МГц, т.е. флешка тактируется 25 МГц, потому ядро из флешки грузится примерно 20 с - долго. Сначала я изменил настройки microblaze - руками переключил кэш инструкций и данных на всю память DDR, ибо почему-то вивада автоматически устанавливала кэш на периферию. После этого ядро начало стабильно грузится, но начинало паниковать при попытке подключения к ethernet: Spoiler JTAG: Trying to boot script at 9f200000 ## Executing script at 9f200000 Wrong image format for "source" command JTAG: SCRIPT FAILED: continuing... SF: Detected mx25l25635e with page size 256 Bytes, erase size 64 KiB, total 32 MiB device 0 offset 0x1f00000, size 0x40000 SF: 262144 bytes @ 0x1f00000 Read: OK QSPI: Trying to boot script at 9f200000 ## Executing script at 9f200000 Trying to load boot images from jtag Wrong Image Format for bootm command ERROR: can't get kernel image! Trying to load boot images from qspi SF: Detected mx25l25635e with page size 256 Bytes, erase size 64 KiB, total 32 MiB device 0 offset 0x600000, size 0xf00000 SF: 15728640 bytes @ 0x600000 Read: OK ## Loading kernel from FIT Image at 90000000 ... Using 'conf-system-top.dtb' configuration Trying 'kernel-1' kernel subimage Description: Linux kernel Type: Kernel Image Compression: gzip compressed Data Start: 0x90000114 Data Size: 3860528 Bytes = 3.7 MiB Architecture: MicroBlaze OS: Linux Load Address: 0x80000000 Entry Point: 0x80000000 Hash algo: sha256 Hash value: 51c6a58fbe1c0b6f859dd4ab9ff63e1def3eb508e877a1fc82b093782318287f Verifying Hash Integrity ... sha256+ OK ## Loading ramdisk from FIT Image at 90000000 ... Using 'conf-system-top.dtb' configuration Trying 'ramdisk-1' ramdisk subimage Description: petalinux-image-minimal Type: RAMDisk Image Compression: uncompressed Data Start: 0x903b2d04 Data Size: 8719646 Bytes = 8.3 MiB Architecture: MicroBlaze OS: Linux Load Address: unavailable Entry Point: unavailable Hash algo: sha256 Hash value: 416daa421d25978c994dfa9f261393a9a191a9e3fb55c091728c38c89afa3e38 Verifying Hash Integrity ... sha256+ OK ## Loading fdt from FIT Image at 90000000 ... Using 'conf-system-top.dtb' configuration Trying 'fdt-system-top.dtb' fdt subimage Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed Data Start: 0x903aea58 Data Size: 16853 Bytes = 16.5 KiB Architecture: MicroBlaze Hash algo: sha256 Hash value: 965b66c7183824819a4614052bd02e7956a457e315d6224f6fed452587723785 Verifying Hash Integrity ... sha256+ OK Booting using the fdt blob at 0x903aea58 Working FDT set to 903aea58 Uncompressing Kernel Image Loading Ramdisk to 9f641000, end 9fe91d1e ... OK Loading Device Tree to 9f639000, end 9f6401d4 ... OK Working FDT set to 9f639000 Starting kernel ... Ramdisk addr 0x9f641000, FDT at 0x9f639000 earlycon: uartlite_a0 at MMIO 0x40600000 (options '115200n8') printk: bootconsole [uartlite_a0] enabled cma: Reserved 16 MiB at 0x9e400000 Linux version 6.1.5-xilinx-v2023.1 (oe-user@oe-host) (microblazeel-xilinx-linux-gcc (GCC) 12.2.0, GNU ld (GNU Binutils) 2.39.0.20220819) #1 Fri Apr 21 07:47:58 UTC 2023 setup_memory: max_mapnr: 0x20000 setup_memory: min_low_pfn: 0x80000 setup_memory: max_low_pfn: 0xa0000 setup_memory: max_pfn: 0xa0000 Zone ranges: DMA [mem 0x0000000080000000-0x000000009fffffff] Normal empty HighMem empty Movable zone start for each node Early memory node ranges node 0: [mem 0x0000000080000000-0x000000009fffffff] Initmem setup node 0 [mem 0x0000000080000000-0x000000009fffffff] setup_cpuinfo: initialising cpu 0 setup_cpuinfo: Using full CPU PVR support wt_msr_noirq pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768 pcpu-alloc: [0] 0 Built 1 zonelists, mobility grouping on. Total pages: 130048 Kernel command line: console=ttyUL0,115200 earlycon root=/dev/ram0 rw 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:all(zero), heap alloc:off, heap free:off Memory: 485592K/524288K available (6090K kernel code, 566K rwdata, 1520K rodata, 180K init, 296K bss, 22312K reserved, 16384K cma-reserved, 0K highmem) NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 irq-xilinx: /amba_pl/interrupt-controller@41200000: num_irq=7, sw_irq=0, edge=0x28 xilinx_timer_init: Timer base: 0xf0020000, Clocksource base: 0xf0020010 clocksource: xilinx_clocksource: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604467 ns sched_clock: 32 bits at 100MHz, resolution 10ns, wraps every 21474836475ns /amba_pl/timer@41c00000: irq=1, cpu_id 0 xilinx_timer_shutdown xilinx_timer_set_periodic Calibrating delay loop... 49.56 BogoMIPS (lpj=247808) pid_max: default: 4096 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) devtmpfs: initialized clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns futex hash table entries: 16 (order: -4, 448 bytes, linear) NET: Registered PF_NETLINK/PF_ROUTE protocol family DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations audit: initializing netlink subsys (disabled) audit: type=2000 audit(0.290:1): state=initialized audit_enabled=0 res=1 gpio gpiochip0: (40000000.gpio): not an immutable chip, please consider fixing it! 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 vgaarb: loaded clocksource: Switched to clocksource xilinx_clocksource NET: Registered PF_INET protocol family IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear) tcp_listen_portaddr_hash hash table entries: 256 (order: 0, 5120 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: 5, 163840 bytes, linear) TCP: Hash tables configured (established 4096 bind 4096) UDP hash table entries: 256 (order: 1, 12288 bytes, linear) UDP-Lite hash table entries: 256 (order: 1, 12288 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 32 Trying to unpack rootfs image as initramfs... workingset: timestamp_bits=30 max_order=17 bucket_order=0 Key type cifs.idmap registered romfs: ROMFS MTD (C) 2007 Red Hat, Inc. io scheduler mq-deadline registered io scheduler kyber registered Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled 40600000.serial: ttyUL0 at MMIO 0x40600000 (irq = 5, base_baud = 0) is a uartlite printk: console [ttyUL0] enabled printk: console [ttyUL0] enabled printk: bootconsole [uartlite_a0] disabled printk: bootconsole [uartlite_a0] disabled brd: module loaded spi-nor spi0.0: found mx25l25635e, expected n25q512a spi-nor spi0.0: mx25l25635e (32768 Kbytes) Freeing initrd memory: 8512K 4 fixed-partitions partitions found on MTD device spi0.0 Creating 4 MTD partitions on "spi0.0": 0x000000000000-0x000000400000 : "spi0-fpga" 0x000000400000-0x000000500000 : "spi0-boot" 0x000000500000-0x000000600000 : "spi0-bootenv" 0x000000600000-0x000001f00000 : "spi0-kernel" xilinx_axienet 40c00000.ethernet: TX_CSUM 0 xilinx_axienet 40c00000.ethernet: RX_CSUM 0 xilinx_axienet 40c00000.ethernet: missing/invalid xlnx,addrwidth property, using default xilinx_axienet 40c00000.ethernet: pcs-handle (preferred for 1000BaseX/SGMII) or phy-handle required for external PHY xilinx_axienet: probe of 40c00000.ethernet failed with error -22 Oops: kernel access of bad area, sig: 11 CPU: 0 PID: 1 Comm: swapper Not tainted 6.1.5-xilinx-v2023.1 #1 Registers dump: mode=8102FBBC r1=F0160FFF, r2=00000000, r3=00000001, r4=00000000 r5=C07FE778, r6=00000000, r7=00000000, r8=C102D740 r9=000065A2, r10=C102D740, r11=00000060, r12=000065A0 r13=00000000, r14=00000000, r15=C03AADCC, r16=00000000 r17=C03AADD8, r18=14948495, r19=6B6B6B6B, r20=C05E6840 r21=00000000, r22=00000001, r23=C2E11CD8, r24=C102FCF8 r25=0000000A, r26=C080D0B4, r27=C083A05C, r28=C083675C r29=00000000, r30=00000000, r31=C102D740, rPC=C03AADD4 msr=000045AA, ear=C00EE358, esr=C0184164, fsr=C100B8D4 Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b ]--- После этого беглый поиск по сети навёл на мысль, что надо поменять интерфейс axi_ethernet с процессором с fifo на dma. Проделов это, пересобрав проект и линукс, я получил те же результаты - панику ядра. Лог загрузки практически был такой же, так что не привожу. Обратил внимание на эту строчку лога: Quote xilinx_axienet 40c00000.ethernet: pcs-handle (preferred for 1000BaseX/SGMII) or phy-handle required for external PHY Стало понятно, что ядро не знает про PHY. В дереве устройств про него не было ничего. Тогда добавил в этот файл (в проекте petalinux): Quote <имя_папки-проекта>/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi следующие строки, сразу за теми, что уже были в начале (это есть в видео, о котором было в первом посте, но часть строк уже была в генерируемом дереве, так вставлял только отсутствующие): Quote &axi_ethernet_0 { xlnx,has-mdio = <0x1>; phy-handle = <&phy0>; mdio { phy0: phy@1 { device_type = "ethernet-phy"; reg = <1>; }; }; }; phy@1 соответствует адресу phy на шине mdio, в моём случае = 1. Далее пересобрал проект petalinux и прошил флешку. В итоге всё грузится, паники ядра нет, сеть видна, 1 гигабит, пинг есть. Eset сообщил об обнаружении нового устройства в сети. Лог загрузки u-boot (сразу после отсчёта 4 секунд) и ядра: Spoiler JTAG: Trying to boot script at 9f200000 ## Executing script at 9f200000 Wrong image format for "source" command JTAG: SCRIPT FAILED: continuing... SF: Detected mx25l25635e with page size 256 Bytes, erase size 64 KiB, total 32 MiB device 0 offset 0x1f00000, size 0x40000 SF: 262144 bytes @ 0x1f00000 Read: OK QSPI: Trying to boot script at 9f200000 ## Executing script at 9f200000 Trying to load boot images from jtag Wrong Image Format for bootm command ERROR: can't get kernel image! Trying to load boot images from qspi SF: Detected mx25l25635e with page size 256 Bytes, erase size 64 KiB, total 32 MiB device 0 offset 0x600000, size 0xf00000 SF: 15728640 bytes @ 0x600000 Read: OK ## Loading kernel from FIT Image at 90000000 ... Using 'conf-system-top.dtb' configuration Trying 'kernel-1' kernel subimage Description: Linux kernel Type: Kernel Image Compression: gzip compressed Data Start: 0x90000114 Data Size: 3860528 Bytes = 3.7 MiB Architecture: MicroBlaze OS: Linux Load Address: 0x80000000 Entry Point: 0x80000000 Hash algo: sha256 Hash value: 7e728086e197cb7488eeb52b55ed73a87d7935f50c7fb12b96ec457419e309e1 Verifying Hash Integrity ... sha256+ OK ## Loading ramdisk from FIT Image at 90000000 ... Using 'conf-system-top.dtb' configuration Trying 'ramdisk-1' ramdisk subimage Description: petalinux-image-minimal Type: RAMDisk Image Compression: uncompressed Data Start: 0x903b294c Data Size: 9219381 Bytes = 8.8 MiB Architecture: MicroBlaze OS: Linux Load Address: unavailable Entry Point: unavailable Hash algo: sha256 Hash value: 0f180b70687ea3f43e3fbaaf41ef7c6179fbb1e881b516c18d23c05f2ce9cc1a Verifying Hash Integrity ... sha256+ OK ## Loading fdt from FIT Image at 90000000 ... Using 'conf-system-top.dtb' configuration Trying 'fdt-system-top.dtb' fdt subimage Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed Data Start: 0x903aea58 Data Size: 15904 Bytes = 15.5 KiB Architecture: MicroBlaze Hash algo: sha256 Hash value: 4531b66ed19d6da8d36a6021d86b53875dd6b784cdde51a3883278d20fbfb8a6 Verifying Hash Integrity ... sha256+ OK Booting using the fdt blob at 0x903aea58 Working FDT set to 903aea58 Uncompressing Kernel Image Loading Ramdisk to 9f5c7000, end 9fe91d35 ... OK Loading Device Tree to 9f5c0000, end 9f5c6e1f ... OK Working FDT set to 9f5c0000 Starting kernel ... Ramdisk addr 0x9f5c7000, FDT at 0x9f5c0000 earlycon: uartlite_a0 at MMIO 0x40600000 (options '115200n8') printk: bootconsole [uartlite_a0] enabled cma: Reserved 16 MiB at 0x9e400000 Linux version 6.1.5-xilinx-v2023.1 (oe-user@oe-host) (microblazeel-xilinx-linux-gcc (GCC) 12.2.0, GNU ld (GNU Binutils) 2.39.0.20220819) #1 Fri Apr 21 07:47:58 UTC 2023 setup_memory: max_mapnr: 0x20000 setup_memory: min_low_pfn: 0x80000 setup_memory: max_low_pfn: 0xa0000 setup_memory: max_pfn: 0xa0000 Zone ranges: DMA [mem 0x0000000080000000-0x000000009fffffff] Normal empty HighMem empty Movable zone start for each node Early memory node ranges node 0: [mem 0x0000000080000000-0x000000009fffffff] Initmem setup node 0 [mem 0x0000000080000000-0x000000009fffffff] setup_cpuinfo: initialising cpu 0 setup_cpuinfo: Using full CPU PVR support wt_msr_noirq pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768 pcpu-alloc: [0] 0 Built 1 zonelists, mobility grouping on. Total pages: 130048 Kernel command line: console=ttyUL0,115200 earlycon root=/dev/ram0 rw 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:all(zero), heap alloc:off, heap free:off Memory: 485104K/524288K available (6090K kernel code, 566K rwdata, 1520K rodata, 180K init, 296K bss, 22800K reserved, 16384K cma-reserved, 0K highmem) NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 irq-xilinx: /amba_pl/interrupt-controller@41200000: num_irq=8, sw_irq=0, edge=0x50 xilinx_timer_init: Timer base: 0xf0020000, Clocksource base: 0xf0020010 clocksource: xilinx_clocksource: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604467 ns sched_clock: 32 bits at 100MHz, resolution 10ns, wraps every 21474836475ns /amba_pl/timer@41c00000: irq=1, cpu_id 0 xilinx_timer_shutdown xilinx_timer_set_periodic Calibrating delay loop... 49.56 BogoMIPS (lpj=247808) pid_max: default: 4096 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) devtmpfs: initialized clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns futex hash table entries: 16 (order: -4, 448 bytes, linear) NET: Registered PF_NETLINK/PF_ROUTE protocol family DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations audit: initializing netlink subsys (disabled) audit: type=2000 audit(0.280:1): state=initialized audit_enabled=0 res=1 gpio gpiochip0: (40000000.gpio): not an immutable chip, please consider fixing it! 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 vgaarb: loaded clocksource: Switched to clocksource xilinx_clocksource NET: Registered PF_INET protocol family IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear) tcp_listen_portaddr_hash hash table entries: 256 (order: 0, 5120 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: 5, 163840 bytes, linear) TCP: Hash tables configured (established 4096 bind 4096) UDP hash table entries: 256 (order: 1, 12288 bytes, linear) UDP-Lite hash table entries: 256 (order: 1, 12288 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 32 Trying to unpack rootfs image as initramfs... workingset: timestamp_bits=30 max_order=17 bucket_order=0 Key type cifs.idmap registered romfs: ROMFS MTD (C) 2007 Red Hat, Inc. io scheduler mq-deadline registered io scheduler kyber registered Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled 40600000.serial: ttyUL0 at MMIO 0x40600000 (irq = 6, base_baud = 0) is a uartlite printk: console [ttyUL0] enabled printk: console [ttyUL0] enabled printk: bootconsole [uartlite_a0] disabled printk: bootconsole [uartlite_a0] disabled brd: module loaded spi-nor spi0.0: found mx25l25635e, expected n25q512a spi-nor spi0.0: mx25l25635e (32768 Kbytes) Freeing initrd memory: 9000K 4 fixed-partitions partitions found on MTD device spi0.0 Creating 4 MTD partitions on "spi0.0": 0x000000000000-0x000000400000 : "spi0-fpga" 0x000000400000-0x000000500000 : "spi0-boot" 0x000000500000-0x000000600000 : "spi0-bootenv" 0x000000600000-0x000001f00000 : "spi0-kernel" xilinx_axienet 40c00000.ethernet: TX_CSUM 0 xilinx_axienet 40c00000.ethernet: RX_CSUM 0 xilinx_axienet 40c00000.ethernet (unnamed net_device) (uninitialized): Setting assumed host clock to 100000000 NET: Registered PF_PACKET protocol family Key type dns_resolver registered Key type encrypted registered Freeing unused kernel image (initmem) memory: 180K This architecture does not have kernel memory protection. Run /init as init process with arguments: /init with environment: HOME=/ TERM=linux INIT: version 3.04 booting Starting mdev... OK Fri Mar 9 12:34:56 UTC 2018 random: crng init done Configuring packages on first boot.... (This may take several minutes. Please do not power off the machine.) Running postinst /etc/rpm-postinsts/100-sysvinit-inittab... update-rc.d: /etc/init.d/run-postinsts exists during rc.d purge (continuing) Removing any system startup links for run-postinsts ... /etc/rcS.d/S99run-postinsts INIT: Entering runlevel: 5 Configuring network interfaces... net eth0: Promiscuous mode disabled. xilinx_axienet 40c00000.ethernet eth0: PHY [axienet-40c00000:01] driver [Generic PHY] (irq=POLL) xilinx_axienet 40c00000.ethernet eth0: configuring for phy/rgmii link mode net eth0: Promiscuous mode disabled. udhcpc: started, v1.35.0 udhcpc: broadcasting discover udhcpc: broadcasting discover xilinx_axienet 40c00000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx udhcpc: broadcasting discover udhcpc: no lease, forking to background done. Starting Dropbear SSH server: Generating 2048 bit rsa key, this may take a while... Public key portion is: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCjkpMwsOLVbaIYNLIbyMcx4jTeuiYDRrVobPUOgnJxiqjAVHNlne4aOcD6a9LE3cfuU/y8CQy4SkRXPJltaTAfQ8PaCVOJggaC2yp2dZtKoaCCvZVA3716Ju4E2AYdSwKEGRpQF+mW45hghI/sscM7FvlefBEbpjR9eujEYJg+lYA+CDyaHxa3MWlTIiNLXHJggI7DBOT7OQrbWXt1xi4h5x/PXn27nGKDkIHw3w24KriAcC4o2+fSyzK27mqKcjMSj5B+cFWi2TW3poIJW9UUs+lmKowzEdhotMjuhsYh1JO2xNhhV+THoxS8yyg0ik42y43oqffOzaRNgnn2cgav root@linux Fingerprint: SHA256:Dw5HQexVLJT+P+qoBvlpPKtXFjr8grR4A5MtWu6jjCU dropbear. Starting internet superserver: inetd. Starting ntpd: ntpd: daemon startup monitoring timed out. done Starting syslogd/klogd: done Starting tcf-agent: OK PetaLinux 2023.1+release-S05010539 linux ttyUL0 linux login: petalinux You are required to change your password immediately (administrator enforced). New password: Retype new password: linux:~$ Quote Share this post Link to post Share on other sites More sharing options...
anton_sosnitzkij 0 Sunday at 03:23 PM Posted Sunday at 03:23 PM · Report post Добрый день! Занимался аналогичной темой по этому же видео, думал о том, чтобы докинуть в проект SD-карточку через SPI-контроллер, но линух в упор ее не видит — случаем не занимались/не планируете в эту сторону развивать проект? Quote Share this post Link to post Share on other sites More sharing options...
Dimonira 0 Tuesday at 06:36 PM Posted Tuesday at 06:36 PM · Report post On 9/17/2023 at 6:23 PM, anton_sosnitzkij said: Добрый день! Занимался аналогичной темой по этому же видео, думал о том, чтобы докинуть в проект SD-карточку через SPI-контроллер, но линух в упор ее не видит — случаем не занимались/не планируете в эту сторону развивать проект? Да, думаю ещё разобраться с микро SD-картой и выходом HDMI. Наскоком не получилось, надо разбираться. Quote Share this post Link to post Share on other sites More sharing options...
anton_sosnitzkij 0 Tuesday at 07:58 PM Posted Tuesday at 07:58 PM · Report post 1 час назад, Dimonira сказал: Да, думаю ещё разобраться с микро SD-картой и выходом HDMI. Наскоком не получилось, надо разбираться. По карточке с контроллерами проблема: sdhc-контроллер в вивадо платный, плюс на него драйверы написаны на C++, не компилируется в составе ядра, но можно подключить карточку по SPI стандартным ядром, попутно в настройках указав везде поддержку MMC over SPI (правда тут проблема вообще другая уже — эта настройка слетает в процессе сборки, что бы я ни делал). В результате в лучшем случае добивался того, что карточку видит, но когда начинается попытка ее смонтировать — ошибки чтения секторов — тут уже видимо глубины встроенной фифо не хватает (ставил 256 и это не хватает): Quote Share this post Link to post Share on other sites More sharing options...