SDK固件升级
本章节主要介绍如何将构建完整的文件烧写并运行在设备上。提供SD卡烧裸烧和USB烧录两种方法介绍。
1 SD卡烧录
5.1.1.裸烧流程解释
1.2 使用前准备
- 前述章节产生的烧录档案
- FAT32格式的Micro SD卡。
1.3 操作过程
注意:烧录过程中会清除 SD 卡中的全部内容,请务必提前做好备份!
- 将烧录档案放到SD卡中。(可选择直接使用镜像,或者使用upgrade.zip两种方式)
- 将SD卡插入EVB的SD卡槽中。
- 将平台重开机。
1.3.1 使用镜像
- 在 Windows 下,可以使用
balenaEtcher
,Rufus
或Win32 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
- 下载 https://bootstrap.pypa.io/get-pip.py
- 使用”python get-pip.py”安装 pip
- 使用“python -m pip install pyserial”安装 pyseria
- 前述章节产生的烧录档案
2.2 操作过程
请参考cvitek系列芯片裸烧手册:裸烧与非裸烧升级使用手册
2.2.1 Windows
- 准备好固件目录 (由平台对应 upgrade.zip 解压出来)
- 将平台的 Uart 连上 Host 并且将平台断电, 并在命令提示字符下执行以下命令
- cd <path\to\project>\build\tools\cv181x\usb_dl\
- py cv181x_dl.py –libusb –image_dir
- 执行成功后,将平台上电
2.2.2 Linux
- 准备好固件目录 (由平台对应 upgrade.zip 解压出来)
- 将平台的 Uart 连上 Host 并且将平台断电, 并在终端机执行
- cd <path/to/project>/build/tools/cv181x/usb_dl/
- py cv181x_dl.py –libusb –image_dir
- 执行成功后,将平台上电
2.3 注意事项
- 使用 USB 烧录时,请使用 USB 供电,并确认移除 DC 供电。
- 如果遇到脚本无法正常执行完成, 可以用 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/