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

Petalinux и custom harware с zynq7000

Здравствуйте!

Собираю 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!

Изменено пользователем sheynmanyu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Было похожее, оказалось, что проблемы с памятью DDR, причем baremetal-тест памяти отрабатывал без ошибок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Было похожее, оказалось, что проблемы с памятью DDR, причем baremetal-тест памяти отрабатывал без ошибок.

А как отловили, если не секрет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Снижение скорости 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 <[email protected]>
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

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

Изменено пользователем sheynmanyu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пробовала менять в 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..

Изменено пользователем Jury093

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так поищите, откуда ядро берет вот эти параметры:

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/

Изменено пользователем sheynmanyu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Потыркалась по настройкам. Причем именно потыркалась. Проблему решила, но понимания не наступило.

Решила вот так (пересоздала проект):

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

 

Kernel Bootargs -> generate bootargs automatically

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

возможно система берет настройки для первой строки с некоего шаблона - запустите поиск строки по дереву исходников, тогда будете знать, где дописывать аргументы для системы

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

 

как пробная версия для поиска - измените что-нить в своем dts, запустите сборку проекта и посмотрите в логах, что есть по dts/dtb, если там нет и в терминале нет, то проверьте содержимое /media/yulia/rootfs/ на предмет своих модификаций

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

cat /proc/cmdline

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

успехов в борьбе с линуксом и ядром!

 

ЗЫ капли инфы есть в гугле "petalinux bootargs" и подобные запросы..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В моем случае, Ethernet сеть медленно отвечала. Попогло подключение к отдельному роутеру.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В моем случае, Ethernet сеть медленно отвечала. Попогло подключение к отдельному роутеру.

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

Изменено пользователем sheynmanyu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо! Проблема загрузки решена: я неверно настроила параметры микросхемы памяти. Сейчас все грузится и не вылетает. Правда, теперь не могу загрузиться с 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

Изменено пользователем Jury093

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще вопрос. Стоит задача прошивать PL на лету (возможно, будет необходима смена прошивки без перезагрузки лиинукса). Посмотрев сюда: http://www.wiki.xilinx.com/Linux+Drivers обнаружила, что можно использовать команду

 cat bitstreamfile.bit >/dev/xdevcfg,

но смущает то, что драйвер not in mainline. Правильно ли я понимаю, что его в любой момент могут исключить из списка драйверов для petalinux (тогда он станет недоступным вообще)? Как тогда осуществлять прошивку? Только через fsbl?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...