HI3519V101sdk下载及编译配置问题解决

接触海思3519V101有小半年了,磕磕碰碰,碰到了许多稀里糊涂的问题,感受一个菜鸟入门的不易,把自己碰到的一些小问题在这介绍一下,希望能给一些有疑惑的新手一点小想法,共同进步。
本文主要简单介绍了海思3519v101的SDK编译过程,并将编译过程碰到的问题及解决方法进行讲解,强烈建议使用SecureCRT_V6.5串口调试软件汉化版这个软件来在线操作虚拟机。
另外,本文在虚拟机上编译海思SDK时出现过虚拟机莫名重启的问题,详情见文末,只能通过SecureCRT这款软件来编译,但编译成功之后再编译其他版本SDK便不会出现重启的现象,具体原因我也不是很清楚

Hi3519_V101R001C01SPC030

1. SDK下载

虽然不是最新的版本,但有需要的可以自己下载哦,欢迎留言探讨!
链接:https://pan.baidu.com/s/1LLlL4b6J37zC97FqUpyvkw
提取码:b278

2. 复制到Linux并解压

在"Hi3519***/01.software/board"目录下,您可以看到一个Hi3519V101_SDK_Vx.x.x.x.tgz 的文件,该文件就是Hi3519V101 的软件开发包。复制到Linux虚拟机并解压后。
解压命令:tar -zxf Hi3519V101_SDK_Vx.x.x.x.tgz
如果发现没有权限,则应该添加root权限,即在命令前添加sudo(下文所有root权限都是如此操作),即“sudo tar -zxf Hi3519V101_SDK_Vx.x.x.x.tgz”。

3.展开SDK安装包内容

在SDK下,会发现有个文件sdk.unpack,用root权限下运行./sdk.unpack,会展开SDK包打包压缩存放的内容,一直按回车键,得到如下目录:
在这里插入图片描述

4、安装交叉编译工具

Linux系统无法直接对c语言文件进行编译,需要一系列编译工具才能将c语言文件生成可执行文件。
SDK本身提供了两种编译工具,uclibc交叉编译器和glibc交叉编译器,随机选择一种即可,此处选用uclibc交叉编译器,步骤如下:
进入Hi3519V101_SDK_Vx.x.x.x/osdrv/opensource/toolchain/arm-hisiv500-linux目录,root权限下运行chmod +x arm-hisiv500-linux.install,然后运行./arm-hisiv500-linux.install即可。
执行source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了(此时输入arm-hisiv500-linux-gcc -v可以看到安装信息)
在这里插入图片描述

5、编译

进入Hi3519V101_SDK_Vx.x.x.x/osdrv/底下,有个read_me文件,可仔细阅读。步骤如下:
运行make OSDRV_CROSS=arm-hisiv500-linux CHIP=xxx FLASH_TYPE=xxx all
参数配置如下:
CHIP:设为hi3519v101参数时,对应芯片为hi3519v101;设为hi3516av200参数时,对应芯片为hi3516av200。
FLASH_TYPE:设为nand参数时,使用Nand Flash;设为spi参数时,使用SPI Nor Flash或SPI Nand Flash。
具体例子如:make OSDRV_CROSS=arm-hisiv500-linux CHIP=hi3519v101 FLASH_TYPE=nand all
FLASH_TYPE可以不添加,直接运行make OSDRV_CROSS=arm-hisiv500-linux CHIP=hi3519v101 all
编译时间大概是半个小时,编译结束会出现---------finish osdrv work的字样,如果没出现这行字都是编译未成功,解决方法如下。

本人编译过程中的问题

1、make的权限问题

在第5步骤执行整个目录的编译时,会告诉我们权限受限的问题,如果使用sudo获得root权限,编译会出现无法找到arm-hisiv500编译工具的问题,主要原因是我们安装交叉编译工具后,非root权限的环境变量有交叉编译工具的位置链接,但root权限的环境变量并未生效。我们可以使用“echo $PATH ”查看环境变量,会发现root底下没有交叉编译工具。

在这里插入图片描述

解决方案如下:

  1. 给root添加环境变量**
    输入“su”,并修改/etc/profile文件,在最后一行添加export PATH="/opt/hisi-linux/x86-arm/arm-hisiv500-linux/target/bin:$PATH" ,每个人的交叉编译工具位置不一样,根据位置路径进行修改。
    在这里插入图片描述

  2. 给osdrv文件赋予权限
    使用root权限执行“chmod -R 777 osdrv/",之后执行make OSDRV_CROSS=arm-hisiv500-linux CHIP=hi3519v101 all进行编译。

