SS928v100远程ubuntu交叉编译开发环境搭建

背景

为了快速入门SS928V100板卡使用,之前用的一直是小组分享的ubuntu虚拟机环境,但是虚拟机在主机上运行占用内存,是的主机运行缓慢,正好手边有一台暂时闲置的ubuntu系统电脑,结合官方的开发环境配置文章,动手搭建、配置并记录下海思Ubutun开发环境的搭建过程,下面是板卡环境联系图。

在 Linux 服务器上建立交叉编译环境,Windows 工作台通过串口和网口与 SS928V100单板连接,开发人员可以在 Windows 工作台中进行程序开发或者远程登录到Linux 服务器进行程序开发。

1、系统基本要求

推荐用户使用 64 位 Linux 服务器,本开发包在 32 位 Linux 服务器、较老版本的 Linux服务器、偏冷门的 Linux 服务器上可能存在未知的兼容性问题。

Windows10,Ubuntu18.04.6(64位),python3.7.6,vscode1.85.2(版本比较重要,高版本因为glic版本不匹配连不上)推荐的配置如下:

2、准备软件:

aarch64-mix210-linux.tgz

cc-riscv32-cfg5-musl-20211008-elf.tar.gz

3、网络环境搭建:

安装 nfs,samba,ssh 等网络组件,命令如下:

c 复制代码
sudo apt update
sudo apt install nfs-kernel-server  samba  openssh-server 

4、软件包安装

步骤 1 配置默认使用 bash

c 复制代码
sudo dpkg-reconfigure dash 选择 no 

步骤 2 安装软件包

c 复制代码
sudo apt-get install make libc6-i386 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev
sudo apt-get instal ncurses-term libncursesw5-dev g++ u-boot-tools 	
sudo apt-get instal texinfo texlive gawk libssl-dev openssl bc p7zip-full gperf bison flex diffutils git unzip 

步骤 3 创建/etc/ld.so.preload 文件,并执行以下命令进行清空
echo "" > /etc/ld.so.preload,以解决 64bit linux server 上某些第三方库编译失败的问题。

步骤 4 mtd-utils 依赖以下几个库,以ubuntu为例,安装方式请参考下面命令:

c 复制代码
sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config automake 

步骤 5 e2fsprogs 依赖 texlive 库,安装方式请参考如下命令:

c 复制代码
sudo apt-get install texlive 

注意:采用linux系统的可以不用安装6、7步,直接安装编译工具

步骤 6 LiteOS 编译需要安装的工具包括 python、pip 和 kconfiglib

用户可参考《LiteOS 开发指南.pdf》中第 8.2 章节文档进行 LiteOS 编译环境的配置。

步骤 7 optee 模块依赖 python3.x.x、pip3、wheel、pycryptodome、pyelftools 库(蓝色字 体为版本安装包下载链接)

python3.x.x 安装推荐 python3.7.6 版本

下载安装并执行如下指令:

c 复制代码
tar -zxvf Python-3.7.6.tgz 
cd Python-3.7.6/ 
./configure 
make 
make install 

wheel 推荐源码安装, pip 安装可能失败

下载 wheel-0.36.2.tar.gz 安装包

c 复制代码
tar -xzf wheel-0.36.2.tar.gz 
cd wheel-0.36.2 
sudo python2 setup.py install 
sudo pip3 install pycryptodome-3.9.8-cp37-cp37m-manylinux1_x86_64.whl 
sudo pip3 install pyelftools-0.27-py2.py3-none-any.whl 

备注:pycryptodome 依赖于 python3.x.x 环境请先升级至 python3.x.x 版本再安装pycryptodome 库。

5、安装交叉编译工具

使用从网络等渠道得到的交叉编译工具可能存在与使用的内核并不配套,造成开发过程中出现一些不可预料的问题。发布包提供编译工具链 aarch64-mix210-linux- 和 riscv32-cfg5-musl-xxxxxxxx-elf-。aarch64-mix210-linux-为基于 64bit 操作系统 glibc 的工具链,riscv32-cfg5-musl xxxxxxxx-elf- 为 riscv 核提供的工具链。

5.1、安装aarch交叉编译工具

c 复制代码
//解压
tar-xvf aarch64-mix210-linux.tgz  
//安装工具链
cd aarch64-mix210-linux/
sudo./aarch64-mix210-linux.install  

