A53でカーネルを起動できません(デバイスツリー?)

A53でカーネルを起動できません(デバイスツリー?)

A53 CPU(xilinxのZU5内部)からLinuxカーネルを起動しようとしています。 2つの難しいことがあります。 1つ目はZU5を使用したカスタムPCBです。 2番目はzu9egを含むZCU102 SDKです。

起動ログは次のとおりです。

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.15.19 (build_station) (aarch64-buildroot-linux-gnu-gcc.br_real (B3
[    0.000000] Machine model: ZynqMP
[    0.000000] earlycon: cdns0 at MMIO 0x00000000ff000000 (options '115200n8')
[    0.000000] printk: bootconsole [cdns0] enabled
[    0.000000] efi: UEFI not found.
[    0.000000] OF: fdt: Invalid device tree blob header
[    0.000000] Zone ranges:
[    0.000000]   DMA32    [mem 0x0000000000000000-0x00000000ffffffff]
[    0.000000]   Normal   [mem 0x0000000100000000-0x000000087fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000007fefffff]
[    0.000000]   node   0: [mem 0x0000000800000000-0x000000087fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000087fffffff]
[    0.000000] On node 0, zone Normal: 256 pages in unavailable ranges
[    0.000000] cma: Reserved 256 MiB at 0x000000006fc00000
[    0.000000] Failed to find device node for boot cpu
[    0.000000] missing boot CPU MPIDR, not enabling secondaries
[    0.000000] percpu: Embedded 17 pages/cpu s32600 r8192 d28840 u69632
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: ARM erratum 845719
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 1033987
[    0.000000] Kernel command line: earlycon clk_ignore_unused
[    0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
[    0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] software IO TLB: mapped [mem 0x000000006bc00000-0x000000006fc00000] (64MB)
[    0.000000] Memory: 3779764K/4193280K available (8448K kernel code, 692K rwdata, 2232K rodata, 1472K)
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=1.
[    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=1
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] random: get_random_bytes called from start_kernel+0x3f0/0x5fc with crng_init=0
[    0.000000] timer_probe: no matching timers found
[    0.000000] Kernel panic - not syncing: Unable to initialise architected timer.
[    0.000000] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.15.19 #7
[    0.000000] Hardware name: ZynqMP SL300 (DT)
[    0.000000] Call trace:
[    0.000000]  dump_backtrace+0x0/0x190
[    0.000000]  show_stack+0x18/0x30
[    0.000000]  dump_stack_lvl+0x7c/0xa0
[    0.000000]  dump_stack+0x18/0x34
[    0.000000]  panic+0x14c/0x2f8
[    0.000000]  time_init+0x30/0x4c
[    0.000000]  start_kernel+0x4fc/0x5fc
[    0.000000]  __primary_switched+0xa4/0xac
[    0.000000] ---[ end Kernel panic - not syncing: Unable to initialise architected timer. ]---

2番目の難しさ:

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.15.19 (build_station) (aarch64-buildroot-linux-gnu-gcc.br_real (Buildroot 2022.11-rc3-13-g43899226b2) 11.3.0, GNU ld (GNU Binutils) 2.38) #2 SMP Fri Dec 2 12:32:23 2
[    0.000000] Machine model: ZynqMP
[    0.000000] efi: UEFI not found.
[    0.000000] Zone ranges:
[    0.000000]   DMA32    [mem 0x0000000000000000-0x00000000ffffffff]
[    0.000000]   Normal   [mem 0x0000000100000000-0x000000087fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000007fefffff]
[    0.000000]   node   0: [mem 0x0000000800000000-0x000000087fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000087fffffff]
[    0.000000] On node 0, zone Normal: 256 pages in unavailable ranges
[    0.000000] cma: Reserved 256 MiB at 0x000000006b800000
[    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.2
[    0.000000] percpu: Embedded 18 pages/cpu s34456 r8192 d31080 u73728
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: ARM erratum 845719
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 1033987
[    0.000000] Kernel command line: console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootwait
[    0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
[    0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] software IO TLB: mapped [mem 0x000000007bf00000-0x000000007ff00000] (64MB)
[    0.000000] Memory: 3771452K/4193280K available (13952K kernel code, 912K rwdata, 3908K rodata, 2048K init, 336K bss, 159684K 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=4 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

2番目のハードドライブからLinuxが起動し、同じデバイスツリーを使用できます。違いがわかります。最初のハードコアにはpsci検出機能はありません。

これがハードウェアの問題かもしれないかどうか知りたいです。

カーネルコマンドライン:earlycon clk_ignore_unusedデバイスMachine model: ZynqMPツリーから。それでは、デバイスツリーを読んだと思いますか?

助けてくれてありがとう

編集:追加ログInvalid device tree blob header

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.15.19 (test@build-station) (aarch64-buildroot-linux-gnu-gcc.br_real (Buildroot 2022.11-rc3-13-g43899226b2) 11.3.0, GNU ld (GNU Binutils) 2.38) #12 SMP Mon Sep 11 12:45:03
[    0.000000] OF: fdt: dt_root_size_cells = 2
[    0.000000] OF: fdt: dt_root_addr_cells = 2
[    0.000000] OF: fdt: search "chosen", depth: 0, uname: 
[    0.000000] OF: fdt: search "chosen", depth: 1, uname: cpus
[    0.000000] OF: fdt: search "chosen", depth: 2, uname: cpu@0
[    0.000000] OF: fdt: search "chosen", depth: 2, uname: cpu@1
[    0.000000] OF: fdt: search "chosen", depth: 2, uname: idle-states
[    0.000000] OF: fdt: search "chosen", depth: 3, uname: cpu-sleep-0
[    0.000000] OF: fdt: search "chosen", depth: 1, uname: cpu-opp-table
[    0.000000] OF: fdt: search "chosen", depth: 2, uname: opp00
[    0.000000] OF: fdt: search "chosen", depth: 2, uname: opp01
[    0.000000] OF: fdt: search "chosen", depth: 2, uname: opp02
[    0.000000] OF: fdt: search "chosen", depth: 2, uname: opp03
[    0.000000] OF: fdt: search "chosen", depth: 1, uname: zynqmp_ipi
[    0.000000] OF: fdt: search "chosen", depth: 2, uname: mailbox@ff990400
[    0.000000] OF: fdt: search "chosen", depth: 1, uname: dcc
[    0.000000] OF: fdt: search "chosen", depth: 1, uname: pmu
[    0.000000] OF: fdt: search "chosen", depth: 1, uname: psci
[    0.000000] OF: fdt: search "chosen", depth: 1, uname: firmware
[    0.000000] OF: fdt: search "chosen", depth: 2, uname: zynqmp-firmware
[    0.000000] OF: fdt: search "chosen", depth: 3, uname: pcap
[    0.000000] OF: fdt: search "chosen", depth: 3, uname: zynqmp-power
[    0.000000] OF: fdt: search "chosen", depth: 3, uname: reset-controller
[    0.000000] OF: fdt: search "chosen", depth: 3, uname: pinctrl
[    0.000000] OF: fdt: search "chosen", depth: 3, uname: clock-controller
...
[    0.000000] OF: fdt: search "chosen", depth: 1, uname: aux_ref_clk
[    0.000000] OF: fdt: search "chosen", depth: 1, uname: dp_aclk
[    0.000000] OF: fdt: search "chosen", depth: 1, uname: amba_pl@0
[    0.000000] OF: fdt: search "chosen", depth: 2, uname: axi_bram_ctrl@a0000000
[    0.000000] OF: fdt: search "chosen", depth: 2, uname: dma@80000000
[    0.000000] OF: fdt: search "chosen", depth: 3, uname: dma-channel@80000000
[    0.000000] OF: fdt: search "chosen", depth: 3, uname: dma-channel@80000030
[    0.000000] OF: fdt: search "chosen", depth: 2, uname: puls4ic_sl300@80010000
[    0.000000] OF: fdt: search "chosen", depth: 2, uname: system_management_wiz@80020000
[    0.000000] OF: fdt: search "chosen", depth: 1, uname: chosen
[    0.000000] OF: fdt: Command line is: earlycon clk_ignore_unused loglevel=8
[    0.000000] OF: fdt: memory scan node memory, reg size 32,
[    0.000000] OF: fdt:  - 0, 7ff00000
[    0.000000] OF: fdt:  - 800000000, 80000000
[    0.000000] OF: fdt: Looking for usable-memory-range property... 
[    0.000000] Machine model: ZynqMP SL300
[    0.000000] earlycon: cdns0 at MMIO 0x00000000ff000000 (options '115200n8')
[    0.000000] printk: bootconsole [cdns0] enabled
[    0.000000] efi: UEFI not found.
[    0.000000] OF: fdt:  -> unflatten_device_tree()
[    0.000000] OF: fdt: Unflattening device tree:
[    0.000000] OF: fdt: magic: 07074021
[    0.000000] OF: fdt: size: 00006800
[    0.000000] OF: fdt: version: 00006800
[    0.000000] OF: fdt: Invalid device tree blob header : -9

マジックナンバーは0xD00DFEEDでなければなりませんが、0x07074021はありますか?私のuboot起動コマンド:

fatload mmc 0:1 $kernel_addr_r Image.gz
fatload mmc 0:1 $fdt_addr_r system.dtb
booti $kernel_addr_r - $fdt_addr_r

答え1

解決しました。 RAM構成の問題です。

デバイスツリーのメモリセクションを4 GBの代わりに2 GBに設定しましたが、これで動作します。 2GBがあります。これは誤った計算です。

関連情報