Проблема сброса IMX8QXPC0 во время загрузки

#linux #linux-kernel #yocto #u-boot #imx8

Вопрос:

Наша команда разработала пользовательскую плату на основе IMX8QXP Mek, но с кремнием C0 (MIMX8QX6AVLFZAC). Мы используем те же карты PMIC и SD, подключения к памяти eMMC и т. Д., Но с увеличенным объемом оперативной памяти (4 ГБ: Micron MT53D1024M32D4DT-053).

При получении платы все выглядело нормально, напряжение в порядке и т.д. Для быстрого теста я попытался запустить наш образ на основе Yocto для MEK (созданный для IMX8QXPC0 mek). К сожалению, вскоре после «Запуска ядра» процесс загрузки перезагружается.

Затем мы решили перенести SCFW (комплект для переноса 1.7.0) для поддержки 4 ГБ оперативной памяти . Кроме того, мы добавили 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-карты), процесс загрузки переходит в строку «случайный: быстрый ввод выполнен», а затем выполняется сброс.

Мы используем слои imx для проекта Yocto с ветвью Zeus (не можем использовать последнюю версию из-за некоторых зависимостей внешних слоев, которые еще не поддерживаются ни Gatesgarth layer, ни Dunfell).

Have anyone encountered a similar issue and could help us out ? How can We debug the issue, could it be perhaps some kernel config that is causing it ? We are using not modified imx_v8_defconfig. In addition we have removd optee from our build environment.

Thanks in advance.
BR

EDIT

We have figured out that processor is asserting SCU_WDOG_OUT pin. What could be the possible cause of this ? Is this strictly hardware issue of should we investigate firmware?

EDIT2

We have managed to run DDR test with success upon some board modifications. In addition we have downlaoded image for imx8qxpc0mek from NXP website. This image was old and based on kernel 4.14. With this image we’ve received more logs… and kernel panic:

 [    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

Интересный факт — нам удалось загрузить linux с помощью IMX sumo BSP, с точно такими же изменениями, которые мы вносили в более новые версии… Это означает, что каким-то образом ядра 5.4 и 5.10 несовместимы с imx8qxpc0.

Комментарии:

1. В системах, с которыми я работал, после random: fast init done этого начинается mmc соответствующая инициализация, т. Е. Проверка файловых систем и подключение root. Внесли ли вы какие-либо изменения в дерево устройств для записи оперативной памяти после для вашей пользовательской платы?

2. Привет, оперативная память была портирована с помощью SCFW и новейшего инструмента RPA NXP. Нам удалось наладить работу только с ядром 4.14 (выпуск NXP BSP sumo).