Edit online

系统更新

Read time: 5 minute(s)
本节介绍系统更新的方式及其具体流程。

了解系统更新的概念和途径有助于理解系统更新的具体流程并选择合适的升级方式。

系统更新涉及以下概念:
  • 刷机流程:借助专门的刷机工具,清除存储介质上的所有的数据, 并重新进行存储分区、坏块管理、固件写入等不可逆操作。

    刷机一般仅在工程调试、生产时使用,因为可能具有如下风险:

    • 导致用户所有数据丢失。
    • 尽管 AiBurn 刷机工具可以刷单个分区,确保不破坏其它分区的数据,但可能引起各个分区的数据不匹配,导致系统异常。
  • 升级:直接更新现有系统,不涉及磁盘分区等操作,是一种相对安全的用户机系统更新方案。

    升级流程中会设置保护现有数据的逻辑,并且支持升级中断,固件损坏等异常场景的处理。

    升级具有以下特点:

    • OTA 流程:使用网络下载升级包到本地后,使用下载包升级系统。
      • 对固件制作有一定要求,需要制作专门的升级固件。
      • 需要预留较多存储空间,一般要求预留 1.5 至 3 倍的存储空间。

      关于 OTA 升级逻辑的详细使用说明,可参考 OTA 方案

    • Recovery 升级: 固件包含一个正式运行系统和一个小的 Recovery 系统,升级时先切换到 Recovery 系统,再更新整个系统。
      注: AIC Luban SDK 使用 Recovery 升级。
      Recovery 系统具有以下特点:
      • 仅用于更新,功能简单而健壮。

      • 一般比较小以节省存储空间。

      • 可以保证升级成功。

    • 双系统升级:Ping-Pong 系统,固件同时有两个系统,一个运行系统和一个备份系统。
      注: AIC Luban SDK 使用 双系统 升级。
      双系统具有如下特点:
      • 导致存储容量增大一倍

      • 系统更新时当前运行系统更新备份的系统,更安全

      • 升级成功后重启切换到新系统,原系统作为备份
Edit online

平台升级方式

Read time: 5 minute(s)

D21x

1. D21x

功能

USB 线

串口线

SD 卡

U 盘

刷机

支持

不支持

支持

不支持

升级

支持

不支持

支持

支持

D13x

2. D13x

功能

USB 线

串口线

SD 卡

U 盘

刷机

支持

支持

支持

支持

升级

支持

支持

支持

支持

G73x

3. G73x

功能

USB 线

串口线

SD 卡

U 盘

刷机

支持

支持

支持

支持

升级

支持

不支持

支持

支持

D12x

4. D12x

功能

USB 线

串口线

SD 卡

U 盘

刷机

不支持

支持

支持

不支持

升级

不支持

不支持

支持

不支持

Edit online

刷机流程

Read time: 5 minute(s)
开发板只有进入到刷机模式才能进行刷机操作,使用下列任意方法可进入刷机模式:
  • 空片直接进入:开发板上存储介质为空片,则上电直接进入刷机模式。

  • 短路烧录引脚:短路烧录引脚(PA0)到地,则上电直接进入刷机模式。

  • 按住刷机键:如果开发板有刷机按键,则按住刷机键上电或者 reset,进入刷机模式,开发板上标注为 uboot 按键。

  • 短路存储介质引脚:短路存储介质的 command、clk 等引脚到地,造成读数据失败,则上电直接进入刷机模式,如短路 SPI NAND 的 4、5 脚。

  • 通过控制台命令:如果开发板能进入 U-Boot ,在开机的过程中按住 Ctrl + c, 则系统会进入 U-Boot 控制台,输入 aicupg usb 0 命令可以进入烧写模式。

  • Linux 控制台命令:如果开发板能能进入 Linux 控制台,输入 aicupg 命令,系统可以重启后进入烧写模式。

  • ADB 服务:如果开发板能能进入 Linux 系统,并且 ADB 服务开启,刷机工具会检查到设备并使能 “开始” 按钮,可以直接点击开始刷机。

