1、HI3518环境搭建
1.1软硬件环境和准备
1.ubuntu:16.04 可联网
2.window7
3.HI3518EV200开发板(网卡、SD卡、16Mspi_flash、USB 、 串口)
4.SDK包:Hi3518E V200R001C01SPC040
1.2安装交叉编译工具
路劲:Hi3518E V200R001C01SPC040\01.software\board\Hi3518E_SDK_V1.0.4.0.tgz
①、将编译工具链拷到ubuntu,并解压
cp /mnt/hgfs/winshare/Hi3518E_SDK_V1.0.4.0.tgz ./
tar -xvf Hi3518E_SDK_V1.0.4.0.tgz
②、运行sdk.unpack
解压后的文件:package scripts sdk.cleanup sdk.unpack
运行 sdk.unpack source sdk.unpack,会自动解压等操作
③、安装交叉工具链
进入路径:/osdrv/opensource/toolchain
有两个,我们选择第一个arm-hisiv300-linux ,再进入
运行cross.install.v300 ./cross.install.v300
进入 /opt/hisi-linux/x86-arm/arm-hisiv300-linux/ 发现自动帮我们把编译工具链安装到此处了
④、创建交叉编译工具链符号链接
为工具链创建符号链接,因为编译osdrv时,需要使用arm-hisiv300-linux, 在此目录下,进入bin文件夹,创建一个脚本creat_hisiv300.sh,直接运行 source creat_hisiv300.sh,脚本内容如下
ln -s arm-hisiv300-linux-uclibcgnueabi-addr2line arm-hisiv300-linux-addr2line
ln -s arm-hisiv300-linux-uclibcgnueabi-ar arm-hisiv300-linux-ar
ln -s arm-hisiv300-linux-uclibcgnueabi-as arm-hisiv300-linux-as
ln -s arm-hisiv300-linux-uclibcgnueabi-c++ arm-hisiv300-linux-c++
ln -s arm-hisiv300-linux-uclibcgnueabi-c++filt arm-hisiv300-linux-c++filt
ln -s arm-hisiv300-linux-uclibcgnueabi-cpp arm-hisiv300-linux-cpp
ln -s arm-hisiv300-linux-uclibcgnueabi-elfedit arm-hisiv300-linux-elfedit
ln -s arm-hisiv300-linux-uclibcgnueabi-g++ arm-hisiv300-linux-g++
ln -s arm-hisiv300-linux-uclibcgnueabi-gcc arm-hisiv300-linux-gcc
ln -s arm-hisiv300-linux-uclibcgnueabi-gcc-4.8.3 arm-hisiv300-linux-gcc-4.8.3
ln -s arm-hisiv300-linux-uclibcgnueabi-gcc-ar arm-hisiv300-linux-gcc-ar
ln -s arm-hisiv300-linux-uclibcgnueabi-gcc-nm arm-hisiv300-linux-gcc-nm
ln -s arm-hisiv300-linux-uclibcgnueabi-gcc-ranlib arm-hisiv300-linux-gcc-ranlib
ln -s arm-hisiv300-linux-uclibcgnueabi-gcov arm-hisiv300-linux-gcov
ln -s arm-hisiv300-linux-uclibcgnueabi-gdb arm-hisiv300-linux-gdb
ln -s arm-hisiv300-linux-uclibcgnueabi-gprof arm-hisiv300-linux-gprof
ln -s arm-hisiv300-linux-uclibcgnueabi-ld arm-hisiv300-linux-ld
ln -s arm-hisiv300-linux-uclibcgnueabi-ld.bfd arm-hisiv300-linux-ld.bfd
ln -s arm-hisiv300-linux-uclibcgnueabi-nm arm-hisiv300-linux-nm
ln -s arm-hisiv300-linux-uclibcgnueabi-objcopy arm-hisiv300-linux-objcopy
ln -s arm-hisiv300-linux-uclibcgnueabi-objdump arm-hisiv300-linux-objdump
ln -s arm-hisiv300-linux-uclibcgnueabi-ranlib arm-hisiv300-linux-ranlib
ln -s arm-hisiv300-linux-uclibcgnueabi-readelf arm-hisiv300-linux-readelf
ln -s arm-hisiv300-linux-uclibcgnueabi-size arm-hisiv300-linux-size
ln -s arm-hisiv300-linux-uclibcgnueabi-strings arm-hisiv300-linux-strings
ln -s arm-hisiv300-linux-uclibcgnueabi-strip arm-hisiv300-linux-strip
⑤、添加环境变量
vi ~/.bashrc,在文件末尾追加export PATH=/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin:$PATH
重启终端,以便环境变量生效
验证是否生效 arm-hisiv300-linux-gcc -v
出现以下错误
bash: /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin/arm-hisiv300-linux-gcc: No such file or directory
⑥、解决64位ubuntu不兼容32bit工具问题
以上问题由于64位ubuntu不兼容32bit工具问题,使用以下步骤解决
sudo aptitude install lib32z1 第一个选择N
sudo aptitude install lib32stdc++6-4.8-dbg 第一个选择N
有时选择国内镜像源安装可能不成功
⑦、验证安装成功
运行arm-hisiv300-linux-gcc -v出现版本号
gcc version 4.8.3 20131202 (prerelease) (Hisilicon_v300)
1.3编译OSDRV及出现的问题
进入cd /usr/HI/Hi3518E_SDK_V1.0.4.0/osdrv/编译时使用
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
①、问题 /bin/sh: 1: pushd: not found
查看sh链接为dash
改为bash
rm -sh
ln -s bash sh
②、问题 “mkimage” command not found - U-Boot images will not be built
进入/usr/HI/Hi3518E_SDK_V1.0.4.0/osdrv/opensource/uboot/u-boot-2010.06/tools
将mkimage拷贝到/bin
cp mkimage /bin
③、问题 compr_zlib.c:39:18: fatal error: zlib.h: No such file or directory
sudo aptitude install zlib1g-dev
④、问题 serve_image.c:103:35: error: dereferencing pointer to incomplete type ‘struct addrinfo’
在于ubuntu操作系统版本太高,而SDK使用的mtd-utils版本太低导致
修改操作系统头文件/usr/include/netdb.h,将此宏__USE_XOPEN2K注释
注意#ifdef与#endif是一一对应的
⑤、mkfs.ubifs/hashtable/hashtable_itr.c:42:1: error: redefinition of ‘hashtable_iterator_key’
先下载mtd-utils_1.5.2.orig.tar.bz2
下载地址:http://nl.archive.ubuntu.com/ubuntu/pool/universe/m/mtd-utils/mtd-utils_1.5.2.orig.tar.bz2
拷贝到此目录下:/osdrv/tools/pc/jffs2_tool
重命名为:mtd-utils_1.5.2.orig.tar.bz2
更改同目录下的makefile MTD_UTILS := mtd-utils-1.5.2
⑥、问题 mkfs.ubifs/mkfs.ubifs.h:46:23: fatal error: uuid/uuid.h: No such file or directory compilation terminated.
在这里插入代码片
⑦、问题 error: ncurses or ncursesw selected, but library not found (–without-ncurses to disable)
sudo apt-get install libncurses5-dev libncursesw5-dev
————————————————
注:本文参考原文链接: