在arm imx28系统上有一个问题,我有linux kernel 5.10.50,我用下面的boot.scr启动了u-boot
setenv mtdparts "mtdparts="gpmi-nand:3m(bootloader)ro,512k(environment),512k(redundant-environment),8m(kernel),512k(fdt),8m(ramdisk),120m(filesystem),-(data)"";
setenv nandargs "setenv bootargs console=${console_mainline},${baudrate} rootfstype=ubifs ubi.mtd=6 root=ubi0_0 ${mtdparts}";
setenv mmcroot "/dev/mmcblk0p3";
setenv nandboot "mtdparts default; run nandargs; nand read ${loadaddr} kernel 0x00600000; if test ${boot_fdt} = yes; then nand read ${fdt_addr} fdt 0x00080000; bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = no; then bootz; else echo \"ERROR: Set boot_fdt to yes or no.\"; fi; fi";
setenv nandinstall "nand device 0; nand erase.part environment; nand erase.part redundant-environment; run update_nand_firmware_full; run update_nand_fdt; run update_nand_kernel; run update_nand_filesystem;
setenv -f bootcmd run nandboot; saveenv";
run nandinstall; run nandboot
当内核启动时,我看到以下几行:
8 cmdlinepart partitions found on MTD device gpmi-nand
Creating 8 MTD partitions on "gpmi-nand":
0x000000000000-0x000000300000 : "bootloader"
0x000000300000-0x000000380000 : "environment"
0x000000380000-0x000000400000 : "redundant-environment"
0x000000400000-0x000000c00000 : "kernel"
0x000000c00000-0x000000c80000 : "fdt"
0x000000c80000-0x000001480000 : "ramdisk"
0x000001480000-0x000008c80000 : "filesystem"
0x000008c80000-0x000010000000 : "data"
也就是说,内核将正确解释引导参数
但过了一会儿,我看到下面这几行代码不断重复:
ubi0 warning: ubi_io_read: error -74 (ECC error) while reading 64 bytes from PEB 0:0, read only 64 bytes, retry
以此类推4次甚至更久
CPU: 0 PID: 1 Comm: swapper Not tainted 5.10.50
Hardware name: Freescale MXS (Device Tree)
[<c0010084>] (unwind_backtrace) from [<c000dea4>] (show_stack+0x10/0x14)
[<c000dea4>] (show_stack) from [<c03ce4fc>] (ubi_io_read+0x110/0x2f0)
[<c03ce4fc>] (ubi_io_read) from [<c03ce900>] (ubi_io_read_ec_hdr+0x44/0x244)
我在linux内核4.14.67上观察到了同样的情况。我的结论是,这个错误与内核无关,而与u-boot有关。
请告诉我我需要在哪个方向查找错误的原因,如果没有足够的信息,那么写下要添加的内容。谢谢。
发布于 2021-08-11 03:43:43
我发现解决方案需要在uboot-2017.11/include/configs/mx28evk.h文件中添加一行
#define CONFIG_SYS_NAND_ONFI_DETECTION
https://stackoverflow.com/questions/68540671
复制