刷机流程的详细说明如下所示:

  1. 等待系统上电,启动 SoC 内部的 BROM 程序。

  2. BROM 按照如下顺序检查存储介质中是否有系统数据:

    • SDMC1 (SD 卡)

    • SPI NAND

    • SPI NOR

    • SDMC0(eMMC)

  3. 根据检测到的存储介质中的数据,BROM 执行以下相应启动操作:
    • 如果检测到 SD 卡,且 SD 卡为启动盘,执行卡启动。
    • 如果检测到 SD 卡,且 SD 卡中是 FAT32 文件系统,并且有刷机的两个文件,则进行 SD 卡刷机。
    • 如果检测到存储介质 SPI NAND、SPI NOR 或 eMMC,且其中含有数据,则执行启动系统。
  4. U-Boot 执行以下检查,并根据检查结果,进入不同模式:
    • 检查刷机键 (PA0)是否被拉低,拉低则进入刷机模式,否则启动 kernel。
    • 检查 U 盘 (USB0)中是否是 FAT32 文件系统,并且是否有刷机的两个文件,两个条件均满足则进行 U 盘刷机,否则启动 kernel。

      kernel 启动成功后会挂载 rootfs,系统正常启动。


    burnsys_flow

Edit online

OTA 流程

Read time: 5 minute(s)
  1. 系统启动到正常状态,准备升级需要的固件。

  2. 通过 OTA 方式下载固件到本地,或通过 SD 卡,U 盘,USB 线等外部存储器将固件复制到本地。

  3. 设置升级标记,重启系统。

    系统重新启动后会进入升级系统,

  4. 升级开发板到新的固件。

    升级过程中出现异常掉电,下次启动还能够继续完成剩下的升级过程。

    升级完成后重新启动系统即可进入新系统。


burnsys_ota

关于 OTA 升级逻辑的详细使用说明,可参考 OTA 方案

Edit online

系统更新媒介

Read time: 5 minute(s)

  • SD 卡:SD 卡作为存储介质存放要更新的固件更新系统

  • USB 线:设备通过 USB 线和计算机相连,通过计算机上的刷机工具:AiBurn 更新系统

  • U 盘:U 盘作为存储介质存放要更新的固件更新系统

  • 串口线:设备通过串口线和计算机相连,通过计算机上的刷机工具:AiBurn 更新系统
  • 网络:通过网络 (有线、无线、CAN 等)的方式下载升级包到本地,再更新系统

Edit online

USB 线

Read time: 5 minute(s)

使用 USB 线可以实现下列系统更新方式:

刷机

使用 USB 线时,可借助 AiBurn 工具进行刷机操作,详细信息请参考AiBurn 使用指南

升级

  1. 借助 USB 线,执行下列命令,通过 ADB 方式将需要升级的固件推送到内部存储中:
    adb push dxx_demoxxx_nand_page_2k_block_128k_v1.0.0.img   /mnt/

    ADB 是 Android 手机流行后的一个较为通用的 USB 通信方式。

  2. 调用 OTA 的升级逻辑完成系统升级。

    关于 OTA 升级逻辑的详细使用说明,参考 OTA 方案

Edit online

串口线

Read time: 5 minute(s)
串口线可以借助 AiBurn 进行刷机,但具有下列限制:
  • 一般情况下,串口烧录速度比较慢,烧录速度在几个到几十个 KB 之间。

  • 使用普通的 USB 转串口,建议使用 115200 的波特率。

  • 仅 uart0 支持串口烧录。

设置 AiBurn 工具

在正式烧录之前,按照下列流程设置 AiBurn 工具:
  1. 选择连接方式:串口

  2. 选择串口号:PC 上的烧录串口的设备号

  3. 设置波特率:支持 115200、921600、1M 和 3M 配置。

    波特率越高,升级越快,但对串口设备的性能要求越高。设置之前,确认所使用的串口线是否支持选中的波特率。

  4. 固件:串口烧录对固件不做特殊更改


burn_serial

烧录镜像(串口)

如需进行串口烧写,设备需使用单独的电源,不能通过 PC 的 USB 口或者 HUB 供电,否则 PC 会将其识别为 USB 设备。

按照下列步骤流程,打开串口并进行烧录:

  1. 使开发板进入刷机模式。

  2. 打开 AiBurn 工具的烧写镜像界面。

    详细操作,可参考烧写镜像

  3. 点击连接按钮,建立 AiBurn 到开发板的通路,通过串口获取设备硬件信息。

    如果右下角显示下列设备硬件信息,表示连接成功:
    ArtInChip 设备已连接

    burn_serial_hdinfo

  4. 连接成功后,点击开始,执行烧写流程。


