海思SS626 编译整个SDK全过程以及问题汇总

海思SS626 编译整个SDK全过程以及问题汇总 tomato 2024-01-19 17:43:06 326

文章目录

一、概述

这篇文章主要记录在 Ubuntu18.04 安装海思SS626整个SDK的全过程,以及编译过程中遇到的问题。

编译环境:
Win10 + VMware17Pro + Ubuntu 18.04 LTS
VMware17Pro的安装可以参考:windows安装VMware最新版本(VMware Workstation 17.0 Pro)详细教程
Ubuntu 18.04 LTS 是前几天刚安装的新系统,只装了几个软件Vim、samba、ssh,这样可以避免之前安装过的软件包在无意中解决了此次编译的问题i。其安装过程记录在:【海思SS626 | 开发环境】VMware17安装Ubuntu 18.04.6

重要说明:
编译所有的海思SDK之前,要留意海思SDK中关于开发环境的几个文档,不要拿到SDK就直接按照readme去编译。SDK文档会需要按照哪些库,这样可以避免编译过程中出现不必要的错误。
编译SDK需要阅读的文档路径:
SS626ReleaseDoc\zh\01.software\board\OSDRV\SS626V100 开发环境用户指南.pdf;
SS626ReleaseDoc\zh\01.software\board\OSDRV\Huawei LiteOS 开发指南.pdf

二、安装交叉编译工具

只要是SS626的开发主机,无论你是否需要编译SDK,都需要安装交叉编译工具,这节记录SS626的两个交叉编译工具的安装过程:

2.1 安装 aarch64-mix410-linux.tgz
tar -zxf aarch64-mix410-linux.tgz
cd aarch64-mix410-linux/
chmod +x aarch64-mix410-linux.install
sudo ./aarch64-mix410-linux.install
source /etc/profile
2.2 安装 cc-riscv32-cfg11-musl-20220523-elf.tar.gz
tar -zxf cc-riscv32-cfg11-musl-20220523-elf.tar.gz
cd cc-riscv32-cfg11-musl-20220523-elf/
sudo ./install.sh
cd cc-riscv32-cfg11-musl-20220523-elf/bin
echo "export PATH=$(pwd):\${PATH}" >> $HOME/.profile
source ~/.profile
2.3 检查工具链版本,打印版本则表示安装成功
aarch64-mix410-linux-gcc -v
riscv32-cfg11-musl-20220523-elf-gcc -v

三、安装软件包

本文的操作系统是Ubuntu18.04LTS的,这个是为了与SS626的开发包编译系统保持一致而重新安装的系统,基本没安装过其他软件。下面根据《SS626V100 开发环境用户指南.pdf》进行安装必要的软件包。

3.1 安装软件包

这里的软件包有点多,我也没去试哪些不需要装,反正总共就400多M,建议按照文档全部安装,避免编译过程中遇到问题:

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 libtool autopoint gettext po4a
3.2 安装mtd-utils的依赖库

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

sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config automake
3.3 安装pip和kconfiglib

LiteOS 编译需要安装的工具包括python、 pip和kconfiglib,python在Ubuntu18.04系统已经默认安装了 python2.7 和 python3.6,符合编译要求,下面只安装pip和kconfiglib,如果你的系统没有python,则需要到 python3.8 官网根据文档安装。

  • setuptools安装
    pip依赖setuptools,如果setuptools不存在,也需要安装:
    点击 setuptools源代码包下载地址,可以参考下面的命令进行安装:
    unzip setuptools-50.3.2.zip
    cd setuptools-50.3.2/
    python3 setup.py install
    
  • pip安装
    点击 pip源代码包下载地址,可以参考下面的命令进行安装:
    tar zxf pip-20.2.4.tar.gz
    cd pip-20.2.4/ 
    sudo python3 setup.py install
    
  • kconfiglib安装
    sudo pip install kconfiglib
    
    注意:
    setuptools最新版本不支持python 2.7,如果使用python 2.7,请下载setuptools 45.0.0版本以支持python 2.7。
    前面都是使用python3去安装的,所以需要将 /usr/bin/python 软链接指向python3.6 避免编译出错,参考下面命令修改:
    $ ls /usr/bin/python -l
    lrwxrwxrwx 1 root root 9 4月  16  2018 /usr/bin/python -> python2.7
    $ cd /usr/bin
    $ sudo rm python
    $ sudo ln -s python3.6 python
    $ ls /usr/bin/python -l
    lrwxrwxrwx 1 root root 9 9月  13 20:14 /usr/bin/python -> python3.6
    
    3.4 其他配置
  • 配置默认使用bash
    执行sudo dpkg-reconfigure dash 选择no。避免遇到错误:
    /bin/sh: 1: pushd: not found
    /bin/sh: 1: popd: not found
    
  • 创建/etc/ld.so.preload 文件,并执行echo "" > /etc/ld.so.preload,以解决64bit linuxserver上某些第三方库编译失败的问题。

四、解压SDK,打补丁

1、解压 SS626V100R001C02SPC010.rar,在Windows解压也可以;

2、解压后,有三个目录:00.hardware、01.software、02.only for reference

