Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Petalinux и custom harware с zynq7000
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
sheynmanyu
Здравствуйте!
Собираю Petalinux (v 2017.2, собираю на виртуальной машине с Ubuntu 16.04 LTS) для разработанной коллегами платы. На плате стоит zynq7000.
Экспортирую дизайн из Vivado (версия так же 2017.2). Все настройки для сборки линукса стандартные. Гружусь с SD карточки. И каждый раз загрузка идет до разных мест: то даже ethernet-контроллер не обнаружит, то дойдет до reading image и повиснет на проверке Verifying Hash Integrity, то выдаст ошибку "Kernel panic - not syncing: Attempted to kill the idle task!"
С чем такое поведение может быть связано? Где искать причины и как их устранять?
Лог:
Код
Petalinux: modem
U-Boot 2017.01 (Mar 28 2018 - 16:43:10 +0300)

Board: Xilinx Zynq
DRAM:  ECC disabled 512 MiB
MMC:   sdhci@e0100000: 0 (SD)
Using default environment

In:    serial
Out:   serial
Err:   serial
Net:   ZYNQ GEM: e000b000, phyaddr ffffffff, interface rgmii-id
eth0: ethernet@e000b000
U-BOOT for my_petalinux_modem

ethernet@e000b000 Waiting for PHY auto negotiation to complete......... TIMEOUT !
Hit any key to stop autoboot:  0
Device: sdhci@e0100000
Manufacturer ID: 74
OEM: 4a60
Name: USD
Tran Speed: 50000000
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 7.5 GiB
Bus Width: 4-bit
Erase Group Size: 512 Bytes
reading image.ub
20832340 bytes read in 1330 ms (14.9 MiB/s)
## Loading kernel from FIT Image at 10000000 ...
   Using 'conf@1' configuration
   Verifying Hash Integrity ... OK
   Trying 'kernel@0' kernel subimage
     Description:  Linux Kernel
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0x100000d4
     Data Size:    3741152 Bytes = 3.6 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: 0x00008000
     Entry Point:  0x00008000
     Hash algo:    sha1
     Hash value:   be242bcd4030cd2ce3b91666ae9fd53d823d855a
   Verifying Hash Integrity ... sha1+ OK
## Loading ramdisk from FIT Image at 10000000 ...
   Using 'conf@1' configuration
   Trying 'ramdisk@0' ramdisk subimage
     Description:  ramdisk
     Type:         RAMDisk Image
     Compression:  uncompressed
     Data Start:   0x10394c24
     Data Size:    17076286 Bytes = 16.3 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: unavailable
     Entry Point:  unavailable
     Hash algo:    sha1
     Hash value:   e482e0332411eaee448014eb5db20037c597d5a7
   Verifying Hash Integrity ... sha1+ OK
## Loading fdt from FIT Image at 10000000 ...
   Using 'conf@1' configuration
   Trying 'fdt@0' fdt subimage
     Description:  Flattened Device Tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x103917a8
     Data Size:    13258 Bytes = 12.9 KiB
     Architecture: ARM
     Hash algo:    sha1
     Hash value:   9a70b78a2bbfbae30dfb37ded05b72ac57222e90
   Verifying Hash Integrity ... sha1+ OK
   Booting using the fdt blob at 0x103917a8
   Loading Kernel Image ... OK
   Loading Ramdisk to 06fb6000, end 07fff03e ... OK
   Loading Device Tree to 06faf000, end 06fb53c9 ... OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Booting Linux on physical CPU 0x0
