Перейти к содержанию
    

Aleksei_Rostov

Свой
  • Постов

    313
  • Зарегистрирован

  • Посещение

Весь контент Aleksei_Rostov


  1. Тему можно закрыть. Разница в скорости вычислений связана с размером кэш памяти (L1, L2) для машины с Ubuntu и linux на Cortex a53. Для распараллеливания использовал Pthread, что не намного, но быстрее оказалось, чем OpenMP.
  2. Добрый день! Пытаюсь ускорить выполнение функции сортировки массива по индексам, которая запускается на Cortex a53. Оптимизируемая функция rd_rotation_old. Новая функция rd_rotation. #include <errno.h> #include <getopt.h> #include <poll.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <unistd.h> #include <math.h> #include <omp.h> #include <fcntl.h> #define TxChnl 3 #define RxChnl 16 #define Nchirp 128 #define NrFFT 2048 #define FFTR_REAL 1 #define CHIRP_MUX 4 /* chirp multiplexing in raw data */ #define N_TX_PER_CHIP 3 //NUM_TX_PER_DM #define FFT_WIDTH 2048 typedef struct { int16_t re; int16_t im; } cplx_int16_t; typedef struct { cplx_int16_t val[4]; } cplx_int16x4_t; void rd_rotation_old(void *in[], size_t in_buf_num, size_t n_tx_ch, size_t n_rx_ch, size_t n_bins, size_t n_chirps_per_slot, void *out[], size_t out_buf_num) { const cplx_int16x4_t *p; cplx_int16x4_t * out_p; unsigned int d_bin_idx; /* bin index in doppler fft input */ unsigned int tdm_bin_off; unsigned int tdm_bin_idx; unsigned int chip_off; /* chip offset in the output buffer */ unsigned int n_bins_proc = (FFTR_REAL ? n_bins / 2 : n_bins); size_t n_chirps = n_chirps_per_slot * n_tx_ch; /*how many x4 samples per single chip*/ chip_off = (n_chirps * n_bins_proc); for (int idx_buf = 0; idx_buf < in_buf_num; idx_buf++) { out_p = (cplx_int16x4_t *)out[idx_buf]; for (int idx_chirp = 0; idx_chirp < n_chirps * CHIRP_MUX; idx_chirp++) { /* stride over separate chirp */ p = (cplx_int16x4_t *)in[idx_buf] + (idx_chirp * n_bins); d_bin_idx = idx_chirp / CHIRP_MUX; tdm_bin_idx = (d_bin_idx / n_tx_ch); tdm_bin_off = ((d_bin_idx % n_tx_ch) * n_chirps_per_slot); for (int idx_smpl = 0; idx_smpl < n_bins_proc; idx_smpl++, p++) { *(out_p + idx_smpl * n_chirps + chip_off * (idx_chirp % CHIRP_MUX) + tdm_bin_off + tdm_bin_idx) = *p; } } } } void rd_rotation(cplx_int16x4_t *array_in, size_t n_tx_ch, size_t n_rx_ch, size_t n_bins, size_t n_chirps_per_slot, cplx_int16x4_t *array_out ) { unsigned int blockTxRx = n_tx_ch*n_rx_ch/4*n_bins; unsigned int blockTx = n_rx_ch/4*n_bins; unsigned int blockRx = n_bins/4*4; unsigned int ptr_out = 0; unsigned int rx = 0, rbin = 0, tx = 0, nChirp = 0; unsigned int tmp_tx = 0; // #pragma omp parallel { // #pragma omp for for ( rx = 0; rx < n_rx_ch/4; ++rx ){ for( rbin = 0; rbin < n_bins/2; ++rbin ){ for( tx = 0; tx < n_tx_ch; ++tx ){ tmp_tx = tx*blockTx + rbin; for( nChirp = 0; nChirp < n_chirps_per_slot; ++nChirp) { ptr_out = nChirp + rx*TxChnl*NrFFT/2*Nchirp + rbin*TxChnl*Nchirp + tx*Nchirp; *(array_out + ptr_out) = *(array_in + nChirp*blockTxRx + tmp_tx + rx*blockRx); } // nChirp } // tx } // rbin } // rx } // omp } // m2nF9zXyiBRD int main() { printf("<- Start Application \n"); #ifdef _OPENMP printf("<- OpenMP is supported \n"); #endif cplx_int16x4_t *cube_in, *cube_out, *cube_gld; cube_in = (cplx_int16x4_t *)malloc(Nchirp*TxChnl*RxChnl/4*NrFFT*sizeof(cplx_int16x4_t)); cube_out = (cplx_int16x4_t *)malloc(Nchirp*TxChnl*RxChnl/4*NrFFT/2*sizeof(cplx_int16x4_t)); cube_gld = (cplx_int16x4_t *)malloc(Nchirp*TxChnl*RxChnl/4*NrFFT/2*sizeof(cplx_int16x4_t)); void *cube_in_arr[1] = {cube_in}; void *cube_out_arr[1] = {cube_gld}; if(cube_in == NULL || cube_out == NULL || cube_gld == NULL) { printf("Error malloc \n"); exit(-1); } printf("<- Output buffers initialization \n"); for(int i = 0; i < Nchirp*TxChnl*RxChnl/4*NrFFT/2; i ++) for(int k = 0; k < 4; k ++) { cube_out[i].val[k].re = (int16_t)rand() % 16382; cube_out[i].val[k].im = (int16_t)rand() % 16382; cube_gld[i].val[k].re = (int16_t)rand() % 16382; cube_gld[i].val[k].im = (int16_t)rand() % 16382; } for(int i = 0; i < Nchirp*TxChnl*RxChnl/4*NrFFT; i ++) for(int k = 0; k < 4; k ++) { cube_in[i].val[k].re = (int16_t)rand() % 16382; cube_in[i].val[k].im = (int16_t)rand() % 16382; } size_t in_buf_num = 1; size_t n_tx_ch = (size_t)TxChnl; size_t n_rx_ch = (size_t)RxChnl; size_t n_bins = (size_t)NrFFT; size_t n_chirps_per_slot = (size_t)Nchirp; size_t out_buf_num = 1; double start, end, runTime; start = omp_get_wtime(); rd_rotation_old( (void *)&cube_in_arr, in_buf_num, n_tx_ch, n_rx_ch, n_bins, n_chirps_per_slot, (void *)&cube_out_arr, out_buf_num); end = omp_get_wtime(); runTime = end - start; printf("<- rd_rotation_old run time is %g ms \n", runTime*1000); start = omp_get_wtime(); rd_rotation(&cube_in[0], n_tx_ch, n_rx_ch, n_bins, n_chirps_per_slot, &cube_out[0]); end = omp_get_wtime(); runTime = end - start; printf("<- rd_rotation run time is %g ms \n", runTime*1000); int32_t diff = 0; for(int i = 0; i < Nchirp*TxChnl*RxChnl/4*NrFFT/2; i ++) for(int k = 0; k < 4; k ++) diff += (int32_t)abs(cube_out[i].val[k].re-cube_gld[i].val[k].re+cube_out[i].val[k].im-cube_gld[i].val[k].im); printf("<- Check difference: error is %d \n", diff); free(cube_in); free(cube_out); free(cube_gld); printf("<- End Application \n"); return 0; } Запускаю на на виртуальной машине с Ubuntu x86-64 gcc -Wall -O3 -fopenmp -o main main.c ./main <- Start Application <- OpenMP is supported <- Output buffers initialization <- rd_rotation_old run time is 21.8302 ms <- rd_rotation run time is 9.4134 ms <- Check difference: error is 0 <- End Application Запускаю на Cortex A53 aarch64-linux-gnu-gcc -Wall -O3 -fopenmp -o main main.c ./main <- Start Application <- OpenMP is supported <- Output buffers initialization <- rd_rotation_old run time is 86.7562 ms <- rd_rotation run time is 282.807 ms <- Check difference: error is 0 <- End Application И там и там работают 4 ядра, но результаты противоположные. Вопрос: как можно ускорить rd_rotation в том числе и с использованием OpenMP? И в чем причина различий во времени выполнения кода ?
  3. Скорее всего, убрал bootdelay и автозапуск заработал. Спасибо
  4. Почему то уже не отрабатывает. В версии u-boot до того как автозагрузку начал реализовывать, задержка отрабатывалась
  5. Добрый день! Подскажите пожалуйста, что необходимо прописать в envoriment u-boot а для автозагрузки Линукса из QSPI? Создал BOOT.BIN (fsbl.elf, pmufw.elf, system.bit, bl31.elf, u-boot.elf, image.itb) для Zynq MP, залил в QSPI. После подачи питания и загрузки u-boot в терминале читаю image.itb в RAM и запускаю Линукс: sf probe 0 sf read 0x60000000 0x00000000 0xF00000 bootm 0x60000000 Теперь хочу автоматизировать загрузку. Прописал в CONFIG_EXTRA_ENV_SETTINGS u-boot'а #define CONFIG_EXTRA_ENV_SETTINGS \ "distro_bootcmd=sf probe 0 && sf read 0x60000000 0x800000 0x700000 && bootm 0x60000000\0" \ "" Загрузка получается только после команды boot в терминале Xilinx Zynq MP First Stage Boot Loader Release 2019.1 Mar 3 2021 - 13:12:50 NOTICE: ATF running on XCZU3EG/silicon v4/RTL5.1 at 0xfffea000 NOTICE: BL31: Secure code at 0x0 NOTICE: BL31: Non secure code at 0x8000000 NOTICE: BL31: v2.0(release):xilinx-v2018.3-720-g80d1c790 NOTICE: BL31: Built : 13:12:14, Mar 3 2021 U-Boot 2020.01-00031-ga604ef9-dirty (Mar 05 2021 - 00:47:52 -0800) Board: Xilinx ZynqMP DRAM: 2 GiB usb dr_mode not found PMUFW: v1.1 EL Level: EL2 Chip ID: zu3eg NAND: 0 MiB MMC: mmc@ff160000: 0, mmc@ff170000: 1 In: serial@ff000000 Out: serial@ff000000 Err: serial@ff000000 Bootmode: QSPI_MODE Reset reason: EXTERNAL Net: ZYNQ GEM: ff0e0000, mdio bus ff0e0000, phyaddr -1, interface rgmii-id Could not get PHY for eth0: addr -1 No ethernet found. U-BOOT for sl_zynqmp Hit any key to stop autoboot: 0 ZynqMP> printenv arch=arm baudrate=115200 board=zynqmp board_name=zynqmp boot_targets=qspi0 bootcmd=run distro_bootcmd bootdelay=2 bootm_low=0 bootm_size=7ff00000 cpu=armv8 distro_bootcmd=sf probe 0 && sf read 0x60000000 0x800000 0x700000 && bootm 0x60000000 ethaddr=00:0a:35:00:22:01 fdtcontroladdr=7dda32a8 fdtfile=xilinx/zynqmp.dtb ipaddr=192.168.0.123 modeboot=qspiboot reset_reason=EXTERNAL script_offset_f=3e80000 serverip=192.168.0.21 soc=zynqmp stderr=serial@ff000000 stdin=serial@ff000000 stdout=serial@ff000000 vendor=xilinx Environment size: 583/32764 bytes ZynqMP> ZynqMP> boot SF: Detected n25q512a with page size 512 Bytes, erase size 128 KiB, total 128 MiB device 0 offset 0x800000, size 0x700000 SF: 7340032 bytes @ 0x800000 Read: OK ## Loading kernel from FIT Image at 60000000 ... Using 'conf-1' configuration Trying 'kernel-1' kernel subimage Description: Linux Kernel Type: Kernel Image Compression: gzip compressed Data Start: 0x600000c0 Data Size: 3680269 Bytes = 3.5 MiB Architecture: AArch64 OS: Linux Load Address: 0x00080000 Entry Point: 0x00080000 Hash algo: sha1 Hash value: 14723a2c892b059fef5585ee0b1b03e3c9e090fb Verifying Hash Integrity ... sha1+ OK ## Loading ramdisk from FIT Image at 60000000 ... Using 'conf-1' configuration Trying 'ramdisk-1' ramdisk subimage Description: RAMDisk Image Type: RAMDisk Image Compression: lzma compressed Data Start: 0x60389b58 Data Size: 3271927 Bytes = 3.1 MiB Architecture: AArch64 OS: Linux Load Address: 0x10000000 Entry Point: 0x10000000 Hash algo: sha1 Hash value: ce3929849a5e71b2dabe2d05d8dff2bb8a380c4e Verifying Hash Integrity ... sha1+ OK Loading ramdisk from 0x60389b58 to 0x10000000 WARNING: 'compression' nodes for ramdisks are deprecated, please fix your .its file! ## Loading fdt from FIT Image at 60000000 ... Using 'conf-1' configuration Trying 'fdt-1' fdt subimage Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed Data Start: 0x603829c8 Data Size: 28864 Bytes = 28.2 KiB Architecture: AArch64 Hash algo: sha1 Hash value: 44dcf97d89cd102df5c89916b8238a4f9d57cf75 Verifying Hash Integrity ... sha1+ OK Booting using the fdt blob at 0x603829c8 Uncompressing Kernel Image Loading Ramdisk to 7da82000, end 7dda0cf7 ... OK Loading Device Tree to 000000007da77000, end 000000007da810bf ... OK Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
  6. у меня еще запасной вариант был: сборка MTD модуля для Arasan вручную с пошаговой отладкой исходников, но до этого дело не дошло...
  7. Посмотрите эти ветки, там zip есть https://forums.xilinx.com/t5/ACAP-and-SoC-Boot-and/ZynqMP-Ultrascale-Boot-from-NAND-error-from-SD-good/td-p/1072801 https://forums.xilinx.com/t5/Embedded-Linux/NAND-Flash-U-Boot-is-using-on-die-ECC-instead-of-HW-ECC/td-p/1020626 https://forums.xilinx.com/t5/Embedded-Linux/PetaLinux-2019-1-with-micron-NAND-unable-to-write-bad-block/td-p/1070934
  8. В проекте решили проблему переходником на eMMC. Как я понял, проблема с MTD_NAND_ARASAN драйвером в ядре: с версией ядра 4.19 все работает (она у вас по дефолту в petalinux 2019.1), а с версией 5.4 (в petalinux 2020.1) нужно патчить драйвер, патч нашел, но уже необходимость отпала
  9. Перебрал DT, NAND при запуске Линукса видна. Не понятно почему Линукс виснет при проверке BBT. Что необходимо сделать? [ 4.852848] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xd3 [ 4.859206] nand: Micron MT29F8G08ABACAH4 [ 4.863212] nand: 1024 MiB, SLC, erase size: 256 KiB, page size: 4096, OOB size: 224 [ 38.018693] Bad block table not found for chip 0 [ 83.074693] Bad block table not found for chip 0 [ 83.079309] Scanning device for bad blocks [ 84.098694] nand_bbt: error while erasing BBT block -5 [ 85.122693] nand_bbt: error while erasing BBT block -5 [ 86.146693] nand_bbt: error while erasing BBT block -5 [ 87.170693] nand_bbt: error while erasing BBT block -5 [ 87.175825] No space left to write bad block table [ 87.180606] nand_bbt: error while writing bad block table -28 [ 87.186396] arasan-nand-controller ff100000.nand: nand_scan_tail for NAND failed [ 96.386692] nand: No NAND device found [ 96.390431] arasan-nand-controller ff100000.nand: nand_scan_tail for NAND failed [ 105.602691] nand: No NAND device found [ 105.606429] arasan-nand-controller ff100000.nand: nand_scan_tail for NAND failed
  10. Тоже так делал - все равно ошибка. Может нужно все эти файлы (dts и все dtsi) в BR2_LINUX_KERNEL_CUSTOM_DTS_PATH прописать? Сейчас у меня так BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/kernel.dts" А сделать вот так BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/kernel.dts" BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/first.dtsi" BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/second.dtsi" ... BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/n.dtsi"
  11. За ссылку спасибо, у меня dtsi файлы, на них команды cp нет. Я переименовал dtsi в dts, но все равно не видит инклюды DTC arch/arm64/boot/dts/kernel.dtb arch/arm64/boot/dts/kernel.dts:9:22: fatal error: zynqmp.dts: No such file or directory compilation terminated. scripts/Makefile.lib:299: recipe for target 'arch/arm64/boot/dts/kernel.dtb' failed make[3]: *** [arch/arm64/boot/dts/kernel.dtb] Error 1 Makefile:1243: recipe for target 'kernel.dtb' failed make[2]: *** [kernel.dtb] Error 2 package/pkg-generic.mk:247: recipe for target '/home/zynq/trenz-us/build/linux-xilinx-v2020.1/.stamp_built' failed make[1]: *** [/home/zynq/trenz-us/build/linux-xilinx-v2020.1/.stamp_built] Error 2 Makefile:23: recipe for target '_all' failed make: *** [_all] Error 2 файл kernel.dts /* * CAUTION: This file is automatically generated by Xilinx. * Version: * Today is: Sat Dec 19 18:33:06 2020 */ /dts-v1/; #include "/home/zynq/trenz_buildroot/board/trenz_mp/zynqmp.dts" #include "/home/zynq/trenz_buildroot/board/trenz_mp/zynqmp-clk-ccf.dts" #include "/home/zynq/trenz_buildroot/board/trenz_mp/pl.dts" #include "/home/zynq/trenz_buildroot/board/trenz_mp/pcw.dts" #include "/home/zynq/trenz_buildroot/board/trenz_mp/system-user.dts" / { chosen { bootargs = "earlycon clk_ignore_unused"; stdout-path = "serial0:115200n8"; }; aliases { ethernet0 = &gem3; i2c0 = &axi_iic_sens1; i2c1 = &i2c0; i2c2 = &i2c1; serial0 = &uart0; spi0 = &qspi; }; memory { device_type = "memory"; reg = <0x0 0x0 0x0 0x7ff00000>; }; cpus { /delete-node/ cpu@2 ; /delete-node/ cpu@3 ; }; };
  12. u-boot я тоже не собираю buildroot'ом. По kernel вопросов нет, путь к конфигу ядра прописан, кроме того в конфиге buildroot'а задаю версию ядра. Решение пока нашел что называется "в лоб": убрал все инклюды и добавил все в один файл kernel.dts. Это не очень хорошо, т.к. в каждом инклюде был определенный DT (например для PL части Zynq Ultrascale+ или отдельно все что касается памяти)
  13. Buildroot with custom DTS file

    Добрый день! Может есть специалисты по Buildroot, подскажите пожалуйста как в конфиг Buildroot'a правильно прописать внешний dts файл с dtsi инклюдами. Сейчас использую: BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_TRENZ_PATH)/board/trenz_mp/kernel.dts" В kernel.dts есть include'ы для файлов .dtsi и чтобы скомпилировать kernel.dts пути для dtsi приходится задавать абсолютные, но необходимо относительные. Как правильно указать Buildroot'у где находятся dtsi файлы, которые читает kernel.dts?
  14. Компиляция DT с инклюдами не исправила проблему. Собрал образ из сборки Buildroot'ом с настройками kernel от petalinux # dmesg | grep nand -i [ 6.621228] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc. # dmesg |grep mtd -i [ 6.711807] mtdoops: mtd device (mtddev=name/number) must be supplied # не видит Linux Nand
  15. Спасибо, очень похоже, что проблема в DT, завтра попробую перекомпилировать
  16. Дело в том, что я в Buildroot использую бинарный файл DT, т.е. dtb
  17. Гоша, вы полагаете, что когда я декомпилировал dtb из petalinux'а и использовал декомпилированный в Buildroot, то у меня ссылки в результате декомпиляции слетели?
  18. Объясните пожалуйста, что имеете ввиду насчет phandles и почему тогда под Petalinux работает, а в Buildroot нет?
  19. за NAND вот эта часть nand@ff100000 { compatible = "arasan,nfc-v3p10"; status = "okay"; reg = <0x0 0xff100000 0x0 0x1000>; clock-names = "clk_sys", "clk_flash"; interrupt-parent = <0x4>; interrupts = <0x0 0xe 0x4>; #address-cells = <0x1>; #size-cells = <0x1>; #stream-id-cells = <0x1>; iommus = <0xd 0x872>; power-domains = <0xc 0x2c>; clocks = <0x3 0x3c 0x3 0x1f>; partition@0x00000000 { label = "boot"; reg = <0x0 0x40000>; }; partition@0x00040000 { label = "bootenv"; reg = <0x40000 0x20000>; }; partition@0x00060000 { label = "kernel"; reg = <0x60000 0x600000>; }; };
  20. DT /dts-v1/; / { compatible = "xlnx,zynqmp"; #address-cells = <0x2>; #size-cells = <0x2>; cpus { #address-cells = <0x1>; #size-cells = <0x0>; cpu@0 { compatible = "arm,cortex-a53", "arm,armv8"; device_type = "cpu"; enable-method = "psci"; operating-points-v2 = <0x1>; reg = <0x0>; cpu-idle-states = <0x2>; clocks = <0x3 0xa>; }; cpu@1 { compatible = "arm,cortex-a53", "arm,armv8"; device_type = "cpu"; enable-method = "psci"; reg = <0x1>; operating-points-v2 = <0x1>; cpu-idle-states = <0x2>; }; idle-states { entry-method = "arm,psci"; cpu-sleep-0 { compatible = "arm,idle-state"; arm,psci-suspend-param = <0x40000000>; local-timer-stop; entry-latency-us = <0x12c>; exit-latency-us = <0x258>; min-residency-us = <0x2710>; phandle = <0x2>; }; }; }; cpu_opp_table { compatible = "operating-points-v2"; opp-shared; phandle = <0x1>; opp00 { opp-hz = <0x0 0x47868bf4>; opp-microvolt = <0xf4240>; clock-latency-ns = <0x7a120>; }; opp01 { opp-hz = <0x0 0x23c345fa>; opp-microvolt = <0xf4240>; clock-latency-ns = <0x7a120>; }; opp02 { opp-hz = <0x0 0x17d783fc>; opp-microvolt = <0xf4240>; clock-latency-ns = <0x7a120>; }; opp03 { opp-hz = <0x0 0x11e1a2fd>; opp-microvolt = <0xf4240>; clock-latency-ns = <0x7a120>; }; }; dcc { compatible = "arm,dcc"; status = "disabled"; u-boot,dm-pre-reloc; }; zynqmp_ipi { compatible = "xlnx,zynqmp-ipi-mailbox"; interrupt-parent = <0x4>; interrupts = <0x0 0x23 0x4>; xlnx,ipi-id = <0x0>; #address-cells = <0x2>; #size-cells = <0x2>; ranges; mailbox@ff990400 { reg = <0x0 0xff9905c0 0x0 0x20 0x0 0xff9905e0 0x0 0x20 0x0 0xff990e80 0x0 0x20 0x0 0xff990ea0 0x0 0x20>; reg-names = "local_request_region", "local_response_region", "remote_request_region", "remote_response_region"; #mbox-cells = <0x1>; xlnx,ipi-id = <0x4>; phandle = <0x5>; }; }; pmu { compatible = "arm,armv8-pmuv3"; interrupt-parent = <0x4>; interrupts = <0x0 0x8f 0x4 0x0 0x90 0x4 0x0 0x91 0x4 0x0 0x92 0x4>; }; psci { compatible = "arm,psci-0.2"; method = "smc"; }; firmware { zynqmp-firmware { compatible = "xlnx,zynqmp-firmware"; u-boot,dm-pre-reloc; method = "smc"; #power-domain-cells = <0x1>; phandle = <0xc>; zynqmp-power { compatible = "xlnx,zynqmp-power"; interrupt-parent = <0x4>; interrupts = <0x0 0x23 0x4>; mboxes = <0x5 0x0 0x5 0x1>; mbox-names = "tx", "rx"; }; reset-controller { compatible = "xlnx,zynqmp-reset"; #reset-cells = <0x1>; phandle = <0x11>; }; pinctrl { compatible = "xlnx,zynqmp-pinctrl"; status = "disabled"; }; clock-controller { u-boot,dm-pre-reloc; #clock-cells = <0x1>; compatible = "xlnx,zynqmp-clk"; clocks = <0x6 0x7 0x8 0x9 0xa>; clock-names = "pss_ref_clk", "video_clk", "pss_alt_ref_clk", "aux_ref_clk", "gt_crx_ref_clk"; phandle = <0x3>; }; }; }; timer { compatible = "arm,armv8-timer"; interrupt-parent = <0x4>; interrupts = <0x1 0xd 0xf08 0x1 0xe 0xf08 0x1 0xb 0xf08 0x1 0xa 0xf08>; }; edac { compatible = "arm,cortex-a53-edac"; }; fpga-full { compatible = "fpga-region"; fpga-mgr = <0xb>; #address-cells = <0x2>; #size-cells = <0x2>; }; nvmem_firmware { compatible = "xlnx,zynqmp-nvmem-fw"; #address-cells = <0x1>; #size-cells = <0x1>; soc_revision@0 { reg = <0x0 0x4>; phandle = <0x10>; }; efuse_dna@c { reg = <0xc 0xc>; }; efuse_usr0@20 { reg = <0x20 0x4>; }; efuse_usr1@24 { reg = <0x24 0x4>; }; efuse_usr2@28 { reg = <0x28 0x4>; }; efuse_usr3@2c { reg = <0x2c 0x4>; }; efuse_usr4@30 { reg = <0x30 0x4>; }; efuse_usr5@34 { reg = <0x34 0x4>; }; efuse_usr6@38 { reg = <0x38 0x4>; }; efuse_usr7@3c { reg = <0x3c 0x4>; }; efuse_miscusr@40 { reg = <0x40 0x4>; }; efuse_chash@50 { reg = <0x50 0x4>; }; efuse_pufmisc@54 { reg = <0x54 0x4>; }; efuse_sec@58 { reg = <0x58 0x4>; }; efuse_spkid@5c { reg = <0x5c 0x4>; }; efuse_ppk0hash@a0 { reg = <0xa0 0x30>; }; efuse_ppk1hash@d0 { reg = <0xd0 0x30>; }; }; pcap { compatible = "xlnx,zynqmp-pcap-fpga"; clock-names = "ref_clk"; clocks = <0x3 0x29>; phandle = <0xb>; }; zynqmp_rsa { compatible = "xlnx,zynqmp-rsa"; }; sha384 { compatible = "xlnx,zynqmp-keccak-384"; }; zynqmp_aes { compatible = "xlnx,zynqmp-aes"; }; amba_apu@0 { compatible = "simple-bus"; #address-cells = <0x2>; #size-cells = <0x1>; ranges = <0x0 0x0 0x0 0x0 0xffffffff>; interrupt-controller@f9010000 { compatible = "arm,gic-400", "arm,cortex-a15-gic"; #interrupt-cells = <0x3>; reg = <0x0 0xf9010000 0x10000 0x0 0xf9020000 0x20000 0x0 0xf9040000 0x20000 0x0 0xf9060000 0x20000>; interrupt-controller; interrupt-parent = <0x4>; interrupts = <0x1 0x9 0xf04>; num_cpus = <0x2>; num_interrupts = <0x60>; phandle = <0x4>; }; }; smmu@fd800000 { compatible = "arm,mmu-500"; reg = <0x0 0xfd800000 0x0 0x20000>; #iommu-cells = <0x1>; status = "disabled"; #global-interrupts = <0x1>; interrupt-parent = <0x4>; interrupts = <0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4>; phandle = <0xd>; }; amba { compatible = "simple-bus"; u-boot,dm-pre-reloc; #address-cells = <0x2>; #size-cells = <0x2>; ranges; can@ff060000 { compatible = "xlnx,zynq-can-1.0"; status = "disabled"; clock-names = "can_clk", "pclk"; reg = <0x0 0xff060000 0x0 0x1000>; interrupts = <0x0 0x17 0x4>; interrupt-parent = <0x4>; tx-fifo-depth = <0x40>; rx-fifo-depth = <0x40>; power-domains = <0xc 0x2f>; clocks = <0x3 0x3f 0x3 0x1f>; }; can@ff070000 { compatible = "xlnx,zynq-can-1.0"; status = "disabled"; clock-names = "can_clk", "pclk"; reg = <0x0 0xff070000 0x0 0x1000>; interrupts = <0x0 0x18 0x4>; interrupt-parent = <0x4>; tx-fifo-depth = <0x40>; rx-fifo-depth = <0x40>; power-domains = <0xc 0x30>; clocks = <0x3 0x40 0x3 0x1f>; }; cci@fd6e0000 { compatible = "arm,cci-400"; reg = <0x0 0xfd6e0000 0x0 0x9000>; ranges = <0x0 0x0 0xfd6e0000 0x10000>; #address-cells = <0x1>; #size-cells = <0x1>; pmu@9000 { compatible = "arm,cci-400-pmu,r1"; reg = <0x9000 0x5000>; interrupt-parent = <0x4>; interrupts = <0x0 0x7b 0x4 0x0 0x7b 0x4 0x0 0x7b 0x4 0x0 0x7b 0x4 0x0 0x7b 0x4>; }; }; dma@fd500000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd500000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x7c 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; #stream-id-cells = <0x1>; iommus = <0xd 0x14e8>; power-domains = <0xc 0x2a>; clocks = <0x3 0x13 0x3 0x1f>; }; dma@fd510000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd510000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x7d 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; #stream-id-cells = <0x1>; iommus = <0xd 0x14e9>; power-domains = <0xc 0x2a>; clocks = <0x3 0x13 0x3 0x1f>; }; dma@fd520000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd520000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x7e 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; #stream-id-cells = <0x1>; iommus = <0xd 0x14ea>; power-domains = <0xc 0x2a>; clocks = <0x3 0x13 0x3 0x1f>; }; dma@fd530000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd530000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x7f 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; #stream-id-cells = <0x1>; iommus = <0xd 0x14eb>; power-domains = <0xc 0x2a>; clocks = <0x3 0x13 0x3 0x1f>; }; dma@fd540000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd540000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x80 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; #stream-id-cells = <0x1>; iommus = <0xd 0x14ec>; power-domains = <0xc 0x2a>; clocks = <0x3 0x13 0x3 0x1f>; }; dma@fd550000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd550000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x81 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; #stream-id-cells = <0x1>; iommus = <0xd 0x14ed>; power-domains = <0xc 0x2a>; clocks = <0x3 0x13 0x3 0x1f>; }; dma@fd560000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd560000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x82 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; #stream-id-cells = <0x1>; iommus = <0xd 0x14ee>; power-domains = <0xc 0x2a>; clocks = <0x3 0x13 0x3 0x1f>; }; dma@fd570000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xfd570000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x83 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x80>; #stream-id-cells = <0x1>; iommus = <0xd 0x14ef>; power-domains = <0xc 0x2a>; clocks = <0x3 0x13 0x3 0x1f>; }; gpu@fd4b0000 { status = "disabled"; compatible = "arm,mali-400", "arm,mali-utgard"; reg = <0x0 0xfd4b0000 0x0 0x10000>; interrupt-parent = <0x4>; interrupts = <0x0 0x84 0x4 0x0 0x84 0x4 0x0 0x84 0x4 0x0 0x84 0x4 0x0 0x84 0x4 0x0 0x84 0x4>; interrupt-names = "IRQGP", "IRQGPMMU", "IRQPP0", "IRQPPMMU0", "IRQPP1", "IRQPPMMU1"; clock-names = "gpu", "gpu_pp0", "gpu_pp1"; power-domains = <0xc 0x3a>; clocks = <0x3 0x18 0x3 0x19 0x3 0x1a>; }; dma@ffa80000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffa80000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x4d 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; #stream-id-cells = <0x1>; power-domains = <0xc 0x2b>; clocks = <0x3 0x44 0x3 0x1f>; }; dma@ffa90000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffa90000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x4e 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; #stream-id-cells = <0x1>; power-domains = <0xc 0x2b>; clocks = <0x3 0x44 0x3 0x1f>; }; dma@ffaa0000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffaa0000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x4f 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; #stream-id-cells = <0x1>; power-domains = <0xc 0x2b>; clocks = <0x3 0x44 0x3 0x1f>; }; dma@ffab0000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffab0000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x50 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; #stream-id-cells = <0x1>; power-domains = <0xc 0x2b>; clocks = <0x3 0x44 0x3 0x1f>; }; dma@ffac0000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffac0000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x51 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; #stream-id-cells = <0x1>; power-domains = <0xc 0x2b>; clocks = <0x3 0x44 0x3 0x1f>; }; dma@ffad0000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffad0000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x52 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; #stream-id-cells = <0x1>; power-domains = <0xc 0x2b>; clocks = <0x3 0x44 0x3 0x1f>; }; dma@ffae0000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffae0000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x53 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; #stream-id-cells = <0x1>; power-domains = <0xc 0x2b>; clocks = <0x3 0x44 0x3 0x1f>; }; dma@ffaf0000 { status = "okay"; compatible = "xlnx,zynqmp-dma-1.0"; reg = <0x0 0xffaf0000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0x54 0x4>; clock-names = "clk_main", "clk_apb"; xlnx,bus-width = <0x40>; #stream-id-cells = <0x1>; power-domains = <0xc 0x2b>; clocks = <0x3 0x44 0x3 0x1f>; }; memory-controller@fd070000 { compatible = "xlnx,zynqmp-ddrc-2.40a"; reg = <0x0 0xfd070000 0x0 0x30000>; interrupt-parent = <0x4>; interrupts = <0x0 0x70 0x4>; }; nand@ff100000 { compatible = "arasan,nfc-v3p10"; status = "okay"; reg = <0x0 0xff100000 0x0 0x1000>; clock-names = "clk_sys", "clk_flash"; interrupt-parent = <0x4>; interrupts = <0x0 0xe 0x4>; #address-cells = <0x1>; #size-cells = <0x1>; #stream-id-cells = <0x1>; iommus = <0xd 0x872>; power-domains = <0xc 0x2c>; clocks = <0x3 0x3c 0x3 0x1f>; partition@0x00000000 { label = "boot"; reg = <0x0 0x40000>; }; partition@0x00040000 { label = "bootenv"; reg = <0x40000 0x20000>; }; partition@0x00060000 { label = "kernel"; reg = <0x60000 0x600000>; }; }; ethernet@ff0b0000 { compatible = "cdns,zynqmp-gem", "cdns,gem"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x39 0x4 0x0 0x39 0x4>; reg = <0x0 0xff0b0000 0x0 0x1000>; clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk"; #address-cells = <0x1>; #size-cells = <0x0>; #stream-id-cells = <0x1>; iommus = <0xd 0x874>; power-domains = <0xc 0x1d>; clocks = <0x3 0x1f 0x3 0x68 0x3 0x2d 0x3 0x31 0x3 0x2c>; }; ethernet@ff0c0000 { compatible = "cdns,zynqmp-gem", "cdns,gem"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x3b 0x4 0x0 0x3b 0x4>; reg = <0x0 0xff0c0000 0x0 0x1000>; clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk"; #address-cells = <0x1>; #size-cells = <0x0>; #stream-id-cells = <0x1>; iommus = <0xd 0x875>; power-domains = <0xc 0x1e>; clocks = <0x3 0x1f 0x3 0x69 0x3 0x2e 0x3 0x32 0x3 0x2c>; phy-mode = "rgmii-id"; xlnx,ptp-enet-clock = <0x0>; local-mac-address = [00 0a 35 00 22 01]; }; ethernet@ff0d0000 { compatible = "cdns,zynqmp-gem", "cdns,gem"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x3d 0x4 0x0 0x3d 0x4>; reg = <0x0 0xff0d0000 0x0 0x1000>; clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk"; #address-cells = <0x1>; #size-cells = <0x0>; #stream-id-cells = <0x1>; iommus = <0xd 0x876>; power-domains = <0xc 0x1f>; clocks = <0x3 0x1f 0x3 0x6a 0x3 0x2f 0x3 0x33 0x3 0x2c>; }; ethernet@ff0e0000 { compatible = "cdns,zynqmp-gem", "cdns,gem"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x3f 0x4 0x0 0x3f 0x4>; reg = <0x0 0xff0e0000 0x0 0x1000>; clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk"; #address-cells = <0x1>; #size-cells = <0x0>; #stream-id-cells = <0x1>; iommus = <0xd 0x877>; power-domains = <0xc 0x20>; clocks = <0x3 0x1f 0x3 0x6b 0x3 0x30 0x3 0x34 0x3 0x2c>; }; gpio@ff0a0000 { compatible = "xlnx,zynqmp-gpio-1.0"; status = "okay"; #gpio-cells = <0x2>; interrupt-parent = <0x4>; interrupts = <0x0 0x10 0x4>; interrupt-controller; #interrupt-cells = <0x2>; reg = <0x0 0xff0a0000 0x0 0x1000>; gpio-controller; power-domains = <0xc 0x2e>; clocks = <0x3 0x1f>; emio-gpio-width = <0x20>; gpio-mask-high = <0x0>; gpio-mask-low = <0x5600>; }; i2c@ff020000 { compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x11 0x4>; reg = <0x0 0xff020000 0x0 0x1000>; #address-cells = <0x1>; #size-cells = <0x0>; power-domains = <0xc 0x25>; clocks = <0x3 0x3d>; clock-frequency = <0x61a80>; }; i2c@ff030000 { compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x12 0x4>; reg = <0x0 0xff030000 0x0 0x1000>; #address-cells = <0x1>; #size-cells = <0x0>; power-domains = <0xc 0x26>; clocks = <0x3 0x3e>; }; memory-controller@ff960000 { compatible = "xlnx,zynqmp-ocmc-1.0"; reg = <0x0 0xff960000 0x0 0x1000>; interrupt-parent = <0x4>; interrupts = <0x0 0xa 0x4>; }; perf-monitor@ffa00000 { compatible = "xlnx,axi-perf-monitor"; reg = <0x0 0xffa00000 0x0 0x10000>; interrupts = <0x0 0x19 0x4>; interrupt-parent = <0x4>; xlnx,enable-profile = <0x0>; xlnx,enable-trace = <0x0>; xlnx,num-monitor-slots = <0x1>; xlnx,enable-event-count = <0x1>; xlnx,enable-event-log = <0x1>; xlnx,have-sampled-metric-cnt = <0x1>; xlnx,num-of-counters = <0x8>; xlnx,metric-count-width = <0x20>; xlnx,metrics-sample-count-width = <0x20>; xlnx,global-count-width = <0x20>; xlnx,metric-count-scale = <0x1>; clocks = <0x3 0x1f>; }; perf-monitor@fd0b0000 { compatible = "xlnx,axi-perf-monitor"; reg = <0x0 0xfd0b0000 0x0 0x10000>; interrupts = <0x0 0x7b 0x4>; interrupt-parent = <0x4>; xlnx,enable-profile = <0x0>; xlnx,enable-trace = <0x0>; xlnx,num-monitor-slots = <0x6>; xlnx,enable-event-count = <0x1>; xlnx,enable-event-log = <0x0>; xlnx,have-sampled-metric-cnt = <0x1>; xlnx,num-of-counters = <0xa>; xlnx,metric-count-width = <0x20>; xlnx,metrics-sample-count-width = <0x20>; xlnx,global-count-width = <0x20>; xlnx,metric-count-scale = <0x1>; clocks = <0x3 0x1c>; }; perf-monitor@fd490000 { compatible = "xlnx,axi-perf-monitor"; reg = <0x0 0xfd490000 0x0 0x10000>; interrupts = <0x0 0x7b 0x4>; interrupt-parent = <0x4>; xlnx,enable-profile = <0x0>; xlnx,enable-trace = <0x0>; xlnx,num-monitor-slots = <0x1>; xlnx,enable-event-count = <0x1>; xlnx,enable-event-log = <0x0>; xlnx,have-sampled-metric-cnt = <0x1>; xlnx,num-of-counters = <0x8>; xlnx,metric-count-width = <0x20>; xlnx,metrics-sample-count-width = <0x20>; xlnx,global-count-width = <0x20>; xlnx,metric-count-scale = <0x1>; clocks = <0x3 0x1c>; }; perf-monitor@ffa10000 { compatible = "xlnx,axi-perf-monitor"; reg = <0x0 0xffa10000 0x0 0x10000>; interrupts = <0x0 0x19 0x4>; interrupt-parent = <0x4>; xlnx,enable-profile = <0x0>; xlnx,enable-trace = <0x0>; xlnx,num-monitor-slots = <0x1>; xlnx,enable-event-count = <0x1>; xlnx,enable-event-log = <0x1>; xlnx,have-sampled-metric-cnt = <0x1>; xlnx,num-of-counters = <0x8>; xlnx,metric-count-width = <0x20>; xlnx,metrics-sample-count-width = <0x20>; xlnx,global-count-width = <0x20>; xlnx,metric-count-scale = <0x1>; clocks = <0x3 0x1f>; }; pcie@fd0e0000 { compatible = "xlnx,nwl-pcie-2.11"; status = "disabled"; #address-cells = <0x3>; #size-cells = <0x2>; #interrupt-cells = <0x1>; msi-controller; device_type = "pci"; interrupt-parent = <0x4>; interrupts = <0x0 0x76 0x4 0x0 0x75 0x4 0x0 0x74 0x4 0x0 0x73 0x4 0x0 0x72 0x4>; interrupt-names = "misc", "dummy", "intx", "msi1", "msi0"; msi-parent = <0xe>; reg = <0x0 0xfd0e0000 0x0 0x1000 0x0 0xfd480000 0x0 0x1000 0x80 0x0 0x0 0x1000000>; reg-names = "breg", "pcireg", "cfg"; ranges = <0x2000000 0x0 0xe0000000 0x0 0xe0000000 0x0 0x10000000 0x43000000 0x6 0x0 0x6 0x0 0x2 0x0>; interrupt-map-mask = <0x0 0x0 0x0 0x7>; bus-range = <0x0 0xff>; interrupt-map = <0x0 0x0 0x0 0x1 0xf 0x1 0x0 0x0 0x0 0x2 0xf 0x2 0x0 0x0 0x0 0x3 0xf 0x3 0x0 0x0 0x0 0x4 0xf 0x4>; power-domains = <0xc 0x3b>; clocks = <0x3 0x17>; phandle = <0xe>; legacy-interrupt-controller { interrupt-controller; #address-cells = <0x0>; #interrupt-cells = <0x1>; phandle = <0xf>; }; }; spi@ff0f0000 { u-boot,dm-pre-reloc; compatible = "xlnx,zynqmp-qspi-1.0"; status = "disabled"; clock-names = "ref_clk", "pclk"; interrupts = <0x0 0xf 0x4>; interrupt-parent = <0x4>; num-cs = <0x1>; reg = <0x0 0xff0f0000 0x0 0x1000 0x0 0xc0000000 0x0 0x8000000>; #address-cells = <0x1>; #size-cells = <0x0>; #stream-id-cells = <0x1>; iommus = <0xd 0x873>; power-domains = <0xc 0x2d>; clocks = <0x3 0x35 0x3 0x1f>; }; rtc@ffa60000 { compatible = "xlnx,zynqmp-rtc"; status = "okay"; reg = <0x0 0xffa60000 0x0 0x100>; interrupt-parent = <0x4>; interrupts = <0x0 0x1a 0x4 0x0 0x1b 0x4>; interrupt-names = "alarm", "sec"; calibration = <0x8000>; }; zynqmp_phy@fd400000 { compatible = "xlnx,zynqmp-psgtr-v1.1"; status = "okay"; reg = <0x0 0xfd400000 0x0 0x40000 0x0 0xfd3d0000 0x0 0x1000>; reg-names = "serdes", "siou"; nvmem-cells = <0x10>; nvmem-cell-names = "soc_revision"; resets = <0x11 0x10 0x11 0x3b 0x11 0x3c 0x11 0x3d 0x11 0x3e 0x11 0x3f 0x11 0x40 0x11 0x3 0x11 0x1d 0x11 0x1e 0x11 0x1f 0x11 0x20>; reset-names = "sata_rst", "usb0_crst", "usb1_crst", "usb0_hibrst", "usb1_hibrst", "usb0_apbrst", "usb1_apbrst", "dp_rst", "gem0_rst", "gem1_rst", "gem2_rst", "gem3_rst"; lane0 { #phy-cells = <0x4>; }; lane1 { #phy-cells = <0x4>; }; lane2 { #phy-cells = <0x4>; }; lane3 { #phy-cells = <0x4>; }; }; ahci@fd0c0000 { compatible = "ceva,ahci-1v84"; status = "disabled"; reg = <0x0 0xfd0c0000 0x0 0x2000>; interrupt-parent = <0x4>; interrupts = <0x0 0x85 0x4>; power-domains = <0xc 0x1c>; #stream-id-cells = <0x4>; clocks = <0x3 0x16>; }; mmc@ff160000 { u-boot,dm-pre-reloc; compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x30 0x4>; reg = <0x0 0xff160000 0x0 0x1000>; clock-names = "clk_xin", "clk_ahb"; xlnx,device_id = <0x0>; #stream-id-cells = <0x1>; iommus = <0xd 0x870>; power-domains = <0xc 0x27>; clocks = <0x3 0x36 0x3 0x1f>; }; mmc@ff170000 { u-boot,dm-pre-reloc; compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x31 0x4>; reg = <0x0 0xff170000 0x0 0x1000>; clock-names = "clk_xin", "clk_ahb"; xlnx,device_id = <0x1>; #stream-id-cells = <0x1>; iommus = <0xd 0x871>; power-domains = <0xc 0x28>; clocks = <0x3 0x37 0x3 0x1f>; }; spi@ff040000 { compatible = "cdns,spi-r1p6"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x13 0x4>; reg = <0x0 0xff040000 0x0 0x1000>; clock-names = "ref_clk", "pclk"; #address-cells = <0x1>; #size-cells = <0x0>; power-domains = <0xc 0x23>; clocks = <0x3 0x3a 0x3 0x1f>; is-decoded-cs = <0x0>; num-cs = <0x3>; }; spi@ff050000 { compatible = "cdns,spi-r1p6"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x14 0x4>; reg = <0x0 0xff050000 0x0 0x1000>; clock-names = "ref_clk", "pclk"; #address-cells = <0x1>; #size-cells = <0x0>; power-domains = <0xc 0x24>; clocks = <0x3 0x3b 0x3 0x1f>; is-decoded-cs = <0x0>; num-cs = <0x3>; }; timer@ff110000 { compatible = "cdns,ttc"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x24 0x4 0x0 0x25 0x4 0x0 0x26 0x4>; reg = <0x0 0xff110000 0x0 0x1000>; timer-width = <0x20>; power-domains = <0xc 0x18>; clocks = <0x3 0x1f>; }; timer@ff120000 { compatible = "cdns,ttc"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x27 0x4 0x0 0x28 0x4 0x0 0x29 0x4>; reg = <0x0 0xff120000 0x0 0x1000>; timer-width = <0x20>; power-domains = <0xc 0x19>; clocks = <0x3 0x1f>; }; timer@ff130000 { compatible = "cdns,ttc"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x2a 0x4 0x0 0x2b 0x4 0x0 0x2c 0x4>; reg = <0x0 0xff130000 0x0 0x1000>; timer-width = <0x20>; power-domains = <0xc 0x1a>; clocks = <0x3 0x1f>; }; timer@ff140000 { compatible = "cdns,ttc"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x2d 0x4 0x0 0x2e 0x4 0x0 0x2f 0x4>; reg = <0x0 0xff140000 0x0 0x1000>; timer-width = <0x20>; power-domains = <0xc 0x1b>; clocks = <0x3 0x1f>; }; serial@ff000000 { u-boot,dm-pre-reloc; compatible = "cdns,uart-r1p12", "xlnx,xuartps"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x15 0x4>; reg = <0x0 0xff000000 0x0 0x1000>; clock-names = "uart_clk", "pclk"; power-domains = <0xc 0x21>; clocks = <0x3 0x38 0x3 0x1f>; cts-override; device_type = "serial"; port-number = <0x0>; }; serial@ff010000 { u-boot,dm-pre-reloc; compatible = "cdns,uart-r1p12", "xlnx,xuartps"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x16 0x4>; reg = <0x0 0xff010000 0x0 0x1000>; clock-names = "uart_clk", "pclk"; power-domains = <0xc 0x22>; clocks = <0x3 0x39 0x3 0x1f>; cts-override; device_type = "serial"; port-number = <0x1>; }; usb0@ff9d0000 { #address-cells = <0x2>; #size-cells = <0x2>; status = "okay"; compatible = "xlnx,zynqmp-dwc3"; reg = <0x0 0xff9d0000 0x0 0x100>; clock-names = "bus_clk", "ref_clk"; power-domains = <0xc 0x16>; ranges; nvmem-cells = <0x10>; nvmem-cell-names = "soc_revision"; clocks = <0x3 0x20 0x3 0x22>; xlnx,tz-nonsecure = <0x1>; xlnx,usb-polarity = <0x0>; xlnx,usb-reset-io = <0x40>; xlnx,usb-reset-mode = <0x2>; dwc3@fe200000 { compatible = "snps,dwc3"; status = "okay"; reg = <0x0 0xfe200000 0x0 0x40000>; interrupt-parent = <0x4>; interrupt-names = "dwc_usb3", "otg", "hiber"; interrupts = <0x0 0x41 0x4 0x0 0x45 0x4 0x0 0x4b 0x4>; #stream-id-cells = <0x1>; iommus = <0xd 0x860>; snps,quirk-frame-length-adjustment = <0x20>; snps,refclk_fladj; snps,enable_guctl1_resume_quirk; snps,enable_guctl1_ipd_quirk; snps,xhci-stream-quirk; }; }; usb1@ff9e0000 { #address-cells = <0x2>; #size-cells = <0x2>; status = "disabled"; compatible = "xlnx,zynqmp-dwc3"; reg = <0x0 0xff9e0000 0x0 0x100>; clock-names = "bus_clk", "ref_clk"; power-domains = <0xc 0x17>; ranges; nvmem-cells = <0x10>; nvmem-cell-names = "soc_revision"; clocks = <0x3 0x21 0x3 0x22>; dwc3@fe300000 { compatible = "snps,dwc3"; status = "disabled"; reg = <0x0 0xfe300000 0x0 0x40000>; interrupt-parent = <0x4>; interrupt-names = "dwc_usb3", "otg", "hiber"; interrupts = <0x0 0x46 0x4 0x0 0x4a 0x4 0x0 0x4c 0x4>; #stream-id-cells = <0x1>; iommus = <0xd 0x861>; snps,quirk-frame-length-adjustment = <0x20>; snps,refclk_fladj; snps,enable_guctl1_resume_quirk; snps,enable_guctl1_ipd_quirk; snps,xhci-stream-quirk; }; }; watchdog@fd4d0000 { compatible = "cdns,wdt-r1p2"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x71 0x1>; reg = <0x0 0xfd4d0000 0x0 0x1000>; timeout-sec = <0x3c>; reset-on-timeout; clocks = <0x3 0x4b>; }; watchdog@ff150000 { compatible = "cdns,wdt-r1p2"; status = "disabled"; interrupt-parent = <0x4>; interrupts = <0x0 0x34 0x1>; reg = <0x0 0xff150000 0x0 0x1000>; timeout-sec = <0xa>; clocks = <0x3 0x70>; }; ams@ffa50000 { compatible = "xlnx,zynqmp-ams"; status = "okay"; interrupt-parent = <0x4>; interrupts = <0x0 0x38 0x4>; interrupt-names = "ams-irq"; reg = <0x0 0xffa50000 0x0 0x800>; reg-names = "ams-base"; #address-cells = <0x2>; #size-cells = <0x2>; #io-channel-cells = <0x1>; ranges; clocks = <0x3 0x46>; ams_ps@ffa50800 { compatible = "xlnx,zynqmp-ams-ps"; status = "okay"; reg = <0x0 0xffa50800 0x0 0x400>; }; ams_pl@ffa50c00 { compatible = "xlnx,zynqmp-ams-pl"; status = "okay"; reg = <0x0 0xffa50c00 0x0 0x400>; }; }; dma@fd4c0000 { compatible = "xlnx,dpdma"; status = "disabled"; reg = <0x0 0xfd4c0000 0x0 0x1000>; interrupts = <0x0 0x7a 0x4>; interrupt-parent = <0x4>; clock-names = "axi_clk"; power-domains = <0xc 0x29>; dma-channels = <0x6>; #dma-cells = <0x1>; clocks = <0x3 0x14>; phandle = <0x13>; dma-video0channel { compatible = "xlnx,video0"; }; dma-video1channel { compatible = "xlnx,video1"; }; dma-video2channel { compatible = "xlnx,video2"; }; dma-graphicschannel { compatible = "xlnx,graphics"; }; dma-audio0channel { compatible = "xlnx,audio0"; }; dma-audio1channel { compatible = "xlnx,audio1"; }; }; zynqmp-display@fd4a0000 { compatible = "xlnx,zynqmp-dpsub-1.7"; status = "disabled"; reg = <0x0 0xfd4a0000 0x0 0x1000 0x0 0xfd4aa000 0x0 0x1000 0x0 0xfd4ab000 0x0 0x1000 0x0 0xfd4ac000 0x0 0x1000>; reg-names = "dp", "blend", "av_buf", "aud"; interrupts = <0x0 0x77 0x4>; interrupt-parent = <0x4>; clock-names = "dp_apb_clk", "dp_aud_clk", "dp_vtc_pixel_clk_in"; power-domains = <0xc 0x29>; clocks = <0x12 0x3 0x11 0x3 0x10>; vid-layer { dma-names = "vid0", "vid1", "vid2"; dmas = <0x13 0x0 0x13 0x1 0x13 0x2>; }; gfx-layer { dma-names = "gfx0"; dmas = <0x13 0x3>; }; i2c-bus { }; zynqmp_dp_snd_codec0 { compatible = "xlnx,dp-snd-codec"; clock-names = "aud_clk"; clocks = <0x3 0x11>; phandle = <0x16>; }; zynqmp_dp_snd_pcm0 { compatible = "xlnx,dp-snd-pcm"; dmas = <0x13 0x4>; dma-names = "tx"; phandle = <0x14>; }; zynqmp_dp_snd_pcm1 { compatible = "xlnx,dp-snd-pcm"; dmas = <0x13 0x5>; dma-names = "tx"; phandle = <0x15>; }; zynqmp_dp_snd_card { compatible = "xlnx,dp-snd-card"; xlnx,dp-snd-pcm = <0x14 0x15>; xlnx,dp-snd-codec = <0x16>; }; }; }; fclk0 { status = "okay"; compatible = "xlnx,fclk"; clocks = <0x3 0x47>; }; fclk1 { status = "okay"; compatible = "xlnx,fclk"; clocks = <0x3 0x48>; }; fclk2 { status = "okay"; compatible = "xlnx,fclk"; clocks = <0x3 0x49>; }; fclk3 { status = "okay"; compatible = "xlnx,fclk"; clocks = <0x3 0x4a>; }; pss_ref_clk { u-boot,dm-pre-reloc; compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x1c9c380>; phandle = <0x6>; }; video_clk { u-boot,dm-pre-reloc; compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x19bfcc0>; phandle = <0x7>; }; pss_alt_ref_clk { u-boot,dm-pre-reloc; compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x0>; phandle = <0x8>; }; gt_crx_ref_clk { u-boot,dm-pre-reloc; compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x66ff300>; phandle = <0xa>; }; aux_ref_clk { u-boot,dm-pre-reloc; compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x19bfcc0>; phandle = <0x9>; }; dp_aclk { compatible = "fixed-clock"; #clock-cells = <0x0>; clock-frequency = <0x5f5e100>; clock-accuracy = <0x64>; phandle = <0x12>; }; amba_pl@0 { #address-cells = <0x2>; #size-cells = <0x2>; compatible = "simple-bus"; ranges; adc_phy@a0002000 { clock-names = "adc0_clk_p", "adc0_clk_n", "adc1_clk_p", "adc1_clk_n", "s_axi_aclk"; clocks = <0x17 0x17 0x17 0x17 0x3 0x47>; compatible = "xlnx,adc-phy-1.0"; reg = <0x0 0xa0002000 0x0 0x1000>; }; misc_clk_0 { #clock-cells = <0x0>; clock-frequency = <0x5f5e100>; compatible = "fixed-clock"; phandle = <0x17>; }; adc_raw@a0050000 { clock-names = "x_aclk", "m_pw_aclk", "s_cfg_aclk"; clocks = <0x18 0x19 0x3 0x47>; compatible = "xlnx,adc-raw-1.0"; reg = <0x0 0xa0050000 0x0 0x10000>; }; misc_clk_1 { #clock-cells = <0x0>; clock-frequency = <0x17d78400>; compatible = "fixed-clock"; phandle = <0x18>; }; misc_clk_2 { #clock-cells = <0x0>; clock-frequency = <0x11e1a300>; compatible = "fixed-clock"; phandle = <0x19>; }; dma@a0004000 { #dma-cells = <0x1>; clock-names = "s_axi_lite_aclk", "m_axi_s2mm_aclk"; clocks = <0x3 0x47 0x19>; compatible = "xlnx,axi-dma-7.1", "xlnx,axi-dma-1.00.a"; interrupt-names = "s2mm_introut"; interrupt-parent = <0x4>; interrupts = <0x0 0x59 0x4>; reg = <0x0 0xa0004000 0x0 0x1000>; xlnx,addrwidth = <0x20>; xlnx,sg-length-width = <0x1a>; dma-channel@a0004030 { compatible = "xlnx,axi-dma-s2mm-channel"; dma-channels = <0x1>; interrupts = <0x0 0x59 0x4>; xlnx,datawidth = <0x80>; xlnx,device-id = <0x0>; }; }; dma@a0005000 { #dma-cells = <0x1>; clock-names = "s_axi_lite_aclk", "m_axi_s2mm_aclk"; clocks = <0x3 0x47 0x19>; compatible = "xlnx,axi-dma-7.1", "xlnx,axi-dma-1.00.a"; interrupt-names = "s2mm_introut"; interrupt-parent = <0x4>; interrupts = <0x0 0x5a 0x4>; reg = <0x0 0xa0005000 0x0 0x1000>; xlnx,addrwidth = <0x20>; xlnx,sg-length-width = <0x1a>; dma-channel@a0005030 { compatible = "xlnx,axi-dma-s2mm-channel"; dma-channels = <0x1>; interrupts = <0x0 0x5a 0x4>; xlnx,datawidth = <0x80>; xlnx,device-id = <0x1>; }; }; dma@a0003000 { #dma-cells = <0x1>; clock-names = "s_axi_lite_aclk", "m_axi_s2mm_aclk"; clocks = <0x3 0x47 0x19>; compatible = "xlnx,axi-dma-7.1", "xlnx,axi-dma-1.00.a"; interrupt-names = "s2mm_introut"; interrupt-parent = <0x4>; interrupts = <0x0 0x5b 0x4>; reg = <0x0 0xa0003000 0x0 0x1000>; xlnx,addrwidth = <0x20>; xlnx,sg-length-width = <0x1a>; dma-channel@a0003030 { compatible = "xlnx,axi-dma-s2mm-channel"; dma-channels = <0x1>; interrupts = <0x0 0x5b 0x4>; xlnx,datawidth = <0x80>; xlnx,device-id = <0x2>; }; }; freq_cnt_axi@a0001000 { clock-names = "s_axi_aclk", "clk0_in", "clk1_in", "clk2_in", "clk3_in"; clocks = <0x3 0x47 0x17 0x18 0x19 0x17>; compatible = "xlnx,freq-cnt-axi-1.0"; reg = <0x0 0xa0001000 0x0 0x1000>; }; lfm_core@a0000000 { clock-names = "s00_axi_aclk"; clocks = <0x3 0x47>; compatible = "xlnx,lfm-core-1.0"; reg = <0x0 0xa0000000 0x0 0x1000>; xlnx,s00-axi-addr-width = <0x6>; xlnx,s00-axi-data-width = <0x20>; }; PERIPHERAL@ff380000 { compatible = "xlnx,PERIPHERAL-1.0"; reg = <0x0 0xff380000 0x0 0x80000>; }; PERIPHERAL@ff990000 { compatible = "xlnx,PERIPHERAL-1.0"; reg = <0x0 0xff990000 0x0 0x10000>; }; rfft_buf@a0030000 { clock-names = "x_aclk", "s_cfg_aclk"; clocks = <0x18 0x3 0x47>; compatible = "xlnx,rfft-buf-1.0"; reg = <0x0 0xa0030000 0x0 0x10000>; }; rfft_core_s@a0010000 { clock-names = "x_aclk", "m_pw_aclk", "s_cfg_aclk"; clocks = <0x18 0x19 0x3 0x47>; compatible = "xlnx,rfft-core-s-1.1"; reg = <0x0 0xa0010000 0x0 0x10000>; }; rfft_core_s@a0020000 { clock-names = "x_aclk", "m_pw_aclk", "s_cfg_aclk"; clocks = <0x18 0x19 0x3 0x47>; compatible = "xlnx,rfft-core-s-1.1"; reg = <0x0 0xa0020000 0x0 0x10000>; }; rfft_pkt@a0040000 { clock-names = "s_pw_aclk", "s_cfg_aclk"; clocks = <0x19 0x3 0x47>; compatible = "xlnx,rfft-pkt-1.0"; reg = <0x0 0xa0040000 0x0 0x10000>; }; }; chosen { bootargs = "earlycon console=ttyPS0,115200 clk_ignore_unused"; stdout-path = "serial0:115200n8"; }; aliases { ethernet0 = "/amba/ethernet@ff0c0000"; i2c0 = "/amba/i2c@ff020000"; serial0 = "/amba/serial@ff000000"; serial1 = "/amba/serial@ff010000"; spi0 = "/amba/spi@ff040000"; spi1 = "/amba/spi@ff050000"; nand0 = "/amba/nand@ff100000"; }; memory { device_type = "memory"; reg = <0x0 0x0 0x0 0x7ff00000>; }; };
  21. NAND for Zynq Ultrascale+

    Добрый день! Подскажите в чем может быть проблема. Собираю Линукс для ZynqMP Buildroot'ом. К Цинку подключена NAND, часть которой используется для загрузки. Возникла необходимость оставшуюся часть памяти использовать приложением. Для работы с NAND прописал настройки ядра: # # Disk-On-Chip Device Drivers # CONFIG_MTD_NAND_ECC=y CONFIG_MTD_NAND=y CONFIG_MTD_NAND_ARASAN=y # Bus devices # CONFIG_CONNECTOR=y CONFIG_PROC_EVENTS=y CONFIG_MTD=y CONFIG_MTD_TESTS=m CONFIG_MTD_CMDLINE_PARTS=y CONFIG_MTD_OF_PARTS=y # # User Modules And Translation Layers # CONFIG_MTD_BLKDEVS=y CONFIG_MTD_BLOCK=y CONFIG_MTD_OOPS=y # # RAM/ROM/Flash chip drivers # CONFIG_MTD_CFI=y CONFIG_MTD_GEN_PROBE=y CONFIG_MTD_MAP_BANK_WIDTH_1=y CONFIG_MTD_MAP_BANK_WIDTH_2=y CONFIG_MTD_MAP_BANK_WIDTH_4=y CONFIG_MTD_CFI_I1=y CONFIG_MTD_CFI_I2=y CONFIG_MTD_CFI_INTELEXT=y CONFIG_MTD_CFI_UTIL=y # # Self-contained MTD device drivers # CONFIG_MTD_DATAFLASH=y CONFIG_MTD_M25P80=y Но драйвер NAND не загрузился. Вот лог загрузки и вывод dmesg|grep mtd -i и nand Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034] [ 0.000000] Linux version 5.4.0-xilinx-v2020.1 (zynq@ubuntu) (gcc version 9.3.0 (Buildroot 2020.08-298-g1ae3c88-dirty)) #1 SMP Thu Dec 17 07:41:15 PST 2020 [ 0.000000] Machine model: xlnx,zynqmp [ 0.000000] earlycon: cdns0 at MMIO 0x00000000ff000000 (options '115200n8') [ 0.000000] printk: bootconsole [cdns0] enabled [ 0.000000] efi: Getting EFI parameters from FDT: [ 0.000000] efi: UEFI not found. [ 0.000000] cma: Reserved 256 MiB at 0x0000000068800000 [ 0.000000] psci: probing for conduit method from DT. [ 0.000000] psci: PSCIv1.1 detected in firmware. [ 0.000000] psci: Using standard PSCI v0.2 function IDs [ 0.000000] psci: MIGRATE_INFO_TYPE not supported. [ 0.000000] psci: SMC Calling Convention v1.1 [ 0.000000] percpu: Embedded 22 pages/cpu s49816 r8192 d32104 u90112 [ 0.000000] Detected VIPT I-cache on CPU0 [ 0.000000] CPU features: detected: ARM erratum 845719 [ 0.000000] Speculative Store Bypass Disable mitigation not required [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 517120 [ 0.000000] Kernel command line: earlycon console=ttyPS0,115200 clk_ignore_unused [ 0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear) [ 0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear) [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] Memory: 1776464K/2097152K available (11644K kernel code, 636K rwdata, 3596K rodata, 768K init, 320K bss, 58544K reserved, 262144K cma-reserved) [ 0.000000] rcu: Hierarchical RCU implementation. [ 0.000000] rcu: RCU event tracing is enabled. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=2. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2 [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 [ 0.000000] GIC: Adjusting CPU interface base to 0x00000000f902f000 [ 0.000000] GIC: Using split EOI/Deactivate mode [ 0.000000] random: get_random_bytes called from start_kernel+0x2a8/0x43c with crng_init=0 [ 0.000000] arch_timer: cp15 timer(s) running at 30.00MHz (phys). [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0xdd67c8a60, max_idle_ns: 881590406601 ns [ 0.000004] sched_clock: 56 bits at 30MHz, resolution 33ns, wraps every 4398046511088ns [ 0.008253] Console: colour dummy device 80x25 [ 0.012391] Calibrating delay loop (skipped), value calculated using timer frequency.. 60.00 BogoMIPS (lpj=120000) [ 0.022668] pid_max: default: 32768 minimum: 301 [ 0.027360] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear) [ 0.034614] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear) [ 0.043212] ASID allocator initialised with 32768 entries [ 0.047805] rcu: Hierarchical SRCU implementation. [ 0.052730] EFI services will not be available. [ 0.057091] smp: Bringing up secondary CPUs ... [ 0.189232] Detected VIPT I-cache on CPU1 [ 0.189265] CPU1: Booted secondary processor 0x0000000001 [0x410fd034] [ 0.189328] smp: Brought up 1 node, 2 CPUs [ 0.198253] SMP: Total of 2 processors activated. [ 0.202925] CPU features: detected: 32-bit EL0 Support [ 0.208029] CPU features: detected: CRC32 instructions [ 0.213162] CPU: All CPU(s) started at EL2 [ 0.217205] alternatives: patching kernel code [ 0.222664] devtmpfs: initialized [ 0.228209] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns [ 0.234595] futex hash table entries: 512 (order: 3, 32768 bytes, linear) [ 0.246942] xor: measuring software checksum speed [ 0.285406] 8regs : 2375.000 MB/sec [ 0.325435] 32regs : 2725.000 MB/sec [ 0.365461] arm64_neon: 2365.000 MB/sec [ 0.365499] xor: using function: 32regs (2725.000 MB/sec) [ 0.369412] pinctrl core: initialized pinctrl subsystem [ 0.375208] NET: Registered protocol family 16 [ 0.379946] DMA: preallocated 256 KiB pool for atomic allocations [ 0.385042] audit: initializing netlink subsys (disabled) [ 0.390446] audit: type=2000 audit(0.344:1): state=initialized audit_enabled=0 res=1 [ 0.398113] cpuidle: using governor menu [ 0.402073] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers. [ 0.430561] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages [ 0.431619] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages [ 0.438303] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages [ 0.444945] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages [ 1.528446] DRBG: Continuing without Jitter RNG [ 1.604442] raid6: neonx8 gen() 1539 MB/s [ 1.672499] raid6: neonx8 xor() 1459 MB/s [ 1.740562] raid6: neonx4 gen() 1477 MB/s [ 1.808625] raid6: neonx4 xor() 1411 MB/s [ 1.876667] raid6: neonx2 gen() 1125 MB/s [ 1.944753] raid6: neonx2 xor() 1165 MB/s [ 2.012849] raid6: neonx1 gen() 729 MB/s [ 2.080896] raid6: neonx1 xor() 877 MB/s [ 2.148929] raid6: int64x8 gen() 1181 MB/s [ 2.216997] raid6: int64x8 xor() 786 MB/s [ 2.285089] raid6: int64x4 gen() 976 MB/s [ 2.353131] raid6: int64x4 xor() 729 MB/s [ 2.421243] raid6: int64x2 gen() 676 MB/s [ 2.489268] raid6: int64x2 xor() 592 MB/s [ 2.557397] raid6: int64x1 gen() 449 MB/s [ 2.625379] raid6: int64x1 xor() 481 MB/s [ 2.625417] raid6: using algorithm neonx8 gen() 1539 MB/s [ 2.629365] raid6: .... xor() 1459 MB/s, rmw enabled [ 2.634303] raid6: using neon recovery algorithm [ 2.639330] iommu: Default domain type: Translated [ 2.643961] SCSI subsystem initialized [ 2.647630] usbcore: registered new interface driver usbfs [ 2.652930] usbcore: registered new interface driver hub [ 2.658200] usbcore: registered new device driver usb [ 2.663253] mc: Linux media interface: v0.10 [ 2.667452] videodev: Linux video capture interface: v2.00 [ 2.672907] pps_core: LinuxPPS API ver. 1 registered [ 2.677811] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]> [ 2.686904] PTP clock support registered [ 2.690801] EDAC MC: Ver: 3.0.0 [ 2.694373] zynqmp-ipi-mbox mailbox@ff990400: Registered ZynqMP IPI mbox with TX/RX channels. [ 2.702605] FPGA manager framework [ 2.705902] Advanced Linux Sound Architecture Driver Initialized. [ 2.712128] Bluetooth: Core ver 2.22 [ 2.715366] NET: Registered protocol family 31 [ 2.719765] Bluetooth: HCI device and connection manager initialized [ 2.726081] Bluetooth: HCI socket layer initialized [ 2.730923] Bluetooth: L2CAP socket layer initialized [ 2.735945] Bluetooth: SCO socket layer initialized [ 2.741091] clocksource: Switched to clocksource arch_sys_counter [ 2.746944] VFS: Disk quotas dquot_6.6.0 [ 2.750773] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 2.761846] NET: Registered protocol family 2 [ 2.762248] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear) [ 2.770398] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear) [ 2.778343] TCP bind hash table entries: 16384 (order: 6, 262144 bytes, linear) [ 2.785725] TCP: Hash tables configured (established 16384 bind 16384) [ 2.792062] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear) [ 2.798690] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear) [ 2.805848] NET: Registered protocol family 1 [ 2.810287] RPC: Registered named UNIX socket transport module. [ 2.815957] RPC: Registered udp transport module. [ 2.820630] RPC: Registered tcp transport module. [ 2.825294] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 2.831952] PCI: CLS 0 bytes, default 64 [ 2.835688] Trying to unpack rootfs image as initramfs... [ 6.523704] Freeing initrd memory: 5300K [ 6.524067] hw perfevents: no interrupt-affinity property for /pmu, guessing. [ 6.529241] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available [ 6.537730] Initialise system trusted keyrings [ 6.541277] workingset: timestamp_bits=62 max_order=19 bucket_order=0 [ 6.548265] NFS: Registering the id_resolver key type [ 6.552632] Key type id_resolver registered [ 6.556766] Key type id_legacy registered [ 6.560750] nfs4filelayout_init: NFSv4 File Layout Driver Registering... [ 6.567418] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc. [ 6.589041] NET: Registered protocol family 38 [ 6.589100] Key type asymmetric registered [ 6.591905] Asymmetric key parser 'x509' registered [ 6.596792] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247) [ 6.604108] io scheduler mq-deadline registered [ 6.608607] io scheduler kyber registered [ 6.641589] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled [ 6.645769] cacheinfo: Unable to detect cache hierarchy for CPU 0 [ 6.652791] brd: module loaded [ 6.656950] loop: module loaded [ 6.657867] mtdoops: mtd device (mtddev=name/number) must be supplied [ 6.662137] libphy: Fixed MDIO Bus: probed [ 6.666167] tun: Universal TUN/TAP device driver, 1.6 [ 6.670270] CAN device driver interface [ 6.674842] usbcore: registered new interface driver asix [ 6.679245] usbcore: registered new interface driver ax88179_178a [ 6.685234] usbcore: registered new interface driver cdc_ether [ 6.691025] usbcore: registered new interface driver net1080 [ 6.696648] usbcore: registered new interface driver cdc_subset [ 6.702530] usbcore: registered new interface driver zaurus [ 6.708078] usbcore: registered new interface driver cdc_ncm [ 6.714190] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 6.720156] ehci-pci: EHCI PCI platform driver [ 6.724841] usbcore: registered new interface driver uas [ 6.729874] usbcore: registered new interface driver usb-storage [ 6.736457] rtc_zynqmp ffa60000.rtc: registered as rtc0 [ 6.741063] i2c /dev entries driver [ 6.746138] usbcore: registered new interface driver uvcvideo [ 6.750170] USB Video Class driver (1.1.1) [ 6.754666] Bluetooth: HCI UART driver ver 2.3 [ 6.758652] Bluetooth: HCI UART protocol H4 registered [ 6.763762] Bluetooth: HCI UART protocol BCSP registered [ 6.769046] Bluetooth: HCI UART protocol LL registered [ 6.774130] Bluetooth: HCI UART protocol ATH3K registered [ 6.779508] Bluetooth: HCI UART protocol Three-wire (H5) registered [ 6.785760] Bluetooth: HCI UART protocol Intel registered [ 6.791100] Bluetooth: HCI UART protocol QCA registered [ 6.796306] usbcore: registered new interface driver bcm203x [ 6.801922] usbcore: registered new interface driver bpa10x [ 6.807463] usbcore: registered new interface driver bfusb [ 6.812910] usbcore: registered new interface driver btusb [ 6.818378] usbcore: registered new interface driver ath3k [ 6.823910] EDAC MC: ECC not enabled [ 6.827480] EDAC DEVICE0: Giving out device to module zynqmp-ocm-edac controller zynqmp_ocm: DEV ff960000.memory-controller (INTERRUPT) [ 6.839918] sdhci: Secure Digital Host Controller Interface driver [ 6.845580] sdhci: Copyright(c) Pierre Ossman [ 6.849904] sdhci-pltfm: SDHCI platform and OF driver helper [ 6.855791] ledtrig-cpu: registered to indicate activity on CPUs [ 6.861698] zynqmp_firmware_probe Platform Management API v1.1 [ 6.867296] zynqmp_firmware_probe Trustzone version v1.0 [ 6.895715] securefw securefw: securefw probed [ 6.895882] alg: No test for xilinx-zynqmp-aes (zynqmp-aes) [ 6.902819] zynqmp_aes zynqmp_aes: AES Successfully Registered [ 6.902819] [ 6.907780] alg: No test for xilinx-keccak-384 (zynqmp-keccak-384) [ 6.915888] alg: No test for xilinx-zynqmp-rsa (zynqmp-rsa) [ 6.921586] usbcore: registered new interface driver usbhid [ 6.924704] usbhid: USB HID core driver [ 6.930836] ARM CCI_400_r1 PMU driver probed [ 6.931310] fpga_manager fpga0: Xilinx ZynqMP FPGA Manager registered [ 6.939543] usbcore: registered new interface driver snd-usb-audio [ 6.946195] pktgen: Packet Generator for packet performance testing. Version: 2.75 [ 6.953114] Initializing XFRM netlink socket [ 6.957143] NET: Registered protocol family 10 [ 6.961858] Segment Routing with IPv6 [ 6.965207] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver [ 6.971324] NET: Registered protocol family 17 [ 6.975413] NET: Registered protocol family 15 [ 6.979824] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this. [ 6.992816] can: controller area network core (rev 20170425 abi 9) [ 6.998885] NET: Registered protocol family 29 [ 7.003254] can: raw protocol (rev 20170425) [ 7.007491] can: broadcast manager protocol (rev 20170425 t) [ 7.013116] can: netlink gateway (rev 20190810) max_hops=1 [ 7.018627] Bluetooth: RFCOMM TTY layer initialized [ 7.023414] Bluetooth: RFCOMM socket layer initialized [ 7.028540] Bluetooth: RFCOMM ver 1.11 [ 7.032235] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 7.037506] Bluetooth: BNEP filters: protocol multicast [ 7.042698] Bluetooth: BNEP socket layer initialized [ 7.047627] Bluetooth: HIDP (Human Interface Emulation) ver 1.2 [ 7.053513] Bluetooth: HIDP socket layer initialized [ 7.058567] 9pnet: Installing 9P2000 support [ 7.062696] Key type dns_resolver registered [ 7.067145] registered taskstats version 1 [ 7.070986] Loading compiled-in X.509 certificates [ 7.076123] Btrfs loaded, crc32c=crc32c-generic [ 7.088647] ff000000.serial: ttyPS0 at MMIO 0xff000000 (irq = 39, base_baud = 6250000) is a xuartps [ 7.097671] printk: console [ttyPS0] enabled [ 7.097671] printk: console [ttyPS0] enabled [ 7.101966] printk: bootconsole [cdns0] disabled [ 7.101966] printk: bootconsole [cdns0] disabled [ 7.111308] ff010000.serial: ttyPS1 at MMIO 0xff010000 (irq = 40, base_baud = 6250000) is a xuartps [ 7.124719] of-fpga-region fpga-full: FPGA Region probed [ 7.131903] macb ff0c0000.ethernet: Not enabling partial store and forward [ 7.139355] libphy: MACB_mii_bus: probed [ 7.148333] Atheros 8031 ethernet ff0c0000.ethernet-ffffffff:02: attached PHY driver [Atheros 8031 ethernet] (mii_bus:phy_addr=ff0c0000.ethernet-ffffffff:02, irq=POLL) [ 7.163287] macb ff0c0000.ethernet eth0: Cadence GEM rev 0x50070106 at 0xff0c0000 irq 30 (00:0a:35:00:22:01) [ 7.173516] xilinx-axipmon ffa00000.perf-monitor: Probed Xilinx APM [ 7.180041] xilinx-axipmon fd0b0000.perf-monitor: Probed Xilinx APM [ 7.186533] xilinx-axipmon fd490000.perf-monitor: Probed Xilinx APM [ 7.193019] xilinx-axipmon ffa10000.perf-monitor: Probed Xilinx APM [ 7.199523] dwc3-of-simple ff9d0000.usb0: dwc3_simple_set_phydata: Can't find usb3-phy [ 7.207846] dwc3 fe200000.dwc3: Failed to get clk 'ref': -2 [ 7.214207] cdns-i2c ff020000.i2c: 400 kHz mmio ff020000 irq 32 [ 7.220493] cpufreq: cpufreq_online: CPU0: Running at unlisted freq: 1200000 KHz [ 7.227892] cpu cpu0: dev_pm_opp_set_rate: failed to find current OPP for freq 1200000000 (-34) [ 7.236616] cpufreq: cpufreq_online: CPU0: Unlisted initial frequency changed to: 1199999 KHz [ 7.245158] cpu cpu0: dev_pm_opp_set_rate: failed to find current OPP for freq 1200000000 (-34) [ 7.256351] rtc_zynqmp ffa60000.rtc: setting system clock to 2103-10-29T22:23:58 UTC (4223139838) [ 7.265218] of_cfs_init [ 7.267678] of_cfs_init: OK [ 7.270586] cfg80211: Loading compiled-in X.509 certificates for regulatory database [ 7.413547] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7' [ 7.420079] clk: Not disabling unused clocks [ 7.424344] ALSA device list: [ 7.427300] No soundcards found. [ 7.431057] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2 [ 7.439667] cfg80211: failed to load regulatory.db [ 7.444797] Freeing unused kernel memory: 768K [ 7.457118] Run /init as init process Starting syslogd: OK Starting klogd: OK Running sysctl: OK Saving random seed: [ 7.511648] random: dd: uninitialized urandom read (512 bytes read) OK Starting haveged: haveged: command socket is listening at fd 3 OK Starting network: [ 7.556459] pps pps0: new PPS source ptp0 [ 7.560499] macb ff0c0000.ethernet: gem-ptp-timer ptp clock registered. OK Starting dropbear sshd: OK Starting tcf-agent: OK Welcome to ARC Microwave Linux arc-microwave login: [ 8.460173] random: crng init done [ 9.609348] macb ff0c0000.ethernet eth0: link up (100/Full) [ 9.614944] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready root Password: # dmesg|grep mtd -i [ 6.657867] mtdoops: mtd device (mtddev=name/number) must be supplied # dmesg|grep nand -i [ 6.567418] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc. # Собрал образ Petalinux'ом. Драйвер грузится. Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034] [ 0.000000] Linux version 4.19.0-xilinx-v2019.1 (oe-user@oe-host) (gcc version 8.2.0 (GCC)) #1 SMP Tue Dec 15 07:18:56 UTC 2020 [ 0.000000] Machine model: xlnx,zynqmp [ 0.000000] earlycon: cdns0 at MMIO 0x00000000ff000000 (options '115200n8') [ 0.000000] bootconsole [cdns0] enabled [ 0.000000] efi: Getting EFI parameters from FDT: [ 0.000000] efi: UEFI not found. [ 0.000000] cma: Reserved 256 MiB at 0x0000000068800000 [ 0.000000] psci: probing for conduit method from DT. [ 0.000000] psci: PSCIv1.1 detected in firmware. [ 0.000000] psci: Using standard PSCI v0.2 function IDs [ 0.000000] psci: MIGRATE_INFO_TYPE not supported. [ 0.000000] psci: SMC Calling Convention v1.1 [ 0.000000] random: get_random_bytes called from start_kernel+0x94/0x3f8 with crng_init=0 [ 0.000000] percpu: Embedded 23 pages/cpu @(____ptrval____) s53656 r8192 d32360 u94208 [ 0.000000] Detected VIPT I-cache on CPU0 [ 0.000000] CPU features: enabling workaround for ARM erratum 845719 [ 0.000000] Speculative Store Bypass Disable mitigation not required [ 0.000000] CPU features: detected: Kernel page table isolation (KPTI) [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 517120 [ 0.000000] Kernel command line: earlycon console=ttyPS0,115200 clk_ignore_unused [ 0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.000000] Memory: 1778128K/2097152K available (10812K kernel code, 636K rwdata, 5428K rodata, 832K init, 316K bss, 56880K reserved, 262144K cma-reserved) [ 0.000000] rcu: Hierarchical RCU implementation. [ 0.000000] rcu: RCU event tracing is enabled. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=2. [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2 [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 [ 0.000000] GIC: Adjusting CPU interface base to 0x00000000f902f000 [ 0.000000] GIC: Using split EOI/Deactivate mode [ 0.000000] arch_timer: cp15 timer(s) running at 30.00MHz (phys). [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0xdd67c8a60, max_idle_ns: 881590406601 ns [ 0.000003] sched_clock: 56 bits at 30MHz, resolution 33ns, wraps every 4398046511088ns [ 0.008197] Console: colour dummy device 80x25 [ 0.012391] Calibrating delay loop (skipped), value calculated using timer frequency.. 60.00 BogoMIPS (lpj=120000) [ 0.022667] pid_max: default: 32768 minimum: 301 [ 0.027353] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes) [ 0.033920] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes) [ 0.041771] ASID allocator initialised with 32768 entries [ 0.046422] rcu: Hierarchical SRCU implementation. [ 0.051391] EFI services will not be available. [ 0.055700] smp: Bringing up secondary CPUs ... [ 0.202613] Detected VIPT I-cache on CPU1 [ 0.202644] CPU1: Booted secondary processor 0x0000000001 [0x410fd034] [ 0.202702] smp: Brought up 1 node, 2 CPUs [ 0.211625] SMP: Total of 2 processors activated. [ 0.216298] CPU features: detected: 32-bit EL0 Support [ 0.222951] CPU: All CPU(s) started at EL2 [ 0.225474] alternatives: patching kernel code [ 0.230799] devtmpfs: initialized [ 0.236639] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns [ 0.242862] futex hash table entries: 512 (order: 3, 32768 bytes) [ 0.253986] xor: measuring software checksum speed [ 0.292982] 8regs : 2375.000 MB/sec [ 0.333011] 8regs_prefetch: 2052.000 MB/sec [ 0.373040] 32regs : 2725.000 MB/sec [ 0.413069] 32regs_prefetch: 2309.000 MB/sec [ 0.413099] xor: using function: 32regs (2725.000 MB/sec) [ 0.417415] pinctrl core: initialized pinctrl subsystem [ 0.423278] NET: Registered protocol family 16 [ 0.427247] audit: initializing netlink subsys (disabled) [ 0.432444] audit: type=2000 audit(0.396:1): state=initialized audit_enabled=0 res=1 [ 0.440102] cpuidle: using governor menu [ 0.444069] vdso: 2 pages (1 code @ (____ptrval____), 1 data @ (____ptrval____)) [ 0.451322] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers. [ 0.458819] DMA: preallocated 256 KiB pool for atomic allocations [ 0.485706] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages [ 0.552373] raid6: int64x1 gen() 444 MB/s [ 0.620350] raid6: int64x1 xor() 454 MB/s [ 0.688411] raid6: int64x2 gen() 680 MB/s [ 0.756470] raid6: int64x2 xor() 600 MB/s [ 0.824565] raid6: int64x4 gen() 981 MB/s [ 0.892612] raid6: int64x4 xor() 737 MB/s [ 0.960698] raid6: int64x8 gen() 1164 MB/s [ 1.028766] raid6: int64x8 xor() 760 MB/s [ 1.096840] raid6: neonx1 gen() 735 MB/s [ 1.164865] raid6: neonx1 xor() 880 MB/s [ 1.232982] raid6: neonx2 gen() 1128 MB/s [ 1.301001] raid6: neonx2 xor() 1169 MB/s [ 1.369074] raid6: neonx4 gen() 1478 MB/s [ 1.437148] raid6: neonx4 xor() 1414 MB/s [ 1.505226] raid6: neonx8 gen() 1539 MB/s [ 1.573280] raid6: neonx8 xor() 1452 MB/s [ 1.573307] raid6: using algorithm neonx8 gen() 1539 MB/s [ 1.577269] raid6: .... xor() 1452 MB/s, rmw enabled [ 1.582200] raid6: using neon recovery algorithm [ 1.587587] SCSI subsystem initialized [ 1.590681] usbcore: registered new interface driver usbfs [ 1.595987] usbcore: registered new interface driver hub [ 1.601260] usbcore: registered new device driver usb [ 1.606312] media: Linux media interface: v0.10 [ 1.610771] videodev: Linux video capture interface: v2.00 [ 1.616221] pps_core: LinuxPPS API ver. 1 registered [ 1.621126] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]> [ 1.630218] PTP clock support registered [ 1.634119] EDAC MC: Ver: 3.0.0 [ 1.638395] zynqmp-ipi-mbox mailbox@ff990400: Probed ZynqMP IPI Mailbox driver. [ 1.644694] FPGA manager framework [ 1.648035] Advanced Linux Sound Architecture Driver Initialized. [ 1.654215] Bluetooth: Core ver 2.22 [ 1.657475] NET: Registered protocol family 31 [ 1.661869] Bluetooth: HCI device and connection manager initialized [ 1.668185] Bluetooth: HCI socket layer initialized [ 1.673027] Bluetooth: L2CAP socket layer initialized [ 1.678055] Bluetooth: SCO socket layer initialized [ 1.683306] clocksource: Switched to clocksource arch_sys_counter [ 1.689035] VFS: Disk quotas dquot_6.6.0 [ 1.692872] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 1.706425] NET: Registered protocol family 2 [ 1.706881] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes) [ 1.712965] TCP established hash table entries: 16384 (order: 5, 131072 bytes) [ 1.720219] TCP bind hash table entries: 16384 (order: 6, 262144 bytes) [ 1.726904] TCP: Hash tables configured (established 16384 bind 16384) [ 1.733240] UDP hash table entries: 1024 (order: 3, 32768 bytes) [ 1.739176] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes) [ 1.745643] NET: Registered protocol family 1 [ 1.750091] RPC: Registered named UNIX socket transport module. [ 1.755752] RPC: Registered udp transport module. [ 1.760419] RPC: Registered tcp transport module. [ 1.765087] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 1.771849] Trying to unpack rootfs image as initramfs... [ 2.051014] Freeing initrd memory: 6464K [ 2.051377] hw perfevents: no interrupt-affinity property for /pmu, guessing. [ 2.056552] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available [ 2.064999] Initialise system trusted keyrings [ 2.068602] workingset: timestamp_bits=62 max_order=19 bucket_order=0 [ 2.075600] NFS: Registering the id_resolver key type [ 2.079933] Key type id_resolver registered [ 2.084075] Key type id_legacy registered [ 2.088059] nfs4filelayout_init: NFSv4 File Layout Driver Registering... [ 2.094727] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc. [ 3.188440] NET: Registered protocol family 38 [ 3.248254] Key type asymmetric registered [ 3.248283] Asymmetric key parser 'x509' registered [ 3.251608] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247) [ 3.258912] io scheduler noop registered [ 3.262802] io scheduler deadline registered [ 3.267077] io scheduler cfq registered (default) [ 3.271712] io scheduler mq-deadline registered [ 3.276208] io scheduler kyber registered [ 3.281219] xilinx-vdma a0004000.dma: failed to get axi_aclk (-517) [ 3.286451] xilinx-vdma a0005000.dma: failed to get axi_aclk (-517) [ 3.292674] xilinx-vdma a0003000.dma: failed to get axi_aclk (-517) [ 3.327134] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled [ 3.331161] cacheinfo: Unable to detect cache hierarchy for CPU 0 [ 3.338487] brd: module loaded [ 3.342482] loop: module loaded [ 3.343362] mtdoops: mtd device (mtddev=name/number) must be supplied [ 3.347837] libphy: Fixed MDIO Bus: probed [ 3.351756] tun: Universal TUN/TAP device driver, 1.6 [ 3.356380] CAN device driver interface [ 3.360321] usbcore: registered new interface driver asix [ 3.364754] usbcore: registered new interface driver ax88179_178a [ 3.370781] usbcore: registered new interface driver cdc_ether [ 3.376573] usbcore: registered new interface driver net1080 [ 3.382195] usbcore: registered new interface driver cdc_subset [ 3.388078] usbcore: registered new interface driver zaurus [ 3.393623] usbcore: registered new interface driver cdc_ncm [ 3.399718] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 3.405702] ehci-pci: EHCI PCI platform driver [ 3.410383] usbcore: registered new interface driver uas [ 3.415422] usbcore: registered new interface driver usb-storage [ 3.421921] rtc_zynqmp ffa60000.rtc: rtc core: registered ffa60000.rtc as rtc0 [ 3.428701] i2c /dev entries driver [ 3.433609] usbcore: registered new interface driver uvcvideo [ 3.437705] USB Video Class driver (1.1.1) [ 3.442225] Bluetooth: HCI UART driver ver 2.3 [ 3.446191] Bluetooth: HCI UART protocol H4 registered [ 3.451292] Bluetooth: HCI UART protocol BCSP registered [ 3.456583] Bluetooth: HCI UART protocol LL registered [ 3.461665] Bluetooth: HCI UART protocol ATH3K registered [ 3.467046] Bluetooth: HCI UART protocol Three-wire (H5) registered [ 3.473295] Bluetooth: HCI UART protocol Intel registered [ 3.478638] Bluetooth: HCI UART protocol QCA registered [ 3.483840] usbcore: registered new interface driver bcm203x [ 3.489458] usbcore: registered new interface driver bpa10x [ 3.494995] usbcore: registered new interface driver bfusb [ 3.500446] usbcore: registered new interface driver btusb [ 3.505867] Bluetooth: Generic Bluetooth SDIO driver ver 0.1 [ 3.511537] usbcore: registered new interface driver ath3k [ 3.517059] EDAC MC: ECC not enabled [ 3.520637] EDAC DEVICE0: Giving out device to module zynqmp-ocm-edac controller zynqmp_ocm: DEV ff960000.memory-controller (INTERRUPT) [ 3.533186] sdhci: Secure Digital Host Controller Interface driver [ 3.538737] sdhci: Copyright(c) Pierre Ossman [ 3.543060] sdhci-pltfm: SDHCI platform and OF driver helper [ 3.548927] ledtrig-cpu: registered to indicate activity on CPUs [ 3.554713] zynqmp_firmware_probe Platform Management API v1.1 [ 3.560451] zynqmp_firmware_probe Trustzone version v1.0 [ 3.587925] alg: No test for xilinx-zynqmp-aes (zynqmp-aes) [ 3.587975] zynqmp_aes zynqmp_aes: AES Successfully Registered [ 3.587975] [ 3.595395] alg: No test for xilinx-keccak-384 (zynqmp-keccak-384) [ 3.601553] alg: No test for xilinx-zynqmp-rsa (zynqmp-rsa) [ 3.607094] usbcore: registered new interface driver usbhid [ 3.612437] usbhid: USB HID core driver [ 3.618503] fpga_manager fpga0: Xilinx ZynqMP FPGA Manager registered [ 3.623024] usbcore: registered new interface driver snd-usb-audio [ 3.629667] pktgen: Packet Generator for packet performance testing. Version: 2.75 [ 3.636603] Initializing XFRM netlink socket [ 3.640614] NET: Registered protocol family 10 [ 3.645316] Segment Routing with IPv6 [ 3.648673] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver [ 3.654804] NET: Registered protocol family 17 [ 3.658885] NET: Registered protocol family 15 [ 3.663299] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this. [ 3.676212] can: controller area network core (rev 20170425 abi 9) [ 3.682368] NET: Registered protocol family 29 [ 3.686732] can: raw protocol (rev 20170425) [ 3.690968] can: broadcast manager protocol (rev 20170425 t) [ 3.696592] can: netlink gateway (rev 20170425) max_hops=1 [ 3.702099] Bluetooth: RFCOMM TTY layer initialized [ 3.706892] Bluetooth: RFCOMM socket layer initialized [ 3.711997] Bluetooth: RFCOMM ver 1.11 [ 3.715716] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 3.720983] Bluetooth: BNEP filters: protocol multicast [ 3.726175] Bluetooth: BNEP socket layer initialized [ 3.731103] Bluetooth: HIDP (Human Interface Emulation) ver 1.2 [ 3.736987] Bluetooth: HIDP socket layer initialized [ 3.742028] 9pnet: Installing 9P2000 support [ 3.746173] Key type dns_resolver registered [ 3.750802] registered taskstats version 1 [ 3.754464] Loading compiled-in X.509 certificates [ 3.759558] Btrfs loaded, crc32c=crc32c-generic [ 3.770190] ff000000.serial: ttyPS0 at MMIO 0xff000000 (irq = 39, base_baud =▒6250000) is a x▒&▒▒S▒▒▒Si▒▒k׋▒▒+W/▒*LW▒Y▒X▒▒ed [ 3.779137] console [ttyPS0] enabled [ 3.782726] bootconsole [cdns0] disabled [ 3.782726] bootconsole [cdns0] disabled [ 3.790767] ff010000.serial: ttyPS1 at MMIO 0xff010000 (irq = 40, base_baud = 6250000) is a xuartps [ 3.803718] of-fpga-region fpga-full: FPGA Region probed [ 3.809482] xilinx-vdma a0004000.dma: Please ensure that IP supports buffer length > 23 bits [ 3.818005] xilinx-vdma a0004000.dma: Xilinx AXI DMA Engine Driver Probed!! [ 3.825043] xilinx-vdma a0005000.dma: Please ensure that IP supports buffer length > 23 bits [ 3.833555] xilinx-vdma a0005000.dma: Xilinx AXI DMA Engine Driver Probed!! [ 3.840588] xilinx-vdma a0003000.dma: Please ensure that IP supports buffer length > 23 bits [ 3.849089] xilinx-vdma a0003000.dma: Xilinx AXI DMA Engine Driver Probed!! [ 3.856283] xilinx-zynqmp-dma fd500000.dma: ZynqMP DMA driver Probe success [ 3.863396] xilinx-zynqmp-dma fd510000.dma: ZynqMP DMA driver Probe success [ 3.870502] xilinx-zynqmp-dma fd520000.dma: ZynqMP DMA driver Probe success [ 3.877607] xilinx-zynqmp-dma fd530000.dma: ZynqMP DMA driver Probe success [ 3.884704] xilinx-zynqmp-dma fd540000.dma: ZynqMP DMA driver Probe success [ 3.891804] xilinx-zynqmp-dma fd550000.dma: ZynqMP DMA driver Probe success [ 3.898917] xilinx-zynqmp-dma fd560000.dma: ZynqMP DMA driver Probe success [ 3.906018] xilinx-zynqmp-dma fd570000.dma: ZynqMP DMA driver Probe success [ 3.913175] xilinx-zynqmp-dma ffa80000.dma: ZynqMP DMA driver Probe success [ 3.920275] xilinx-zynqmp-dma ffa90000.dma: ZynqMP DMA driver Probe success [ 3.927385] xilinx-zynqmp-dma ffaa0000.dma: ZynqMP DMA driver Probe success [ 3.934487] xilinx-zynqmp-dma ffab0000.dma: ZynqMP DMA driver Probe success [ 3.941586] xilinx-zynqmp-dma ffac0000.dma: ZynqMP DMA driver Probe success [ 3.948686] xilinx-zynqmp-dma ffad0000.dma: ZynqMP DMA driver Probe success [ 3.955790] xilinx-zynqmp-dma ffae0000.dma: ZynqMP DMA driver Probe success [ 3.962898] xilinx-zynqmp-dma ffaf0000.dma: ZynqMP DMA driver Probe success [ 3.970552] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xd3 [ 3.976907] nand: Micron MT29F8G08ABACAH4 [ 3.980908] nand: 1024 MiB, SLC, erase size: 256 KiB, page size: 4096, OOB size: 224 [ 4.007061] Bad block table not found for chip 0 [ 4.011725] zynqmp_pll_disable() clock disable failed for dpll_int, ret = -13 [ 4.036039] Bad block table not found for chip 0 [ 4.040652] Scanning device for bad blocks [ 4.067036] random: fast init done Не понятно почему драйвер не грузится в образе собранном в Buildroot. device tree и конфиг ядра buildroot и petalinux используют одинаковые (из petalinux). В Petalinux версия ядра 4.19, в Buildroot - 5.4.0
  22. Отключает Secondary Program Loader (https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842574/U-Boot+Secondary+Program+Loader), который может заменить fsbl для Zynq. Для zynq MP не работает, поэтому я использую для загрузки линукса файлы с fsbl (fsbl, bit, u-boot, image.itb)
  23. Все дело в зависимостях. По дефолту buildroot собирает с UcLIBC, а необходимо с GLIBC. Поэтому TCF агент будет работать корректно для Linux, собранном в Buildroot для Zynq 7000, если прописать в конфиге: BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
  24. Добрый день! подскажите пожалуйста какие есть варианты работы с i2c устройствами для ZYnqMP из user space и как данные варианты реализовать. Как понимаю, есть два встроенных контроллера i2c и есть IP core IIC. Работать можно через open/close/ioctl/write/read следующим образом: 1. Написать свой kernel module. 2. Использовать готовый драйвер, написанный под конкретное устройство (в DT указывается типа в строке compatible = "at,24c08"). 3. Использовать встроенный драйвер от Xilinx (В конфиге ядра CONFIG_I2C_XILINX=y). Я понимаю как написать свой модуль, как реализовать приложение в user space. Не понятно, как правильно прописывать устройства в device tree, например если использовать встроенный драйвер от XIlinx? Как использовать один i2c контроллер общей шиной для нескольких слейвов и вывести пины для каждого слейва? Буду признателен за любые советы) Вот что у меня получилось. Есть i2c для EEPROM и добавил IIC IP core для какого либо слейва. i2c0: i2c@ff020000 { compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10"; status = "disabled"; interrupt-parent = <&gic>; interrupts = <0 17 4>; reg = <0x0 0xff020000 0x0 0x1000>; #address-cells = <1>; #size-cells = <0>; power-domains = <&zynqmp_firmware 37>; }; i2c1: i2c@ff030000 { compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10"; status = "disabled"; interrupt-parent = <&gic>; interrupts = <0 18 4>; reg = <0x0 0xff030000 0x0 0x1000>; #address-cells = <1>; #size-cells = <0>; power-domains = <&zynqmp_firmware 38>; }; axi_iic_0: i2c@80000000 { #address-cells = <1>; #size-cells = <0>; clock-names = "s_axi_aclk"; clocks = <&zynqmp_clk 71>; compatible = "xlnx,axi-iic-2.0", "xlnx,xps-iic-2.00.a"; interrupt-names = "iic2intc_irpt"; interrupt-parent = <&gic>; interrupts = <0 89 4>; reg = <0x0 0x80000000 0x0 0x1000>; }; &i2c0 { clock-frequency = <400000>; status = "okay"; }; aliases { ethernet0 = &gem3; i2c1 = &axi_iic_0; i2c0 = &i2c0; serial0 = &uart0; spi0 = &qspi; }; После старта # i2cdetect -l i2c-1 i2c xiic-i2c I2C adapter i2c-0 i2c Cadence I2C at ff020000 I2C adapter Лог загрузки [ 12.998730] usbcore: registered new interface driver usb-storage [ 12.999247] rtc_zynqmp ffa60000.rtc: registered as rtc0 [ 12.999298] i2c /dev entries driver [ 13.000721] usbcore: registered new interface driver uvcvideo Через утилиты i2cget / i2cset без проблем работаю с eeprom (i2c-0) # i2cdetect -y 0 -r 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: 70 -- -- -- -- -- -- -- # i2cset -y 0 0x50 0x00 0x69 # i2cget -y 0 0x50 0x00 0x69 c iic так не получается # i2cdetect -y 1 -r 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- # i2cset -y 1 0x48 0x00 0x69 # i2cget -y 1 0x48 0x00 i2cget: read failed: Input/output error
×
×
  • Создать...