专栏底层软件OTA升级失败调试

OTA升级失败调试

已解决
共产主义接班人2022-11-21
48
12

用户您好,请详细描述您所遇到的问题。

1.硬件获取渠道:

2.当前系统镜像版本:hobot-j5-matrix

3.当前天工开物版本:

4.问题定位:编译debug版本,烧录,然后部分修改软件,使用all_in_one-secure_signed.zip进行升级,提示错误,错误信息如下:

[OTA_INFO] Error: is_security_board=0,is_security_img=1, not match

[OTA_INFO] Error: Can not found sbl file in /userdata/all_in_one-secure_signed.zip!

[OTA_INFO] Error: verify /userdata/all_in_one-secure_signed.zip legal failed!

经过排查,/proc/cmdline下确实没有vbmeta信息,

snprintf(boot_args, sizeof(boot_args),

"console=%s "

"root=/dev/ram0 rdinit=/init rw rootwait loglevel=%ld bootprocess=%s "

"hobotboot.hardware=%s hobot.socver=%s hobotboot.reason=%s hobotboot.fchm_fault=0x%08x hobotboot.fault_timestamp=%u "

"%s%s hobotboot.slot_suffix=%s %s "

"hobotboot.mode=%s"

" hobotboot.pksel=%d"

" %s", console_args, env_get_ulong("loglevel", 10, 0), env_get("bootprocess"),

hb_boot_hardware_get(), hb_socver_get(), hb_reset_reason_get(), fchm_fault, fault_timestamp,

ipaddr ? "hobotboot.ipaddr=" : "",

ipaddr ? ipaddr : "",

slot_suffix, bpu_slot_suffix, env_get("boot_mode"),

hb_check_pksel(),

cmdline ? cmdline : "");

赋值的地方也没有相关处理,针对这类情况,如何处理。

5.开发的demo/案例:

6.需要提供的解决方案:提供OTA升级过程详解,包括每一步如果升级失败,如何定位解决问题

底层软件
评论2
0/1000
  • ughost
    Lv.1

    感谢关注HorizonJ5产品,尝试回答您的疑问:

    1:问题中的is_security_board检查是为了防止升级变砖而做的安全机制。
    2:请检查uboot的相关修改,是不是把AVB的流程去掉了,去掉以后uboot启动kernel不会加载vbmeta,导致这个问题
    3:请检查vbmeta相关的编译流程,是否修改了dm-verity相关的编译代码,导致vbmeta中不包含system,app等镜像的签名信息,导致上述问题。
    希望可以解答您的疑问。

    祝好~

    2022-11-21
    0
    8
    • 共产主义接班人回复ughost:

      谢谢,我们这边先检查一下,然后给出反馈

      2022-11-22
      0
    • 共产主义接班人回复ughost:

      Hi,

      我们这边做了一下检查,AVB是打开的,从u-boot.cfg看到#define CONFIG_CMD_AVB 1

      看了一下修改记录,uboot未做修改,与repo上一致

      这是板子上信息

      cat /proc/cmdline

      console=uart8250,mmio32,0x43B90000,921600n8 root=/dev/ram0 rdinit=/init rw rootwait loglevel=0 bootprocess=mmc hobotboot.hardware=matrix5 hobot.socver=5.2.0 hobotboot.reason=por hobotboot.fchm_fault=0x0000ffff hobotboot.fault_timestamp=0 hobotboot.slot_suffix=_b hobotboot.bpu_slot_suffix=_a hobotboot.mode=normal hobotboot.pksel=0

      local cmdline_get_vbmeta=$(cat /proc/cmdline | grep "vbmeta")

      if [ -z $cmdline_get_vbmeta ];then

      is_security_board=0

      else

      is_security_board=1

      fi

      由于/proc/cmdline中没有vbmeta信息,导致如下报错

      is_security_board=0,is_security_img=1, not match

      是否还有其他信息有遗漏

      谢谢!

      2022-11-22
      0
    • ughost回复共产主义接班人:
      您好。
      您这边的问题主要是板子上跑的镜像没有走avb验证,导致板子上运行的kernel被认为是不安全的,跟你要升级的镜像关系不大。所以请您首先确认板子上运行的镜像是否有做过类似跳过安全启动的修改。(比如tftp启动等)
      此外,当前OTA只支持板子运行安全镜像的升级。

      希望能回答您的问题,谢谢。

      2022-11-22
      0
    • 共产主义接班人回复ughost:

      板子上跑的镜像就是用当前环境编译出来,通过hbupdate烧录,然后做部分修改,重新编译,想验证OTA功能,在升级的过程中报上面提到的错误,所以想知道为什么当前镜像没有走avb验证。

      谢谢!

      2022-11-22
      0
    • ughost回复共产主义接班人:
      您好。
      (1)您在板子上运行的镜像是用我们的发布SDK编译出来的吗?有没有修改呢?,如果有修改的话还请说明一下修改了哪些地方,可能影响到了avb启动
      (2)如果没有修改,请在uboot下面printenv fastboot.is-secureboot,查看该参数的值是否为yes,如果不为yes,那么您的板子可能是非安全的板子

      希望能解答您的疑问,谢谢

      2022-11-22
      0
    • 共产主义接班人回复ughost:

      目前镜像是基于0907编译的debug版本,看记录只有以太网的部分修改(dts),

      Hobot# printenv fastboot.is-secureboot

      fastboot.is-secureboot=yes

      2022-11-24
      0
    • 船到桥头回复共产主义接班人:

      你好,uboot命令行printenv ,看下所有环境变量

      2022-11-25
      1
    • 共产主义接班人回复船到桥头:

      你好,信息如下:

      ab_select_cmd=btype ab_select bootslot bpuslot || run enter_safety_cmd; echo "Using slot ${bootslot}"; setenv slot_suffix _${bootslot};

      arch=arm

      autoload=no

      avb_boot=avb init $bootintf $bootdev; hb_avb_helper ${slot_suffix}

      baudrate=115200

      board=j5

      board_name=j5

      boot_mode=normal

      bootargs=

      bootcmd=run ab_select_cmd;run avb_boot;

      bootdelay=0

      bootdev=0

      booted=1

      bootintf=mmc

      bootpart=boot

      bootprocess=mmc

      bootslot=a

      bpuslot=a

      cpu=armv8

      ensure_ip=if test x${ipaddr} = x; then dhcp; fi

      enter_safety_cmd=echo "enter safety mode"; btype reboot recovery;

      ethact=ethernet@59110000

      fastboot.board_type=1553

      fastboot.bootdevice=emmc

      fastboot.bootprocess=mmc

      fastboot.current-slot=b

      fastboot.is-secureboot=yes

      fastboot.pksel=0

      fastboot.slot-count=2

      fastboot_cmd=run ensure_ip; fastboot udp

      fdt_addr=0x82000000

      fdt_high=0xffffffffffffffff

      fdtcontroladdr=880d4500

      initrd_addr=0x8f000000

      initrd_high=0xffffffffffffffff

      kernel_addr=0x83000000

      mtdids=spi-flash1=48020000.cspi,spi-flash0=spi6.0

      mtdparts=mtdparts=48020000.cspi:131072@0x0(reserved),131072@0x20000(binfo0),131072@0x40000(binfo1),131072@0x60000(binfo2),131072@0x80000(binfo3),262144@0xA0000(sbl),262144@0xE0000(sblbak0),262144@0x120000(sblbak1),262144@0x160000(sblbak2),262144@0x1A0000(ddrc_a),262144@0x1E0000(ddrc_b),1048576@0x220000(ddr_a),1048576@0x320000(ddr_b),2097152@0x420000(uboot_a),2097152@0x620000(uboot_b),1048576@0x820000(bl31_a),1048576@0x920000(bl31_b),131072@0xA20000(mcore_a),131072@0xA40000(mcore_b),131072@0xA60000(misc),131072@0xA80000(ubootenv),131072@0xAA0000(veeprom),131072@0xAC0000(vbmeta_a),-@0xAE0000(boot_a);spi6.0:256k@0x0(binfo0),256k@0x40000(binfo1),256k@0x80000(binfo2),256k@0xC0000(binfo3),256k@0x100000(sbl),256k@0x140000(sblbak0),256k@0x180000(sblbak1),256k@0x1C0000(sblbak2),256k@0x200000(ddrc_a),256k@0x240000(ddrc_b),1M@0x280000(ddr_a),1M@0x380000(ddr_b),2M@0x480000(uboot_a),2M@0x680000(uboot_b),1M@0x880000(bl31_a),1M@0x980000(bl31_b),256k@0xA80000(mcore_a),256k@0xAC0000(mcore_b),256k@0xB00000(misc),256k@0xB40000(ubootenv),256k@0xB80000(veeprom),20M@0xBC0000(boot_a),256k@0x1FC0000(vbmeta_a),20M@0x2000000(boot_b),1M@0x3400000(system),1M@0x3500000(app),256k@0x3600000(vbmeta_b),-(others)

      slot_suffix=_a

      soc=j5

      stderr=uart@43B90000

      stdin=uart@43B90000

      stdout=uart@43B90000

      tftpboot_cmd=run ensure_ip; tftpboot $kernel_addr Image; tftpboot $fdt_addr hobot-j5-fpga.dtb;booti $kernel_addr - $fdt_addr

      vendor=hobot

      Environment size: 2404/4092 bytes

      2022-11-25
      0
  • Daitao
    Lv.1

    您好:

    这个问题地平线内部分析发现由于对贵司释放的0907的BSP版本为中间过程测试用版本,avb被关闭了,如果板子中已经存在关闭avb版本,再升级avb打开版本就会存在这个问题。新的BSP版本已经再Git上释放,还请更新BSP。

    谢谢

    2022-11-28
    0
    2
    • 共产主义接班人回复Daitao:

      好的,谢谢

      2022-11-28
      0
    • 共产主义接班人回复Daitao:

      问题已解决,可关闭,谢谢!

      2022-11-28
      0