主题中讨论的其他器件:TPS51200
大家好、
第一次在论坛上发帖、我将尽最大努力让这篇文章成为一篇很好的文章。
我们已经使用 TI AM335x-ICEV2板一段时间来开发我们的嵌入式 Linux 应用和我们
我们自己的定制电路板设计。 经过大量的调试和读取、我们能够正确加载 U-Boot、然后再加载
我们继续使用非常基本的 FDT 加载内核。
器件: AM3359BZCZ
存储器: MT41J128M16JT
我们在尝试加载文件系统时遇到问题。 我们尝试加载 Arago 和 Debian (两者都在 ICEV2板上工作)
我们开始遇到奇怪的问题。 最经常发生的是在使用 Debian 时在系统初始化脚本(生成器)中重复使用 SEGV
一个简单的"被捕获" ,将核心转储为 pid 65。 冻结执行。" 从 TI Linux SDK 07.03.00.005中提供的基本文件系统加载 Arago 时。
我们遵循完整的板端口(https://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/How_to_Guides_Board_Port.html)序列。
第一个理论是、FDT (.dTB)可能缺少关键组件、但即使在 ICEV2板上、我也可以将 AM335x-icev2.DTS 简化为简单的
UART + MMC 初始化和分发仍可以立即运行。 我离 Linux 专家还很远、因此必须深入了解 U-Boot +内核
但是、使用分发和 systemd、我已经达到了一点、我不知道接下来要做什么。
从类似的帖子(https://e2e.ti.com/support/processors-group/processors/f/processors-forum/316533/linux-boot-freezing-on-custom-board)中、我怀疑存在硬件问题
尽管我确实验证了 PMIC 是否提供了正确的电压、即使我们没有主动控制它。
这可能是 DDR3问题吗? 我是否可以运行任何测试来验证 DDR3的完整性和耐用性? 它运行 SPL + Uboot +内核时不会出现任何问题、因此我的理解是这样
DDR3运行正常。 (甚至可以通过 JTAG 和 CCS 读取/写入整个地址范围)。
这是我的内核引导+ Distro 引导的日志。
Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 5.4.106-g023faefa70 (oe-user@oe-host) (gcc version 9.2.1 20191025 (GNU T oolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))) #1 PREEMPT Mon May 24 09:04:10 UTC 2 021 [ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] OF: fdt: Machine model: AM335x HELLO [ 0.000000] Memory policy: Data cache writeback [ 0.000000] efi: Getting EFI parameters from FDT: [ 0.000000] efi: UEFI not found. [ 0.000000] cma: Reserved 48 MiB at 0x8a800000 [ 0.000000] CPU: All CPU(s) started in SVC mode. [ 0.000000] AM335X ES2.1 (sgx neon) [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 64706 [ 0.000000] Kernel command line: console=ttyO1,115200n8 root=PARTUUID=d869d71e-01 rw rootfstype=ex t4 rootwait [ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes, linear) [ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes, linear) [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] Memory: 194208K/261120K available (9216K kernel code, 295K rwdata, 3092K rodata, 1024K init, 254K bss, 17760K reserved, 49152K cma-reserved, 0K highmem) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] rcu: Preemptible hierarchical RCU implementation. [ 0.000000] Tasks RCU enabled. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 [ 0.000000] IRQ: Found an INTC at 0x(ptrval) (revision 5.0) with 128 interrupts [ 0.000000] random: get_random_bytes called from start_kernel+0x2b4/0x470 with crng_init=0 [ 0.000000] OMAP clockevent source: timer2 at 24000000 Hz [ 0.000020] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns [ 0.000047] clocksource: timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns [ 0.000060] OMAP clocksource: timer1 at 24000000 Hz [ 0.000378] timer_probe: no matching timers found [ 0.000606] Console: colour dummy device 80x30 [ 0.000647] WARNING: Your 'console=ttyO1' has been replaced by 'ttyS1' [ 0.000655] This ensures that you still see kernel messages. Please [ 0.000661] update your kernel commandline. [ 0.000719] Calibrating delay loop... 597.60 BogoMIPS (lpj=2988032) [ 0.058759] pid_max: default: 32768 minimum: 301 [ 0.059056] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.059076] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.060207] CPU: Testing write buffer coherency: ok [ 0.060288] CPU0: Spectre v2: using BPIALL workaround [ 0.061334] Setting up static identity map for 0x80100000 - 0x80100060 [ 0.061527] rcu: Hierarchical SRCU implementation. [ 0.061634] EFI services will not be available. [ 0.062091] devtmpfs: initialized [ 0.075689] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3 [ 0.076187] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446 2750000 ns [ 0.076219] futex hash table entries: 256 (order: -1, 3072 bytes, linear) [ 0.081151] pinctrl core: initialized pinctrl subsystem [ 0.082137] DMI not present or invalid. [ 0.082723] NET: Registered protocol family 16 [ 0.085759] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.114183] l3-aon-clkctrl:0000:0: failed to disable [ 0.116761] cpuidle: using governor ladder [ 0.116807] cpuidle: using governor menu [ 0.139831] No ATAGs? [ 0.139845] hw-breakpoint: debug architecture 0x4 unsupported. [ 0.161882] debugfs: Directory '49000000.edma' with parent 'dmaengine' already present! [ 0.161926] edma 49000000.edma: TI EDMA DMA engine driver [ 0.164737] iommu: Default domain type: Translated [ 0.167500] SCSI subsystem initialized [ 0.168115] mc: Linux media interface: v0.10 [ 0.168169] videodev: Linux video capture interface: v2.00 [ 0.168289] pps_core: LinuxPPS API ver. 1 registered [ 0.168300] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.i t> [ 0.168328] PTP clock support registered [ 0.168375] EDAC MC: Ver: 3.0.0 [ 0.170291] Advanced Linux Sound Architecture Driver Initialized. [ 0.171833] clocksource: Switched to clocksource timer1 [ 0.182815] thermal_sys: Registered thermal governor 'fair_share' [ 0.182826] thermal_sys: Registered thermal governor 'bang_bang' [ 0.182847] thermal_sys: Registered thermal governor 'step_wise' [ 0.182856] thermal_sys: Registered thermal governor 'user_space' [ 0.182864] thermal_sys: Registered thermal governor 'power_allocator' [ 0.183528] NET: Registered protocol family 2 [ 0.184495] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear) [ 0.184536] TCP established hash table entries: 2048 (order: 1, 8192 bytes, linear) [ 0.184575] TCP bind hash table entries: 2048 (order: 1, 8192 bytes, linear) [ 0.184610] TCP: Hash tables configured (established 2048 bind 2048) [ 0.184741] UDP hash table entries: 256 (order: 0, 4096 bytes, linear) [ 0.184767] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear) [ 0.184969] NET: Registered protocol family 1 [ 0.185700] RPC: Registered named UNIX socket transport module. [ 0.185718] RPC: Registered udp transport module. [ 0.185726] RPC: Registered tcp transport module. [ 0.185734] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 0.185753] PCI: CLS 0 bytes, default 64 [ 0.186903] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available [ 0.188527] Initialise system trusted keyrings [ 0.188918] workingset: timestamp_bits=14 max_order=16 bucket_order=2 [ 0.196030] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.197037] NFS: Registering the id_resolver key type [ 0.197090] Key type id_resolver registered [ 0.197100] Key type id_legacy registered [ 0.197159] ntfs: driver 2.1.32 [Flags: R/O]. [ 0.198081] Key type asymmetric registered [ 0.198101] Asymmetric key parser 'x509' registered [ 0.198168] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244) [ 0.198182] io scheduler mq-deadline registered [ 0.198192] io scheduler kyber registered [ 0.205293] OMAP GPIO hardware version 0.1 [ 0.247954] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400 [ 0.275645] pinctrl-single 44e10800.pinmux: 142 pins, size 568 [ 0.346474] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled [ 0.352501] 48022000.serial: ttyS1 at MMIO 0x48022000 (irq = 33, base_baud = 3000000) is a 8250 [ 0.964411] printk: console [ttyS1] enabled [ 0.972076] omap_rng 48310000.rng: Random Number Generator ver. 20 [ 0.982020] random: fast init done [ 0.985750] random: crng init done [ 1.008286] brd: module loaded [ 1.020696] loop: module loaded [ 1.030295] libphy: Fixed MDIO Bus: probed [ 1.038346] i2c /dev entries driver [ 1.046344] cpuidle: enable-method property 'ti,am3352' found operations [ 1.054166] sdhci: Secure Digital Host Controller Interface driver [ 1.060382] sdhci: Copyright(c) Pierre Ossman [ 1.093327] omap_hsmmc 47810000.mmc: RX DMA channel request failed [ 1.103449] sdhci-pltfm: SDHCI platform and OF driver helper [ 1.111222] ledtrig-cpu: registered to indicate activity on CPUs [ 1.122986] NET: Registered protocol family 10 [ 1.128582] Segment Routing with IPv6 [ 1.132505] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver [ 1.139331] NET: Registered protocol family 17 [ 1.144293] Key type dns_resolver registered [ 1.148737] omap_voltage_late_init: Voltage driver support not added [ 1.155949] Loading compiled-in X.509 certificates [ 1.176713] hctosys: unable to open rtc device (rtc0) [ 1.181944] mmc0: host does not support reading read-only switch, assuming write-enable [ 1.190810] ALSA device list: [ 1.193986] No soundcards found. [ 1.198177] mmc0: new high speed SDHC card at address e624 [ 1.204013] Waiting for root device PARTUUID=d869d71e-01... [ 1.210454] mmcblk0: mmc0:e624 SU32G 29.7 GiB [ 1.217278] mmcblk0: p1 [ 1.284382] EXT4-fs (mmcblk0p1): recovery complete [ 1.292810] EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null) [ 1.301041] VFS: Mounted root (ext4 filesystem) on device 179:1. [ 1.309354] devtmpfs: mounted [ 1.314506] Freeing unused kernel memory: 1024K [ 1.319700] Run /sbin/init as init process [ 1.656618] systemd[1]: System time before build time, advancing clock. [ 1.713214] systemd[1]: systemd 244.5+ running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMO R -SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN2 -IDN -PCRE2 default-hierarchy=hybrid) [ 1.735854] systemd[1]: Detected architecture arm. Welcome to Arago 2020.09! [ 1.783609] systemd[1]: Set hostname to <am335x-evm>. [ 1.801568] systemd[1]: Initializing machine ID from random generator. [ 3.147485] systemd[1]: Caught <SEGV>, dumped core as pid 65. [ 3.153741] systemd[1]: Freezing execution. [ 31.201943] vbat: disabling
感谢您的帮助、如果我能提供更多信息、敬请告知。
注:我们的定制板具有多个外设、但我目前正在尝试将其保持在一个简单的 UART + MMC 中、并将在系统稳定时集成每个外设。
这是我的.dts
/* * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ /dts-v1/; #include "am33xx.dtsi" / { model = "AM335x HELLO"; compatible = "ti,am335x-hello", "ti,am33xx"; chosen { stdout-path = &uart3; tick-timer = &timer2; }; memory { device_type = "memory"; reg = <0x80000000 0x10000000>; /* 256 MB */ }; vbat: fixedregulator@0 { compatible = "regulator-fixed"; regulator-name = "vbat"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; regulator-boot-on; }; vmmc: fixedregulator@1 { compatible = "regulator-fixed"; regulator-name = "vmmc"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; regulator-boot-on; }; }; &am33xx_pinmux { mmc0_pins_default: mmc0_pins_default { pinctrl-single,pins = < AM33XX_PADCONF(AM335X_PIN_MMC0_DAT3, PIN_INPUT_PULLUP, MUX_MODE0) AM33XX_PADCONF(AM335X_PIN_MMC0_DAT2, PIN_INPUT_PULLUP, MUX_MODE0) AM33XX_PADCONF(AM335X_PIN_MMC0_DAT1, PIN_INPUT_PULLUP, MUX_MODE0) AM33XX_PADCONF(AM335X_PIN_MMC0_DAT0, PIN_INPUT_PULLUP, MUX_MODE0) AM33XX_PADCONF(AM335X_PIN_MMC0_CLK, PIN_INPUT_PULLUP, MUX_MODE0) AM33XX_PADCONF(AM335X_PIN_MMC0_CMD, PIN_INPUT_PULLUP, MUX_MODE0) >; }; uart1_pins: uart1_pins { pinctrl-single,pins = < 0x180 (PIN_INPUT_PULLUP | MUX_MODE0) /* uart1_rxd.uart1_rxd */ 0x184 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_txd.uart1_txd */ >; }; }; &uart1 { pinctrl-names = "default"; pinctrl-0 = <&uart1_pins>; status = "okay"; }; &mmc1 { status = "okay"; vmmc-supply = <&vmmc>; bus-width = <4>; pinctrl-names = "default"; pinctrl-0 = <&mmc0_pins_default>; };