我们的团队开发了一个基于 IMX8QXP Mek 的定制板,但使用 C0 硅 (MIMX8QX6AVLFZAC)。我们使用相同的 PMIC 和 SD 卡、eMMC 内存连接等,但 RAM 量增加(4GB:美光 MT53D1024M32D4DT-053)。
收到电路板后,一切看起来都很好,电压正常等。为了快速测试,我尝试为 MEK 运行基于 Yocto 的映像(为 IMX8QXPC0 mek 构建)。不幸的是,在“启动内核”之后不久,引导过程重新启动。
然后我们决定移植 SCFW(移植套件 1.7.0)以支持 4GB 的 RAM。此外,我们添加了 imx-seco 版本 3.7.5 以支持新芯片(SCU 调试监视器抱怨使用旧版本 3.7.1)。这样做后,我们在完全相同的时间收到了完全相同的行为。在此基础上,我们制作了一个干净的 u-boot 和内核设备树,基本上只支持 uart0 用于控制台目的,再次 - 同时得到相同的结果。这是我们的启动日志:
U-Boot 2020.04-5.4.47-2.2.0+ga02bdde0 (Apr 09 2021 - 13:23:18 +0000)
CPU: NXP i.MX8QXP RevC A35 at 1200 MHz at 35C
Model: NXP i.MX8QXP TEST
Board: iMX8QXP TEST
BuildInfo:
- SCFW 0d54291f, SECO-FW 640b5efb, IMX-MKIMAGE 8da5cd23, ATF c949a88
- U-Boot 2020.04-5.4.47-2.2.0+ga02bdde0
Boot: SD1
DRAM: 4 GiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... Run CMD11 1.8V switch
*** Warning - bad CRC, using default environment
Fail to setup video link
In: serial
Out: serial
Err: serial
Run CMD11 1.8V switch
switch to partitions #0, OK
mmc1 is current device
flash target is MMC:1
Run CMD11 1.8V switch
Net: No ethernet found.
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot: 0
Run CMD11 1.8V switch
switch to partitions #0, OK
mmc1 is current device
Run CMD11 1.8V switch
27941376 bytes read in 353 ms (75.5 MiB/s)
Booting from mmc ...
84591 bytes read in 14 ms (5.8 MiB/s)
## Flattened Device Tree blob at 83000000
Booting using the fdt blob at 0x83000000
Using Device Tree in place at 0000000083000000, end 0000000083017a6e
Disable clock-controller@5a4d0000 rsrc 62 not owned
Disable clock-controller@5ac90000 rsrc 102 not owned
Disable clock-controller@5b260000 rsrc 253 not owned
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd042]
[ 0.000000] Linux version 5.4.47-2.2.0+g276151221 (oe-user@oe-host) (gcc ver1
[ 0.000000] Machine model: i.MX8QXP TEST
[ 0.000000] efi: Getting EFI parameters from FDT:
[ 0.000000] efi: UEFI not found.
[ 0.000000] Reserved memory: created CMA memory pool at 0x0000000096000000, B
[ 0.000000] OF: reserved mem: initialized node linux,cma, compatible id sharl
[ 0.000000] Reserved memory: created DMA memory pool at 0x0000000090000000, B
[ 0.000000] OF: reserved mem: initialized node vdev0vring0@90000000, compatil
[ 0.000000] Reserved memory: created DMA memory pool at 0x0000000090008000, B
[ 0.000000] OF: reserved mem: initialized node vdev0vring1@90008000, compatil
[ 0.000000] Reserved memory: created DMA memory pool at 0x0000000090010000, B
[ 0.000000] OF: reserved mem: initialized node vdev1vring0@90010000, compatil
[ 0.000000] Reserved memory: created DMA memory pool at 0x0000000090018000, B
[ 0.000000] OF: reserved mem: initialized node vdev1vring1@90018000, compatil
[ 0.000000] Reserved memory: created DMA memory pool at 0x0000000090400000, B
[ 0.000000] OF: reserved mem: initialized node vdevbuffer, compatible id shal
[ 0.000000] earlycon: lpuart32 at MMIO 0x000000005a060000 (options '')
[ 0.000000] printk: bootconsole [lpuart32] enabled
[ 0.000000] NUMA: No NUMA configuration found
[ 0.000000] NUMA: Faking a node at [mem 0x0000000080200000-0x00000008fffffff]
[ 0.000000] NUMA: NODE_DATA [mem 0x8ff807500-0x8ff808fff]
[ 0.000000] Zone ranges:
[ 0.000000] DMA32 [mem 0x0000000080200000-0x00000000ffffffff]
[ 0.000000] Normal [mem 0x0000000100000000-0x00000008ffffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000080200000-0x0000000083ffffff]
[ 0.000000] node 0: [mem 0x0000000086200000-0x0000000087ffffff]
[ 0.000000] node 0: [mem 0x0000000090020000-0x00000000901fffff]
[ 0.000000] node 0: [mem 0x0000000090500000-0x0000000091ffffff]
[ 0.000000] node 0: [mem 0x0000000094c00000-0x00000000ffffffff]
[ 0.000000] node 0: [mem 0x0000000880000000-0x00000008ffffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000008ffffffff]
[ 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.1
[ 0.000000] percpu: Embedded 24 pages/cpu s58904 r8192 d31208 u98304
[ 0.000000] Detected VIPT I-cache on CPU0
[ 0.000000] CPU features: detected: GIC system register CPU interface
[ 0.000000] Speculative Store Bypass Disable mitigation not required
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 978988
[ 0.000000] Policy zone: Normal
[ 0.000000] Kernel command line: console=ttyLP0,115200 earlycon root=/dev/mmw
[ 0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 byte)
[ 0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes,)
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] software IO TLB: mapped [mem 0xfbfff000-0xfffff000] (64MB)
[ 0.000000] Memory: 2820512K/3978112K available (16508K kernel code, 1238K r)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.000000] rcu: Preemptible hierarchical RCU implementation.
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4.
[ 0.000000] Tasks RCU enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 ji.
[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[ 0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[ 0.000000] GICv3: 512 SPIs implemented
[ 0.000000] GICv3: 0 Extended SPIs implemented
[ 0.000000] GICv3: Distributor has no Range Selector support
[ 0.000000] GICv3: 16 PPIs implemented
[ 0.000000] GICv3: no VLPI support, no direct LPI support
[ 0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000051b00000
[ 0.000000] random: get_random_bytes called from start_kernel+0x2b8/0x44c wi0
[ 0.000000] arch_timer: cp15 timer(s) running at 8.00MHz (phys).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycless
[ 0.000004] sched_clock: 56 bits at 8MHz, resolution 125ns, wraps every 2199s
[ 0.008779] Console: colour dummy device 80x25
[ 0.012968] Calibrating delay loop (skipped), value calculated using timer f)
[ 0.023134] pid_max: default: 32768 minimum: 301
[ 0.027827] LSM: Security Framework initializing
[ 0.032408] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes, lin)
[ 0.039738] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes)
[ 0.071642] ASID allocator initialised with 32768 entries
[ 0.084738] rcu: Hierarchical SRCU implementation.
[ 0.099245] EFI services will not be available.
[ 0.111476] smp: Bringing up secondary CPUs ...
[ 0.148074] Detected VIPT I-cache on CPU1
[ 0.148105] GICv3: CPU1: found redistributor 1 region 0:0x0000000051b20000
[ 0.148143] CPU1: Booted secondary processor 0x0000000001 [0x410fd042]
[ 0.180118] Detected VIPT I-cache on CPU2
[ 0.180139] GICv3: CPU2: found redistributor 2 region 0:0x0000000051b40000
[ 0.180162] CPU2: Booted secondary processor 0x0000000002 [0x410fd042]
[ 0.212186] Detected VIPT I-cache on CPU3
[ 0.212205] GICv3: CPU3: found redistributor 3 region 0:0x0000000051b60000
[ 0.212225] CPU3: Booted secondary processor 0x0000000003 [0x410fd042]
[ 0.212294] smp: Brought up 1 node, 4 CPUs
[ 0.268189] SMP: Total of 4 processors activated.
[ 0.272877] CPU features: detected: 32-bit EL0 Support
[ 0.278011] CPU features: detected: CRC32 instructions
[ 0.290138] CPU: All CPU(s) started at EL2
[ 0.293933] alternatives: patching kernel code
[ 0.299588] devtmpfs: initialized
[ 0.316780] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, ms
[ 0.326201] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[ 0.364934] pinctrl core: initialized pinctrl subsystem
[ 0.370871] DMI not present or invalid.
[ 0.374691] NET: Registered protocol family 16
[ 0.387399] DMA: preallocated 256 KiB pool for atomic allocations
[ 0.393190] audit: initializing netlink subsys (disabled)
[ 0.398822] audit: type=2000 audit(0.340:1): state=initialized audit_enabled1
[ 0.406594] cpuidle: using governor menu
[ 0.411115] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[ 0.419322] Serial: AMBA PL011 UART driver
[ 0.423158] imx mu driver is registered.
[ 0.427000] imx rpmsg driver is registered.
[ 0.480255] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[ 0.486633] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[ 0.493309] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[ 0.499998] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[ 0.507734] cryptd: max_cpu_qlen set to 1000
[ 0.515899] ACPI: Interpreter disabled.
[ 0.520828] iommu: Default domain type: Translated
[ 0.525570] vgaarb: loaded
[ 0.528462] SCSI subsystem initialized
[ 0.532293] usbcore: registered new interface driver usbfs
[ 0.537499] usbcore: registered new interface driver hub
[ 0.542804] usbcore: registered new device driver usb
[ 0.549420] mc: Linux media interface: v0.10
[ 0.553565] videodev: Linux video capture interface: v2.00
[ 0.558907] pps_core: LinuxPPS API ver. 1 registered
[ 0.563773] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giom>
[ 0.572906] PTP clock support registered
[ 0.577106] EDAC MC: Ver: 3.0.0
[ 0.581345] No BMan portals available!
[ 0.585128] QMan: Allocated lookup table at (____ptrval____), entry count 657
[ 0.592729] No QMan portals available!
[ 0.597067] No USDPAA memory, no 'fsl,usdpaa-mem' in device-tree
[ 0.603541] FPGA manager framework
[ 0.606701] Advanced Linux Sound Architecture Driver Initialized.
[ 0.613215] Bluetooth: Core ver 2.22
[ 0.616474] NET: Registered protocol family 31
[ 0.620890] Bluetooth: HCI device and connection manager initialized
[ 0.627230] Bluetooth: HCI socket layer initialized
[ 0.632094] Bluetooth: L2CAP socket layer initialized
[ 0.637141] Bluetooth: SCO socket layer initialized
[ 0.643070] imx-scu scu: NXP i.MX SCU Initialized
[ 0.653174] random: fast init done
无论我们将什么系统放到板上(使用 SD 卡),启动过程都会上升到“随机:快速初始化完成”行,然后执行重置。
我们正在使用带有 Zeus 分支的 Yocto 项目的 imx 层(由于 Gatesgarth 层和 Dunfell 尚不支持某些外部层依赖关系,因此无法使用最新的层)。
有没有人遇到过类似的问题并可以帮助我们?我们如何调试这个问题,可能是一些内核配置导致它?我们使用的是未修改的 imx_v8_defconfig。此外,我们从构建环境中移除了 optee。
提前致谢。BR
编辑
我们发现处理器正在断言 SCU_WDOG_OUT 引脚。这可能是什么原因?这是我们应该调查固件的严格硬件问题吗?
编辑2
在一些电路板修改后,我们成功地运行了 DDR 测试。此外,我们还从 NXP 网站下载了 imx8qxpc0mek 的图像。这个镜像是旧的并且基于内核 4.14。有了这张图片,我们收到了更多的日志......和内核恐慌:
[ 3.041980] Unable to handle kernel paging request at virtual address fffffffffffffff8
[ 3.049908] Mem abort info:
[ 3.052706] Exception class = DABT (current EL), IL = 32 bits
[ 3.058629] SET = 0, FnV = 0
[ 3.061678] EA = 0, S1PTW = 0
[ 3.064813] Data abort info:
[ 3.067690] ISV = 0, ISS = 0x00000004
[ 3.071521] CM = 0, WnR = 0
[ 3.074487] swapper pgtable: 4k pages, 48-bit VAs, pgd = ffff00000973c000
[ 3.081278] [fffffffffffffff8] *pgd=0000000000000000
[ 3.086249] Internal error: Oops: 96000004 [#1] PREEMPT SMP
[ 3.091824] Modules linked in:
[ 3.094888] CPU: 3 PID: 1560 Comm: kworker/3:2 Not tainted 4.14.98-2.3.0+g0f549d8c4d5e #1
[ 3.103066] Hardware name: Freescale i.MX8QXP MEK (DT)
[ 3.108222] Workqueue: events deferred_probe_work_func
[ 3.113360] task: ffff80083af86c00 task.stack: ffff00000df48000
[ 3.119282] PC is at plist_add+0x60/0xd8
[ 3.123209] LR is at pm_qos_update_target+0x164/0x220
[ 3.128261] pc : [<ffff000008db61a8>] lr : [<ffff000008114b84>] pstate: 200000c5
[ 3.135660] sp : ffff00000df4bb10
[ 3.138969] x29: ffff00000df4bb10 x28: 0000000000000000
[ 3.144286] x27: 0000000000000000 x26: 0000000fffffffe0
[ 3.149602] x25: 0000000000000040 x24: 0000000000000000
[ 3.154919] x23: 0000000000000000 x22: ffff0000096d8000
[ 3.160236] x21: 0000000000000000 x20: ffff80083ba04e88
[ 3.165553] x19: ffff000009542c80 x18: 0000000000000000
[ 3.170870] x17: ffff80083b9d9c18 x16: ffff80083b9d9c18
[ 3.176186] x15: ffffffffffffffff x14: ffff80083b96791c
[ 3.181503] x13: 0000000000000000 x12: 0000000000000030
[ 3.186820] x11: 0101010101010101 x10: 7f7f7f7f7f7f7f7f
[ 3.192137] x9 : 716e6573606b6f2e x8 : ffff80083ba04e90
[ 3.197453] x7 : ffff80083ba04ea0 x6 : ffff000009542c80
[ 3.202770] x5 : ffff80083ade4e88 x4 : 0000000000000000
[ 3.208087] x3 : ffff80083ade4e88 x2 : fffffffffffffff8
[ 3.213404] x1 : fffffffffffffff8 x0 : ffff80083ba04e88
[ 3.218724] Process kworker/3:2 (pid: 1560, stack limit = 0xffff00000df48000)
[ 3.225864] Call trace:
[ 3.228316] Exception stack(0xffff00000df4b9d0 to 0xffff00000df4bb10)
[ 3.234762] b9c0: ffff80083ba04e88 fffffffffffffff8
[ 3.242598] b9e0: fffffffffffffff8 ffff80083ade4e88 0000000000000000 ffff80083ade4e88
[ 3.250434] ba00: ffff000009542c80 ffff80083ba04ea0 ffff80083ba04e90 716e6573606b6f2e
[ 3.258270] ba20: 7f7f7f7f7f7f7f7f 0101010101010101 0000000000000030 0000000000000000
[ 3.266108] ba40: ffff80083b96791c ffffffffffffffff ffff80083b9d9c18 ffff80083b9d9c18
[ 3.273942] ba60: 0000000000000000 ffff000009542c80 ffff80083ba04e88 0000000000000000
[ 3.281780] ba80: ffff0000096d8000 0000000000000000 0000000000000000 0000000000000040
[ 3.289614] baa0: 0000000fffffffe0 0000000000000000 0000000000000000 ffff00000df4bb10
[ 3.297451] bac0: ffff000008114b84 ffff00000df4bb10 ffff000008db61a8 00000000200000c5
[ 3.305286] bae0: 0000000000000000 0000000000000000 ffffffffffffffff ffff8008383f7a80
[ 3.313121] bb00: ffff00000df4bb10 ffff000008db61a8
[ 3.318006] [<ffff000008db61a8>] plist_add+0x60/0xd8
[ 3.322974] [<ffff000008114cd0>] pm_qos_add_request+0x90/0xb8
[ 3.328729] [<ffff000008b082a4>] tcpm_register_port+0x3f4/0x4e0
[ 3.334651] [<ffff000008b092a0>] tcpci_probe+0x208/0x608
[ 3.339970] [<ffff0000089894ec>] i2c_device_probe+0x304/0x328
[ 3.345717] [<ffff0000086df4b8>] driver_probe_device+0x210/0x2d0
[ 3.351729] [<ffff0000086df6d4>] __device_attach_driver+0x9c/0xf8
[ 3.357829] [<ffff0000086dd6d4>] bus_for_each_drv+0x4c/0x98
[ 3.363405] [<ffff0000086df178>] __device_attach+0xc0/0x138
[ 3.368982] [<ffff0000086df790>] device_initial_probe+0x10/0x18
[ 3.374909] [<ffff0000086de634>] bus_probe_device+0x94/0xa0
[ 3.380484] [<ffff0000086deae8>] deferred_probe_work_func+0xa0/0x148
[ 3.386848] [<ffff0000080e7564>] process_one_work+0x1d4/0x348
[ 3.392597] [<ffff0000080e791c>] worker_thread+0x244/0x470
[ 3.398089] [<ffff0000080eda24>] kthread+0x12c/0x130
[ 3.403058] [<ffff000008084ed8>] ret_from_fork+0x10/0x18
[ 3.408377] Code: d1002021 eb03003f 54000100 aa0103e2 (b9400041)
[ 3.414472] ---[ end trace cc1efc4670b6fd92 ]---
[ 3.419121] note: kworker/3:2[1560] exited with preempt_count 1
看门狗根本没有被触发,几分钟后出现了:
[ 289.222430] random: crng init done
也没有看门狗触发器。有谁知道我们应该在哪里看?
编辑 3
有趣的事实 - 我们已经设法使用 IMX sumo BSP 启动 linux,与我们在新版本中所做的更改完全相同......这意味着内核 5.4 和 5.10 不知何故与 imx8qxpc0 不兼容。