NXP MCU 技术论坛
直播中

刘勇

7年用户 1258经验值
私信 关注
[问答]

在TS-7970板 (i.MX6 Quad) 上使用initrd启动时内核崩溃的原因?如何解决?

我正在尝试让 Techonologic Systems TS-7970 板引导 Guix 系统,这是一个 GNU/Linux 发行版。
我正在使用参考 U-Boot ( https://github.com/embeddedTS/u-boot-imx ),效果很好。我目前也在使用参考内核 ( https://github.com/embeddedTS/linux-tsimx ),它也运行良好(使用无 initrd 的 Buildroot 映像进行测试)。
为了允许启动生成 /boot/extlinux/extlinux.conf 文件的 Guix 系统,我调整了来自 U-Boot 的 includes/configs/ts7970.h 文件,并为我的 u-boot- ts7970- q-2g-1000mhz-c封装:

(add-after 'unpack 'patch-u-boot
(lambda _
(substitute* (find-files "include/configs" "^ts[0-9]{4}\.h$")
;; Default to boot a standard zImage instead of a uImage.
(("/boot/uImage")
"/boot/zImage")
(("uimage")
"zimage")
(("bootm \$\{loadaddr}")
"bootz ${loadaddr}")
;; This reference DTB is not available in mainline.
(("ts7970-revf.dtb")
"ts7970.dtb")
;; Enable support for DISTRO_DEFAULTS, which enables to
;; use 'sysboot' to boot Guix System. Also enable
;; "standard" boot commands for dealing with discovery and
;; booting of syslinux configurations (extlinux.conf).

;; Disable the stock CONFIG_BOOTCOMMAND to avoid a
;; redefinition error.
(("CONFIG_BOOTCOMMAND")
"CONFIG_BOOTCOMMAND_DISABLED")
(("CONFIG_BOOTDELAY")
"CONFIG_BOOTDELAY_DISABLED")
;; Inspired by include/configs/embestmx6boards.h
(("#define CONFIG_EXTRA_ENV_SETTINGS.*" anchor)
(string-append
"#include nn"
"#define MEM_LAYOUT_ENV_SETTINGS \n"
" "bootm_size=0x10000000\0" \n"
" "ramdisk_addr_r=0x10800000\0"\n"
" "kernel_addr_r=0x12000000\0" \n"
" "fdt_addr_r=0x18000000\0" \n"
" "scriptaddr=0x18100000\0" \n"
" "pxefile_addr_r=0x18200000\0" nn"
"#define BOOT_TARGET_DEVICES(func) \n"
" func(MMC, mmc, 0) \n"
" func(MMC, mmc, 1) \n"
" func(SATA, sata, 0) \n"
" func(USB, usb, 0) \n"
" func(PXE, pxe, na) \n"
" func(DHCP, dhcp, na)nn"
"#include nn"
anchor
;; Sadly, the user config CONFIG_DEFAULT_FDT_FILE did
;; not exist in that older U-Boot, a placeholder is
;; added here, to be substituted in each TS U-Boot board
;; package.
" "fdtfile=DEFAULT_FDT_FILE\0" \n"
" MEM_LAYOUT_ENV_SETTINGS \n"
" BOOTENV \n")))))

在上面的代码片段中,您可以看到我使用的内存映射。将操作系统闪存到 SD 卡并尝试启动,它似乎很早就(或在)尝试运行 init 程序时崩溃,对于 Guix 系统,该程序是用 Scheme 编写的并使用 Guile 运行(请参阅随附的启动.log),结尾为:

[...]
[    7.444504] sdhci-esdhc-imx 2190000.usdhc: card claims to support voltages below defined range
[    7.461422] mmc0: new SDIO card at address 0001
[    8.222216] mmcblk2: mmc2:0001 MMC04G 3.60 GiB
[    8.223894] Freeing unused kernel memory: 1024K (80e00000 - 80f00000)
[    8.234222] mmcblk2boot0: mmc2:0001 MMC04G partition 1 16.0 MiB
GC Warning: pthread_getattr_np or[    8.240616] mmcblk2boot1: mmc2:0001 MMC04G partition 2 16.0 MiB
pthread_attr_getstack failed for[    8.249392] mmcblk2rpmb: mmc2:0001 MMC04G partition 3 128 KiB
main thread
GC Warning: Couldn't read /proc/stat
[    8.314248] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    8.314248]
[    8.323403] CPU1: stopping
[    8.326121] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.9.11-tsimx #1
[    8.332565] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
[    8.339094] Backtrace:
[    8.341580] [<80111d48>] (dump_backtrace) from [<80111f38>] (show_stack+0x18/0x1c)
[    8.349156]  r7:00000000 r6:20000193 r5:00000000 r4:80f2fecc
[    8.354830] [<80111f20>] (show_stack) from [<8054d61c>] (dump_stack+0x80/0x9c)
[    8.362061] [<8054d59c>] (dump_stack) from [<8010d8dc>] (handle_IPI+0xe0/0x178)
[    8.369373]  r7:00000000 r6:d80abf18 r5:00000001 r4:80e7f034
[    8.375040] [<8010d7fc>] (handle_IPI) from [<801014d8>] (gic_handle_irq+0x70/0x78)
[    8.382613]  r7:f4a01100 r6:80f0358c r5:f4a00100 r4:d80abf18
[    8.388284] [<80101468>] (gic_handle_irq) from [<80a0a34c>] (__irq_svc+0x6c/0xa8)
[    8.395769] Exception stack(0xd80abf18 to 0xd80abf60)
[    8.400823] bf00:                                                       00000000 dad16bc0
[    8.409006] bf20: 00000001 d80aa000 f01cf055 ef8c69a3 dad131a8 00000001 00000001 00000004
[    8.417189] bf40: 00000001 d80abf9c d80abf28 d80abf68 8018eb00 80826374 20000013 ffffffff
[    8.425370]  r7:d80abf4c r6:ffffffff r5:20000013 r4:80826374
[    8.431039] [<80826284>] (cpuidle_enter_state) from [<80826488>] (cpuidle_enter+0x1c/0x20)
[    8.439308]  r10:d80abfc0 r9:80e801a0 r8:80f030f4 r7:d80aa000 r6:00000001 r5:80f08cd4
[    8.447138]  r4:dad131a8
[    8.449686] [<8082646c>] (cpuidle_enter) from [<80165ccc>] (call_cpuidle+0x3c/0x40)
[    8.457351] [<80165c90>] (call_cpuidle) from [<80165f48>] (cpu_startup_entry+0x188/0x1a8)
[    8.465535] [<80165dc0>] (cpu_startup_entry) from [<8010d5b8>] (secondary_start_kernel+0x134/0x164)
[    8.474582]  r7:80f8d320 r4:80f14490
[    8.478166] [<8010d484>] (secondary_start_kernel) from [<1010156c>] (0x1010156c)
[    8.485566]  r7:80f8d320 r6:10c03c7d r5:00000051 r4:6809406a
[    8.491228] CPU3: stopping
[    8.493943] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 4.9.11-tsimx #1
[    8.500385] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
[    8.506912] Backtrace:
[    8.509386] [<80111d48>] (dump_backtrace) from [<80111f38>] (show_stack+0x18/0x1c)
[    8.516960]  r7:00000000 r6:20000193 r5:00000000 r4:80f2fecc
[    8.522630] [<80111f20>] (show_stack) from [<8054d61c>] (dump_stack+0x80/0x9c)
[    8.529860] [<8054d59c>] (dump_stack) from [<8010d8dc>] (handle_IPI+0xe0/0x178)
[    8.537172]  r7:00000000 r6:d80aff18 r5:00000003 r4:80e7f034
[    8.542837] [<8010d7fc>] (handle_IPI) from [<801014d8>] (gic_handle_irq+0x70/0x78)
[    8.550411]  r7:f4a01100 r6:80f0358c r5:f4a00100 r4:d80aff18
[    8.556077] [<80101468>] (gic_handle_irq) from [<80a0a34c>] (__irq_svc+0x6c/0xa8)
[    8.563561] Exception stack(0xd80aff18 to 0xd80aff60)
[    8.568615] ff00:                                                       00000000 00000001
[    8.576797] ff20: 59eaf000 dad2fec0 f01cef08 ef8c5f38 dad2f1a8 00000000 00000001 00000000
[    8.584980] ff40: 00000001 d80aff9c d80aff68 d80aff68 80826350 80826374 60000113 ffffffff
[    8.593161]  r7:d80aff4c r6:ffffffff r5:60000113 r4:80826374
[    8.598827] [<80826284>] (cpuidle_enter_state) from [<80826488>] (cpuidle_enter+0x1c/0x20)
[    8.607096]  r10:d80affc0 r9:80e801a0 r8:80f030f4 r7:d80ae000 r6:00000003 r5:80f08cd4
[    8.614926]  r4:dad2f1a8
[    8.617469] [<8082646c>] (cpuidle_enter) from [<80165ccc>] (call_cpuidle+0x3c/0x40)
[    8.625133] [<80165c90>] (call_cpuidle) from [<80165f48>] (cpu_startup_entry+0x188/0x1a8)
[    8.633317] [<80165dc0>] (cpu_startup_entry) from [<8010d5b8>] (secondary_start_kernel+0x134/0x164)
[    8.642364]  r7:80f8d320 r4:80f14490
[    8.645945] [<8010d484>] (secondary_start_kernel) from [<1010156c>] (0x1010156c)
[    8.653345]  r7:80f8d320 r6:10c03c7d r5:00000051 r4:6809406a
[    8.659007] CPU0: stopping
[    8.661722] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.9.11-tsimx #1
[    8.668164] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
[    8.674692] Backtrace:
[    8.677167] [<80111d48>] (dump_backtrace) from [<80111f38>] (show_stack+0x18/0x1c)
[    8.684742]  r7:00000000 r6:20000193 r5:00000000 r4:80f2fecc
[    8.690411] [<80111f20>] (show_stack) from [<8054d61c>] (dump_stack+0x80/0x9c)
[    8.697641] [<8054d59c>] (dump_stack) from [<8010d8dc>] (handle_IPI+0xe0/0x178)
[    8.704954]  r7:00000000 r6:80f01ee0 r5:00000000 r4:80e7f034
[    8.710620] [<8010d7fc>] (handle_IPI) from [<801014d8>] (gic_handle_irq+0x70/0x78)
[    8.718193]  r7:f4a01100 r6:80f0358c r5:f4a00100 r4:80f01ee0
[    8.723860] [<80101468>] (gic_handle_irq) from [<80a0a34c>] (__irq_svc+0x6c/0xa8)
[    8.731344] Exception stack(0x80f01ee0 to 0x80f01f28)
[    8.736403] 1ee0: 00000000 dad08bc0 00000001 80f00000 f01cf2f0 efe6458b dad051a8 00000001
[    8.744585] 1f00: 00000001 00000004 00000001 80f01f64 80f01ef0 80f01f30 8018eb00 80826374
[    8.752764] 1f20: 20000013 ffffffff
[    8.756257]  r7:80f01f14 r6:ffffffff r5:20000013 r4:80826374
[    8.761923] [<80826284>] (cpuidle_enter_state) from [<80826488>] (cpuidle_enter+0x1c/0x20)
[    8.770192]  r10:80f01f88 r9:80e801a0 r8:80f030f4 r7:80f00000 r6:00000000 r5:80f08cd4
[    8.778023]  r4:dad051a8
[    8.780566] [<8082646c>] (cpuidle_enter) from [<80165ccc>] (call_cpuidle+0x3c/0x40)
[    8.788231] [<80165c90>] (call_cpuidle) from [<80165f48>] (cpu_startup_entry+0x188/0x1a8)
[    8.796415] [<80165dc0>] (cpu_startup_entry) from [<80a04e38>] (rest_init+0x78/0x90)
[    8.804160]  r7:80f030c0 r4:00000002
[    8.807744] [<80a04dc0>] (rest_init) from [<80e00c70>] (start_kernel+0x318/0x37c)
[    8.815230]  r5:00000001 r4:80f8d04c
[    8.818811] [<80e00958>] (start_kernel) from [<1000807c>] (0x1000807c)
[    8.825351] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    8.825351]

更多回帖

发帖
×
20
完善资料,
赚取积分