Edit online

运行和烧录客制化程序

Read time: 4 minute(s)

要运行上面生成的 app.aic 程序,有三个途径:

使用 USB/UART 工具下载运行

当 Flash 中没有可启动的镜像时,Boot ROM 会启动失败,自动进入 USB/UART 升级模式。遵照以下步骤,下载和运行客制化的启动镜像:
  1. 选择以下任意一种方式及相应操作:
    • 使用 USB 线连接板子和电脑,电脑可识别设备

    • 使用串口线,连接板子的 UART0
  2. 安装 AiBurn 工具,并且在安装过程中选择安装 USB 驱动。
  3. 使用 AiBurn 安装目录下的 upgcmd.exe 工具下载并运行 app.aic
    使用以下任意方式运行的 app.aic 程序:
    注:

    当 Flash 有合法的启动镜像时,上电芯片会优先从 Flash 启动,不会进入升级模式。

    • USB 下载:
      upgcmd.exe -l  # 确认板子连接成功
      
      upgcmd.exe write 0x30044000 app.aic # 将 app.aic 下载到 Load address 处
      upgcmd.exe exec 0x30044000          # 跳转运行 app.aic

      此时 Boot ROM 校验并且运行 app.aic

    • UART 下载:
      upgcmd.exe -u COM3 -l  # 确认板子连接成功,此处的 COM3 应根据实际情况做修改
      
      upgcmd.exe -u COM3 write 0x30044000 app.aic # 将 app.aic 下载到 Load address 处
      upgcmd.exe -u COM3 exec  0x30044000         # 跳转运行 app.aic

放到 SD 卡中运行

如果 SDMC1 对应的卡座上插入了 SD 卡,上电启动过程中,总是优先检查 SD 卡,因此将 app.aic 放到 SD 卡中总是会被执行。具体如下:

  1. 准备一张市面上常见的 SD 卡,即 TF 卡。

  2. 格式化为 FAT32/exFAT 文件系统,确保只有一个分区。

  3. 参照下面的格式写一个 bootcfg.txt 文件,并且将 bootcfg.txt 和 app.aic 一起复制到 SD 卡文件系统的根目录。
    boot0=app.aic  # 此处 boot0 是一个关键字,app.aic 可根据实际情况修改
    
    注:

    bootcfg.txt 中如有换行符,请确保使用 UNIX 格式的换行符,即 ‘\n’,不能是 ‘\r\n’。

  4. 插卡到 SDMC1 对应的卡座,重启板子,即可运行 app.aic。

烧录到 Flash 中运行

  • 自定义烧录

    Boot ROM 升级模式不支持烧录 Flash。 如果不使用 Luban-Lite SDK 的 BootLoader 烧录方案,则需要自定义烧录功能。

    开发者需要本节介绍如何自行实现一个自定义一个带烧录功能的程序,如 flashwriter.aic ,通过 USB/UART/SD 卡等方式运行后起来,然后将 app.aic 烧录到指定的存储介质中。

    • 通过 USB/UART 烧录:
      1. 通过 USB/UART,使用 upgcmd.exe write 命令将 app.aic 先写入到一个预设的 SRAM 空间。在命令行中执行以下命令:
        upgcmd.exe write /path/to/app.aic /path/to/sram_storage
      2. 下载运行 flashwriter.aic ,由 flashwriter.aic 从该位置 SRAM 存储中读取 app.aic 的数据,并写入将其烧录到 Flash。

    • 通过 SD 卡烧录:
      1. 将 SD 卡插入开发板,并将 flashwriter.aic 烧录到 SD 卡的 FAT32 文件系统中。
      2. 启动开发板,使其从 SD 卡启动并运行 flashwriter.aic。

      3. flashwriter.aic 程序从 SD 卡的文件系统中读取 app.aic 的数据,并写入将其烧录到 Flash。

      烧录位置可能因存储介质类型而异:
      • 对于 SPINOR,只需将 app.aic 直接烧录到 Flash 的最开始位置即可,即 Flash 0 位置。

      • 对于 SD/eMMC,开始处需要预留 17K Byte 的 GPT 分区头,因此从第 34 个 Sector 的位置烧录 app.aic 。

      对于 SPINAND,由于需要坏块管理等,处理比较复杂,建议使用 SDK 的 BootLoader 进行烧录,此处不进行描述。

  • 使用 SDK 的 BootLoader 烧录

    使用 SDK 的 BootLoader 烧录是一种较为简便的方法,参考下面的配置流程,可以将 app.aic 烧录到指定的分区。

    参考下面的配置,可以完成将 app.aic 烧录到指定的分区。
    1. 编译一个对应项目的 BootLoader。以 SPINOR 的方案为例,根据相近配置板子的项目,修改配置后,编译生成 BootLoader 程序。

      例如 output/d13x_demo88-nor_baremetal_bootloader/images/d13x.bin

      即为编译后的 BootLoader 程序,可重命名为 bootloader.bin。

      对于没有 PSRAM 的项目,可以参考 G73x 的项目编译 BootLoader。

    2. 生成烧录镜像。需要准备下列工具和文件:

      • 工具:

        1. tools/scripts/mk_image.py/mk_image.exe

        2. tools/scripts/gen_partition_table.py

        3. tools/scripts/mk_private_resource.py

      • 文件: 参考相近存储的 demo 板的配置,如 demo88-nor,如果没有 PSRAM,可参考 G73x 的对应文件

        1. bsp/artinchip/sys/d13x/d13x.pbp

        2. target/d13x/demo88-nor/pack/image_cfg.json

        3. target/d13x/demo88-nor/pack/pbp_cfg.json

      • 修改 image_cfg.json 配置文件,详情可查看image_cfg.json 参考配置

      • 将下列文件放到一个目录:
        • mk_image.py/mk_image.exe

        • gen_partition_table.py

        • mk_private_resource.py

        • d13x.pbp

        • image_cfg.json

        • pbp_cfg.json

        • app.bin

    3. 执行命令生成烧录镜像:

      gen_partition_table.py -c image_cfg.json -o partition.h -j partition.json
      mk_private_resource.py -l pbp_cfg.json,partition.json pbp_cfg.bin
      mk_image.py -v -d . -c image_cfg.json
    4. 使用 AiBurn 或者执行下列 upgcmd.exe 进行烧录。AiBurn 烧录,与 SDK 镜像文件烧录方法一致。

      upgcmd.exe image  d13x_demo88-nor_v1.0.0.img

      注意,上述配置下,烧录完成后,重启时 Boot ROM 直接运行 app.aic ,因此如果需要重新进入 Boot ROM 升级模式, 需要通过短接 Flash 引脚,让芯片读取 Flash 内容失败然后进入升级模式。