【VIM3L】烧录系统后设备循环重启

测试用的这块板是有被旧的Krescue工具烧录了过出问题的系统的(才发现该问题),然后重新使用线刷了【vim3l-ubuntu-20.04-gnome-linux-4.9-fenix-1.1.2-220930-emmc.img】镜像后再使用【board.VIM3L.time.1641796810.size.16697603 .SIZE.67108864.ver.220110_266.krescue.sd.img】镜像制作的Krescue工具进行备份复制。备份阶段正常可用,但是复制阶段没有显示出工具菜单,查看串口一直在循环打印

你这个是新板还是旧版?新板烧录固件vim3l-ubuntu-20.04-gnome-linux-4.9-fenix-1.1.2-220930-emmc.img是跑不起来的。你是如何启动krescue的?

板一:旧板,使用旧固件可用,在此进行修复
板二:新板,烧录过旧版固件,后线刷官方固件(***fenix-1.3-221118-emmc.img)进去。
板三:全新未拆封板

操作:

  1. 使用新的Krescue工具固件制作Krescue工具SD卡
  2. 对板一进行备份操作,得到镜像一
  3. 使用镜像一对板二进行恢复操作,失败,没有显示工具菜单
  4. 使用镜像一对板三进行恢复操作,成功,系统可启动进入
  5. 对板二线刷官方安卓系统,然后再使用镜像一进行恢复操作,成功,系统可进入
  6. 对执行完5的板二再次进行恢复操作,失败,无法显示工具菜单……

Hello @locke

板二和板三都是V14版本吗?确认下。

目前测试,这里说的另一块板卡指的就是板二。烧录过linux系统的都没有办法使用krescue工具进行恢复。要烧录安卓的固件后才可以使用krescue工具进行恢复操作(未开封的板子也可以,因为出厂计时安卓系统的)

我确定了,板三和板二都是V14版本的板子

你在失败的板子上进入uboot命令行,然后把pri的结果贴出来看看。

这是在uboot命令行中执行pri的打印