Linux version 4.9.0-xilinx-v2017.2 (yulia@yulia-U) (gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11) ) #1 SMP PREEMPT Wed Mar 28 16:39:29 MSK 2018
CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
OF: fdt:Machine model: xlnx,zynq-7000
bootconsole [earlycon0] enabled
cma: Reserved 16 MiB at 0x1f000000
Memory policy: Data cache writealloc
Unable to handle kernel NULL pointer dereference at virtual address 00000ab4
pgd = c0004000
[00000ab4] *pgd=00000000
Internal error: Oops - BUG: 5 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 0 PID: 0 Comm: swapper Not tainted 4.9.0-xilinx-v2017.2 #1
Hardware name: Xilinx Zynq Platform
task: c0a06bc0 task.stack: c0a00000
PC is at ___alloc_bootmem_node_nopanic+0x40/0x98
LR is at __alloc_bootmem_node+0x4c/0x68
pc : [<c090fa4c>]    lr : [<c090fb48>]    psr: 600000d3
sp : c0a01ef8  ip : 00000014  fp : debe83c0
r10: debcb000  r9 : 00000000  r8 : 00000000
r7 : 00000000  r6 : 1ebd9000  r5 : 00000000  r4 : 00000001
r3 : 00000000  r2 : 1ebd9000  r1 : 1ebd9000  r0 : 00000000
Flags: nZCv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment none
Control: 18c5387d  Table: 0000404a  DAC: 00000051
Process swapper (pid: 0, stack limit = 0xc0a00210)
Stack: (0xc0a01ef8 to 0xc0a02000)
1ee0:                                                       00000000 00000000
1f00: 00000001 00000000 00000000 00000000 ffffffff 1ebd9000 00000000 00000000
1f20: 00000001 debcb000 00000001 c090fb48 00000000 debe73c0 0000e000 00000000
1f40: debcb000 debe83c0 debe73c0 c090eeec ffffffff 00000000 00000000 00000022
1f60: 00001000 00001000 00005ab4 0000654c 00005ab4 0000000c 00000000 00000000
1f80: c0a32800 ffffffff c0a03000 defffe00 c0931a30 00000000 00000000 c090ef9c
1fa0: c090e09c c090e0c4 00000000 00000000 c0a32800 ffffffff c0a03000 c09009a8
1fc0: ffffffff 00000000 00000000 00000000 00000000 c0931a30 00000000 c0a32a94
1fe0: c0a03018 c0931a2c c0a07db8 0000406a 413fc090 0000807c 00000000 00000000
[<c090fa4c>] (___alloc_bootmem_node_nopanic) from [<c090fb48>] (__alloc_bootmem_node+0x4c/0x68)
[<c090fb48>] (__alloc_bootmem_node) from [<c090eeec>] (pcpu_embed_first_chunk+0x63c/0x6c4)
[<c090eeec>] (pcpu_embed_first_chunk) from [<c090ef9c>] (setup_per_cpu_areas+0x28/0xac)
[<c090ef9c>] (setup_per_cpu_areas) from [<c09009a8>] (start_kernel+0xec/0x358)
[<c09009a8>] (start_kernel) from [<0000807c>] (0x807c)
Code: e58d4008 e58d500c e58d7000 e58d5004 (e5990ab4)
---[ end trace 0000000000000000 ]---
Kernel panic - not syncing: Attempted to kill the idle task!
---[ end Kernel panic - not syncing: Attempted to kill the idle task!
dm.pogrebnoy
Было похожее, оказалось, что проблемы с памятью DDR, причем baremetal-тест памяти отрабатывал без ошибок.
sheynmanyu
Цитата(dm.pogrebnoy @ Mar 29 2018, 11:27) *
Было похожее, оказалось, что проблемы с памятью DDR, причем baremetal-тест памяти отрабатывал без ошибок.

А как отловили, если не секрет?
dm.pogrebnoy
ЕМНИП, проблема была в отсутствии этих галок https://yadi.sk/i/-PlosRKf3Tt2kf
sheynmanyu
Цитата(dm.pogrebnoy @ Mar 29 2018, 15:53) *
ЕМНИП, проблема была в отсутствии этих галок https://yadi.sk/i/-PlosRKf3Tt2kf

Галки стоят sad.gif
sheynmanyu
Снижение скорости DDR контроллера до 303 МГц помогло. Но вылезла другая проблема:
Код
Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Booting Linux on physical CPU 0x0
Linux version 4.9.0-xilinx-v2017.2 (yulia@yulia-U) (gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11) ) #1 SMP PREEMPT Fri Mar 30 19:28:37 MSK 2018
CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
OF: fdt:Machine model: xlnx,zynq-7000
bootconsole [earlycon0] enabled
cma: Reserved 16 MiB at 0x1f000000
Memory policy: Data cache writealloc
percpu: Embedded 14 pages/cpu @debcb000 s25932 r8192 d23220 u57344
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130048
Kernel command line: console=ttyPS0,115200 earlyprintk
PID hash table entries: 2048 (order: 1, 8192 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 493520K/524288K available (6144K kernel code, 202K rwdata, 1456K rodata, 1024K init, 229K bss, 14384K reserved, 16384K cma-reserved, 0K highmem)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0xe0800000 - 0xff800000   ( 496 MB)
    lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
    pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    modules : 0xbf000000 - 0xbfe00000   (  14 MB)
      .text : 0xc0008000 - 0xc0700000   (7136 kB)
      .init : 0xc0900000 - 0xc0a00000   (1024 kB)
      .data : 0xc0a00000 - 0xc0a32800   ( 202 kB)
       .bss : 0xc0a32800 - 0xc0a6be98   ( 230 kB)
Preemptible hierarchical RCU implementation.
        Build-time adjustment of leaf fanout to 32.
        RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
RCU: Adjusting geometry for rcu_fanout_leaf=32, nr_cpu_ids=2
NR_IRQS:16 nr_irqs:16 16
efuse mapped to e0800000
slcr mapped to e0802000
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 e0802100
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 e080a000, 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: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x100000 - 0x100058
CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
Brought up 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
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 @ 0xe0840000
zynq-pinctrl 700.pinctrl: zynq pinctrl initialized
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
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
fpga-region fpga-full: FPGA Region probed
Advanced Linux Sound Architecture Driver Initialized.
clocksource: Switched to clocksource arm_global_timer
NET: Registered protocol family 2
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
UDP hash table entries: 256 (order: 1, 8192 bytes)
UDP-Lite hash table entries: 256 (order: 1, 8192 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: enabled with armv7_cortex_a9 PMU driver, 7 counters available
futex hash table entries: 512 (order: 3, 32768 bytes)
workingset: timestamp_bits=30 max_order=17 bucket_order=0
jffs2: version 2.2. (NAND) (SUMMARY)  В© 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
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
e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 144, base_baud = 6249999) is a xuartps
аconsole [ttyPS0] enabled
console [ttyPS0] enabled
bootconsole [earlycon0] disabled
bootconsole [earlycon0] disabled
xdevcfg f8007000.devcfg: ioremap 0xf8007000 to e0828000
[drm] Initialized
brd: module loaded
loop: module loaded
libphy: Fixed MDIO Bus: probed
CAN device driver interface
libphy: MACB_mii_bus: probed
macb e000b000.ethernet eth0: Cadence GEM rev 0x00020118 at 0xe000b000 irq 145 (00:0a:35:00:1e:53)
Generic PHY e000b000.etherne:03: attached PHY driver [Generic PHY] (mii_bus:phy_addr=e000b000.etherne:03, irq=-1)
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
mousedev: PS/2 mouse device common for all mice
i2c /dev entries driver
cdns-i2c e0004000.i2c: 400 kHz mmio e0004000 irq 141
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 DMA
ledtrig-cpu: registered to indicate activity on CPUs
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
NET: Registered protocol family 10
sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
NET: Registered protocol family 17
can: controller area network core (rev 20120528 abi 9)
NET: Registered protocol family 29
can: raw protocol (rev 20120528)
can: broadcast manager protocol (rev 20161123 t)
can: netlink gateway (rev 20130117) max_hops=1
Registering SWP/SWPB emulation handler
hctosys: unable to open rtc device (rtc0)
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?)
mmc0: new high speed SDHC card at address 59b4
0105           16384 ram5  (driver?)
0106           16384 ram6 mmcblk0: mmc0:59b4 USD   7.51 GiB
(driver?)
mmcblk0: p1 p2
0107           16384 ram7  (driver?)
0108           16384 ram8  (driver?)
0109           16384 ram9  (driver?)
010a           16384 ram10  (driver?)
010b           16384 ram11  (driver?)
010c           16384 ram12  (driver?)
010d           16384 ram13  (driver?)
010e           16384 ram14  (driver?)
010f           16384 ram15  (driver?)
b300         7879680 mmcblk0  driver: mmcblk
  b301           65536 mmcblk0p1 d17cd355-01
  b302         7810048 mmcblk0p2 d17cd355-02
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.9.0-xilinx-v2017.2 #1
Hardware name: Xilinx Zynq Platform
[<c010e244>] (unwind_backtrace) from [<c010a4a4>] (show_stack+0x10/0x14)
[<c010a4a4>] (show_stack) from [<c02dc2b0>] (dump_stack+0x80/0x9c)
[<c02dc2b0>] (dump_stack) from [<c010c9f8>] (ipi_cpu_stop+0x3c/0x70)
[<c010c9f8>] (ipi_cpu_stop) from [<c010d210>] (handle_IPI+0x64/0x84)
[<c010d210>] (handle_IPI) from [<c0101420>] (gic_handle_irq+0x78/0x94)
[<c0101420>] (gic_handle_irq) from [<c010ae8c>] (__irq_svc+0x6c/0xa8)
Exception stack(0xde471f70 to 0xde471fb8)
1f60:                                     00000000 00000000 1e29d000 debde9c0
1f80: 3e0d7c02 00000000 debdde40 00000000 3ddfe73a 00000000 00000000 00000000
1fa0: 0000000b de471fc0 c04af528 c04af54c 60000013 ffffffff
[<c010ae8c>] (__irq_svc) from [<c04af54c>] (cpuidle_enter_state+0xe4/0x1b0)
[<c04af54c>] (cpuidle_enter_state) from [<c014c834>] (cpu_startup_entry+0x17c/0x19c)
[<c014c834>] (cpu_startup_entry) from [<001014cc>] (0x1014cc)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
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?)
mmc0: new high speed SDHC card at address 59b4
0105           16384 ram5  (driver?)
0106           16384 ram6 mmcblk0: mmc0:59b4 USD   7.51 GiB
(driver?)
mmcblk0: p1 p2
0107           16384 ram7  (driver?)
0108           16384 ram8  (driver?)
0109           16384 ram9  (driver?)
010a           16384 ram10  (driver?)
010b           16384 ram11  (driver?)
010c           16384 ram12  (driver?)
010d           16384 ram13  (driver?)
010e           16384 ram14  (driver?)
010f           16384 ram15  (driver?)
b300         7879680 mmcblk0  driver: mmcblk
  b301           65536 mmcblk0p1 d17cd355-01
  b302         7810048 mmcblk0p2 d17cd355-02
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.9.0-xilinx-v2017.2 #1
Hardware name: Xilinx Zynq Platform
[<c010e244>] (unwind_backtrace) from [<c010a4a4>] (show_stack+0x10/0x14)
[<c010a4a4>] (show_stack) from [<c02dc2b0>] (dump_stack+0x80/0x9c)
[<c02dc2b0>] (dump_stack) from [<c010c9f8>] (ipi_cpu_stop+0x3c/0x70)
[<c010c9f8>] (ipi_cpu_stop) from [<c010d210>] (handle_IPI+0x64/0x84)
[<c010d210>] (handle_IPI) from [<c0101420>] (gic_handle_irq+0x78/0x94)
[<c0101420>] (gic_handle_irq) from [<c010ae8c>] (__irq_svc+0x6c/0xa8)
Exception stack(0xde471f70 to 0xde471fb8)
1f60:                                     00000000 00000000 1e29d000 debde9c0
1f80: 3e0d7c02 00000000 debdde40 00000000 3ddfe73a 00000000 00000000 00000000
1fa0: 0000000b de471fc0 c04af528 c04af54c 60000013 ffffffff
[<c010ae8c>] (__irq_svc) from [<c04af54c>] (cpuidle_enter_state+0xe4/0x1b0)
[<c04af54c>] (cpuidle_enter_state) from [<c014c834>] (cpu_startup_entry+0x17c/0x19c)
[<c014c834>] (cpu_startup_entry) from [<001014cc>] (0x1014cc)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

