Hi3519V101 开发环境搭建

引言

这是个被气晕在厕所的故事,海思的文档乱到我人生崩溃,交叉编译工具的目录是错误的,不安装SDK又没法安装交叉编译工具,board/document 里有一个Hi3519V101/Hi3516AV200 SDK 安装以及升级使用说明.txt的文档,打开编译不过几句,就让你编译osdrv,编译了一下午,技术支持告诉我不要编译,这个编译不过去……还好看到了Hi3519V101开发环境搭建(一)。于是想要自己整理一下,自己的悲催开发环境搭建之路。

SDK的安装

1、Hi3519V101 SDK包位置
在"Hi3519***/01.software/board"目录下,可以看到一个 Hi3519V101_SDK_Vx.x.x.x.tgz 的文件,
该文件就是Hi3519V101 的软件开发包
2、解压SDK

tar -zxf Hi3519V101_SDK_Vx.x.x.x.tgz

3、 展开SDK(仅用于Linux开发)
进入解压后的文件路径:

./sdk.unpack

4、[Hi3519V101开发环境搭建(一)]中说展开SDK这一步是不会成功的,出现类似于./sdk.unpack: 71: ./sdk.unpack: ECHO: not found 的问题,由于我参考的比较乱,我出现这个问题是出现在编译osdrv的过程中,出现的问题是: /bin/sh: 1: pushd: not found。但是这两个问题的原因是一样的,是由于ubuntu的系统模式脚本是sh、我们需要将其更改成默认的bash。
查看原因:

/bin# ls -lh sh

显示结果:

sh ->dash

解决方法:

sudo dpkg-reconfigure dash 

将dash设置为NO就可以了。

交叉编译工具

发布包提供两种编译工具链 arm-hisiv500-linux 和 arm-hisiv600-linux,其中arm-hisiv500-linux 为基于 uclibc 的工具链,arm-hisiv600-linux 为基于 glibc 的工具链。

我采用了 arm-hisiv500-linux 版本。
工具链路径:

Hi3519V101R001C01SPC040/01.software/board/Hi3519V101_SDK_V1.0.4.0/osdrv/opensource/toolchain

1、执行解压命令:

cd toolchain/arm-hisiXXX-linux/
tar -xvf arm-hisiXXX-linux.tar.bz2

2、安装工具链(需要sudo或者root权限):

chmod +x arm-hisiv500-linux.install
./arm-hisiv500-linux.install

3、使环境变量生效:

source /etc/profile

4、执行

arm-hisiv500-linux-gcc -v

出现错误:
bash: /opt/hisi-linux/x86-arm/arm-hisiv500-linux/target/bin/arm-hisiv500-linux-gcc: 没有那个文件或目录
解决方法:

sudo apt install lib32z1-dev

原因:宿主机64位、交叉编译器基于32位开发板制作~

编译osdrv

编译整个osdrv目录:

make OSDRV_CROSS=arm-hisiv500-linux FLASH_TYPE=spi all

FLASH_TYPE:设为nand参数时,使用Nand Flash;设为spi参数时,使用SPI Nor Flash或SPI Nand Flash。这里采用了SPI Nor Flash。
编译的时候遇到了如下问题:

Error 1:

在这里插入图片描述原因是没有安装mkimage。可采用:

sudo apt-get install uboot-mkimage

进行安装,也可以使用Hi3519V101_SDK_V2.0.2.1/osdrv/tools/pc/mkimage_tool里的,进行make之后讲mkimage复制到/usr/bin/目录下。

sudo cp mkimage /usr/bin/

两种方式选用一种即可。

Error 2:

重新进行编译,报错:serve_image.c:32:18: error: storage size of ‘hints’ isn’t known
在这里插入图片描述原因:ubuntu版本过高,SDK使用的mtd-utils版本过低导致。解决方法:
修改SDK版本下的mtd-utils-1.5.0为高版本的mtd-utils-2.0.0,
下载2.0.0版本:

wget ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-2.0.0.tar.bz2 

需要修改的路径:

Hi3519V101_SDK_V2.0.2.1/osdrv/tools/board/mtd-utils
Hi3519V101_SDK_V2.0.2.1/osdrv/tools/pc/jffs2_tool

将1.5.0替换为2.0.0,同时将makfile中的版本一并修改:
在这里插入图片描述
解压mtd-utils-2.0.0 这里面是没有Makefile文件的,但是有Makefile.am和Makefile.in文件,所以需要手动生成make文件

./configure

期间:报错

(uuid) were not met

sudo apt install uuid-dev

报错:

configure: error: lzo missing

sudo apt install liblzo2-dev

再将生成好Makefile的文件重新压缩,放到指定位置。
重新编译之前,需清除已经编译的文件,不然会报错:

make OSDRV_CROSS=arm-hisiv500-linux clean

再次编译,理论上可行……但事实啪啪打脸,在这里插入图片描述最后查看了文件,发现,本来应该位于/tmp/sbin目录下的文件,全部位于/tmp/usr/local/sbin目录下。原因是之前生成的2.0版本的mtd的Makefile文件出现问题。输出路径有误。因此修改2.0版本的Makefile文件:
在这里插入图片描述
修改成sbindir = /sbin
再次编译。这个问题已经解决啦~

Error 3:

在这里插入图片描述
解决方法:

sudo apt-get install libncurses5-dev libncursesw5-dev
Error 4:

在这里插入图片描述
经过反复试验。。发现。。在这里用mtd 1.5.0版本并没什么影响,而我之前已经替换成了2.0版本,因此回退到1.5.0版本。暂不清楚pc和board版本不一致会带来哪些影响。有坑再填。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值