7.1. 微服务器定制化软件包
适配场景
芯片:BM1684 BM1684X BM1688 CV186AH
SDK版本:
BM1688 & CV186AH v1.3以及之后版本(适配只打包功能和打包做包功能)
84&X 3.0.0以及之前版本(适配只打包功能)
84&X 3.0.0之后版本(适配只打包功能和打包做包功能)
环境需求:
外置存储:
存储分区格式尽量保证ext4,防止特殊分区限制导致做包失败
只打包功能要求外置存储至少是当前emmc使用总量的1.5倍以上
打包做包功能要求外置存储至少是当前emmc使用总量的2.5倍以上
设备需求:
只打包功能要求除去打包设备外需要有一个ubuntu18/20的X86主机
打包做包功能只要求有一个打包做包的设备
7.1.1. 功能一:打包做包功能
本功能84&X和1688/CV186AH平台使用方式完全一致
使用如下命令下载打包需要使用的工具
pip3 install dfss --upgrade
python3 -m dfss --dflag=socbak
下载的文件是一个socbak.zip文件
将外置存储插入目标设备,然后执行如下操作。
sudo su
cd /
mkdir socrepack
# 这一步需要根据你的外置存储选择挂载设备路径,但是目标路径必须是/socrepack
mount /dev/sda1 /socrepack
chmod 777 /socrepack
cd /socrepack
然后将之前下载的socbak.zip传输到/socrepack目录下
执行如下命令进行打包
unzip socbak.zip
cd socbak
export SOC_BAK_ALL_IN_ONE=1
bash socbak.sh
等待一段时间
执行成功后会生成如下文件
root@sophon:/socrepack/socbak# tree -L 1
.
├── binTools
├── output
├── script
├── socbak.sh
├── socbak_log.log
└── socbak_md5.txt
3 directories, 3 files
其中socbak_log.log文件是执行的信息记录,刷机包在output/sdcard/路径下
7.1.2. 功能二:只打包功能
84&X 3.0.0之后, BM1688/CV186AH V1.3以及之后的版本
使用如下命令下载打包需要使用的工具。
pip3 install dfss --upgrade
python3 -m dfss --dflag=socbak
下载的文件是一个socbak.zip文件
将外置存储插入目标设备,然后执行如下操作。
sudo su
cd /
mkdir socrepack
# 这一步需要根据你的外置存储选择挂载设备路径,但是目标路径必须是/socrepack
mount /dev/sda1 /socrepack
chmod 777 /socrepack
cd /socrepack
然后将之前下载的socbak.zip传输到/socrepack目录下
执行如下命令进行打包。
unzip socbak.zip
cd socbak
bash socBak.sh
等待一段时间
执行成功后会生成如下文件(这里的是一个示例,实际情况下生成的文件可能会多一些)。
root@sophon:/socrepack/socbak# tree -L 1 .
.
├── binTools
├── boot.tgz
├── data.tgz
├── fip.bin
├── partition32G.xml
├── recovery.tgz
├── rootfs.tgz
├── script
├── socbak.sh
├── socbak_log.log
└── socbak_md5.txt
2 directories, 9 files
使用 https://developer.sophgo.com/thread/682.html 这个文档《SOC模式交叉编译docekr环境》搭建正确的交叉编译docker环境。
下载重打包所需文件。注意:此步骤开始BM1688 & CV186AH 与 84&X 不同。
7.1.2.1. BM1688 & CV186AH
BM1688 & CV186AH 需要下载的文件如下:
建立目录pack,然后将原始刷机包解压到这个目录下
cd到depack.sh文件同目录,然后执行./depack.sh脚本进行解包
生成的各个分区压缩包会在update目录下生成,此时将socbak生成的所有文件都拷贝到这个目录下
修改完毕后cd到enpack.sh文件同目录,然后执行./enpack.sh sdcard 或者./enpack.sh tftp 命令进行打包
生成的新的刷机包在update/sdcard和update/tftp
7.1.2.2. BM1684 & BM1684X
BM1684 & BM1684X 需要下载的文件如下:
bootloader-arm64 : github上的源码,需要手动clone
sdcard.tgz : 微服务器原始卡刷包。
在bootloader-arm64同级目录下创建install目录, 并在install目录下创建soc_bm1684目录;将sdcard.tgz移动到install/soc_bm1684路径下。
最终目录结构如下
├── bootloader-arm64
├── install
│ └── soc_bm1684
│ └── sdcard.tgz
cd到与bootloader-arm64同目录
执行如下命令
source bootloader-arm64/scripts/envsetup.sh
revert_package
拆包结果会在install/soc_bm1684路径,其目录结构如下
└── soc_bm1684
├── boot.tgz
├── package_update
├── rootfs.tgz
├── sdcard.tgz
├── spi_flash_bm1684.bin
├── data.tgz
├── opt.tgz
├── recovery.tgz
├── rootfs_rw.tgz
├── spi_flash.bin
└── spi_flash_bm1684x.bin
将微服务器上生成的同名文件替换到install/soc_bm1684目录下。
将微服务器上生成的partition32G.xml替换到bootloader-arm64/scripts/目录下。
使用build_update sdcard指令更新刷机包,得到的定制刷机包位于install/soc_bm1684/sdcard目录下。