【海思SS626 | 开发环境】编译整个SDK全过程以及问题汇总
目录
- 一、概述
- 二、解压SDK,打补丁
- 三、安装交叉编译工具
- ✨3.1 安装 aarch64-mix410-linux.tgz
- ✨3.2 安装 cc-riscv32-cfg11-musl-20220523-elf.tar.gz
- ✨3.3 检查工具链版本,打印版本则表示安装成功
- 四、安装软件包
- ✨4.1 安装软件包
- ✨4.2 安装mtd-utils的依赖库
- ✨4.3 安装pip和kconfiglib
- 五
一、概述
这篇文章主要记录在 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
二、解压SDK,打补丁
2.1 解压
SS626V100R001C02SPC010.rar
,在Windows解压也可以;
2.2 解压后,有三个目录:00.hardware、01.software、02.only for reference
2.3 打补丁,将
ot
开头的API函数转换成hi
开头:
- 将
SS626V100R001C02SPC010\02.only for reference\software
目录下的ref_patch.sh
和SS626V100_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
。
三、安装交叉编译工具
只要是SS626的开发主机,无论你是否需要编译SDK,都需要安装交叉编译工具,这节记录SS626的两个交叉编译工具的安装过程:
✨3.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
✨3.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
✨3.3 检查工具链版本,打印版本则表示安装成功
aarch64-mix410-linux-gcc -v
riscv32-cfg11-musl-20220523-elf-gcc -v
四、安装软件包
本文的操作系统是Ubuntu18.04LTS的,这个是为了与SS626的开发包编译系统保持一致而重新安装的系统,基本没安装过其他软件。下面根据《SS626V100 开发环境用户指南.pdf》
进行安装必要的软件包。
✨4.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
✨4.2 安装mtd-utils的依赖库
mtd-utils依赖以下几个库,以ubuntu为例,安装方式请参考下面命令:
sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config automake
✨4.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
五
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁
相关文章:

【海思SS626 | 开发环境】编译整个SDK全过程以及问题汇总
目录 一、概述二、解压SDK,打补丁三、安装交叉编译工具✨3.1 安装 aarch64-mix410-linux.tgz✨3.2 安装 cc-riscv32-cfg11-musl-20220523-elf.tar.gz✨3.3 检查工具链版本,打印版本则表示安装成功 四、安装软件包✨4.1 安装软件包✨4.2 安装mtd-utils的依…...

83 # 静态服务中间件 koa-static 的使用以及实现
静态服务中间件:koa-static 中间件可以决定是否向下执行,如果自己可以处理,那么直接处理完毕结束,如果自己处理不了,next 方法会继续向下执行 新建 public 文件夹,里面添加 index.html、style.css 文件 …...

带讲解的自行车租赁系统,可做毕设/课设
适合人群: 马上毕业/需要毕设的同学 技术栈: 前后端分离 前端使用: Vue Element 后端使用: SpringBoot Mysql8.0 Mybatis 支付宝支付 功能截图: 分为管理员端和 普通用户端 和 维修人员端 阿里大佬亲讲 免费看地址: 见评论区...
mysql指令
1.删除表: drop table table_name; 2.查询表字段: select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAMEtable_name; 参考链接 3.切换数据库: use database_name 4.查看当前数据库所有表 show tables;...

【C语言】每日一题(半月斩)——day2
目录 一.选择题 1、以下程序段的输出结果是( ) 2、若有以下程序,则运行后的输出结果是( ) 3、如下函数的 f(1) 的值为( ) 4、下面3段程序代码的效果一样吗( ) 5、对于下面的说法,正确的是…...
电脑如何查看代理服务器IP?
许多人在使用互联网时可能会遇到需要使用代理服务器的情况。但是,你知道如何在电脑上查看代理服务器IP吗?本文将为您分享简单易懂的方法,帮助您轻松了解代理设置的秘密! 代理服务器在网络世界中担任着重要的角色,它可…...

【C++11】{}初始化、std::initializer_list、decltype、STL新增容器
文章目录 1. C11简介2. 统一的列表初始化2.1 {}初始化2.2 std::initializer_list 3. 声明3.1 auto3.2 decltype 4. nullptr5. 范围for循环6. 智能指针7. C11STL中的一些变化8. 演示代码 1. C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1…...

【FPGA项目】进阶版沙盘演练——报文收发(报文处理、CDC、CRC)
前言 书接上文【FPGA项目】沙盘演练——基础版报文收发_子墨祭的博客-CSDN博客,前面我们做了基础版的报文收发,相信对逻辑设计有了一定的认知,在此基础上,继续完善一个实际报文收发可能会遇到的一些处理: 报文处理握手…...
【程序员装机】自定义Edge浏览器用户目录
文章目录 前言修改Edge用户目录的批处理脚本上述批处理脚本的功能包括 总结 前言 本文将介绍Edge浏览器用户目录的批处理脚本方式修改,以自定义Edge浏览器的磁盘缓存目录和用户数据目录。 修改Edge用户目录的批处理脚本 以下是一个用于修改Edge浏览器用户目录的批…...