Пробовала менять в system-top.dts запись на
Код
chosen {
        bootargs = "earlycon root=/dev/mmcblk0p1 rw devtmpfs.mount=1";
        stdout-path = "serial0:115200n8";
    };

Не помогло. Пробовала поступить как советовали тут: https://www.xilinx.com/support/answers/68704.html
Не помогло. Где? Где и как правильно прописать настройки, чтобы система поняла, откуда ей что грузить?
Jury093
Цитата(sheynmanyu @ Apr 2 2018, 14:58) *
Пробовала менять в system-top.dts запись на
Код
chosen {
        bootargs = "earlycon root=/dev/mmcblk0p1 rw devtmpfs.mount=1";
        stdout-path = "serial0:115200n8";
    };

Не помогло. Где? Где и как правильно прописать настройки, чтобы система поняла, откуда ей что грузить?

так поищите, откуда ядро берет вот эти параметры:
Код
Kernel command line: console=ttyPS0,115200 earlyprintk

существуют несколько вариантов передачи параметров и как там у вас организовано отсюда не видно..
как простейший - не перекомпилируете свой dts либо не обновляете dtb
возможно в ядре строка для загрузки захардкожена и оно (ядро) не смотрит другие настройки - проверяете через menuconfig
как вариант, в юбуте так прописано и его настройки козырнее дефолтный из dts - останавливаете юбут, изучаете вывод printenv в строках для bootcmd и bootargs и смежных..
и еще вариант, настройки могут храниться во внешнем файле, типа uEnv.txt или подобном, считывается юбутом в момент загрузки и чихает на строку dts..
sheynmanyu
Цитата(Jury093 @ Apr 2 2018, 16:28) *
так поищите, откуда ядро берет вот эти параметры:
Код
Kernel command line: console=ttyPS0,115200 earlyprintk

