SD/USB固件写入到eMMC 后无法正常启动,反复重启

DRAM:  2 GiB
Relocation Offset is: 76e42000
spi_post_bind(spifc): req_seq = 0
register usb cfg[0][1] = 0000000077f39210
aml_i2c_init_port init regs for 0
MCU version: 0x00 0x03
MCU version is to low! Doesn't support froce boot from SD card.
MMC:   aml_priv->desc_buf = 0x0000000073e32a70
aml_priv->desc_buf = 0x0000000073e34db0
SDIO Port B: 0, SDIO Port C: 1
co-phase 0x3, tx-dly 0, clock 400000
co-phase 0x3, tx-dly 0, clock 400000
co-phase 0x3, tx-dly 0, clock 400000
emmc/sd response timeout, cmd8, status=0x3ff2800
emmc/sd response timeout, cmd55, status=0x3ff2800
co-phase 0x3, tx-dly 0, clock 400000
co-phase 0x1, tx-dly 0, clock 40000000
aml_sd_retry_refix[983]:delay = 0x0,gadjust =0x2000
[mmc_startup] mmc refix success
init_part() 282: PART_TYPE_DOS
[mmc_init] mmc init success
start dts,buffer=0000000073e37620,dt_addr=0000000073e37620
check_valid_dts: FDT_ERR_BADMAGIC
get_partition_from_dts() 91: ret -9
get_partition_from_dts() 94: ret -9
get_ptbl_from_dtb()-272: get partition table from dts faild
mmc_device_init()-1254: get partition table from dtb failed
get_ptbl_rsv()-494: magic faild MPT,
mmc_device_init()-1281: dtb&rsv are not exist, no LPT source
get partition info failed !!
Using default environment

In:    serial
Out:   serial
Err:   serial
reboot_mode=cold_boot
[store]To run cmd[emmc dtb_read 0x1000000 0x40000]
_verify_dtb_checksum()-3477: calc 30fc8824, store 3d001200
update_dtb_info()-3585: cpy 1 is not valid
_verify_dtb_checksum()-3477: calc 1768c345, store aa140
update_dtb_info()-3585: cpy 0 is not valid
dtb_read()-3694: total valid 0
emmc - EMMC sub system

Usage:
emmc dtb_read addr size
emmc dtb_write addr size
emmc erase dtb
emmc erase key
emmc fastboot_read addr size
emmc fastboot_write addr size

aml_i2c_init_port init regs for 0
fusb302_init: Device ID: 0x91
CC connected in 1 as UFP
fusb302 detect chip.port_num = 0
[KM]Error:f[keymanage_dts_parse]L307:not a fdt at 0x0000000001000000
vpu: error: vpu: check dts: FDT_ERR_BADMAGIC, load default parameters
vpu: clk_level = 7
vpu: vpu_power_on
vpu: set clk: 666667000Hz, readback: 666666667Hz(0x100)
vpu: vpu_module_init_config
vpp: vpp_init
vpp: vpp osd2 matrix rgb2yuv..............
cvbs: cpuid:0x29
LCD_RESET PIN: 0
lcd: error: check dts: FDT_ERR_BADMAGIC, load default lcd parameters
lcd: detect mode: tablet, key_valid: 0
lcd: load config from bsp
lcd: use panel_type=lcd_0
lcd: bl: name: lcd_0, method: 1
lcd: bl: aml_bl_power_ctrl: 0
Net:   [KM]Error:f[keymanage_dts_get_key_device]L100:/unify not parsed yet!
[KM]Error:f[_get_km_ops_by_name]L248:key eth_exphy_para not know device 4
[KM]Error:f[key_unify_read]L312:key[eth_exphy_para] no cfg in dts
dwmac.ff3f0000 Waiting for PHY auto negotiation to complete.... done
The Best Window is index 40
[KM]Error:f[keymanage_dts_get_key_device]L100:/unify not parsed yet!
[KM]Error:f[_get_km_ops_by_name]L248:key eth_exphy_para not know device 4
[KM]Error:f[key_unify_write]L279:key[eth_exphy_para] no cfg in dts
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
No FDT memory address configured. Please configure
the FDT address via "fdt addr <address>" command.
Aborting!
dwmac.ff3f0000[KM]Error:f[keymanage_dts_parse]L307:not a fdt at 0x0000000001000000

@Dingdingf 用的是哪个固件?以及如何操作的?

固件:VIM3_Ubuntu-server-focal_Linux-4.9_arm64_SD-USB_V1.0.10-220108.img
按照这个教程:SD/USB固件写入到eMMC | Khadas Documentation

执行 emmc-install 时出现了错误
Error: /dev/mmcblk0: unrecognised disk label
Error: /dev/mmcblk0: unrecognised disk label

@Dingdingf 我这边测试了,是可以正常运行的。你在install之前有做了什么操作么?另外这个操作需要在root下进行。

没做操作,只是在opt目录建了给文件夹,用来区分是否写入成功。我没切换道root用户,仅加了 sudo。我切换root用户再尝试一下。

