BSACPLD 9 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба Коллеги, нужна Ваша помощь по переносу проекта с Cyclone V на Zynq. С FPGA частью проблем нет. Там чистый VHDL и SV. Возникла проблема с Linux для ARM. Хочу перенести его с минимальными доработками. 1. Правильно ли я понимаю, что вместо preloader у Xilinx используется так называемый FSBL и он должен лежать на FAT разделе в файле BOOT.bin, а загрузочный сектор на SD карте должен быть затерт командой dd? Тут вроде все получилось и FSBL стартует и даже доходит до u-boot. Но дальше возникает проблема. 2. Я не понимаю как указать u-boot в каком файле лежит собранное ядро Linux. 3. Достаточно ли просто пересобрать имеющееся ядро просто заменив драйвер для загрузки FPGA и переписать DTS под новую периферию? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 0. Мы за какой Zynq говорим, 7Z или ZU? 1. Грузитесь с SD? 2. Если грузитесь с SD - явно грузите ядро+DTB командой fatload/extNload и потом bootm 3. Зависит от того, какие у вас задачи, и какие специфичные блоки использовались. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 0. 7Z. Отладочная плата ZC706. 1. Да. Взял SD от рабочего проекта для Cyclone V SoCkit. sda3 - preloader (затер командой dd) sda1 - FAT. Закинул сюда BOOT.bin. Здесь же лежит zImage. sda2 - EXT3. Файловая система с библиотеками, конфигами и т.д. 3. Никаких специфичных блоков не было. Пользовательская периферия висела на AXI процессора через мост AXI<->Avalon. Это продолжение темы про ATA контроллер. Теперь у меня наконец появилась возможность проверить все на целевой платформе. До этого у меня была только плата с Cyclone V. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 1. boot.bin (который сгенерился bootgen'ом) пишем через program_flash 2. а где лежит DTB? Image не обязан лежать на FAT. Я бы задумался о FIT 3. Чисто Memory Mapped, без DMA? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 1. Можно поподробнее как это сделать? До этого не приходилось работать с Zynq :( 2. Там же на FAT разделе. 3. DMA в контроллере есть, но в драйвере и процессорной части пока не поднимал. Решил отложить до появления отладочной платы с целевой ПЛИС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 1. UG821. Ну и SDK-Xilinx-Program Flash 2. Ничто не мешает Image/DTB/FIT лежать на любом разделе. 3. Тогда для начала добейтесь загрузки ядра без косяков... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 1 августа, 2019 Опубликовано 1 августа, 2019 · Жалоба Пытаюсь загрузить Linux с root-fs на SD карте. Файл uEnv.txt: bootargs = "console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext3 rootwait"; Вылезает следующая ошибка: U-Boot 2019.01 (Jul 31 2019 - 12:11:43 -0400) Xilinx Zynq ZC706 CPU: Zynq 7z045 Silicon: v3.1 Model: Xilinx ZC706 board DRAM: ECC disabled 1 GiB MMC: mmc@e0100000: 0 Loading Environment from SPI Flash... SF: Detected s25fl128s_64k with page size 512 Bytes, erase size 128 KiB, total 32 MiB *** Warning - bad CRC, using default environment In: serial@e0001000 Out: serial@e0001000 Err: serial@e0001000 97 bytes read in 10 ms (8.8 KiB/s) Importing environment from SD ... Hit any key to stop autoboot: 0 ## Error: "bootcmd_mmc" not defined switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... SF: Detected s25fl128s_64k with page size 512 Bytes, erase size 128 KiB, total 32 MiB device 0 offset 0xfc0000, size 0x40000 SF: 262144 bytes @ 0xfc0000 Read: OK ## Executing script at 00020000 Wrong image format for "source" command SCRIPT FAILED: continuing... starting USB... USB0: USB EHCI 1.00 scanning bus 0 for devices... 1 USB Device(s) found scanning usb for storage devices... 0 Storage Device(s) found Device 0: unknown device !!! !!! Booting cmd is deprecated (will be removed in 2020). !!! Please move to distro bootcmd. !!! Device: mmc@e0100000 Manufacturer ID: 28 OEM: 4245 Name: Bus Speed: 50000000 Mode : SD High Speed (50MHz) Rd Block Len: 512 SD version 3.0 High Capacity: Yes Capacity: 14.9 GiB Bus Width: 4-bit Erase Group Size: 512 Bytes 97 bytes read in 7 ms (12.7 KiB/s) Loaded environment from uEnv.txt Importing environment from SD ... Copying Linux from SD to RAM... 4145072 bytes read in 246 ms (16.1 MiB/s) 19644 bytes read in 18 ms (1 MiB/s) ## Booting kernel from Legacy Image at 03000000 ... Image Name: Linux-4.19.0-xilinx Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4145008 Bytes = 4 MiB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK ## Flattened Device Tree blob at 02a00000 Booting using the fdt blob at 0x2a00000 Loading Kernel Image ... OK Loading Device Tree to 1fff8000, end 1ffffcbb ... OK Starting kernel ... Booting Linux on physical CPU 0x0 Linux version 4.19.0-xilinx (swub@swub) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11-rc1)) #2 SMP PREEMPT Thu Aug 1 09:10:23 EDT 2019 CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache OF: fdt: Machine model: Zynq ZC706 Development Board Memory policy: Data cache writealloc cma: Reserved 16 MiB at 0x3f000000 random: get_random_bytes called from start_kernel+0x7c/0x364 with crng_init=0 percpu: Embedded 16 pages/cpu @(ptrval) s35916 r8192 d21428 u65536 Built 1 zonelists, mobility grouping on. Total pages: 260608 Kernel command line: console=ttyPS0,115200 earlyprintk Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) Memory: 1012944K/1048576K available (6144K kernel code, 205K rwdata, 1612K rodata, 1024K init, 133K bss, 19248K reserved, 16384K cma-reserved, 245760K highmem) Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xffc00000 - 0xfff00000 (3072 kB) vmalloc : 0xf0800000 - 0xff800000 ( 240 MB) lowmem : 0xc0000000 - 0xf0000000 ( 768 MB) pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) modules : 0xbf000000 - 0xbfe00000 ( 14 MB) .text : 0x(ptrval) - 0x(ptrval) (7136 kB) .init : 0x(ptrval) - 0x(ptrval) (1024 kB) .data : 0x(ptrval) - 0x(ptrval) ( 206 kB) .bss : 0x(ptrval) - 0x(ptrval) ( 134 kB) rcu: Preemptible hierarchical RCU implementation. rcu: RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2. Tasks RCU enabled. rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2 NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 efuse mapped to (ptrval) slcr mapped to (ptrval) L2C: platform modifies aux control register: 0x72360000 -> 0x72760000 L2C: DT/platform modifies aux control register: 0x72360000 -> 0x72760000 L2C-310 erratum 769419 enabled L2C-310 enabling early BRESP for Cortex-A9 L2C-310 full line of zeros enabled for Cortex-A9 L2C-310 ID prefetch enabled, offset 1 lines L2C-310 dynamic clock gating enabled, standby mode enabled L2C-310 cache controller enabled, 8 ways, 512 kB L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76760001 zynq_clock_init: clkc starts at (ptrval) Zynq clock init sched_clock: 64 bits at 333MHz, resolution 3ns, wraps every 4398046511103ns clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0x4ce07af025, max_idle_ns: 440795209040 ns Switching to timer-based delay loop, resolution 3ns clocksource: ttc_clocksource: mask: 0xffff max_cycles: 0xffff, max_idle_ns: 537538477 ns timer #0 at (ptrval), irq=17 Console: colour dummy device 80x30 Calibrating delay loop (skipped), value calculated using timer frequency.. 666.66 BogoMIPS (lpj=3333333) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 2048 (order: 1, 8192 bytes) Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes) CPU: Testing write buffer coherency: ok CPU0: Spectre v2: using BPIALL workaround CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 Setting up static identity map for 0x100000 - 0x100060 rcu: Hierarchical SRCU implementation. smp: Bringing up secondary CPUs ... CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 CPU1: Spectre v2: using BPIALL workaround smp: Brought up 1 node, 2 CPUs SMP: Total of 2 processors activated (1333.33 BogoMIPS). CPU: All CPU(s) started in SVC mode. devtmpfs: initialized VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4 clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns futex hash table entries: 512 (order: 3, 32768 bytes) pinctrl core: initialized pinctrl subsystem NET: Registered protocol family 16 DMA: preallocated 256 KiB pool for atomic coherent allocations cpuidle: using governor menu hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers. hw-breakpoint: maximum watchpoint size is 4 bytes. zynq-ocm f800c000.ocmc: ZYNQ OCM pool: 256 KiB @ 0x(ptrval) zynq-pinctrl 700.pinctrl: zynq pinctrl initialized e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 26, base_baud = 3125000) is a xuartps console [ttyPS0] enabled GPIO IRQ not connected XGpio: gpio@41200000: registered, base is 1020 GPIO IRQ not connected XGpio: gpio@41210000: registered, base is 1017 GPIO IRQ not connected XGpio: gpio@41220000: registered, base is 1013 vgaarb: loaded SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb media: Linux media interface: v0.10 videodev: Linux video capture interface: v2.00 pps_core: LinuxPPS API ver. 1 registered pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> PTP clock support registered EDAC MC: Ver: 3.0.0 FPGA manager framework Advanced Linux Sound Architecture Driver Initialized. clocksource: Switched to clocksource arm_global_timer NET: Registered protocol family 2 tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes) TCP established hash table entries: 8192 (order: 3, 32768 bytes) TCP bind hash table entries: 8192 (order: 4, 65536 bytes) TCP: Hash tables configured (established 8192 bind 8192) UDP hash table entries: 512 (order: 2, 16384 bytes) UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) NET: Registered protocol family 1 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. hw perfevents: no interrupt-affinity property for /pmu@f8891000, guessing. hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available workingset: timestamp_bits=30 max_order=18 bucket_order=0 jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc. bounce: pool size: 64 pages io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) io scheduler mq-deadline registered io scheduler kyber registered dma-pl330 f8003000.dmac: Loaded driver for PL330 DMAC-241330 dma-pl330 f8003000.dmac: DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16 brd: module loaded loop: module loaded m25p80 spi0.0: found s25fl128s, expected n25q512a m25p80 spi0.0: s25fl128s (32768 Kbytes) 4 fixed-partitions partitions found on MTD device spi0.0 Creating 4 MTD partitions on "spi0.0": 0x000000000000-0x000000e00000 : "boot" 0x000000e00000-0x000000e20000 : "bootenv" 0x000000e20000-0x0000018a0000 : "kernel" 0x0000018a0000-0x000002000000 : "spare" libphy: Fixed MDIO Bus: probed CAN device driver interface libphy: MACB_mii_bus: probed Marvell 88E1116R e000b000.ethernet-ffffffff:07: attached PHY driver [Marvell 88E1116R] (mii_bus:phy_addr=e000b000.ethernet-ffffffff:07, irq=POLL) macb e000b000.ethernet eth0: Cadence GEM rev 0x00020118 at 0xe000b000 irq 28 (00:0a:35:00:1e:53) e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k e1000e: Copyright(c) 1999 - 2015 Intel Corporation. ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver ehci-pci: EHCI PCI platform driver usbcore: registered new interface driver usb-storage chipidea-usb2 e0002000.usb: e0002000.usb supply vbus not found, using dummy regulator chipidea-usb2 e0002000.usb: Linked as a consumer to regulator.0 ULPI transceiver vendor/product ID 0x0424/0x0007 Found SMSC USB3320 ULPI transceiver. ULPI integrity check: passed. ci_hdrc ci_hdrc.0: EHCI Host Controller ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1 ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00 hub 1-0:1.0: USB hub found hub 1-0:1.0: 1 port detected i2c /dev entries driver cdns-i2c e0004000.i2c: 400 kHz mmio e0004000 irq 23 si570 1-005d: registered, current frequency 148500000 Hz i2c i2c-0: Added multiplexed i2c bus 1 i2c i2c-0: Added multiplexed i2c bus 2 at24 3-0054: 1024 byte 24c08 EEPROM, writable, 1 bytes/write i2c i2c-0: Added multiplexed i2c bus 3 i2c i2c-0: Added multiplexed i2c bus 4 rtc rtc0: invalid alarm value: 2019-6-3 19:85:0 rtc-pcf8563 5-0051: rtc core: registered rtc-pcf8563 as rtc0 i2c i2c-0: Added multiplexed i2c bus 5 i2c i2c-0: Added multiplexed i2c bus 6 i2c i2c-0: Added multiplexed i2c bus 7 i2c i2c-0: Added multiplexed i2c bus 8 pca954x 0-0074: registered 8 multiplexed busses for I2C switch pca9548 ucd9000 8-0065: Device ID UCD90120A|2.3.4.0000|110603 random: fast init done cdns-wdt f8005000.watchdog: Xilinx Watchdog Timer at (ptrval) with timeout 10s EDAC MC: ECC not enabled Xilinx Zynq CpuIdle Driver started sdhci: Secure Digital Host Controller Interface driver sdhci: Copyright(c) Pierre Ossman sdhci-pltfm: SDHCI platform and OF driver helper mmc0: SDHCI controller on e0100000.sdhci [e0100000.sdhci] using ADMA ledtrig-cpu: registered to indicate activity on CPUs usbcore: registered new interface driver usbhid usbhid: USB HID core driver fpga_manager fpga0: Xilinx Zynq FPGA Manager registered NET: Registered protocol family 10 Segment Routing with IPv6 sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver NET: Registered protocol family 17 can: controller area network core (rev 20170425 abi 9) NET: Registered protocol family 29 can: raw protocol (rev 20170425) can: broadcast manager protocol (rev 20170425 t) can: netlink gateway (rev 20170425) max_hops=1 Registering SWP/SWPB emulation handler of-fpga-region fpga-full: FPGA Region probed rtc-pcf8563 5-0051: setting system clock to 2019-06-09 11:27:49 UTC (1560079669) of_cfs_init of_cfs_init: OK ALSA device list: No soundcards found. VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6 Please append a correct "root=" boot option; here are the available partitions: 0100 16384 ram0 (driver?) 0101 16384 ram1 (driver?) 0102 16384 ram2 (driver?) 0103 16384 ram3 (driver?) 0104 16384 ram4 (driver?) 0105 16384 ram5 (driver?) 0106 16384 ram6 (driver?) 0107 16384 ram7 (driver?) 0108 16384 ram8 mmc0: new high speed SDHC card at address 59b4 (driver?) 0109 16384 ram9 (driver?) 010a 16384 ram10 mmcblk0: mmc0:59b4 14.9 GiB (driver?) 010b 16384 ram11 (driver?) 010c 16384 ram12 (driver?) 010d 16384 ram13 (driver?) 010e 16384 ram14 mmcblk0: p1 p2 p3 (driver?) 010f 16384 ram15 (driver?) 1f00 14336 mtdblock0 (driver?) 1f01 128 mtdblock1 (driver?) 1f02 10752 mtdblock2 (driver?) 1f03 7552 mtdblock3 (driver?) b300 15637504 mmcblk0 driver: mmcblk b301 512000 mmcblk0p1 45cc32ac-01 b302 14848000 mmcblk0p2 45cc32ac-02 b303 10240 mmcblk0p3 45cc32ac-03 Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) CPU1: stopping CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.19.0-xilinx #2 Hardware name: Xilinx Zynq Platform [<c010f078>] (unwind_backtrace) from [<c010b00c>] (show_stack+0x10/0x14) [<c010b00c>] (show_stack) from [<c06866a8>] (dump_stack+0x80/0xa0) [<c06866a8>] (dump_stack) from [<c010d658>] (ipi_cpu_stop+0x3c/0x70) [<c010d658>] (ipi_cpu_stop) from [<c010de9c>] (handle_IPI+0x6c/0x90) [<c010de9c>] (handle_IPI) from [<c032a3c4>] (gic_handle_irq+0x84/0x90) [<c032a3c4>] (gic_handle_irq) from [<c0101a0c>] (__irq_svc+0x6c/0xa8) Exception stack(0xef085f30 to 0xef085f78) 5f20: 00000000 00000000 2eea1000 00000000 5f40: ef7e2478 ffffe000 ef7e2478 00000000 8b64d741 8bacf796 00000000 00000000 5f60: fffffff5 ef085f80 c050ce30 c050ce58 60000113 ffffffff [<c0101a0c>] (__irq_svc) from [<c050ce58>] (cpuidle_enter_state+0xf8/0x1d8) [<c050ce58>] (cpuidle_enter_state) from [<c013f4e8>] (do_idle+0x1ac/0x23c) [<c013f4e8>] (do_idle) from [<c013f6d4>] (cpu_startup_entry+0x18/0x1c) [<c013f6d4>] (cpu_startup_entry) from [<001023ac>] (0x1023ac) ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]--- Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 1 августа, 2019 Опубликовано 1 августа, 2019 · Жалоба Ну так у вас местоположение rootfs не указано нигде, вот ядро и психануло. U-Boot держит Environment во флеше, но его там нет, от слова совсем, он ставит некий дефолт, который и пытается отработать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 1 августа, 2019 Опубликовано 1 августа, 2019 · Жалоба 1 hour ago, gosha-z said: Ну так у вас местоположение rootfs не указано нигде, вот ядро и психануло. U-Boot держит Environment во флеше, но его там нет, от слова совсем, он ставит некий дефолт, который и пытается отработать. А разве root=/dev/mmcblk0p2 не является указанием на SD карту? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 1 августа, 2019 Опубликовано 1 августа, 2019 · Жалоба 3 minutes ago, BSACPLD said: А разве root=/dev/mmcblk0p2 не является указанием на SD карту? Да, только U-Boot ничего не знает про это указание 1 hour ago, gosha-z said: U-Boot держит Environment во флеше, но его там нет, от слова совсем 2 hours ago, BSACPLD said: Loading Environment from SPI Flash... SF: Detected s25fl128s_64k with page size 512 Bytes, erase size 128 KiB, total 32 MiB *** Warning - bad CRC, using default environment Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 1 августа, 2019 Опубликовано 1 августа, 2019 · Жалоба 12 minutes ago, gosha-z said: Да, только U-Boot ничего не знает про это указание А можно как-то прописать указание на SD карту при сборке U-Boot? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 1 августа, 2019 Опубликовано 1 августа, 2019 · Жалоба 1 minute ago, BSACPLD said: А можно как-то прописать указание на SD карту при сборке U-Boot? Можно, раздел Environment Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 1 августа, 2019 Опубликовано 1 августа, 2019 · Жалоба Можно поподробнее как это сделать? Поставил загрузку настроек с FAT. Создал на FAT разделе uboot.env setenv root=/dev/mmcblk0p2 Пишет Loading Environment from FAT... ** No device specified ** Я так понимаю нужно еще как-то указать с какого раздела брать uboot.env. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 1 августа, 2019 Опубликовано 1 августа, 2019 · Жалоба Да поставьте строку в DT, chosen/bootargs и не мучайте платку... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSACPLD 9 2 августа, 2019 Опубликовано 2 августа, 2019 · Жалоба Прописал bootargs в настройках U-Boot и все запустилось :) Но возникла еще одна проблема :( Сбросился логин/пароль. При попытке зайти под логином/паролем который я задавал до замены ядра и U-Boot, выдает ошибку:Login incorrect Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться