7.5.2. 系统镜像升级

本章节我们将会围绕X3 SDB开发板介绍如何进行板卡系统固件升级,X3 DVB、J3 DVB开发板使用方法与X3 SDB类似。

7.5.2.1. 系统镜像

XJ3处理器的系统为 嵌入式Linux ,固件采用预先编译好镜像 X3-Img-${version}.tgz,解压后文件夹名称为 PLATFORMSDK_OUT

PLATFORMSDK_OUT目录中包含了每个分区镜像及 gen_disk.sh 打包脚本,说明如下:

bash gen_disk.sh -h
  usage: gen_disk.sh <-b board> [-s] [-u] [-t Debug/Release] [-i uboot] [ -l ] [-o output_file] [-F]
  avaliable board  : -b xj3(auto detect), x3dvb, j3dvb, xj3cvb, x3sdb, customer board
  output file name : -o specify the output file name instead of generate automatically
  secure image     : -s generate secure image
  unittests        : -u generate images with unittests
  uboot image      : -i uboot    contain the image before uboot partition
  optimize boot    : -l reduce boot log for performance test and projects that are needed
  ddr infomation   : -m specify ddr info(type, frequency, capacity is optional) e.g. hynix_lpddr4_2666_2g                                The order of the ddr information is arbitrary, and you can also set only a few of ddr informations
  dual_boot        : -d generate dual_boot disk image, currently only supported on emmc
  force generate   : -F ignore any missing files and generate disk.img
  dfs boot         : -k generate image to support dfs, suspend/resume need dfs support
  cvb power test   : -c generate image to support cvb 3200 power test
  pin secure mode  : -p generate image to support boot pin secure mode to test suspend/resume
  ddr_alternative  : -a set ddr_alternative, set to 2 in xg is used for xg-2g
  4096 nand page   : --nand_4096 generate nand image of 4096 page size
  ex: build xj3 UT disk image           :   ./gen_disk.sh -b xj3 -u
      build xj3 normal disk image       :   ./gen_disk.sh -b xj3
      build xj3 micron ddr4 disk image  :   ./gen_disk.sh -b xj3 -m micron_ddr4
      build xj3 secure disk image       :   ./gen_disk.sh -b xj3 -s -F
      build xj3 UT dual boot disk image :   ./gen_disk.sh -b xj3 -u -d

您可以在板端执行 hrut_boradid g 获取开发板的硬件信息,然后根据 hrut_boardid 章节描述的对应值使用 gen_disk.sh 生成对应的升级镜像。 gen_disk.sh 脚本所生成的镜像受具体参数设置的影响,故您需要先根据开发板硬件信息修改对应参数,然后再进行编译。以下为一些编译示例:

./gen_disk.sh -b xj3 -u -t Release -m micron_ddr4_3200_1g -a 2 -F -s
./gen_disk.sh -b x3dvb -m micron_ddr4_3200_1g -s -F
./gen_disk.sh -b j3dvb -u -t Release -m hynix_lpddr4_3200_2g -a 2 -F

7.5.2.2. 升级工具

针对板卡系统升级,我们提供了一键式工具hbupdate,支持通过网口,串口以及USB口对板卡进行升级,可以从OE包的 bsp/tools 目录下执行 resolve.sh 脚本进行获取。 其中包括:

  • 0A_PL2302-USB-to-Serial-Comm-Port.zip:PL2303串口驱动。

  • 0A_CP210x_USB2UART_Driver.zip:CP210X串口驱动。

  • 0A_PL2303-M_LogoDriver_Setup_v202_20200527.zip:PL2302串口驱动。

  • 0B_hbupdate_win64_${version}.zip:用于Window 64环境下的一键式升级工具。

  • 0B_hbupdate_linux_cli_${version}.tgz:用于Ubuntu环境下的命令行升级工具。

  • 0B_hbupdate_linux_gui_${version}.tgz:用于Ubuntu环境下的一键式升级工具。

  • 0B_hbupdate_mac_${version}.app.tar.gz:用于MacOS环境下的一键式升级工具。

在连接开发板进行hbupdate之前,请优先在你的宿主机系统中安装串口驱动,我们默认提供了CP210X、PL2302、PL2303系列串口驱动,请根据你的宿主机系统选择对应驱动进行安装,或者依次尝试。如果三个驱动安全完成后还是无法正确连接开发板,请联系地平线技术支持进行解决。

注意

在执行升级之前,请将升级工具添加至杀毒软件白名单中,或关闭杀毒软件,否则可能导致升级失败。

打开hbupdate升级工具,会有如下操作界面。(此处仅以v1.1.0hbupdate升级工具为例,其他版本升级工具和镜像操作方式类似)