测试:命令行,执行 aarch64-mix210-linux-gcc -v

查看是否有编译环境的版本信息输出,并无报错

5.2、安装riscv交叉编译工具

c 复制代码
//解压
tar-xvf cc-riscv32-cfg5-musl-xxxxxxxx-elf.tar.gz  
//安装工具链
cd cc-riscv32-cfg5-musl-xxxxxxxx-elf
sudo ./install.sh

注:如执行 ./install.sh 报错,可以将 install.sh 顶部修改#!/bin/bash

5.3、配置工具链路径

打开vi ~/.profile文件添加如下内容 使配置生效

c 复制代码
PATH="$HOME/bin:$HOME/cc-riscv32-cfg5-musl-xxxxxxxxelf/toolschain/bin:$PATH"
//刷新环境变量,使之生效
source ~/.profile

6、安装SDK并测试

将 SS928V100_SDK_V2.0.2.1 代码示例及系统源码文件夹拷贝到Ubutun的工作路径下进行cmake和make编译。

7、vscode配置

7.1、ubuntu安装:

系统要安装sssh并开启,命令如下:

c 复制代码
//安装
sudo apt-get install openssh-server
// 检查 SSH 服务状态
sudo systemctl status ssh
//如果未运行,启动 SSH
sudo systemctl start ssh
//设置开机自启
sudo systemctl enable ssh

7.2、vscode配置过程

1、首先点击左下角这个图标,然后要输入ssh liquan@172.16.0.33,然后输入密码

2、打开ubunu系统内的工程文件夹,然后输入密码

3、按"ctrl+shift+P"输入CMake:configure

4、第一次回弹出编译工具:选择64位的上述交叉编译工具即可。

8、安装过程可能遇到的问题及解决方法

8.1、python多版本管理

安装python 版本的时候,因为系统已经有python3.6,python3.7,还有一个默认的python3.10,但是配置过程要求python3.6,所以需要对python版本进行管理:

c 复制代码
//查看已安装Python
ls /usr/bin/python*  
//输入编号选择版本
sudo update-alternatives --config python3 

输出如下:

或者直接类似下面的命令修改优先级:

c 复制代码
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1 

但是直接输入python3的时候默认输出的是python3.10.9,不是上面的版本

原因在于此时的用户是anconda用户,因为前面有个(base),要想利用系统内的python,需要退出anconda用户,命令为:

c 复制代码
conda deactivate

此时再利用上面的版本切换命令就可以了。

8.2、cmake错误:

这个错误的原因是CMake 构建失败是因为无法加载缓存文件,解决办法是需要先运行 cmake 配置命令来生成缓存文件,然后再执行构建命令。即需要在vscode下按Ctrl+Shift+P → 输入 "CMake: Configure"让 CMake Tools 重新读取 CMakeCache.txt 并建立正确的缓存连接,然后既可以编译

9、资源链接

交叉工具链下载链接

相关推荐
wtblszn1 小时前
自动化包装生产线设备可视化管理方案
运维·自动化
心之语歌2 小时前
Tkinter 画布基本梳理
运维·服务器·python
Shulex3 小时前
面向跨境电商多渠道消息系统的技术架构:亚马逊站内信合规对接与自动化执行链路设计
运维·架构·自动化
bloglin999993 小时前
vmware部署centos7启动docker容器后无法访问服务
运维·docker·容器
夜听莺儿鸣4 小时前
502-003_Linux 中断与异常(一):从Linux角度理解中断与异常
linux·中断与异常·linux中断
杨云龙UP4 小时前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库
梦帮科技5 小时前
领域认知知识库图谱注入:从双式记账图网络到高质量问答对自动化合成流水线
运维·网络·数据库·人工智能·矩阵·架构·自动化
向成科技5 小时前
XC3576H工控主板|深度适配Ubuntu 26.04 LTS,释放边缘AI与工业开发新潜能
linux·人工智能·ubuntu·机器人·硬件·主板·边缘ai
逐流人5 小时前
Ceph分布式存储集群配置与池管理:从配置优先级到PG、复本池与纠删码池
运维·分布式·ceph·云原生·云计算·rados
海宇服务5 小时前
零信任架构实战:基于海宇车型识别精准构建自动化定损网关
运维·人工智能·架构·自动化