准备工作

准备工作

一段时间后,我启动了我的 Cubox i4 Pro。这台微型计算机使用 U-Boot,或者至少它应该这样做。但盒子无法启动。

当我通过 micro-USB 连接 Mac 或通过 HDMI 连接显示器时,我会看到以下内容:

U-Boot SPL 2017.11-armbian (Jan 24 2018 - 22:39:16)
Trying to boot from MMC1


U-Boot 2017.11-armbian (Jan 24 2018 - 22:39:16 +0100)

CPU:   Freescale i.MX6Q rev1.5 996 MHz (running at 792 MHz)
CPU:   Extended Commercial temperature grade (-20C to 105C) at 41C
Reset cause: POR
Board: MX6 Cubox-i
DRAM:  2 GiB
MMC:   FSL_SDHC: 0
*** Warning - bad CRC, using default environment

auto-detected panel HDMI
Display: HDMI (1024x768)
In:    serial
Out:   serial
Err:   serial
Net:   FEC
starting USB...
USB0:   Port not available.
USB1:   USB EHCI 1.00
scanning bus 1 for devices... 1 USB Device(s) found
    scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot/boot.scr
907 bytes read in 98 ms (8.8 KiB/s)
## Executing script at 12000000
## Error: "autodetectfdt" not defined
** File not found /boot/dtb/ **
** Unrecognized filesystem type **
** File not found /dtb/ **
5783761 bytes read in 483 ms (11.4 MiB/s)
5546904 bytes read in 427 ms (12.4 MiB/s)
## Loading init Ramdisk from Legacy Image at 14800000 ...
Image Name:   uInitrd
Image Type:   ARM Linux RAMDisk Image (gzip compressed)
Data Size:    5783697 Bytes = 5.5 MiB
Load Address: 00000000
Entry Point:  00000000
Verifying Checksum ... OK

还有更多。我怀疑这Error: "autodetectfdt" not defined是无法启动的罪魁祸首。有没有办法可以恢复这个autodetectfdt,最好不刷新整个 SD 卡?我想保留一些关于它的数据......

答案1

经过一些帮助后伊戈尔·佩考夫尼克我能够再次启动我的系统。

准备工作

首先,您需要一根微型 USB 电缆。将其从您的计算机连接到 Cubox。安装后虚拟 COM 端口 (VCP) 驱动程序对于我的计算机,我确实ls -l /dev/*usbserial*发现串行线可以在/dev/cu.usbserial-DN00AZKZ。所以我使用打开串行线screen /dev/cu.usbserial-DN00AZKZ 115200

故障排除

接下来,我给 Cubox 通电并立即按下enter以防止自动启动。正如我在问题中所写,我唯一拥有的是

错误:“autoDetectfdt”未定义

在 GitHub 上,我找到了一个定义autodetectfdt。我通过串行线运行它,但它什么也没做。我读了剧本:

if test ${cpu} = 6SOLO || test ${cpu} = 6DL;
then
    setenv fdt_prefix imx6dl;
else
    setenv fdt_prefix imx6q;
fi;

if test ${board} = mx6-cubox-i;
then
    setenv fdt_file ${fdt_prefix}-cubox-i.dtb;
else
    setenv fdt_file ${fdt_prefix}-hummingboard.dtb;
fi;

我尝试手动运行它。printenv cpu给了我一些东西两者都不 6SOLO 也不 6DL,所以我决定跑步setenv fdt_prefix imx6q。接下来,printenv board给了我mx6cuboxi,我将其解释为mx6-cubox-i,所以我跑了setenv fdt_file imx6q-cubox-i.dtb。最后,我saveenv坚持了我的改变。

解决

重新启动系统后,我看到 Linux 内核正在启动。登录后(仍然通过串行线路)我发出了sudo aptitude dist-upgrade. Igor 告诉我 U-Boot v5.38 被破坏了,但他正在修复; v5.44 于同一天发布。aptitude安装了那个版本。再次重新启动,系统现在可以正常启动了!

相关内容