1.序
在前一篇“SS928&3403K开发环境搭建(一)”中已经借助Ebaina搭建好的ubuntu对开发板做了测试,这篇记录从零开始搭建SS928&3403K的开发环境;
2.开发前准备
下载VMware® Workstation 16 Pro 16.1.0版本
下载ubuntu18.04开发镜像文件,我使用的是清华源镜像,下载地址如下:
Index of /ubuntu-releases/18.04.6/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
3.安装ubuntu环境
3.1VMware® Workstation 16 Pro 16.1.0
默认安装即可,建议安装在D盘(习惯…^0^…);
3.2安装ubuntu18.04
不管,自己去搜(一搜一大把…^0^…);
4.ubuntu系统环境
目前的开发进度上我只安装nfs、vscode、ssh这几个软件
nfs:上一篇有提到过,是将ubuntu的文件夹挂在到开发板,挂在后可以直接在开发板访问这个文件夹,省去了更新程序的时间;
vscode&ssh:安装这两个后,vscode上安装remote-ssh插件,这样可以直接用windows在ubuntu中写程序,编译、调试等,简直不要太爽~,这个的安装和使用我就不在介绍了,我也不熟(一搜一大把…^0^…)。
5.开发环境搭建
哎呀,写到这里要下班了,不想写了
启动ubuntu后,换软件源,老规矩,我不熟(一搜一大把,我也记不住命令,好像可以图形操作哦…^0^…);
更换源成功后,迅速的按下ctrl+alt+t(好像已经打开了),弹出终端并在终端快速的输入sudo apt-get update(刷刷刷~),完成后在输入sudo apt-get upgrade(刷刷刷),完成!!!
后续的操作就是在官方提供的“SS927V100 开发环境用户指南.pdf"的步骤啦(这个好像要花人民币才能给),后面的记录是按照用户指南中的操作搭建开发环境的过程了,
这是时间分界线~,20240725
5.1安装软件包
1.更换为bash
ubuntu默认sh默认是指向dash的,在开发之前需要修改为指向bash,
命令:sudo dpkg-reconfigure dash,先择no
bash和sh的区别:
Bash(Bourne Again SHell)是一个功能强大的shell解释器;
Dash(Debian Almquist SHell)是一个更小、更轻量级的Shell解释器;
至于为什么要更换是因为bash更快?
2.安装需要的软件包
sudo apt-get install make libc6-i386 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools texinfo texlive gawk libssl-dev openssl bc p7zip-full gperf bison flex diffutils git unzip
3./etc/ld.so.preload 文件
创建/etc/ld.so.preload 文件(sudo touch /etc/ld.so.preload ),在终端输入echo "" > /etc/ld.so.preload,解决64bit linux兼容的问题;
4.安装mtd-utils的依赖库,e2fsprogs 依赖 texlive 库
sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config automake sudo apt-get install texlive 5.安装liewOS的编译环境 (1)下载python2.7.18和3.8.9,拷贝到ubuntu的目录(随便哪个):wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
wget https://www.python.org/ftp/python/3.8.9/Python-3.8.9.tgz (2)安装python安装需要的依赖包(安装不成功,其实啥装啥) sudo apt install build-essential checkinstall sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev (3)编译ptyhon2.7 解压后进入到解压目录,输入下面的命令: tar -xf Python-2.7.18.tgz
cd Python-2.7.18
./configure --enable-optimizations(配置)
make(编译)
sudo make altinstall(sudo make install,安装) 安装完成后在终端输入python2.7 --version,显示版本信息,便是安装成功。
python3.8.9和上面python2.7.18一样的安装步骤啦~
(4)安装pip
这个指令后面使用的时候需要注意,因为在ubuntu安装了多个版本的python,所以pip在默认的指向是python2,而python3.8.9对应pip3.
pip依赖setuptools,下载地址:setuptools · PyPI
选择对应的版本下载即可,我这里下载和手册上一样的版本(50.3.2,也可下载45.0.0版本),安装指令如下:
sudo unzip setuptools-50.3.2.zip cd setuptools sudo python setup.py install 安装PIP, pip · PyPI ,下载对应的版本,同样和手册一样(20.2.4.) 安装指令: sudo tar -zxvf pip-20.2.4.tar.gz cd pip-20.2.4 sudo python setup.py install(5)安装kconfiglib,因为这里,我载编译时遇到了一个问题,后续说明
sudo pip install kconfiglib
6.optee 模块依赖 python3.x.x、pip3、wheel、pycryptodome、pyelftools 库
(1)安装python3.7.6
同python2.7.18版本安装
(2)安装wheel,pycryptodome、pyelftools 库
wheel · PyPI,版本0.36.2
Links for pycryptodome (tsinghua.edu.cn),版本3.9.8
pyelftools · PyPI,版本0.27
安装指令
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.whl5.2安装交叉编译工具和riscv 交叉编译工具
这个载官方提供的资料包里面,我的是这两个版本:
(1)交叉编译工具安装:
tar -xvf aarch64-mix210-linux.tgz cd aarch64-mix210-linux sudo ./aarch64-mix210-linux.install (2)riscv 交叉编译工具 tar -xvf cc-riscv32-cfg5-musl-20211008-elf.tar.gz cd cc-riscv32-cfg5-musl-20211008-elf sudo ./install.sh (3)添加环境变量 我在后面编译SDK时,出现了未发现aarch64-mix210-linux-gcc的错误,原因时未将aarch64-mix210/bin添加到环境变量,添加后错误消失,但是我查看ebaina虚拟机的下面两个文件未发现添加的这条指令(我只看了文件末尾,没仔细找,hhhh)。 在~/.bashrc或~/.profile文件中变价aarch64-mix210-linux-gcc和ccc-riscv环境变量
export PATH=/home/mc/work/cc-riscv32-cfg5-musl-20211008-elf/cc-riscv32-cfg5-musl-20211008-elf/bin:${PATH}
export PATH=$PATH:/opt/linux/x86-arm/aarch64-mix210-linux/bin
5.3安装交叉编译工具和riscv 交叉编译工具
SDK包在官方提供的SS928V100R001***/01.software/board目录下
我的版本:
后面还有个补丁包要装,hhhh
tar -zxf SS928V100_SDK_V2.0.2.2.tgz
./sdk.unpack 补丁包在这个目录下SS928V100R001***02.only for reference\software 我的版本:下面两个都要拷贝到虚拟机和SS928V100_SDK_V2.0.2.2在同一目录即可,看看readme,
哇,里面写了怎么安装~
6.编译
进入到SS928V100_SDK_V2.0.2.2/osdrv目录下,打开readme_cn.txt,还有个readme_en.txt,俺英语不好不想看,
你看告诉你了怎么编译,hhhh~
make all~漫长的等待
目前我的理解时SDK的编译主要分为,
uboot、kernel、rootfs、liteOS几个可独立编译的模块,后续的开发方便可不整个编译,分别对这几个单独编译,提高开发效率!
编译成功,至此,开发环境搭建完成~
7.编译遇到的问题
1."ModuleNotFoundError: No module named 'kconfiglib' "
只有一个版本
pip install kconfiglib
同时安装了Python 2.x和Python 3.x,并且pip指向Python 2.x版本,请使用pip3
pip3 install kconfiglib
pip3.6 install kconfiglib
2./home/mc/work/SS928V100_SDK_V2.0.2.2/platform/liteos/liteos/targets/ss928v100_mcu/include/menuconfig.h Not found file
缺少menuconfig.h文件的原因liteos编译前,make menuconfig和make savemenuconfig的过程异常,没生成menuconfig.h文件,异常原因如下:
liteos是使用python2.7编译的,python没有安装kconfiglib模块(这个可能在解决1的问题时,让我不小心卸载了,模糊的记得输入了pip uninstall kconfiglib),将python改为指向python2.7后,安装kconfiglib模块即可,操作如下:
$ ls /usr/bin/python -l
lrwxrwxrwx 1 root root 9 4月 16 2018 /usr/bin/python -> python3.6
$ cd /usr/bin/
$ sudo rm python
$ sudo ln -s python2.7 python
$ ls /usr/bin/python -l
lrwxrwxrwx 1 root root 9 9月 13 20:14 /usr/bin/python -> python2.7
$ sudo pip install kconfiglib