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 【确保虚拟机能上网