VS680 Ubuntu SDK

硬件平台

VS680 Ubuntu SDK使用的硬件平台: 香蕉派BPI-M6

在Ubuntu环境中下载代码

安装 repo 工具

可参考下方链接: https://zhuanlan.zhihu.com/p/670917868

../../_images/image-gitee-8.png

备注

下载完成后后可以将 /home/{用户名}/bin/repo 工具移动到 /usr/bin 目录下。

1chmod +x /home/{用户名}/bin/repo
2sudo mv /home/{用户名}/bin/repo /usr/bin

安装 Git LFS 工具

1# Ubuntu系统
2sudo apt-get install git-lfs
3
4# 检查 Git LFS 是否安装成功
5git lfs install
../../_images/image-gitee-9.png

安装 docker

可参考资料: Ubuntu 22.04下Docker安装(最全指引)_docker ubuntu2204-CSDN博客

准备条件

1#安装前先卸载操作系统默认安装的docker,
2sudo apt-get remove docker docker-engine docker.io containerd runc
3
4#安装必要支持
5sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

准备安装

1# 阿里源(推荐使用阿里的gpg KEY)
2curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
3
4#阿里apt源
5echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
6
7#更新源
8sudo apt update
9sudo apt-get update

执行安装

1#安装最新版本的Docker
2sudo apt install docker-ce docker-ce-cli containerd.io
3#等待安装完成
4
5#查看Docker版本
6sudo docker version
7
8#查看Docker运行状态
9sudo systemctl status docker

安装 Docker 命令补全工具

1sudo apt-get install bash-completion
2
3sudo curl -L https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker -o /etc/bash_completion.d/docker.sh
4
5source /etc/bash_completion.d/docker.sh

允许非 Root 用户执行 docker 命令

 1#添加docker用户组
 2sudo groupadd docker
 3
 4#将当前用户添加到用户组
 5sudo usermod -aG docker $USER
 6
 7#使权限生效
 8newgrp docker
 9
10#查看所有容器
11docker ps -a

最后一步,更新 .bashrc 文件

编辑 ~/.bashrc 文件,并在文件末尾增加如下一行。

1#如果没有此行命令,你会发现,当你每次打开新的终端
2#你都必须先执行一次 “newgrp docker” 命令
3#否则当前用户还是不可以执行docker命令
4groupadd -f docker

/etc/docker/daemon.json 这个位置添加目前可用的国内 docker hub 镜像。

1"registry-mirrors": [
2    "https://docker.m.daocloud.io"
3  ]

gitee 上拉取源码

关联公钥

可参考下面链接产生ssh公钥并添加到gitee中: SSH 公钥设置 | Gitee 帮助中心

使用 repo 工具拉取代码

执行 repo init
1# 如果先前已经安装repo但仍然显示找不到repo command  尝试重新加载下环境变量
2source ~/.bashrc
3
4repo init -u git@gitee.com:senarytech-opensource/VS680_ubuntu-manifest.git -m VS680_ubuntu.xml -b main  --repo-url=https://gitee.com/oschina/repo.git  --no-repo-verify
5
6--repo-url=https://gitee.com/oschina/repo.git  --no-repo-verify                     # 不一定可用
7--repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/

命令及参数选项

描述信息

repo init

这是初始化仓库的命令,用于设置新的 repo 工作目录。

-u

使用 -u 参数指定 manifest 仓库的url

-m

通过 -m 参数指定一个具体的 manifest 文件。这个文件定义了将要下载哪些仓库。

-b

使用 -b 参数来指定在 manifest 仓库中的特定分支。

–repo-url

指定用于下载 repo 工具自身的仓库的 URL。

–no-repo-verify

此选项告诉 repo 不要验证从 repo-url 下载的repo工具的完整性和来源。

备注

一定要带上 --repo-url=…… 不然默认使用国外谷歌的源,repo 可能无法成功。

初始化成功后会在目录下找到 VS680_ubuntu.xml 文件。

../../_images/image-gitee-10.png

可能出现报错:git@gitee.com: Permission denied (publickey).

../../_images/image-gitee-11.png

解决办法:可能并非是 ssh 公钥问题,使用 repo init 时修改 --repo-url

1--repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/
拉取最新代码
1repo sync

命令

描述信息

repo sync

这个命令用于同步当前目录下所有 repo 项目的代码。 它会根据最近一次的 repo init 命令使用的 manifest 文件来获取最新的代码。

../../_images/image-gitee-12.png

../../_images/image-gitee-13.png

拉取 lfs 大文件

上传至 gitee 的VS680 SDK中包含大文件,通过 git lfs 功能上传; 而通过repo拉取代码时实际下载的相应文件名实际只是占位文件。

