海鸥派 SDK 编译开发指南

海鸥派 SDK 编译开发指南 tomato 2025-02-05 14:33:55 230

1. Linux/ubuntu

本文档当前章节以虚拟机安装 ubuntu18.04 为例详细说明,若无特殊说明则适用于其他 ubuntu版本。
SDK 为易百纳适配后 SDK,编译流程也可参考官方原厂 SDK 中相关文档资料,具体位置为“ ReleaseDoc/zh/01.software/board/OSDRV/ SS928V100/SS927V100 开发环境用户指南.pdf”。

1.1 安装交叉编译工具
tar -zxvf aarch64-mix210-linux.tgz
cd aarch64-mix210-linux/
sudo ./aarch64-mix210-linux.install
source /etc/profile
aarch64-mix210-linux-gcc -v
  • 1
  • 2
  • 3
  • 4
  • 5

解释说明:
若编译适配后 SDK,可只安装上述交叉编译工具;若需要编译完整官方 SDK,需安装 riscv 交叉编译工具。详情参考“SS928V100 开发环境用户指南”。

1.2 安装 ss928 环境

配置默认使用 bash。

sudo dpkg-reconfigure dash
  • 1

安装软件包。

sudo apt-get install make libc6-i386 lib32z1 lib32stdc++6 zlib1g-dev
libncurses5-dev
sudo apt-get install ncurses-term libncursesw5-dev g++ u-boot-tools texinfo gawk
libssl-dev openssl bc
sudo apt-get install texlive p7zip-full gperf bison flex diffutils git unzip
libffi-dev libtool libfreetype6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6



创建/etc/ld.so.preload 文件,并执行 echo “” > /etc/ld.so.preload,以解决 64bit linux server上某些第三方库编译失败的问题。

sudo touch /etc/ld.so.preload
sudo chmod 777 /etc/ld.so.preload
sudo echo "" > /etc/ld.so.preload
  • 1
  • 2
  • 3

安装 mtd-utils 依赖库,并设置 pkg-config 工具搜索路径。

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

sudo vi /etc/profile
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/pkgconfig"
  • 1
  • 2

安装 optee 模块依赖的 python3.x.x、pip3、wheel、pycryptodome、pyelftools 库。

#官方文档中推荐安装 python3.7.6 版本
#可从官方文档蓝色字体链接处下载版本安装包解压安装
tar -zxvf Python-3.7.6.tgz
cd Python-3.7.6/
./configure
make
sudo make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
#ubuntu20.04 也可直接安装
sudo apt-get install python3
sudo apt-get install python3-pip
#ubuntu22.04
sudo apt-get install python3
sudo apt-get install pip3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
sudo pip3 install wheel==0.36.2
sudo pip3 install pycryptodome==3.9.8
sudo pip3 install pyelftools==0.27
sudo pip3 install kconfiglib
#pip3 安装可能失败或耗时,可从官方文档蓝色字体链接处下载版本安装包解压安
  • 1
  • 2
  • 3
  • 4
  • 5
1.3 编译 SDK
tar -zxvf hieuler_sdk_v1.1.0.tgz
cd hieuler_ebaina_sdk/
make
#默认生成适用于存储参数为 4GB+32GB 的开发板,Linux 系统固件
  • 1
  • 2
  • 3
  • 4

默认生成固件适用于 4GB+32GB 存储规格开发板,存储规格不同需修改 hieuler_ebaina_sdk/Makefile中 export MEM_SIZE ?= 8G(海鸥派存储规格目前有两种:4GB+32GB 存储则该参数为 4G,8GB+64GB存储则该参数为 8G)。

vi Makefile
head Makefile
make u-boot
#编译完成后,在 output 目录下生成对应规格的文件
  • 1
  • 2
  • 3
  • 4

默认生成的是 linux 系统版本固件,如果需要编译 ubuntu 版本需要修改 hieuler_ebaina_sdk/roofts下链接。修改后,先清除之前构建的文件系统镜像,再重新构建文件系统镜像。

ln -sf ubuntu.sh 001_base.sh
#返回 hieuler_ebaina_sdk 目录,清除之前文件系统镜像,再重新构建
cd ..
make rootfs_clean
make rootfs
#更改生成 linux 系统固件操作如上,更改链接,返回目录,清除镜像重新构建
ln -sf busybox.sh 001_base.sh
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Linux/ubuntu 编译报错问题处理

报错:aarch64-mix210-linux-gcc:命令未找到。交叉编译工具未找到,安装交叉编译工具之后 source/etc/profile 仅对当时终端有效,切换终端后失效;可再次运行 source /etc/profile,或直接重启。