我又切换到root用户下试了一下,还是不行。
check_valid_dts: FDT_ERR_BADMAGIC
get_partition_from_dts() 91: ret -9
get_partition_from_dts() 94: ret -9
get_ptbl_from_dtb()-272: get partition table from dts faild
mmc_device_init()-1254: get partition table from dtb failed
get_ptbl_rsv()-494: magic faild MPT,
mmc_device_init()-1281: dtb&rsv are not exist, no LPT source
get partition info failed !!
Using default environment

In: serial
Out: serial
Err: serial
reboot_mode=normal
[store]To run cmd[emmc dtb_read 0x1000000 0x40000]
_verify_dtb_checksum()-3477: calc 30fc8824, store 3d001200
update_dtb_info()-3585: cpy 1 is not valid
_verify_dtb_checksum()-3477: calc 1768c345, store aa140
update_dtb_info()-3585: cpy 0 is not valid
dtb_read()-3694: total valid 0
emmc - EMMC sub system

Usage:
emmc dtb_read addr size
emmc dtb_write addr size
emmc erase dtb
emmc erase key
emmc fastboot_read addr size
emmc fastboot_write addr size

aml_i2c_init_port init regs for 0
fusb302_init: Device ID: 0x91
CC connected in 1 as UFP
fusb302 detect chip.port_num = 0
[KM]Error:f[keymanage_dts_parse]L307:not a fdt at 0x0000000001000000
vpu: error: vpu: check dts: FDT_ERR_BADMAGIC, load default parameters
vpu: clk_level = 7
vpu: vpu_power_on
vpu: set clk: 666667000Hz, readback: 666666667Hz(0x100)
vpu: vpu_module_init_config
vpp: vpp_init
vpp: vpp osd2 matrix rgb2yuv…
cvbs: cpuid:0x29
LCD_RESET PIN: 0
lcd: error: check dts: FDT_ERR_BADMAGIC, load default lcd parameters
lcd: detect mode: tablet, key_valid: 0
lcd: load config from bsp
lcd: use panel_type=lcd_0
lcd: bl: name: lcd_0, method: 1
lcd: bl: aml_bl_power_ctrl: 0
Net: [KM]Error:f[keymanage_dts_get_key_device]L100:/unify not parsed yet!
[KM]Error:f[_get_km_ops_by_name]L248:key eth_exphy_para not know device 4
[KM]Error:f[key_unify_read]L312:key[eth_exphy_para] no cfg in dts
dwmac.ff3f0000 Waiting for PHY auto negotiation to complete… done
The Best Window is index 40
[KM]Error:f[keymanage_dts_get_key_device]L100:/unify not parsed yet!
[KM]Error:f[_get_km_ops_by_name]L248:key eth_exphy_para not know device 4
[KM]Error:f[key_unify_write]L279:key[eth_exphy_para] no cfg in dts
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
No FDT memory address configured. Please configure
the FDT address via "fdt addr " command.
Aborting!
dwmac.ff3f0000[KM]Error:f[keymanage_dts_parse]L307:not a fdt at 0x0000000001000000

upgrade_step=0
reboot_mode:::: normal
[KM]Error:f[keymanage_dts_parse]L307:not a fdt at 0x0000000001000000

板子上丝印是:VIM3 V13 20094320

我手上的硬件版本是VIM3 V13
在log里发现一个指向硬件版本为 VIM3 V12,如下:
** Bad device mmc 0 **
reading s905_autoscript
10452 bytes read in 4 ms (2.5 MiB/s)

Executing script at 01020000

Starting S905 autoscript…
saradc: 0x28c, hw_ver: 0x32 (VIM3.V12)
uboot type: vendor
Scanning mmc 0:1…
card out
** Bad device mmc 0 **
Scanning mmc 0:5…
card out
** Bad device mmc 0 **
Scanning mmc 1:1…
reading uInitrd
emmckey_is_access_range_legal, keys 73760, keye 74271, start 64360, blkcnt 20943
Emmckey: Access range is illegal!
Error reading cluster
** Unable to read file uInitrd **
Scanning mmc 1:5…
** Invalid partition 5 **
Scanning mmc 2:1…
MMC Device 2 not found

@Dingdingf 这个没有关系,在软件上V12和V13是同一个版本。你直接烧录固件到EMMC可以正常烧录么?

可以的,我再描述一下我刚刚测试的流程:

  1. 烧录EMMC固件可以正常启动
  2. 插入制作好的SD卡开机使用串口进系统
  3. 切换到root用户下执行 emmc-install,执行的时候报了两个错
    Error: /dev/mmcblk0: unrecognised disk label
    Error: /dev/mmcblk0: unrecognised disk label
  4. poweroff 后移除SD卡,无法进入系统,反复重启。

@Dingdingf 我们这边已经复现问题了。你这边先用EMMC固件,我们会找一下BUG在哪里。

好的,我主要目标是为了我们的软件批量部署到其他的VIM3板子,才考虑的这个方式;你们有更好的方式推荐吗?

@Dingdingf

你可以看下这个

好的,谢谢,这个满足我最初的需求了。<凑够20个字>