../../../../_images/hbupdate_full.png
  • 文件

    • 语言切换——可以切换”中文”,”English”。

    • 保存设置——对当前界面进行保存,下次打开软件后,所有设置与保存前相同。

    • 退出——关闭软件。

  • 产品类型: 可以选择产品类型下支持的产品,对于X3生态开发板(xj3_sdb),请选择 XJ3-key1

  • 擦除: 这里列出来的擦除分区列表是和 data/board_config/xj3-key1/xj3_dvb.json 中的”erase_part”字段是对应的。

    注意

    注意:这里默认擦除是只擦除每个分区的superblock分区大小,如果是要整个分区强制全部擦除,要勾选上下面的 整个分区擦除 选项(这样做会减小storage使用寿命,时间也会更久一点)。

  • 波特率: 可以在界面进行波特率的设置,不需要再修改json文件。

  • 分区备份: 这里只有 uart/uboot + fastboot 的方式才可以使用该功能。

  • 产品名称: 可以选择开发板的产品名称,对于 X3 生态开发板(xj3_sdb),请选择 xj3_sdb

  • 下载模式: 支持 ”ota”、”uboot”、”uart”、“fastboot”、“ota_old” 五种模式。

  • 下载方式: 支持 ”sftp”、 ”tftp”、”adb”、”uart”、”fastboot”、“fastboot-udp” 六种方式,配合下载模式使用,在不同的下载模式选择下,您可见的下载方式会对应下载模式而有所不同。

  • 内存类型: xj3_sdb生态板默认为samsung颗粒,此处可不用选择。

  • 升级后检查: 此选项只适用于 “uboot” 和 “uart” 两种 “下载模式”。

    注意

    注意:如果勾选此处,将会在升级结束后自动重启开发板,若能正常进入X3端Linux shell则判定为升级成功。 如果不勾选则升级完成后不对开发板做任何操作,需由您自行重启检查。

  • 显示串口输出: 勾选后,板子的串口输出内容会显示在 “升级信息” 中,方便进行debug。

  • 板端配置: 包括开发板IP地址,网关地址,MAC地址和子网掩码。

    • CP IP地址: 如果需要升级的产品CP端有网口,那么此处填写的是CP端的IP地址,用于CP端从PC下载镜像。

    • AP IP / MAC 地址: 如果产品AP端有网口,则此处填写AP端的IP地址。需要确保电脑可以通过此IP地址访问到板子。 如果产品没有AP端,且选择”uart”或”uboot”升级方式时,此处填写uboot命令行下设置的MAC地址,格式为: *:*:*:*:*:* ,如 00:05:01:02:03:04

      注意

      注意:不要手动配置PC IP地址为 169.254. 打头。

    • 网关地址: 如果选择的产品类型CP端有网口,且在uboot/uart升级模式中,那么此处填写的是CP端的网关地址,对于板子和电脑直连的情况,网关地址填写为电脑与板子连接网卡的IP地址。如果产品由AP端连接至PC,无需填写。

    • 子网掩码: 如果选择的产品类型CP端有网口,且在uboot/uart升级模式中,那么此处填写的是CP端的子网掩码。如果产品由AP端连接至PC,无需填写。

  • PC配置: 包括串口和PC IP地址。

    • 串口: 选择CP端连接电脑后识别到的串口号,后面的“刷新”按钮用于插拔串口线后刷新串口列表。

      • 如果升级模式为“OTA”,则可以选择“N/A”,表示不使用串口。

      • 如果选择tftp/sftp模式,将通过网口对于CP端操作。

      • 如果选择adb模式,将通过usb线对于CP端操作。

      • 如果升级模式为“fastboot”,串口强制为“N/A”,将通过usb线对于CP端操作。

    • IP 地址: 如果选择fastboot模式或者ota+adb模式,选择相应的adb或fastboot设备,其他模式则配置PC端与产品联通的电脑网卡的IP地址。后面的“刷新”按钮用于刷新PC的IP地址列表。

  • 镜像文件: 选择 .img 文件,注意:路径和文件名不能包含中文、空格。