如果是 ubuntu20.04/22.04 版本编译 linux/ubuntu 版本 SDK,报错关于 libisl.so.19 问题,可能因为 gnu 版本不一样。ubuntu18.04 可正常编译,ubuntu20.04 该库版本为 22,ubuntu22.04 该库版本是 23。可通过建立链接完成编译。
具体版本信息可自行搜索确认 libisl.so 版本并对应修改链接中版本。

#ubuntu20.04
sudo ln -s /usr/lib/x86_64-linux-gnu/libisl.so.22
/usr/lib/x86_64-linux-gnu/libisl.so.19
#ubuntu22.04
sudo ln -s /usr/lib/x86_64-linux-gnu/libisl.so.23
/usr/lib/x86_64-linux-gnu/libisl.so.19
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

尝试编译完整官方 SDK 报错:
/usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x10): multipledefinition of ‘yylloc’; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here。

vi
/home/ebaina/hieuler/sdk/SS928V100_SDK_V2.0.2.2/open_source/linux/linux-4.19.y/s
cripts/dtc/dtc-lexer.l
#在 YYLTYPE yylloc;前面加 extern
make
  • 1
  • 2
  • 3
  • 4
  • 5

2.Openeuler

推荐使用 ubuntu22.04,且虚拟机内存分配 8GB(8192MB),最大磁盘大小 100GB,因 openEuler相关提示:“oebuild 基于 python3 实现,建议使用 python>=3.10 的版本。至少有 50G 以上的空闲磁盘空间,建议预留尽可能多的空间,有助于运行多个镜像构建,通过重复构建提升效率。至少有8G 内存,建议使用内存、CPU 数量更多的机器,增加构建速度。”。具体情况可根据个人设备做出调整。

当前章节也可参考欧拉文档“海鸥派镜像构建与使用 — openEuler Embedded 在线文档24.03 documentation (openatom.cn)”。

2.1 安装 oebuild

安装必要软件包。

sudo apt-get install python3 python3-pip docker docker.io
  • 1

配置 docker 环境。

sudo usermod -a -G docker $(whoami)
sudo systemctl daemon-reload && sudo systemctl restart docker
sudo chmod o+rw /var/run/docker.sock
  • 1
  • 2
  • 3

首次安装 oebuild。

pip3 install oebuild
  • 1

推荐在网络环境较好情况下安装,若出现红色报错,重新运行上面命令。完成安装后再次运行上面命令,出现以下打印信息。

2.2 拉取代码,构建镜像

初始化工作目录,未指定分支,使用默认分支 master。

oebuild init my_workspace
  • 1

根据上面提示执行命令并拉取代码。

cd /home/ebaina/my_workspace
oebuild update
  • 1
  • 2

生成 hieulerpi1 构建配置文件,若需额外加入特性,见-f 列表(oebuild generate -l),下例构建基础镜像。

oebuild generate -p hieulerpi1
  • 1

按提示进入构建目录,执行如下命令进入 bitbake 环境,进入构建交互终端。

cd /home/ebaina/my_workspace/build/hieulerpi1
oebuild bitbake
  • 1
  • 2

构建镜像,需要较稳定的网络环境以及性能较好的主机。首次编译时间较长,需耐心等待,若报错可尝试清楚后再次运行该命令。

#构建镜像
bitbake openeuler-image
#构建 SDK
bitbake openeuler-image -c populate_sdk
#若出现问题,可尝试执行命令清除缓冲和标识后重新编译
bitbake openeuler-image -c cleanall
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

构建完成将会在当前目录下生成 output/时间戳/文件夹,其中 kernel-pi 是板端 openEuler 内核镜像,openeuler-image-hieulerpi1-[时间戳].rootfs.ext4 是板端文件系统镜像。

若构建 SDK,则对应文件夹中为交叉编译工具链;该工具链也可从 openeuler 每日构建中获取。

注:欧拉系统构建不包括 u-boot 部分,可直接从仓库中获取编译后的 u-boot 部分固件文件,也可下载源码根据当前文档中 linux/ubuntu 编译部分尝试,编译 SDK 部分执行“make u-boot”,即仅编译 u-boot 部分固件。下载及仓库链接:
https://gitee.com/HiEuler/u-boot/releases/tag/v2.0.0

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

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

举报反馈

举报类型

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

详细说明

审核成功

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

审核失败

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

小包子的红包

恭喜发财,大吉大利

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

    易百纳技术社区