3、打补丁,将ot开头的API函数转换成hi开头:

  • SS626V100R001C02SPC010\02.only for reference\software目录下的 ref_patch.shSS626V100_REF_V2.0.1.0.tgz 复制到 SS626V100R001C02SPC010目录,readme.txt 是使用说明;

  • SS626V100R001C02SPC010\01.software\board\SS626V100_SDK_V2.0.1.0.tgz 复制到 SS626V100R001C02SPC010,复制后SS626V100R001C02SPC010目录如下:

  • 解压 SS626V100_SDK_V2.0.1.0.tgz,并进去执行 sdk.unpack,执行后回到SS626V100R001C02SPC010目录;

  • 解压 SS626V100_REF_V2.0.1.0.tgz ,执行 ref_patch.sh

操作步骤代码如下:

# 1. 复制 ref_patch.sh 和 SS626V100_REF_V2.0.1.0.tgz
$ cp 02.only\ for\ reference/software/ref_patch.sh ./
$ cp 02.only\ for\ reference/software/SS626V100_REF_V2.0.1.0.tgz ./

# 2. 复制 SS626V100_SDK_V2.0.1.0.tgz
$ cp 01.software/board/SS626V100_SDK_V2.0.1.0.tgz ./

# 3.解压 SS626V100_SDK_V2.0.1.0.tgz 并进去执行 sdk.unpack
$ tar zxf SS626V100_SDK_V2.0.1.0.tgz 
$ cd SS626V100_SDK_V2.0.1.0/
$ ./sdk.unpack 
$ cd ..

# 4.解压 SS626V100_REF_V2.0.1.0.tgz ,执行 ref_patch.sh
$ tar zxf SS626V100_REF_V2.0.1.0.tgz 
$ chmod +x ref_patch.sh 
$ ./ref_patch.sh

完成上面步骤后,SS626V100R001C02SPC010\SS626V100_SDK_V2.0.1.0就是以hi开头的API的SDK了。例程代码在SS626V100R001C02SPC010\SS626V100_SDK_V2.0.1.0\amp\a55_linux\mpp\sample; u-boot、内核源码在SS626V100R001C02SPC010\SS626V100_SDK_V2.0.1.0\open_source

五、编译整个SDK,及问题解决

经过前面的准备工作后,可以开始编译整个SDK包了,而且现在基本不会出现什么问题了,下面的错误汇总是没装软件包前的错误。编译前仔细阅读SS626V100_SDK_V2.0.1.0/osdrv/readme.txt文件,我编译得是emmc的,参考下面命令编译:

cd SS626V100_SDK_V2.0.1.0/osdrv/
make BOOT_MEDIA=emmc CHIP=ss626v100 all

也可以使用下面命令记录编译时长到maketime文件:

date > maketime; make BOOT_MEDIA=emmc CHIP=ss626v100 all; date >> maketime
5.1 错误1:/bin/sh: 1: pushd: not found

错误
pushd /home/samba/sdk/00_SS626SDK/SS626V100_SDK_V2.0.1.0/open_source/u-boot;tar xf u-boot-2020.01.tar.gz -C .;popd
/bin/sh: 1: pushd: not found
/bin/sh: 1: popd: not found
原因
从Ubuntu 6.10开始,默认使用dash(theDebian Almquist Shell)而不是bash(the GNUBourne-Again Shell),但Login Shell还是bash,原因是dash更快、更高效,而且它符合POSIX规范,Ubuntu在启动的时候会运行很多shell脚本,使用dash可以加快启动速度。
通过命令 ll /bin/sh 确实可以看出来用的是dash。
解决
sudo dpkg-reconfigure dash #选择no

5.2 错误2:ImportError: No module named kconfiglib

编译liteos时,报错

ImportError: No module named kconfiglib
build/menuconfig/Makefile.kconfig:11: recipe for target 'savemenuconfig' failed
make[1]: *** [savemenuconfig] Error 1

原因
没有 kconfiglib 模块,(No module named kconfiglib),可能pip没装好,可能kconfiglib 装在python3.6,而使用python2.7去编译,
解决:安装对应模块
pip install kconfiglib
安装时,又提示3.6已经安装该模块,打印如下,继续编译liteos仍然报错;\

$ pip install kconfiglib
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: kconfiglib in /usr/local/lib/python3.6/dist-packages (14.1.0)

查看python:ls /usr/bin/python -l,是python2.7,参考下面命令改为指向python3.6

$ ls /usr/bin/python -l
lrwxrwxrwx 1 root root 9 4月  16  2018 /usr/bin/python -> python2.7
$ cd /usr/bin/
$ sudo rm python
$ sudo ln -s python3.6 python
$ ls /usr/bin/python -l
lrwxrwxrwx 1 root root 9 9月  13 20:14 /usr/bin/python -> python3.6
5.3 错误3:The autopoint command is part of the GNU gettext package

编译 util-linux-2.37.1 时,报错

$ ./autogen.sh 
You must have autopoint installed to generate the util-linux build system.
The autopoint command is part of the GNU gettext package.

解决,安装 autopoint:

$ sudo apt install autopoint
5.4 错误4:The program ‘po4a’ was not found.

编译 xz 时,报错

The program 'po4a' was not found.

解决,安装 po4a:

$ sudo apt install po4a

文章来源:https://blog.csdn.net/wkd_007/article/details/132888949?spm=1001.2014.3001.5502

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
tomato
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
tomato
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区