2、“mkimage” command not found
"mkimage" command not found - U-Boot images will not be built
make[2]: *** [arch/arm/boot/uImage] Error 1
make[1]: *** [uImage] Error 2

解决方法:

  1. apt-get install uboot-mkimage,结果发现Package ‘uboot-mkimage’ has no installation candidate
  2. sudo apt-get install u-boot-tools
3、configure: error: ncurses or ncursesw selected, but library not found (–without-ncurses to disable)

解决方法

  • sudo apt-get install libncurses5-dev libncursesw5-dev
4、编译过程,虚拟机莫名重启的问题

不知道为什么,我的虚拟机初次编译海思SDK时,每次打印信息出现下面这些文字时,总是会重启

configure: cross-compiling for arm-hisiv500-linux-gnu is not supported
configure: WARNING: decimal float is not supported for this target, ignored
configure: WARNING: cannot check signal handling if cross compiling -- defaulting to no
configure: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing
configure: WARNING: cannot check strcoll if cross compiling -- defaulting to no
configure: WARNING: cannot check ctype macros if cross compiling -- defaulting to no
configure: WARNING: result yes guessed because of cross compilation
configure: WARNING: expat is missing or unusable; some features may be unavailable.
configure: WARNING: python is missing or unusable; some features may be unavailable.
configure: WARNING: result yes guessed because of cross compilation
configure: WARNING: babeltrace is missing or unusable; GDB is unable to read CTF data.
configure: WARNING: result yes guessed because of cross compilation
Creating observer.htmp
Creating observer.itmp

在这里插入图片描述
解决方法:
不知道是不是虚拟机内存过小,我选用了SecureCRT,通过该软件,可以在线远程操作虚拟机,相当方便,在此介绍一下工作流程
1、文件----连接----新建session(新建会话)----SHH2协议
在这里插入图片描述
2、新建会话向导中,主机名填自己虚拟机的IP地址(不知道的可以在虚拟机中输入ifconfig进行查看),用户名就填自己虚拟机对应的用户名
在这里插入图片描述
输入自己虚拟机的密码
在这里插入图片描述
之后便可以在会话栏中输入指令操作虚拟机(如下)
在这里插入图片描述
此时输入make OSDRV_CROSS=arm-hisiv500-linux CHIP=hi3519v101 all可在虚拟机上正常编译海思SDK,“---------finish osdrv work”
在这里插入图片描述

附录SDK目录介绍

Hi3519V101_SDK_Vx.x.x.x 目录结构如下:
|-- sdk.cleanup # SDK清理脚本
|-- sdk.unpack # SDK展开脚本
|-- osdrv # 存放操作系统及相关驱动的目录
| |-- opensource # opensource源代码
| | |-- busybox # busybox源代码
| | |-- kernel # linux内核源代码
| | |-- toolchain # 交叉编译器
| | |-- uboot # uboot源代码
| |-- pub # 编译好的镜像、工具、drv驱动等
| |-- tools # linux工具源代码
| |-- readme_cn.txt # osdrv使用说明(中文版)
| |-- readme_en.txt # osdrv使用说明(英文版)
| |-- … #
| |-- Makefile # osdrv Makefile
|-- osal # 存放操作系统适配层的头文件和源文件的目录
| |-- include # 存放操作系统适配层的头文件的目录
| |-- source # 存放操作系统适配层的源文件的目录
|-- package # 存放SDK各种压缩包的目录
| |-- osdrv.tgz # linux内核/uboot/rootfs/tools源码压缩包
| |-- osal.tgz # 操作系统适配层源码压缩包
| |-- mpp_.tgz # 媒体处理平台软件压缩包
| |-- drv.tgz # drv压缩包
| |-- image_
# 可供FLASH烧写的映像文件(如内核、根文件系统)和rootfs的压缩包
|-- scripts # 存放shell脚本的目录
|-- drv # drv目录
| |-- extdrv # 板级外围驱动源代码
| |-- interdrv # mipi,rtc,cipher等驱动源代码
|-- mpp_single # 存放单核媒体处理平台的目录
| |-- component # 组件源代码
| |-- init # 内核模块的初始化源代码
| |-- obj # 内核模块的obj文件
| |-- include # 对外头文件
| |-- ko # 内核模块
| |-- lib # release版本库以及音频库
| |-- Makefile.param # mpp一些全局编译选项
| |-- Makefile # mpp的Makefile
| |-- linux.param # mpp一些跟操作系统相关的全局编译选项
| |-- tools # 媒体处理相关工具
| |-- sample # 样例源代码
|-- mpp_big-little # 存放big-little双核媒体处理平台的目录

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值