我正在尝试在 A53 cpu(位于 xilinx 的 ZU5 内)上启动 Linux 内核。我有两个硬的第一个是带有 ZU5 的定制 PCB。第二个是带有 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. ]---
第二难:
[ 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
在第二个硬盘上,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 配置问题。
我将设备树中的内存部分更改为设置 2GB(而不是 4GB),现在它可以工作了。我有2GB。这是一个糟糕的计算。