Спасибо!

Потыркалась по настройкам. Причем именно потыркалась. Проблему решила, но понимания не наступило.
Решила вот так (пересоздала проект):

Перейдем в тот каталог, где хотим создавать проект petalinux.
yulia@yulia-U:<$path-to-prj-dir> petalinux-create --template zynq --type project --name modem
Перейдем в папку, где лежат экспортированные файлы из Vivado
yulia@yulia-U:<$path-to-exported-from-Vivado-files-dir> petalinux-config --get-hw-description -p <$path-to-prj-dir>
В окне настроек:
Kernel Bootargs -> generate bootargs automatically
Kernel Bootargs ->enable kernel earlyprintk
Image Packaging Configuration->Root filesystem type -> выбрала SD card
Image Packaging Configuration-> сняла галку с copy final images to tftpboot
Save->exit и ждем, пока закончится конфигурация.
Возвращаемся в папку с проектом.
yulia@yulia-U: <$path-to-prj-dir> petalinux-build
yulia@yulia-U: <$path-to-prj-dir> petalinux-package --boot --fsbl zynq_fsbl.elf --fpga design_1_wrapper.bit --u-boot
Копируем файлы system.dtb, image.ub, BOOT.BIN на первую часть SD-карты. А файловую систему на второй раздел SD-карты.
yulia@yulia-U: <$path-to-prj-dir> cd /media/yulia/rootfs/
yulia@yulia-U:/media/yulia/rootfs$ sudo rm -rf *
[sudo] password for yulia:
yulia@yulia-U: <$path-to-prj-dir> cd images/linux/
yulia@yulia-U: <$path-to-prj-dir>/images/linux$ sudo mount rootfs.ext3 /mnt -o loop
yulia@yulia-U: <$path-to-prj-dir>/images/linux$ sudo cp -rf /mnt/* /media/yulia/rootfs/
Jury093
Цитата(sheynmanyu @ Apr 2 2018, 19:20) *
Потыркалась по настройкам. Причем именно потыркалась. Проблему решила, но понимания не наступило.
Решила вот так (пересоздала проект):

хорошо, что проблему решили, плохо, что не отследили как - в будущем, если придется что-то дописать/поменять, то не поймете что править..

Цитата
Kernel Bootargs -> generate bootargs automatically
Копируем файлы system.dtb, image.ub, BOOT.BIN на первую часть SD-карты. А файловую систему на второй раздел SD-карты.

возможно система берет настройки для первой строки с некоего шаблона - запустите поиск строки по дереву исходников, тогда будете знать, где дописывать аргументы для системы
и очень похоже, что system.dtb - это бинарный вариант вашего dts, тут либо он не перекомпилился, либо вы его не положили на целевую плату

как пробная версия для поиска - измените что-нить в своем dts, запустите сборку проекта и посмотрите в логах, что есть по dts/dtb, если там нет и в терминале нет, то проверьте содержимое /media/yulia/rootfs/ на предмет своих модификаций
sheynmanyu
Цитата(Jury093 @ Apr 2 2018, 20:37) *
хорошо, что проблему решили, плохо, что не отследили как - в будущем, если придется что-то дописать/поменять, то не поймете что править..

Отследила. Я изменила в настройках INITFSRAM на SD card. Похоже, этот пункт в меню петалинукса как раз задает, откуда будет грузиться файловая система. Но полного понимания нет, и нет понимания, как эти настройки прописывать ручками. А поскольку в мире линукса я вообще новичок, то становится совсем весело. Спасибо!


Jury093
Цитата(sheynmanyu @ Apr 2 2018, 22:03) *
Отследила. Я изменила в настройках INITFSRAM на SD card. Похоже, этот пункт в меню петалинукса как раз задает, откуда будет грузиться файловая система. Но полного понимания нет, и нет понимания, как эти настройки прописывать ручками. А поскольку в мире линукса я вообще новичок, то становится совсем весело. Спасибо!

не похоже, более вероятно, что поменяли переменную, а скрипт сам перекрутил параметры для загрузки. раз у вас прошла успешная загрузка, то смотрите, что там принял ядро в качестве параметров.. или при загруженной системе дайте команду
Код
cat /proc/cmdline

да не за что, мне как-то не довелось касаться ни petalinux, ни цинка, пробовал помочь на основе общих знаний..
успехов в борьбе с линуксом и ядром!

ЗЫ капли инфы есть в гугле "petalinux bootargs" и подобные запросы..
vladimirD
В моем случае, Ethernet сеть медленно отвечала. Попогло подключение к отдельному роутеру.
sheynmanyu
Цитата(vladimirD @ Apr 9 2018, 15:14) *
В моем случае, Ethernet сеть медленно отвечала. Попогло подключение к отдельному роутеру.

Спасибо! Проблема загрузки решена: я неверно настроила параметры микросхемы памяти. Сейчас все грузится и не вылетает. Правда, теперь не могу загрузиться с NFS: не понимаю, как настроить ядро, чтобы оно знало, откуда и куда что грузить? И как пробросить порты наружу с виртуальной машины (Virtual Box + Ubuntu 16.04 LTS)?
Jury093
Цитата(sheynmanyu @ Apr 9 2018, 15:32) *
Спасибо! Проблема загрузки решена: я неверно настроила параметры микросхемы памяти. Сейчас все грузится и не вылетает. Правда, теперь не могу загрузиться с NFS: не понимаю, как настроить ядро, чтобы оно знало, откуда и куда что грузить? И как пробросить порты наружу с виртуальной машины (Virtual Box + Ubuntu 16.04 LTS)?

в ядре надо разрешить nfs клиента и в строке аргументов для ядра (bootargs) прописать где и чего искать
на любом серваке поднимается nfs сервер, расшаривается ресурс с рутовой
основные грабли - это раздача прав для доступа, а так все несложно..
в гугле->"embedded linux nfs boot" или "petalinux nfs boot"
примерно так с учетом ваших реалий:
https://elinux.org/TFTP_Boot_and_NFS_Root_Filesystems
sheynmanyu
Еще вопрос. Стоит задача прошивать PL на лету (возможно, будет необходима смена прошивки без перезагрузки лиинукса). Посмотрев сюда: http://www.wiki.xilinx.com/Linux+Drivers обнаружила, что можно использовать команду
Код
cat bitstreamfile.bit >/dev/xdevcfg,

но смущает то, что драйвер not in mainline. Правильно ли я понимаю, что его в любой момент могут исключить из списка драйверов для petalinux (тогда он станет недоступным вообще)? Как тогда осуществлять прошивку? Только через fsbl?
doom13
Тогда остаётся возможность написать свой драйвер для PCAP-Bridge.
sheynmanyu
Цитата(doom13 @ Apr 10 2018, 11:30) *
Тогда остаётся возможность написать свой драйвер для PCAP-Bridge.

Загрузка через fsbl или свой драйвер - этим возможности прошивки исчерпываются? Или есть еще какая-нибудь возможность прошивки PL части?
doom13
Для загрузки FPGA используется PCAP интерфейс, мастером выступает PS, а какой код будет рулить процессом загрузки FPGA - на Ваше усмотрение, можно FSBL, а можно Linux.
sheynmanyu
Цитата(doom13 @ Apr 10 2018, 13:26) *
Для загрузки FPGA используется PCAP интерфейс, мастером выступает PS, а какой код будет рулить процессом загрузки FPGA - на Ваше усмотрение, можно FSBL, а можно Linux.

Чтобы рулил им Linux, нужно, чтобы был драйвер. Ведь так?
Я склонна воспользоваться существующими драйверами, а не писать свой (пока недостаточно знаний, чтобы написать свой не глючный драйвер, хотя через baremetal приложения я умею перепрошивать PL "на лету", не перезагружая процессор).
На страничке в вики http://www.wiki.xilinx.com/Linux+Drivers написано следующее про драйвер устройства, отвечающего за PL Programming "There are a number of drivers in the kernel tree due to history and they may work, but the following list of drivers are currently what's tested and users are encouraged to use these rather than others. Any other drivers, not in the mainline and only in the Xilinx tree, may be old and obsolete such that they could be removed at any time." Тот драйвер, который мне нужен - not in mainline.
Пока у меня Petalinux 2017.2 Tools и я могу подгрузить этот драйвер в ядро ОС. Если я перейду на Petalinux 2017.4 или выше, смогу ли я воспользоваться старыми наработками (пользовательскими программами, прошивающими плис при запущенном Linux, без перезагрузки последнего)? Как в более высоких версиях petalinux tools предполагается программировать PL?
Надеюсь, я смогла объяснить свой вопрос...
...
Ясно. New driver in drivers/fpga should replace this driver. С репозитория xilinx/linux-xlnx.
sheynmanyu
Поменяла репозиторий на linux-xlnx v4.9. Лучше бы я этого не делала... Теперь после старта загрузки ядра все виснет. U-boot доходит до разных этапов, и выдает:
CODE
reading system.dtb
13290 bytes read in 17 ms (762.7 KiB/s)
## Loading kernel from FIT Image at 10000000 ...
Using 'conf@2' configuration
Verifying Hash Integrity ... Data Start: 0x100000d4
Data Size: 3741104 Bytes = 3.6 MiB
Architecture: ARM
OS: Linux
Load Address: 0x00008000
Entry Point: 0x00008000
Hash algo: sha1
Hash value: 0b11817ed1d76eb70496295a2869a95ea2515a68
Verifying Hash Integrity ... sha1+ OK
## Flattened Device Tree blob at 11800000
Booting using the fdt blob at 0x11800000
Loading Kernel Image ... OK
Loading Device Tree to 07ff9000, end 07fff3e9 ... OK

Starting kernel ...

uddddata abort
pc : [<1ff7bd1c>] lr : [<1ff7b7a4>]
reloc pc : [<00421d1c>] lr : [<004217a4>]
sp : 1f354428 ip : 1ffa8f05 fp : 294d9016
r10: 00000000 r9 : 1f359ef0 r8 : 1f369e84
r7 : 00000000 r6 : 1ff9c788 r5 : 00000064 r4 : 1f35a228
r3 : 1ff7bd00 r2 : 1f35a228 r1 : 00000064 r0 : e8bd8010
Flags: nzCv IRQs on FIQs on Mode SVC_32

Или
CODE

reading system.dtb
13290 bytes read in 17 ms (762.7 KiB/s)
## Loading kernel from FIT Image at 10000000 ...
Using 'conf@2' configuration
Verifying Hash Integrity ... OK
Trying 'kernel@0' kernel subimage
Description: Linux Kernel
Type: Kernel Image
Compression: uncompressed
Data Start: 0x100000d4
Data Size: 3741104 Bytes = 3.6 MiB
Architecture: ARM
OS: Linux
Load Address: 0x00008000
Entry Point: 0x00008000
Hash algo: sha1
Hash value: 0b11817ed1d76eb70496295a2869a95ea2515a68
Verifying Hash Integrity ... sha1+ OK
## Flattened Device Tree blob at 11800000
Booting using the fdt blob at 0x11800000
Loading Kernel Image ... OK
Loading Device Tree to 07ff9000, end 07fff3e9 ... OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Booting Linux on physical CPU 0x0
Linux version 4.9.0-xilinx-v2017.2 (yulia@yulia-U) (gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11) ) #1 SMP PREEMPT Fri Apr 13 12:29:13 MSK 2018
CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
OF: fdt:Machine model: xlnx,zynq-7000
bootconsole [earlycon0] enabled
cma: Reserved 16 MiB at 0x1f000000
Memory policy: Data cache writealloc
percpu: Embedded 14 pages/cpu @debcb000 s25932 r8192 d23220 u57344
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048
Kernel command line: console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait
PID hash table entries: 2048 (order: 1, 8192 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Unable to handle kernel NULL pointer dereference at virtual address 00000018
pgd = c0004000
[00000018] *pgd=00000000
Internal error: Oops - BUG: 5 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 0 PID: 0 Comm: swapper Not tainted 4.9.0-xilinx-v2017.2 #1
Hardware name: Xilinx Zynq Platform
task: c0a06bc0 task.stack: c0a00000
PC is at __next_reserved_mem_region+0x10/0x70
LR is at free_all_bootmem+0xe4/0x1cc
pc : [<c01c06a0>] lr : [<c090f8f8>] psr: 600f00d3
sp : c0a01eb4 ip : 00000000 fp : 00000000
r10: 00000000 r9 : c0a53584 r8 : c0a01ee0
r7 : 00000000 r6 : 00000002 r5 : 00000000 r4 : ffffffff
r3 : 00000400 r2 : c0a01ee4 r1 : c0a01ee0 r0 : c0a01ee8
Flags: nZCv IRQs off FIQs off Mode SVC_32 ISA ARM Segment none
Control: 18c5387d Table: 0000404a DAC: 00000051
Process swapper (pid: 0, stack limit = 0xc0a00210)
Stack: (0xc0a01eb4 to 0xc0a02000)
1ea0: ffffffff ffffffff c0a0f140
1ec0: c0a01ee4 c090f8f8 c0a3b71e 00000000 0000003e c0152d24 00000000 00000000
1ee0: 00100000 00a6be97 00000002 00000000 00020000 c0a5361c fffffc00 c0a0f140
1f00: c0a06884 fffff000 c0a53584 00000000 00000000 c0905cb4 c0a03a2c 007f0000
1f20: 02080020 c0152f34 c07d827f c0a01f54 00000001 c01901b4 c07d827f c0a01f54
1f40: 00008000 0000000f 00020000 c090db70 c07d827f c07da88d 00008000 00000005
1f60: 00020000 00000000 000000c1 c07da88d 00000000 00000000 c0a03a2c 00000001
1f80: c0a03000 defffd80 c0931a30 00000000 00000000 c0911148 00000001 00000000
1fa0: c0a32800 ffffffff c0a03000 defffd80 c0931a30 00000000 00000000 c0900a68
1fc0: ffffffff ffffffff 00000000 c0900670 00000000 c0931a30 00000000 c0a32a94
1fe0: c0a03018 c0931a2c c0a07db8 0000406a 413fc090 0000807c 00000000 00000000
[<c01c06a0>] (__next_reserved_mem_region) from [<c090f8f8>] (free_all_bootmem+0xe4/0x1cc)
[<c090f8f8>] (free_all_bootmem) from [<c0905cb4>] (mem_init+0x64/0x3e4)
[<c0905cb4>] (mem_init) from [<c0900a68>] (start_kernel+0x1ac/0x358)
[<c0900a68>] (start_kernel) from [<0000807c>] (0x807c)
Code: e59fc064 e92d40f0 e3a05000 e1c060d0 (e59c4018)
---[ end trace 0000000000000000 ]---
Kernel panic - not syncing: Attempted to kill the idle task!
---[ end Kernel panic - not syncing: Attempted to kill the idle task!

Подскажите, плиз, что с ним и куда копать, чтобы все-таки все загрузилось?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.