专栏底层软件ota_tool升级失败

ota_tool升级失败

已解决
默认708482024-08-15
188
27

用户您好,请详细描述您所遇到的问题,详细的描述有助于帮助我们快速定位,解决问题~Thanks♪(・ω・)ノ

1. 硬件获取渠道及型号: 公司购买

2. 系统镜像版本: J6E BSP 061版本

3. 问题模块: 底层软件

4. 问题描述: ota_tool升级用bd otapackage middleware打包的升级包时,提示分区大小不一致,导致无法升级,升级包中的gpt.conf中的数据是怎么来的,系统中的/sys/class/mtd/mtdX/xxx中的数据是怎么来的,如果出现不一致,需要怎么修改,有什么需要注意的?

5. 示例代码:


6. log文件(目前暂不支持附件上传,请通过百度网盘上传后贴链接):

OTA_INFO][ota_update.c:1349] img name [/ota/unzip/middleware.img]; size: [1717567488]

[OTA_INFO][ota_update.c:1363] verify system image success!

[OTA_ERROR][ota_update.c:1071] nor:6817792 and 42993664 compare failed!

[OTA_ERROR][ota_update.c:1274] nor partition verify failed

[OTA_ERROR][ota_process.c:184] OTA process run failed, exit

[OTA_ERROR][hobot_ota_hl.c:165] ota process 1613 exit with 255

[OTA_INFO][ota_utils.c:238] unlock file /tmp/ota.lock successfully

