海思开发环境搭建,编译整个osdrv

本文详细介绍了如何在Ubuntu 16.04环境下搭建海思Hi3518E SDK开发环境,包括拷贝解压SDK、安装依赖、解决编译过程中遇到的各种错误,如sh命令找不到、编译工具链缺失、mkimage命令缺失、zlib.h头文件未找到等问题。通过逐步解决这些问题,最终成功编译整个OSDRV,生成包括u-boot、kernel在内的多种镜像文件。
摘要由CSDN通过智能技术生成

1、开发环境

  • windows10电脑 + 虚拟机14 Pro + Ubuntu16.0.4

2、拷贝并解压。将 Hi3518E_SDK_V1.0.3.0.tgz拷贝到 Linux 服务器上。

    cd ~/sambashare/
    cp /mnt/hgfs/winshare/HI3518EV200/Hi3518E_V200R001C01SPC030/01.software/board/Hi3518E_SDK_V1.0.3.0.tgz ./ -f          
    ls
    tar -xvf Hi3518E_SDK_V1.0.3.0.tgz

3、 安装

进入Hi3518E_SDK_V1.0.3.0目录,执行以下两个命令

    source sdk.cleanup         清除SDK
    source sdk.unpack         解压SDK

4、编译OSDRV

进入osdrv目录。
先执行distclean命令,确保SDK命令是干净的

    make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 distclean            

执行make all,编译整个osdrv目录

    make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all

4.1 出现错误

/bin/sh: 1: pushd: not found

原因:

不能压栈入栈,因为pushd命令需要在bash的环境中执行,所以需要修改系统默认shell为bash

解决方法1

  • 步骤1.which sh,结果是/bin/sh
  • 步骤2.ls -l /bin/sh,结果sh指向dash
  • 步骤3.sudo rm /bin/sh
  • 步骤4.sudo ln -s /bin/bash /bin/sh
  • 步骤5.ls -l /bin/sh,结果sh指向bash

解决方法2

  • 步骤1.sudo dpkg-reconfigure dash 【NO】
    技术分享图片
  • 步骤2.ls -l /bin/sh,结果sh指向bash

进入osdrv,继续编译

make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all

4.2 出现错误

make[2]: arm-hisiv300-linux-gcc: Command not found

原因

交叉编译工具链未安装。
由于嵌入式单板的资源有限,不能在单板上运行开发和调试工具,通常需要交叉编译调试的方式进行开发和调试,即“宿主机+目标机(评估板)”的形式。  
宿主机和目标机的处理器一般不相同。宿主机需要建立合适于目标机的交叉编译环境。程序在宿主机上经过“编译-链接-定位”得到可执行文件。通过一定的方法将可执行文件烧写到目标机中,然后再目标机上运行。所谓的交叉编译也就是A机编译,B机运行。
发布包提供两种编译工具链arm-hisiv300-linux 和 arm-hisiv400-linux,其中 arm-hisiv300-linux 为基于 uclibc 的工具链, arm-hisiv400-linux 为基于 glibc 的工具链。 uclibc比 glibc要小很多,因此我们选用arm-hisiv300-linux。

解决方法

  • 步骤1,进入工具链及其安装程序的目录位置:Hi3518E_SDK_V1.0.3.0/osdrv/opensource/toolchain/arm-hisiv300-linux
  • 步骤2,解压工具链:tar -xvf arm-hisiv300-linux.tar.bz2
  • 步骤3,安装工具链:sudo ./cross.install.v300
  • 步骤4,进入交叉编译工具链的挂载目录:cd /opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin
  • 步骤5,ls 【发现里面有很多arm-hisiv300-linux-uclibcgnueabi-xxx编译工具链】
  • 步骤6,file file arm-hisiv300-linux-uclibcgnueabi-gcc 【ELF 32-bit LSB executable,也就是说这个交叉编译工具链是32位的,但是我是用的虚拟机上Ubuntu16.04是64位的,因此必须安装32位的兼容包】
  • 步骤7,cd ../target/bin
  • 步骤8,ls 【发现里面有很多arm-hisiv300-linux-xxx编译工具链,这些是arm-hisiv300-linux-uclibcgnueabi-xxx的符号链接,就是我们要找的arm-hisiv300-linux工具链,可以用ls -l查看】
  • 步骤9,pwd 【/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin,记住这个路径,需要将这个路径导入到环境变量中:见步骤9,10】
  • 步骤10,vi ~/.bashrc,在文件末尾追加export PATH=/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin:$PATH
  • 步骤11,source ~/.bashrc 【确保环境变量设置生效.,可以用echo $PATH查看是否成功导入】
  • 步骤12,ping www.baidu.com 【确保虚拟机能上网
  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值