这两年搞了嵌入式相关的内容,一开始弄时汇总了下针对海思开发板的使用,供大家参考下,主要包括:Linux开发环境的搭建,板卡固件的编译和烧写,内存和存储的分配管理。三块内容完成后,还有个培训的录屏到时再发下。

注1:海思提供的板卡官方文档(ReleaseDoc)里面是很全,本文做个汇总整理和踩的一些坑。

注2:后面文章里面有些命令首字母是大写,是由于是从word中复制过来的,执行的时候自行改下。

1.环境搭建

    上图是常规操作板卡的环境

  1. Linux服务器(一般为Ubuntu虚机):安装交叉编译环境,可以用户板卡固件、程序等程序的开发编译工作。
  2. Windows工作台:一般作为联调和传输中转使用。
  3. 目标板:程序的实际运行环境。

2.Linux开发环境搭建 

        注1:一般板卡销售方都会提供一个配置好环境的虚机,若使用现成的环境,直接用VMware打开即可,这块就跳过。

        注2:虚机版本不同对于一些库的依赖的版本也会不同,根据错误提示修改下就可以,文档是基于ubuntu20.04版本

2.1SDK环境搭建

2.1.1系统基础环境搭建

步骤 1 :配置默认使用bash

    执行sudo dpkg-reconfigure dash 选择 no

步骤 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 文件,并执行echo "" > /etc/ld.so.preload,以解决64bit linux server上某些第三方库编译失败的问题。

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

    sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config automake

    由于mtd-utils通过pkg-config工具检查各个库是否正常安装,因此请参考如下方式设置pkg-config工具搜索路径:

    export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/pkgconfig"

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

    sudo apt-get install texlive

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

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

    sudo pip install kconfiglib(注意pip对应的python)

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

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

        注:整理博客时用3.8走了遍,也是可以的,自行选择,官方文档推荐的是3.7.6。

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

    tar -zxvf Python-3.7.6.tgz cd Python-3.7.6/

    ./configure

    make

    make install

        由于ubuntu里面自带了python3.8,需要使用pip –version查看pip对应的python,注意下面写的PIP3是对应3.7.6版本的python

        可以使用ln –s  ‘源文件路径’ ‘目录连接路径’  建立软连接

        ln -s /usr/local/bin/python3 /usr/local/bin/python

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

        注:虽然官方文档建议是源码安装,但尝试了没成功,最后还是使用Pip安装的。。。

        Pip3 install wheel

        源码安装:下载 wheel-0.36.2.tar.gz 安装包

    c.Pycryptodome,Pyelftools

        没找到离线安装包,使用Pip在线安装

        Pip3 install pycryptodome

        Pip3 install pyelftools

到这系统的基础环境就搭建好了

 2.1.2安装交叉编译工具

        根据SDK提供的工具链进行安装,也可以安装高版本

  • aarch64-mix210-linux.tgz

        解压:tar –xvf aarch64-mix210-linux.tgz

        进入解压路径:cd aarch64-mix210-linux

        安装:sudo ./aarch64-mix210-linux.install

  • cc-riscv32-cfg5-musl-xxxxxxxx-elf.tar.gz

        解压:tar –xvf

        进入解压路径:cd

        安装:sudo ./install.sh

        修改文件夹所有者:sudo chown -R 

        配置环境变量:

        Sudo nano /etc/profile

        在文件最后一行添加安装路径,路径根据实际情况进行修改

       重启或source /etc/profile 生效环境变量

  • 验证

        输入aa 再按tab键

        输入riscv32- 再按tab键

        有如下图输出,说明工具链已安装好。

2.1.3安装SDK 

        解压SDK包:tar -zxf SS928V100_SDK_Vx.x.x.x.tgz(SDK在下图压包中)

        进入解压路径:cd SS928V100_SDK_Vx.x.x.x

        展开:./sdk.unpack

        进入osdrv目录

        编译固件 make all (osdrv里面有readme文件)

        可选--修改文件归属:sudo chown -R 

        遇到报错1,如下图:

        由于使用的ubuntu是22.04版本,没有libisl.so.19,建立软连接使用libisl.so.22.

        ln -s /usr/lib/x86_64-linux-gnu/libisl.so.22.0.1 /usr/lib/x86_64-linux-gnu/libisl.so.19

        遇到报错2,如下图:

        Kconfiglib库文件没安装。

        sudo pip install kconfiglib(注意pip对应的python)

        编译成功,如下图:

        编译的固件在:osdrv/pub/ss927v100_emmc_image_glibc中。

        注:单独编译未验证。

Logo

海思 HiSpark 开发者社区是上海海思为开发者搭建的内容和交流平台,依托完备芯片解决方案、专业开发环境、开源/开放的软件资源与社区技术内容,构建完整服务生态开发者的闭环体系。

更多推荐