ubuntu18、20 cv_bridge 与自带opencv版本冲突问题
背景: nvidia tx2、xvaier 装机自带 ubuntu18 opencv4 后来我们会安装melodic的ros,ros中的cv_bridge 默认cv版本是3.2.0 编译带cv_bridge的代码时,会报错会崩溃,因为版本冲突了 为了解决该问题, 行之有效的一种…...

贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据...
原文链接:http://tecdat.cn/?p22702 贝叶斯回归分位数在最近的文献中受到广泛关注,本文实现了贝叶斯系数估计和回归分位数(RQ)中的变量选择,带有lasso和自适应lasso惩罚的贝叶斯(点击文末“阅读原文”获取…...

css自学框架之图片懒加载
首先解释一下什么叫图片懒加载。图片懒加载是一种在页面加载时,延迟加载图片资源的技术,也就是说图片资源在需要的时候才会加载,就是在屏幕显示范围内加载图片,屏幕显示范围外图片不加载。 一、关键函数 用到的关键函数…...
RoutingKafkaTemplate,DefaultKafkaProducerFactory和 ReplyingKafkaTemplate
一、RoutingKafkaTemplate 1.1、RoutingKafkaTemplate 能做什么 RoutingKafkaTemplate可以根据目标topic名称在运行时选择生产者。 RoutingKafkaTemplate 不支持事务、execute、flush或metrics操作,因为这些操作的主题未知。 1.2、使用前提 RoutingKafkaTemplate 和 KafkaT…...
Flutter动态化开发之Fair实战
一、背景 目前移动端应用的版本更新, 最常见的方式是定期发版,无论是安卓还是iOS,都需要提交新的安装包到应用市场进行审核。审核通过后,用户在应用市场进行App的下载更新。而动态化, 就是不依赖更新程序安装包, 就能动态实时更新页面的技术。 相比动态化技术,定期发版…...
Stream流编程
流格式 Stream<T> filter(Predicate<? super T> predicate);-----> 参数:public interface Predicate<T> (函数式接口)----> 抽象方法:boolean test(T t);-----> 参数:public interface Consumer<T> (函…...

jenkins自动化脚本集成时钉钉消息未发送
在进行jenkins自动化脚本集成时,需要配置钉钉发送消息。钉钉的配置正确,测试钉钉消息发送成功,但是当构建项目时,却没有收到钉钉消息,报错如下: [钉钉插件]发送消息时报错: java.lang.NullPointerExceptio…...
java面试题第七天
一、java面试题第七天 1.方法重载和重写的区别? 方法重载:在同一个类中,不同的方法拥有同样的方法名,不一样的参数列表,这就叫做方法重载 **方法的重写:**描述的是父类和子类之间的。当父类的功能无法满…...

MATLAB入门-矩阵的运算
MATLAB入门-矩阵的运算 本篇文章为学习笔记,课程链接为:头歌 相关知识 常见的矩阵运算有算术运算、关系运算和逻辑运算。MATLAB中的所有变量都是以矩阵的形式存储的,单个变量就相当于一个1*1的矩阵。 算术运算 下面展示的是常见的矩阵之…...
[X3m]ros交叉编译
ros需要安装以下包 PYTHON_PACKAGE_LIST"lark lark-parser netifaces pyyaml ifcfg pyunicodedata " TogetheROS.Bot | TogetheROS.Bot用户手册 编译tros.b 1 使用docker文件 该部分操作均在开发机的docker内完成。 ## 创建目录 cd /mnt/data/kairui.wang/…...

【漏洞库】Fastjson_1.2.47_rce
文章目录 漏洞描述漏洞编号漏洞评级影响版本漏洞复现- 利用工具- 漏洞环境- 漏洞扫描- 漏洞验证- 深度利用- GetShell- EXP 编写 漏洞挖掘- 寻找入口点- 指纹信息 修复建议- 漏洞修复 漏洞原理 漏洞描述 Fastjson是阿里巴巴公司开源的一款json解析器,其性能优越&am…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...
手动给中文分词和 直接用神经网络RNN做有什么区别
手动分词和基于神经网络(如 RNN)的自动分词在原理、实现方式和效果上有显著差异,以下是核心对比: 1. 实现原理对比 对比维度手动分词(规则 / 词典驱动)神经网络 RNN 分词(数据驱动)…...