kvim3l#pri
EnableSelinux=permissive
Irq_check_en=0
active_slot=normal
baudrate=115200
bcb_cmd=get_avb_mode;get_valid_slot;
board_defined_bootup=bootup_D3
boot_part=boot
bootargs=root=LABEL=ROOTFS rootflags=data=writeback rw rootfstype=ext4 console=tty0 console=ttyS0,115200n8 no_console_suspend consoleblank=0 fsck.repair=yes net.ifnames=0 logo=osd0,loaded,0x3d800000 vout=1080p60hz,enable hdmitx=,444,8bit hdmimode=1080p60hz cvbsmode=576cvbs osd_reverse=0 video_reverse=0 jtag=disable androidboot.hardware=amlogic reboot_mode=cold_boot ddr_size= androidboot.serialno=1234567890 mac=c8:63:14:72:12:47 androidboot.mac=c8:63:14:72:12:47 hwver=VIM3.V14 wol_enable=0
bootcmd=run storeboot
bootdelay=1
chiprev=C
cmdline_keys=if keyman init 0x1234; then if keyman read usid ${loadaddr} str; then setenv bootargs ${bootargs} androidboot.serialno=${usid};setenv serial ${usid};else setenv bootargs ${bootargs} androidboot.serialno=1234567890;setenv serial 1234567890;fi;kbi ethmac;setenv bootargs ${bootargs} mac=${eth_mac} androidboot.mac=${eth_mac};if keyman read deviceid ${loadaddr} str; then setenv bootargs ${bootargs} androidboot.deviceid=${deviceid};fi;fi;
colorattribute=444,8bit
cvbs_drv=0
cvbsmode=576cvbs
display_bpp=24
display_color_bg=0
display_color_fg=0xffff
display_color_index=24
display_height=1080
display_layer=osd0
display_width=1920
dtb_mem_addr=0x1000000
eth_mac=c8:63:14:72:12:47
ethact=dwmac.ff3f0000
ethaddr=02:00:00:0d:0f:01
factory_reset_poweroff_protect=echo wipe_data=${wipe_data}; echo wipe_cache=${wipe_cache};if test ${wipe_data} = failed; then run init_display; run storeargs;if mmcinfo; then run recovery_from_sdcard;fi;if usb start 0; then run recovery_from_udisk;fi;run recovery_from_flash;fi; if test ${wipe_cache} = failed; then run init_display; run storeargs;if mmcinfo; then run recovery_from_sdcard;fi;if usb start 0; then run recovery_from_udisk;fi;run recovery_from_flash;fi; 
fan_stop=i2c mw 0x18 0x88 0
fb_addr=0x3d800000
fb_height=1080
fb_width=1920
fdt_high=0x20000000
fdtaddr=1000000
filesize=107b4a
firstboot=1
frac_rate_policy=1
fs_type=rootfstype=ext4
gatewayip=192.168.1.1
hdmi_read_edid=1
hdmimode=1080p60hz
hostname=KVIM3L
hwver=VIM3.V14
init_display=get_rebootmode;echo reboot_mode:::: ${reboot_mode};if test ${reboot_mode} = quiescent; then setenv reboot_mode_android quiescent;run storeargs;setenv bootargs ${bootargs} androidboot.quiescent=1;osd open;osd clear;else setenv reboot_mode_android normal;run storeargs;hdmitx get_preferred_mode;hdmitx edid;hdmitx hpd;if test ${lcd_exist} = 1 && test ${outputmode} = panel; then setenv fb_width 1088;setenv fb_height 1920;fi;osd open;osd clear;if load mmc 0:2 ${loadaddr} /usr/share/fenix/logo/logo.bmp || load mmc 1:2 ${loadaddr} /usr/share/fenix/logo/logo.bmp || load mmc 1:5 ${loadaddr} /usr/share/fenix/logo/logo.bmp; then bmp display ${loadaddr};bmp scale;fi;vout output ${outputmode};vpp hdrpkt;fi;
initargs=root=LABEL=ROOTFS rootflags=data=writeback rw rootfstype=ext4 console=tty0 console=ttyS0,115200n8 no_console_suspend consoleblank=0 fsck.repair=yes net.ifnames=0 
initrd_high=7f800000
ipaddr=192.168.1.200
irremote_update=if irkey 2500000 0xe31cfb04 0xb748fb04; then echo read irkey ok!; if itest ${irkey_value} == 0xe31cfb04; then run update;else if itest ${irkey_value} == 0xb748fb04; then run update;\
fi;fi;fi;
jtag=disable
lcd_ctrl=0x00000083
lcd_exist=0
loadaddr=1080000
lock=10001000
maxcpus=4
netmask=255.255.255.0
osd_reverse=0
otg_device=1
outputmode=1080p60hz
panel_type=lcd_0
port_mode=1
port_mode_change=fdt addr ${dtb_mem_addr}; kbi portmode r;if test ${port_mode} = 0; then fdt set /usb3phy@ffe09080 status okay;fdt set /pcieA@fc000000 status disable;else fdt set /usb3phy@ffe09080 status disable;fdt set /pcieA@fc000000 status okay;fi;
power_state=0
preboot=run upgrade_check;run init_display;run storeargs;run upgrade_key;run vim3_check;run wol_init;run port_mode_change;forceupdate;run fan_stop;
reboot_mode=cold_boot
reboot_mode_android=normal
recovery_from_flash=get_valid_slot;echo active_slot: ${active_slot};if test ${active_slot} = normal; then setenv bootargs ${bootargs} aml_dt=${aml_dt} recovery_part={recovery_part} recovery_offset={recovery_offset};if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then wipeisb; bootm ${loadaddr}; fi;else setenv bootargs ${bootargs} aml_dt=${aml_dt} recovery_part=${boot_part} recovery_offset=${recovery_offset};if imgread kernel ${boot_part} ${loadaddr}; then bootm ${loadaddr}; fi;fi;
recovery_from_sdcard=if fatload mmc 0 ${loadaddr} aml_autoscript; then autoscr ${loadaddr}; fi;if fatload mmc 0 ${loadaddr} recovery.img; then if fatload mmc 0 ${dtb_mem_addr} dtb.img; then echo sd dtb.img loaded; fi;wipeisb; bootm ${loadaddr};fi;
recovery_from_udisk=if fatload usb 0 ${loadaddr} aml_autoscript; then autoscr ${loadaddr}; fi;if fatload usb 0 ${loadaddr} recovery.img; then if fatload usb 0 ${dtb_mem_addr} dtb.img; then echo udisk dtb.img loaded; fi;wipeisb; bootm ${loadaddr};fi;
recovery_offset=0
recovery_part=recovery
sdc_burning=sdc_burn ${sdcburncfg}
sdcburncfg=aml_sdc_burn.ini
sdr2hdr=2
serial=1234567890
serverip=192.168.1.230
stderr=serial
stdin=serial
stdout=serial
storeargs=setenv bootargs ${initargs} logo=${display_layer},loaded,${fb_addr} vout=${outputmode},enable hdmitx=${cecconfig},${colorattribute} hdmimode=${hdmimode} cvbsmode=${cvbsmode} osd_reverse=${osd_reverse} video_reverse=${video_reverse} jtag=${jtag}; setenv bootargs ${bootargs} androidboot.hardware=amlogic reboot_mode=${reboot_mode} ddr_size=${ddr_size};run cmdline_keys;
storeboot=kbi resetflag 0;boot_cooling;cfgload;if load mmc 0:1 1020000 s905_autoscript || load mmc 1:1 1020000 s905_autoscript || load mmc 1:5 1020000 /boot/s905_autoscript; then autoscr 1020000; fi;ext4load mmc 1:5 1080000 zImage;ext4load mmc 1:5 10000000 uInitrd;ext4load mmc 1:5 20000000 dtb.img;booti 1080000 10000000 20000000;for p in 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 16 17 18; do if fatload mmc 1:${p} ${loadaddr} aml_autoscript; then autoscr ${loadaddr}; fi; done;run update;
switch_bootmode=get_rebootmode;if test ${reboot_mode} = factory_reset; then setenv reboot_mode_android normal;run storeargs;run recovery_from_flash;else if test ${reboot_mode} = update; then setenv reboot_mode_android normal;run storeargs;run update;else if test ${reboot_mode} = quiescent; then setenv reboot_mode_android quiescent;run storeargs;setenv bootargs ${bootargs} androidboot.quiescent=1;else if test ${reboot_mode} = cold_boot; then setenv reboot_mode_android normal;run storeargs;else if test ${reboot_mode} = fastboot; then setenv reboot_mode_android normal;run storeargs;fastboot;fi;fi;fi;fi;fi;
try_auto_burn=update 700 750;
update=kbi lcd_reset; run usb_burning; run sdc_burning; if mmcinfo; then run recovery_from_sdcard;fi;if usb start 0; then run recovery_from_udisk;fi;run recovery_from_flash;
updateu=tftp 1080000 u-boot.bin;mmc dev 1;store rom_write 1080000 0 ${filesize}
upgrade_check=echo upgrade_step=${upgrade_step}; if itest ${upgrade_step} == 3; then run init_display; run storeargs; run update;else fi;
upgrade_key=if gpio input GPIOAO_7; then echo detect upgrade key;gpio set GPIOAO_4;run fan_stop;run update;fi;
upgrade_step=2
usb_burning=update 1000
video_reverse=0
vim3_check=kbi hwver; if test ${hwver} != Unknow; then echo Product checking: pass! Hardware version: ${hwver};else echo Product checking: fail!; sleep 5; reboot;fi;setenv bootargs ${bootargs} hwver=${hwver};
vout=1080p60hz
voutmode=hdmi
wipe_cache=successful
wipe_data=successful
wol_enable=0
wol_init=kbi init;kbi powerstate;kbi trigger wol r;setenv bootargs ${bootargs} wol_enable=${wol_enable};if test ${power_state} = 1; then kbi trigger wol w 1;kbi poweroff;fi;

