软件安装
软件更新
BM1688 出厂时已经预装系统软件,在Ubuntu下可通过如下命令检查其版本:
linaro@sophon:~$ bm_version SophonSDK(BM1688) 1.7 sophon-soc-libsophon : 0.4.9 sophon-soc-libsophon-dev : 0.4.9 sophon-media-soc-sophon-ffmpeg : 1.7.0 sophon-media-soc-sophon-opencv : 1.7.0 BL2 bm1688:g 2024-07-23T07:28:45+00:00 BL31 bm1688:gc3fb9f5-dirty 2024-07-22T15:27:39+08:00 U-Boot 2021.10 (Jul 23 2024 -07:28:41 +0000) cvitek_sophgo Kernelversion : Linux sophon 5.10.4-sophon-custom #1 SMP Tue Jul 23 07:28:49 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux Mode: soc mode MCUVersion: 0.17.19
BM1688 目前提供两种更新方式:SD卡刷机,USB烧录。其中SD卡刷机会重写整个eMMC,也即您存储在eMMC的数据全部会丢失。这种方式最为干净可靠,理论上只要您的 BM1688 没有硬件损坏,都可以进行SD卡刷机。文件替换方式是指在Ubuntu下通过替换对应文件的方式分别升级bootloader、kernel和其它软件。这种方式有一定的风险,如不同软件组件之间的版本匹配、文件损坏等。以下分别介绍两种软件更新方式的操作:
SD卡刷机
请将SD卡格式化为FAT32格式(如果SD卡上有多个分区,只能使用第一个分区),大小为1GB以上。
请下载 BM1688 最新刷机包,地址为算能官网
https://developer.sophgo.com/site/index/material/all/all.html:
请将下载的sdcard.tgz解压到SD卡根目录。确认文件如下(数量不一定相同):
请将 BM1688 断电,插入SD卡,并连接串口终端,然后给 BM1688 上电。您将看到 BM1688 自动进入刷机流程:
刷机通常耗时约3分钟,结束后,会看到拔掉SD卡并重启 BM1688 的提示,请依照操作即可:
请注意:刷机后Ubuntu系统第一次启动时会进行文件系统初始化等关键动作,请勿随意断电,待开机进入命令行后使用sudo poweroff命令关机。
USB烧录
注意事项
1、usb烧录的时候不能插入sd卡
2、usb_dl.exe要和cv_dl_magic.bin在同一目录下
3、usb_dl.exe所在的路径和要烧录的固件的路径不能有中文
硬件连接
1、使用跳线帽短路如图的位置(J2503 短接顺着字体的右侧两个脚)
2、准备一根typec USB线,一端接到板子的typec母口,另一端接到PC
安装windows驱动
运行CviUsbDownloadInstallDriver.exe,点击下一步,然后再点击完成即可
烧录步骤
1、打开windows控制台
2、把usb烧录工具放到本地(usb烧录工具的路径为<SDK>/build/tools/<chip>/usb_dl)
3、在usb_dl相同的目录新建文件夹fw,放入要升级的文件
4、执行升级命令:usb_dl.exe -c cv186x -s ubuntu -i ../fw
输入命令后,打印如下图
表示等待板子连接
5、用usb数据线连接电脑和设备
6、对设备重新上下电(如果usb数据线也会供电,则在下电的时候,还要拔出usb线)
构建安装包
除了使用已有的安装包进行升级外,也可以自行构建安装包。
ubuntu安装
推荐安装ubuntu 20.04
安装配置repo
1、配置repo安装路径
mkdir ~/bin
2、增加环境变量
vim ~/.profile
在文件的最后添加PATH=~/bin:$PATH
3、安装repo
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
docker导入
1、安装相关软件包
sudo apt-get update sudo apt-get install -y build-essential ninja-build automake autoconf libtool wget curl git gcc libssl-dev bc slib squashfs-tools android-sdk-libsparse-utils android-sdk-ext4-utils jq cmake python3-distutils tcl scons parallel openssh-client tree python3-dev python3-pip ssh libncurses5 pkg-config lzop bison flex rsync kmod cpio sudo fakeroot dpkg-dev device-tree-compiler u-boot-tools uuid-dev libxml2-dev debootstrap qemu-user-static kpartx
2、安装升级python库
pip3 install dfss --upgrade
3、 运行dfss,如果python不能用就用python3
python -m dfss --url=open@sophgo.com:/gemini-sdk/docker/ubuntu_bm1688.tar
4、导入docker镜像,有导入过的可以不用操作
sudo cat ubuntu_bm1688.tar | docker import - bm1688
5、将以下命令添加到~/.bashrc,并执行source ~/.bashrc
function run_docker() { docker run -e LOCAL_USER_ID=`id -u $USER_ID` --privileged -itd -v $2:/project/$1 --name $1 bm1688:latest /bin/bash }
6、进入docker目录工作目录会转换成/project/user.name/,这里请在进入docker前将代码下载到/your/workspace/path
run_docker sophon /your/workspace/path
7、进入docker容器中的shell
docker exec -it sophon /bin/bash
8、安装jinja2
pip install jinja2
获取源码
提供两种源码的方式
a.从github获取
在github建立个人账号,并配置好ssh key,下载代码需要用到个人github账号
设置账号邮箱
git config --global user.name "your_name" git config --global user.email "your_email@example.com"
配置密钥
ssh-keygen -t ed25519 -C "your_email@example.com" cat ~/.ssh/id_ed25519.pub
将公钥添加到github
验证ssh是否配置成功
ssh -T git@github.com
使用repo拉取最新SDK源码
repo init -u https://github.com/sophgo/manifest.git -m release/edge.xml repo sync
b.从算能官网获取
从算能官网 (https://developer.sophgo.com/site/index/material/81/all.html) 下载SDK,然后执行下面的命令可获取SDK最新版本
unzip sophonsdk_edge_v1.6_offical_release.zip cd sophonsdk_edge_v1.6_offical_release/sdk_release tar -xvf bm1688_v1.6_source.tar.gz repo sync
文件结构
SDK文件结构说明如下:
top ├── build ## 编译脚本 ├── fsbl ## ATF ├── host-tools ## 编译工具链 ├── isp_tuning ## isp tuning ├── libsophon ## 多媒体 及tpu库 ├── linux_5.10 ## linux内核 ├── middleware ## isp库 ├── osdrv ## 驱动 ├── oss ##开源代码库 ├── ramdisk ## ram disk ├── sophon_media ## ffmpeg 与opencv库 ├── u-boot-2021.10 ##uboot └── ubuntu
编译BM1688固件
source build/envsetup_soc.sh defconfig bm1688_wevb_emmc build_bm1688_all
注:需要有root权限或者使用docker, 生成的升级包在install/soc_bm1688_wevb_emmc/
package_edge/sdcard