SG200X SDK固件烧录指南

SDK固件升级

本章节主要介绍如何将构建完整的文件烧写并运行在设备上。提供SD卡烧裸烧和USB烧录两种方法介绍。

1 SD卡烧录

5.1.1.裸烧流程解释

pFBLIeg.png

1.2 使用前准备

  • 前述章节产生的烧录档案
  • FAT32格式的Micro SD卡。

1.3 操作过程

注意:烧录过程中会清除 SD 卡中的全部内容,请务必提前做好备份!

  • 将烧录档案放到SD卡中。(可选择直接使用镜像,或者使用upgrade.zip两种方式)
  • 将SD卡插入EVB的SD卡槽中。
  • 将平台重开机。

1.3.1 使用镜像

  • 在 Windows 下,可以使用 balenaEtcherRufusWin32 Disk Imager 等工具将生成的镜像写入 SD 卡中。
  • 在 Linux 下,可以使用 dd 命令将镜像写入 SD 卡中:
sudo dd if=sophpi-duo-XXX.img of=/dev/sdX

1.3.2 使用upgrade.zip

  • 接好 EVB 板的串口线
  • install 目录下的 upgrade.zip 压缩包解压缩并放入 SD 卡根目录,取决于具体开发板型号,压缩包中的文件可能不同:
soc_sg2002_duo_sd
.
├── boot.sd
├── META/
├── partition_sd.xml
├── rootfs.sd
└── utils/
  • 将 SD 卡插入卡槽中
  • 给开发板上电,开机就会自动进入烧录。
  • 等待烧录成功后,拔掉 SD 卡,重新给开发板上电,即可进入系统。

2 USB烧录

2.1 使用前准备

  • 安装python3
  • 使用下列步骤安装 Pip
  • 使用“python -m pip install pyserial”安装 pyseria
  • 前述章节产生的烧录档案

2.2 操作过程

请参考cvitek系列芯片裸烧手册:裸烧与非裸烧升级使用手册

2.2.1 Windows

  1. 准备好固件目录 (由平台对应 upgrade.zip 解压出来)
  2. 将平台的 Uart 连上 Host 并且将平台断电, 并在命令提示字符下执行以下命令
  3. cd <path\to\project>\build\tools\cv181x\usb_dl\
  4. py cv181x_dl.py –libusb –image_dir
  5. 执行成功后,将平台上电

2.2.2 Linux

  1. 准备好固件目录 (由平台对应 upgrade.zip 解压出来)
  2. 将平台的 Uart 连上 Host 并且将平台断电, 并在终端机执行
  3. cd <path/to/project>/build/tools/cv181x/usb_dl/
  4. py cv181x_dl.py –libusb –image_dir
  5. 执行成功后,将平台上电

2.3 注意事项

  1. 使用 USB 烧录时,请使用 USB 供电,并确认移除 DC 供电。
  2. 如果遇到脚本无法正常执行完成, 可以用 ctrl+c 中断脚本, 并将平台断电后, 重新执行 USB刻录

3 根文件系统(rootfs)

3.1 根文件系统介绍

内核是 Linux 操作系统的核心,文件系统是用户和操作系统沟通的主要工具。所以要使用 Linux时,要先了解文件系统原理。 根文件系统结构是以”/”为“根 (root)”起始的树状目录结构,当内核程序映像 (uImage) 启动会挂载一个设备 (ex:eMMC) 在根目录上,根文件系统通常存放在内部存储器 (DRAM) 或非挥发内存 (FLASH) 中,或是透过网络存取的文件系统 (NFS)。所有应用程序和函式库都会按照分类放入文件系统中,以下列出根文件系统目录结构图。

/ 根目录
├── bin可执行文件
├── dev设备文件
├── etc系统配置文件(ex: 启动文件)
├── home用户目录
├── init开机执行script
├── kdump内核除错目录
├── lib函式库包含glibc, shared library和内核模块
├── mnt临时文件系统的挂载点
├── proc内核和行程信息的虚拟文件系统
├── sbin系统管理的可执行文件
├── sys系统设备和文件层次结构,提供内核数据数据
├── usr此目录下包含用户自定义应用程序和文文件
└── var存放系统日志和服务程序文件

3.2 Rootfs

本章节是描述文件系统之组成方式,详细路径于 ramdisk/rootfs/

3.3 Pre-build rootfs架构

文件系统之结构目录主要拆了三个类型,且逐层迭加于 Rootfs,将于下方分别描述:

  • Basic rootfs: 现阶段本公司提供了基于以下四种 Arch 产生之 pre-build rootfs 档案
Arch Libc Pre-build ramdisk path
Arm glibc ramdisk/rootfs/common_arm/
Arm uclibc ramdisk/rootfs/common_uclibc/
Aarch64 glibc ramdisk/rootfs/common_arm64/
Riscv64 glibc ramdisk/rootfs/common_riscv64/
Riscv64 musl ramdisk/rootfs/common_musl64/
  • Processor configuration rootfs: 本公司将所有 Processorset 相依之开机设置均放置于 ramdisk/rootfs/overlay/$CHIP
  • Third-party rootfs: 本公司将所有第三方软件编译出来之 library、utility、related file 均放置于ramdisk/rootfs/public/

请问我的理解正确吗?
我做一块带emmc和sd卡插槽的板子

  1. 制作一个升级用的sd卡,boorom可以引到将sd卡里边的升级文件写入到emmc中,也就是使用sd卡量产板子。
  2. 如果我没有sd卡,我可以连接usb,通过usb_dl可以将upgrade里边所有的东西写入到emmc,完成usb量产。

另外一个问题,如果我的emmc中已经有固件了,那么usb上电就进入系统了,这样我如何通过usb为板子升级新固件?