uart_burnsys1

工具推荐

串口线的品质对烧录的影响比较大,下图为测试的不同工具的性能和稳定性,推荐 CH343 的型号: https://detail.tmall.com/item.htm?_u=u3eibcm9050&id=677699341024&spm=a1z09.2.0.0.43da2e8diEP1l3


uart-test

Edit online

SD 卡

Read time: 5 minute(s)

作为一种通用存储介质,SD 卡在 Luban-Lite 的刷机系统中有三种工作模式。

制作启动卡

使用 SDK 时,可以将 SD 卡作为一种通用存储设备,来创建系统分区和存储系统文件。此时,需要通过 AiBurn 制作一张启动卡,并将其插到开发板后上电启动即可。
  1. 以管理员身份运行 AiBurn 刷机工具。
    run_by_admin

    制作启动卡时必须开启管理员权限。

  2. 打开制作启动卡标签页。

  3. SD 卡 的选择框中,选择需要写入的 SD 卡。

    必须选择准确的 SD 卡,避免将其它移动存储设备的数据写坏。以选中 TeclastCoolFlash 为例,页面会出现以下警告提示:
    sdcard_notation

    如果 SD 卡中有烧写过镜像,根据用户选择的镜像文件和 SD 卡中的镜像文件是否一致,在制作启动卡界面,会显示不同提示信息,示例如下:





  4. 点击开始,完成写卡操作,将镜像文件写入到用户选中的 SD 卡中。

    此时页面会出现如下提示信息:
    sdcard_burning1

    注:
    制作启动卡的镜像文件必须是 MMC 类型的存储介质,如果存储介质有误,点击开始会出现下列错误提示信息。关于固件说明,可查看

  5. 当制作启动卡完成后,如果 Windows 系统提示是否要将其格式化,选择 取消忽略此消息,否则跳过此步。

    启动卡采用的分区格式不是 Windows 系统的常规文件系统,因此会出现此提示信息。

    故障:

    如果系统提示制作启动卡失败,可在格式化 SD 卡后重复制作启动卡的操作。

卡刷机

SD 卡刷机的逻辑检测在 BROM 中进行,需要刷机的 SD 卡必须满足下列要求:

  1. 将 SD 卡格式化成单分区的 FAT32 文件系统。

  2. 复制刷机固件到 SD 卡中,如 d211_demo128_nand_v1.0.0.img

  3. 复制固件的配置文件 bootcfg.txt 到 SD 卡中。

  4. 插卡上电启动开发板,自动进行刷机。

  5. 刷机的时候屏幕上会提示 AiBurn SDCard

  6. 刷机成功屏幕上会提示 AiBurn done

卡升级

卡升级是指将升级固件存储到 SD 卡上后调用 OTA 的接口进行升级。

关于 OTA 卡升级的详细使用,可参考 OTA 方案

Edit online

U 盘

Read time: 5 minute(s)

U 盘刷机

U 盘刷机的一般流程如下所示:

  1. 将 U 盘格式化成单分区的 FAT32 文件系统。

  2. 复制刷机固件到 U 盘中,如 d211_demo128_nand_v1.0.0.img

  3. 复制固件的配置文件 bootcfg.txt 到 U 盘中。

  4. 插卡上电启动开发板,会自动进行刷机。

  5. 刷机的时候屏幕上会提示 AiBurn UDISK

  6. 刷机成功会屏幕上会提示 AiBurn done

对于不同系列的开发板,U 盘刷机逻辑可能不同,注意根据不同的开发板系统启动逻辑执行刷机。例如:
  • 在 D21x 上,U 盘刷机的逻辑在 UBoot 中进行,因此使用 U 盘刷机的前提是开发板曾经成功刷新过系统,内部存储上保留了 UBoot 系统并且 UBoot 可以启动。

    在 D13x 或 D12x 上,U 盘刷机的逻辑在 BROM 中进行。

U 盘升级

  1. 将需要升级的固件存储在 U 盘上。
  2. 调用 OTA 的接口进行升级。

    升级的详细使用请参考 OTA 方案