U-Boot

U-Boot:錯誤:未定義“autodetectfdt”

  • May 13, 2018

一段時間後,我啟動了我的 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 卡?上面有一些數據我想保留…

Igor Pecovnik的幫助下,我能夠讓我的系統再次啟動。

準備工作

首先,您需要一根微型 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安裝了那個版本。再次重新啟動,系統現在啟動正常!

引用自:https://unix.stackexchange.com/questions/443166