UncleRoderick · 11月17日 · 广东

【SiRider S1芯擎工业开发板测评】SDK编译的踩坑之旅

写在最前面:

    首先,很荣幸参加了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

编译过程:

  1. 从板卡厂商gitlab下载源码
    注意:根据板卡厂商文档提供的repo可能会出现无法正常下载代码的情况,本文章使用以下修改为国内源的repo进行拉代码。同时,厂商文档中演示的目录为根目录/下的进行的,一般开发场景下比较少用这种路径,本文章以一般用户路径进行操作。
    修改过的repo
    创建目录存放SDK文件:
    mkdir -p ~/Workspace/SDK/se1000-sdk

    将repo.zip拷贝到~/Workspace/SDK目录并解压到repo目录:
    unzip repo.zip -d repo

    以上操作之后repo和se1000-sdk目录在同一级。
    文件目录.jpg

    给repo程序赋予可执行权限:
    repo可执行权限.jpg

    进入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
    拉取代码演示.jpg
    拉取过程中如果出现失败时需要重新执行拉取命令。

  2. 安装编译器
    进入编译器目录拉取编译器文件:
    cd toolchain
    git lfs pull
    拉取编译器.jpg

    本文章编译器安装路径为/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/
    编译器安装路径.jpg

    配置环境变量添加编译器:
    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"
    添加环境变量.jpg

    使环境变量生效并测试编译器是否正常:
    source /etc/profile
    aarch64-none-linux-gnu-gcc -v
    环境变量正常.jpg

  3. 安装相关依赖环境
    先更新软件源,然后安装相关依赖。
    注意:以下是基于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

  4. 进行编译
    进入se1000-sdk目录下执行:
    source env.sh
    sebuilder all
    sebuilder all为编译所有文件命令,在本人编译过程中遇到了以下两点报错,可先按下面提及问题点的进行修改再进行编译。

    ①.编译can报错
    编译提示can-utils安装报错,找不到安装文件,查看下载源配置文件发现上面的地址已无法正常打开,同时尝试手动下载安装包到指定路径安装报错并未解决,最后通过修改编译文件scripts/tools/build_ubuntu_overlayfs.sh第85行删除该工具的安装,后续再在板端安装该工具。
    can报错.jpg
    can报错2.jpg

    ②.编译sshd报错
    编译sshd时会报错该用户已添加问题,屏蔽scripts/tools/build_ubuntu_overlayfs.sh第53行即可。
    屏蔽SSH报错.jpg

    完成以上修改后执行sebuilder all进行编译,并等待漫长的编译过程。

  5. 完成编译
    当出现以下信息时意味着编译完成,同时生成的固件位于deploy/build/images/目录:
    编译完成.jpg
    编译生成文件.jpg
推荐阅读
关注数
0
文章数
2
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息