底层软件
征程6
评论4
0/1000
  • 费小财
    Lv.5

    我们有几个版本更新了分区表 只能通过fastboot刷新的

    从日志信息看,nor分区表有变更,需要通过fastboot烧写了,ota不行了

    2024-08-15
    0
    19
    • 默认70848回复费小财:

      如果otapackage中的gpt.conf和现有分区表数据一致是不是就能用ota升级了?

      我用同一套代码编译出镜像和otapackage升级包,先用fastboot把镜像烧录一遍,分区是不是就改变成跟otapackage里的gpt.conf一致了?这时候可以用ota_tool升级了吗?分区改了的情况怎么才能用ota升级啊,现在任务是要求用ota完成升级。怎么才能保持otapackage里的gpt.conf跟现有分区一致啊?

      另外otaGetProgress和 otaGetUpdatingImageName实际调用发现大概到85%以后才有返回值,之前的都是0

      2024-08-15
      0
    • 费小财回复默认70848:

      就是要先fastboot 升级一次就可以用ota了

      2024-08-15
      0
    • 默认70848回复费小财:

      我上面的方法也是这么操作的,实际上用ota_tool进行升级的时候还是报错

      是不是哪里操作不对,是用同一套代码编译出镜像和otapackage,把编译出的镜像用fastboot烧录一次,再用ota_tool升级otapackage就行啊?具体能说详细一点吗?

      另外,分区是怎么修改的啊?

      2024-08-15
      0
    • 费小财回复默认70848:

      你有改分区表吗?要重新bd otapackage all才行的

      2024-08-15
      0
    • 默认70848回复费小财:

      我没改分区表啊,也不知道怎么改,就想怎么把otapackage里的gpt.conf跟系统现在的分区一致,然后用ota_tool升级

      otapackage也是用bd otapackage all生成的,也是在

      我的编译命令是:

      2024-08-15
      0
    • 费小财回复默认70848:

      你是用./flash_all.sh -m disk 这个先整刷的吗,我们一般是就升级all in one zip的,可以试试middleware

      2024-08-15
      0
    • 默认70848回复费小财:

      all_in_one.zip是ota的包吧,现在问题是ota刷不成功,所以先用./flash_all.sh -m blk -b mmc整刷,不知道这个整刷是否有更新分区表

      2024-08-15
      0
    • 费小财回复默认70848:

      你是什么时候的版本

      2024-08-15
      0
    • 费小财回复默认70848:

      你先确定下你是几号的版本,

      0701之后的版本需要通过./flash_all.sh -m disk 先整刷 这个会更新分区表,然后进行ota_tool -p all_in_one_full.zip
      如果是0701之前的版本 ./flash_all.sh -s all -f MCU_Cluster0_J6M_EVM_V1.0.img 然是再整刷,我们这边都是这么更新的,不会有问题的,如果这样还有问题 你把每一步执行的日志都贴出来
      2024-08-16
      0
    • 默认70848回复费小财:

      我用的版本是0.6.1,大约是7月30日的


      fastboot的升级流程:

      1,拨码开关:usb 模式: 1:no

      2,重启

      3,usb_serial_download.bat J6M_MCU_SIP_Matrix_V1.1_jh.bin

      4,norflash 刷写

      cd disk

      fastboot oem interface:mtd

      fastboot flash hb_vspiflash flash_disk_J6M_SIP_Matrix_V1.1_nonsec.img

      5,fastboot oem interface:blk

      fastboot oem bootdevice:scsi

      fastboot flash gpt gpt_main_ufs.img

      6,./flash_all.sh -m blk -b mmc

      7. 断电 拨码恢复 重启 


      2024-08-16
      0
    • 费小财回复默认70848:

      第六步 你换成./flash_all.sh -m disk 这个,我们这边现在都是这个后 ota都没问题的

      你这个看上去只升级了emmc,ota应该是不行的

      2024-08-16
      0
    • Pipeline回复默认70848:

      第五步烧写的是ufs的分区表镜像,第六步又强制烧写acore和mcore镜像到emmc,这是不是冲突了,先判断一下板子现在启动方式?

      2024-08-16
      0
    • 默认70848回复费小财:

      第三步,usb_serial_download.bat J6M_MCU_SIP_Matrix_V1.1_jh.bin 中J6M_MCU_SIP_Matrix_V1.1_jh.bin文件是其他同事编译的,并不是bdall里面的文件,这个对后面ota升级有没有影响啊?

      2024-08-16
      0
    • 费小财回复默认70848:

      没关系的 刷起来后,./flash_all.sh -m disk会覆盖到最新的,除非你需要这个,需要这个的话 就需要匹配关系,如不匹配就不能ota,应该双向要对齐的

      2024-08-16
      0
    • 默认70848回复费小财:

      最后一步换成./flash_all.sh -m disk刷完后,进行ota报下面错误:

      这个又是什么问题啊?

      2024-08-16
      0
    • 费小财回复默认70848:

      ipc挂了, 还是没有分区表

      ls /dev/mtd*


      你有额外的操作的吗 或者改动的?

      2024-08-16
      0
    • 费小财回复默认70848:

      你非要用上面的mcu吗 3,usb_serial_download.bat J6M_MCU_SIP_Matrix_V1.1_jh.bin

      这个mcu看着会把ipc搞挂了,导致fastboot更新都有问题的,你看看看不能都用发布的版本,然后mcu也基于发版的版本更新的

      在uboot下执行下mtd list

      2024-08-16
      0
    • 默认70848回复费小财:

      /userdata/下没有空间把一个文件临时放/ota目录,忘了删,刚才删了,重新刷没有报空间问题了,但是还是报/sys/class/mtd/mtd1/name not found!

      ls /dev/mtd* 没有mtd

      执行的就是上面7步,然后最后一步换成./flash_all.sh -m disk

      你说的额外操作或改动是指什么?我自己bdall 打包镜像和otapackage,但是刷写的时候,第三步,替换了同事编的J6M_MCU_SIP_Matrix_V1.1_jh.bin包,bdall的时候不是这个包




      2024-08-16
      0
    • 费小财回复默认70848:

      可能也不行的,你最好dfu刷mcu的话 也先用发布的版本,看着报错像是ipc的问题,最好是先都用发布的更新后 再考虑通过dd的方式去更新对应的mcu

      2024-08-16
      0
  • ZhiyuanMa
    Lv.1

    ota运行在用户态,为了防止变分区升级过程中导致ota运行环境破坏,导致车上ota变砖,ota进行了变分区保护。请参考楼上其他升级方式进行升级。另外回答您的问题:升级包中的gpt.conf是编译阶段解析分区配置文件生成的。sys下mtd分区信息是mtd驱动生成的。板端mtd分区信息来自nor分区表。

    2024-08-15
    0
    4
    • 默认70848回复ZhiyuanMa:

      升级包中的gpt.conf是根据这些文件中的信息拼接的起始和终止地址吗?这个怎么跟mtd分区信息对应啊?两个部分的值怎么达到同步啊?如果要修改是手动修改两个地方还是有其他方法?

      另外您提到的mtd分区信息来自nor分区表,这个代码什么地方啊?

      2024-08-15
      0
    • ZhiyuanMa回复默认70848:

      out下搜一下j6e-gpt.json 根据这个来的,不过这个也是根据上面你发的那些配置自动生成的

      2024-08-15
      0
    • 默认70848回复ZhiyuanMa:

      这个命令是不是并没有把所有镜像都刷一遍吧,是不是只刷mmc分区啊,没有更新gpt.img导致后面ota升级的时候gpt.conf跟板子的mtd信息不一致啊?

      2024-08-15
      0
    • ZhiyuanMa回复默认70848:

      -m disk会全烧。不过不清楚您拿到的镜像什么时候的版本,这个应该是最近一个月左右刚支持。

      2024-08-15
      0
  • 费小财
    Lv.5

    你好,

    你是从几号的版本升级到几号的版本的

    2024-08-15
    0
    0
  • guo
    Lv.3
    现版本和目标升级版本分区消息有变化吧,建议串口fastboot升级,建议参考文档2. 镜像烧写工具使用 2.1.5. Fastboot(USB)

    2024-08-15
    0
    0