注意

  1. 升级工具串口默认波特率为 921600,开发板的DIP开关需要调整为 921600 模式。

  2. 升级工具的解压路径和镜像文件的存储路径不能包含中文字符或空格。

  3. 串口不能重复打开,否则点击 “开始升级” 后会提示错误,ubuntu 系统下可能存在串口能重复打开的情况,但是依旧会导致下载失效。

  4. 升级工具要求强制开启tftp服务,若工具不能申请到69号端口,软件将在报错后关闭,此时需要检查系统本身是否有其他应用打开tftp服务,或系统是否自带tftp服务,或者是否多次打开下载工具。

  5. 多数升级情况需要网络,请确定设备IP和宿主机IP保持在同一网段,网段内不能有重复IP,且两者的IP&掩码相同。

  6. 升级工具对设备进行升级时,不会对userdata分区进行升级,以保护您的数据不被覆盖。

  7. 镜像烧录后,默认只有/app和/userdata目录有写入权限,若希望所有分区和目录都可以写入可以执行: mount -o remount,rw / 获取写入权限。

7.5.2.3. 升级方式

处理器镜像升级共支持 Uboot升级方法——网口, Uboot升级方法——USB, UART升级方法, OTA升级方式 四种方式, 其中开发板系统可用的情况下,优先推荐选择Uboot升级方法——网口,Uboot升级方法——USB以及OTA三种升级方式;如果开发版系统不可用,你可以选择UART对开发板进行系统恢复和升级。

注解

升级工具界面设计随版本不同可能会有所变化,下方说明仅为供您参考的示例。

7.5.2.3.1. Uboot升级方法——网口

网口Uboot升级方法是指开发板可以正常启动进入系统的状态下,工具通过串口下发重启命令并驻留在Uboot中,然后通过网口完成镜像文件的传输和升级。

由于工具的网络传输依赖tftp服务,您需要保证PC环境中没有其他软件占用TFTP服务,且开发板和PC应处于同一网段内(前三段IP地址一致)。

升级工具需要按照下图标识进行配置:

  1. 产品类型,选择 XJ3-key1

  2. 产品名称,选择 xj3_sdb 生态开发板。

  3. 下载模式,选择 uboot

  4. 下载方式,选择 tftp

  5. 开发板IP地址,升级时由工具下发配置,前三段IP地址一致。

  6. 开发板网关地址,升级时由工具下发配置。

  7. PC机IP地址,应保证能够ping通开发板IP,前三段IP地址一致。

  8. 开发板串口,默认波特率921600,串口需选择COM3。

  9. 镜像文件,选择 .img 文件,路径和文件名不能包含中文、空格。

../../../../_images/uboot_upgrade.png

7.5.2.3.2. Uboot升级方法——USB

USB Uboot升级方法是指开发板可以正常启动进入系统的状态下,工具通过串口下发重启命令并驻留在Uboot中,然后使用USB fastboot完成镜像文件的传输和升级。

其中fastboot传输需要PC驱动的支持,用户需要保证PC安装fastboot驱动,并能够正常识别X3 fastboot口。

升级工具需要按照下图标识进行配置:

  1. 产品类型,选择 XJ3-key1

  2. 产品名称,选择 xj3_sdb 生态开发板。

  3. 下载模式,选择 uboot

  4. 下载方式,选择 fastboot

  5. 镜像文件,选择 .img 文件,路径和文件名不能包含中文、空格。

  6. 开发板串口,默认波特率921600,串口需选择COM3。

../../../../_images/fastboot_upgrade.png

7.5.2.3.3. UART升级方法

UART升级方法是指工具在X3上电之前,通过串口发送UART启动指令,当X3上电检测到该指令后,会跳转进UART启动模式中,之后工具通过UART下发预置在工具中的SPL、Uboot镜像,当X3完成并跳转进Uboot中之后,才可以通过网口或USB口升级您指定的镜像。

当X3SDB开发板变砖或者空片时,需要通过UART升级方法进行修复升级。升级工具需要按照下图标识进行配置:

  1. 下载模式,选择 uart

  2. 内存类型,X3SDB开发板选择 lpddr4-samsung-3200-110

  3. 镜像文件,选择 .img 文件,路径和文件名不能包含中文、空格。

../../../../_images/uart_upgrade.png

7.5.2.3.4. OTA升级方式

OTA升级方式是地平线在X3平台开发的一套在线升级demo方案,可以实现基本的在线升级功能,该功能只会升级uboot之后的分区文件,包含kernel、rootfs等。

解压镜像文件后使用ota文件夹下的 all_disk.zip

  1. 产品类型,选择 XJ3-key1

  2. 产品名称,选择 xj3_sdb 生态开发板。

  3. 下载模式,选择 ota

  4. 下载方式,选择 sftp

  5. 镜像文件,选择 all_disk.zip ,路径和文件名不能包含中文、空格。

  6. 开发板IP地址,需要与PC位于同一网段内。

../../../../_images/ota_upgrade.png

注解

升级完成后可以使用 hurt_ipfull 设置开发板的IP,详细使用方法可参考 hurt_ipfull工具介绍 小节。