① 进入 /syna-release/sysroot/ubuntu20 目录下拉取完整的文件系统压缩包。

1cd */syna-release/sysroot/ubuntu20  # *以个人真实路径替换
2
3git-lfs pull
../../_images/image-gitee-16.png

② 进入 */syna-release/custbuild/ 目录下拉取完整的 Ubuntu20 镜像压缩包

cd */syna-release/custbuild/ # *以个人真实路径替换

git-lfs pull
../../_images/image-gitee-image-1.png

代码编译

在 Docker 中加载 ubuntu20.4 镜像

解压 “ 拉取lfs大文件 ” 步骤中的 ubuntu20.4 镜像压缩包。

1unzip ubuntu_20.04.zip
../../_images/image-gitee-17.png

加载镜像并确认加载成功。

1#加载镜像
2docker load -i ubuntu:20.04.tar
3
4#查看加载的镜像
5docker images
../../_images/image-gitee-18.png

运行docker

1sudo docker run -d --name=$(whoami)-$RANDOM -p 8004:22 -v $(pwd):$(pwd) --privileged=true ubuntu:20.04
../../_images/image-gitee-19.png

容器创建成功后,终端会输出容器的ID。

1# 查看所有创建出来的docker
2sudo docker ps -a
../../_images/image-gitee-20.png

1# 登录docker
2ssh root@127.0.0.1 -p 8004     # 密码:root
../../_images/image-gitee-21.png

运行编译脚本

在容器内进入 */syna-release/custbuild 执行编译脚本。(以编译 evk 板镜像为例,执行脚本 build_evk.sh

../../_images/image-gitee-22.png

编译成功,在 *syna-release/out/vs680_a0_ubuntu20_evk/target/release 路径下生成镜像包 eMMCimg

../../_images/image-gitee-23.png

../../_images/image-gitee-24.png

镜像烧写

烧写版本镜像前,请先准备一片 Micro SD卡(又名TF卡),卡片容量必须要在 16GB 以上(大于16GB)。下列表格中的SD卡是经过我司验证可用于 SDK 版本升级烧写用的。

品牌

容量

产品图片

闪迪 (SanDisk)

64GB

闪迪64

忆捷 (EAGET)

128GB

忆捷128

闪迪 (SanDisk)

256GB

闪迪256

VS680板卡支持 EMMC 与 SD 卡两种存储器,在插入 SD 卡时先从 EMMC 运行引导程序,再跳转至 SD 卡上的版本镜像进行启动,需要使用上述的工具软件分别对 EMMC 存储器和 SD 卡进行镜像烧写,具体步骤如下:

  • 软件包下载链接 中的1号链接下载并解压缩 SDK版本镜像包,其中包含了两部分镜像文件:用于EMMC存储器的引导程序镜像文件夹 preboot 和用于SD卡启动的版本镜像 vs680_SD.img

  • 软件包下载链接 中的2号链接下载并在 Windows 电脑上安装VS680设备烧写工具软件 SocToolSetup ,按 软件包下载链接 中的3号链接下>载安装SD卡烧写工具软件 Balena Etcher

  • 通过 USB 线将 VS680 板卡与Windows电脑相连接,使用烧写工具包中 SocUpgradeTool ,按照 VS680系统烧写工具 的说明,将SDK二进制包中EMMC镜像文件夹 preboot 烧写至 VS680 板卡。

  • 将插有空白 SD卡 的 USB读卡器 接入 Windows 电脑,并在电脑上打开SD卡烧写工具 Balena Etcher ,选择用于 SD卡 的镜像文件进行烧写,按下图所示步骤操作:点击 从文件烧录 选择 vs680_SD.img 镜像文件,点击 选择目标磁盘 选中 SD卡读卡器 所在盘符,点击 现在烧录! 开始烧写镜像文件。

../../_images/Ubuntu002.png
  • 如果是在 Linux 系统下向 SD卡 中烧写 vs680_SD.img 镜像,请在 Linux 系统下使用 dd 命令烧写至SD 卡(Windows系统下请跳过此步):

1dd if=vs680_SD.img of=/dev/mmcblk1
  • 烧写完成后将 SD卡 取出并插入 VS680板卡 的 SD插槽,并将显示器 HDMI信号线 与 VS680的HDMI接口 相连,在 USB口 接入键盘鼠标,重新将 VS680板卡 上电。如下图。

../../_images/Ubuntu0031.png
  • 等待十多秒后在 HDMI显示器上将显示 Ubuntu 系统 GUI登录界面,输入密码 123456 即可登录。