Environment size: 7897/65532 bytes

现在算是一个新的问题了, 就我测试的情况来说:Krescue工具无法在原有系统为linux的板卡上进行备份操作。

Hello @locke

已经定位到问题点了,需要更新下OOWOW(以前叫krescure)固件。然后再次进行启动备份。操作步骤如下:

1、用一张新的TF卡烧录新的OOWOW固件。链接:http://dl.khadas.com/products/oowow/system/versions/vim3l/vim3l-oowow-221119.000-sd.img.gz
2、使用新的TF卡在你们自己旧的板子上启动,进行备份操作
3、把新的TF卡插到新的板子上进行系统恢复

好的,现在是叫OOWOW了吗?
新的系统是要用OOWOW来做备份保存操作的意思?

命名从krescue改为OOWOW了,具体操作和之前还是一样的。你需要用最新的OOWOW系统进行备份操作,然后用这个卡进行系统恢复。

我制作了OOWOW工具进行备份,可以在新系统(我们也同步进行了在新系统中部署我们的系统了)中进行备份操作。但是现在新的板子上进行恢复操作,进不去工具菜单,接串口显示有循环打印
image

Hello @locke

我上面提供的更新u-boot和boot.ini的操作你做了吗?要先在旧板子上执行这些操作后在进行备份。

可能是我没有描述清楚,现在旧版本的系统经过你提供的方法可以使用krescure固件进行备份恢复到新的板子中(就是有限制:新的板子需要非linux系统)。然后使用OOWOW工具可以把旧版本的系统备份出来烧录到新板板子上(这种就没有限制可以安卓、linux,都能进入工具菜单进行备份恢复)

现在还有一个问题就是新的固件在新版板子上该怎么备份出来到新版板子上?我们已经在新的板子上加急部署好了系统,想对它也进行一个备份操作。

如果你还要在新的板子上进行备份,那么操作和之前是一样的,进oowow备份即可。条件就是:使用最新的oowow系统和ubuntu系统。

我该如何查看系统的版本?我使用了【vim3l-oowow-220928.304-sd.img.gz】制作的OOWOW镜像,放到新部署的板子上还是会循环打印信息,没有进入到工具菜单界面。我先看看新部署的板子烧录的是什么版本的镜像?,看是否为最新镜像

你要先按照我上面提供的步骤更新uboot和boot.ini文件,然后在使用最新的oowow进行备份。

查看uboot是否更新,进入uboot命令行执行version看看uboot编译时间。

既然已经用新的固件在新的板子上重新部署了应用,为什么还要按之前操作在旧版上进行呢?直接在新板子上用最新固件部署然后备份,就可以了。

新的镜像也需要更新uboot和boot.ini的意思?
旧版上做修改是应急方案,现在要确定一下新版的镜像是否可以使用OOWOW工具进行备份。

不需要。

可以。在新的板子上使用最新的ubuntu系统进行你们自己软件的部署。然后使用最新的OOWOW固件进行系统备份和还原。

使用最新的ubuntu系统和OOWOW备份出来的固件也是兼容旧的板子的。