写在最前面:
首先,很荣幸参加了SiRider S1芯擎工业开发板测评的线下活动并把玩了下开发板的功能,作为一个多年从事于音视频编解码行业的开发者,这块板子最吸引我的地方是它的编解码性能,不过比较遗憾是跟现场工作人员确认后,音视频编解码相关的SDK暂时还未完善,这方面的性能只能等后续有机会再做测试了。
上手一块新的Linux开发板,第一步首先要做的就是编译SDK,根据现有资料下进行编译并不是一帆风顺的,以下为本人在编译SDK中遇到的问题以及处理方式,方便其他人参考借鉴。
编译环境:
VMware® Workstation 17 Pro + Ubuntu 22.04
板卡厂商文档:
https://docs.radxa.com/sirider/s1
板卡厂商gitlab:
https://gitlab.com/siengine-ubuntu-sdk/manifests
编译过程:
从板卡厂商gitlab下载源码
注意:根据板卡厂商文档提供的repo可能会出现无法正常下载代码的情况,本文章使用以下修改为国内源的repo进行拉代码。同时,厂商文档中演示的目录为根目录/下的进行的,一般开发场景下比较少用这种路径,本文章以一般用户路径进行操作。
修改过的repo
创建目录存放SDK文件:
mkdir -p ~/Workspace/SDK/se1000-sdk
将repo.zip拷贝到~/Workspace/SDK目录并解压到repo目录:
unzip repo.zip -d repo
以上操作之后repo和se1000-sdk目录在同一级。
给repo程序赋予可执行权限:
进入se1000-sdk目录进行拉去代码,需根据提示设置用户信息,之后repo sync拉取代码:
cd se1000-sdk/
../repo/repo init -u https://gitlab.com/siengine-ubuntu-sdk/manifests.git -b main -m se1000-ubuntu-ser1.1.xml
../repo/repo sync
拉取过程中如果出现失败时需要重新执行拉取命令。安装编译器
进入编译器目录拉取编译器文件:
cd toolchain
git lfs pull
本文章编译器安装路径为/opt/siengine,以下为具体操作:
sudo mkdir -p /opt/siengine
sudo tar -xvf ./gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz -C /opt/siengine/
sudo tar -xvf ./gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz -C /opt/siengine/
sudo tar -xvf ./gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 -C /opt/siengine/
配置环境变量添加编译器:
vi /etc/profile
将以下内容添加到文件默认:
export PATH="/opt/siengine/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin:$PATH"
export PATH="/opt/siengine/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin:$PATH"
export PATH="/opt/siengine/gcc-arm-none-eabi-10.3-2021.10/bin:$PATH"
使环境变量生效并测试编译器是否正常:
source /etc/profile
aarch64-none-linux-gnu-gcc -v
安装相关依赖环境
先更新软件源,然后安装相关依赖。
注意:以下是基于Ubuntu 22.04进行编译,如果是其他版本的Ubuntu,若有报错信息,需自行根据提示自行修改。
sudo apt update
sudo apt-get install -y gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python2 python3 python3-pip schroot xz-utils debianutils iputils-ping python3-git python3-jinja2 pylint libegl1-mesa libsdl1.2-dev libssl-dev libncurses5-dev mesa-common-dev android-sdk-libsparse-utils
sudo apt-get install -y vim sbuild debhelper ubuntu-dev-tools piuparts schroot qemu qemu-user-static binfmt-support qemu-system-x86 qemu-utils android-sdk-libsparse-utils openssh-server
sudo pip3 install sphinx sphinx_rtd_theme pyyaml ply
进行编译
进入se1000-sdk目录下执行:
source env.sh
sebuilder all
sebuilder all为编译所有文件命令,在本人编译过程中遇到了以下两点报错,可先按下面提及问题点的进行修改再进行编译。①.编译can报错
编译提示can-utils安装报错,找不到安装文件,查看下载源配置文件发现上面的地址已无法正常打开,同时尝试手动下载安装包到指定路径安装报错并未解决,最后通过修改编译文件scripts/tools/build_ubuntu_overlayfs.sh第85行删除该工具的安装,后续再在板端安装该工具。
②.编译sshd报错
编译sshd时会报错该用户已添加问题,屏蔽scripts/tools/build_ubuntu_overlayfs.sh第53行即可。
完成以上修改后执行sebuilder all进行编译,并等待漫长的编译过程。
- 完成编译
当出现以下信息时意味着编译完成,同时生成的固件位于deploy/build/images/目录: