标签:strong 初始 shc 必须 apt 网上 www 目的 系统
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
进入Hi3518E_SDK_V1.0.3.0目录,执行以下两个命令
source sdk.cleanup 清除SDK
source sdk.unpack 解压SDK
进入osdrv目录。
先执行distclean命令,确保SDK命令是干净的
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 distclean
执行make all,编译整个osdrv目录
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
/bin/sh: 1: pushd: not found
不能压栈入栈,因为pushd命令需要在bash的环境中执行,所以需要修改系统默认shell为bash
进入osdrv,继续编译
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
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。
测试是否已经成功安装了交叉编译工具链:
在ubuntu中只想一下命令
arm-hisiv300-linux-gcc -v
出现了gcc version 4.8.3 20131202 (prerelease) (Hisilicon_v300)说明安装成功
进入osdrv,继续编译
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
"mkimage" command not found - U-Boot images will not be built
进入osdrv,继续编译
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
compr_zlib.c:39:18: fatal error: zlib.h: No such file or directory
进入osdrv,继续编译
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
serve_image.c:32:18: error: storage size of ‘hints’ isn’t known
在于ubuntu操作系统版本太高,而SDK使用的mtd-utils版本太低导致
修改操作系统头文件/usr/include/netdb.h,将此宏__USE_XOPEN2K注释,如下图(注意#ifdef与#endif是一一对应的)
进入osdrv,继续编译
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
mkfs.ubifs/hashtable/hashtable_itr.c:42:1: error: redefinition of ‘hashtable_iterator_key’
-----------
Makefile:204: recipe for target ‘hipctools‘ failed
mtd-utils_1.5.0.tar.bz2 库的问题,大家可以更新到 mtd-utils_1.5.2.tar.bz2 重新编译就可以了;
mtd-utils_1.5.2.tar.bz2的下载地址:http://nl.archive.ubuntu.com/ubuntu/pool/universe/m/mtd-utils/mtd-utils_1.5.2.orig.tar.bz2
解决:
下载mtd-utils-1.5.2.tar.bz2,替换osdrv\tools\pc\jffs2_tool目录下的mtd-utils-1.5.0.tar.bz2,
tar -jcvf mtd-utils-1.5.2.tar.bz2 mtd-utils-1.5.2
同时修改该目录下的Makefile 【不知道给如何修改】
解决方法待验证:
1.你先将osdrv/Makefile中的jffs2_tool部分注释(不再编译sdk提供的源码包)
2.然后自己从源上下载mkfs.jffs2(apt-get install mtd-utils)
3.并且将执行文件放到pub/pc目录下。【执行文件是什么???】
4.然后你再重新在osdrv/下编译(注意clean掉之前发生错误部分,不需要全部clean,选择hipctools_clean)
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 hipctools_clean
解决:
下载并解压mtd-utils-1.5.2.tar.bz2到ubuntu中,然后进入mtd的目录,
make
总结:经过百度搜索以及各种探索,发现我不能解决这个问题,因此决定把这个问题跳过去
根据打印的错误信息分析,因为:
mkfs.ubifs/hashtable/hashtable_itr.c:42:1: error: redefinition of ‘hashtable_iterator_key’
-----------
Makefile:204: recipe for target ‘hipctools‘ failed
所以要研究总Makefile里面的‘hipctools‘部分:
hipctools: prepare
@echo "---------task [5] build tools which run on pc"
make -C $(OSDRV_DIR)/tools/pc/mkyaffs2image/
cp $(OSDRV_DIR)/tools/pc/mkyaffs2image/bin/$(YAFFS_TOOL) $(OSDRV_DIR)/pub/bin/pc
make -C $(OSDRV_DIR)/tools/pc/jffs2_tool/
cp $(OSDRV_DIR)/tools/pc/jffs2_tool/mkfs.jffs2 $(OSDRV_DIR)/pub/bin/pc
cp $(OSDRV_DIR)/tools/pc/jffs2_tool/mkfs.ubifs $(OSDRV_DIR)/pub/bin/pc
cp $(OSDRV_DIR)/tools/pc/jffs2_tool/ubinize $(OSDRV_DIR)/pub/bin/pc
对照打印错误信息1:
---------task [5] build tools which run on pc
推测1:
@echo "---------task [5] build tools which run on pc" 这一句成功运行了
对照打印错误信息2:
make -C /home/aston/sambashare/Hi3518E_SDK_V1.0.3.0/osdrv/**tools/pc/mkyaffs2image/**
make[1]: Entering directory ‘/home/aston/sambashare/Hi3518E_SDK_V1.0.3.0/osdrv/ ** tools/pc/mkyaffs2image ** ‘
推测2:
make -C $(OSDRV_DIR)/**tools/pc/mkyaffs2image/** 【上面的那一句打印信息对应此句】
分析2:
对照打印错误信息3:
********************************经过验证分析发现从这里开始出错了
推测2:
cp $(OSDRV_DIR)/tools/pc/mkyaffs2image/bin/$(YAFFS_TOOL) $(OSDRV_DIR)/pub/bin/pc【上面的那一句打印信息对应此句】
验证上面的语句是否成功执行:
进入osdrv,继续编译
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
configure: error: ncurses or ncursesw selected, but library not found (--without-ncurses to disable)
进入osdrv,继续编译
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
出现---------finish osdrv work,表示整个osdrv编译成功
查看:
进入osdrv,第一次make distclean之后,终端执行命令tree osdrv/
osdrv/
├── Makefile --------------------------------- osdrv目录编译脚本
├── opensource ------------------------------- 存放各种开源源码目录
│ ├── busybox ------------------------------ 存放busybox源代码的目录
│ │ └── busybox-1.20.2.tgz
│ ├── kernel ------------------------------- 存放kernel源代码的目录
│ │ └── linux-3.4.y.tgz
│ ├── toolchain ---------------------------------- 存放工具链的目录
│ │ ├── arm-hisiv300-linux --------------------- 交叉编译工具链
│ │ │ ├── arm-hisiv300-linux.tar.bz2
│ │ │ ├── cross.install.v300
│ │ │ └── runtime_lib 【有很多以a开头的文件夹,里面全是lib.tgz文件】
│ │ │ ├── a7_hard_neon-vfpv4
│ │ │ │ └── lib.tgz
│ │ │ ├── a7_soft
│ │ │ │ └── lib.tgz
│ │ └── arm-hisiv400-linux --------------------- 交叉编译工具链
│ │ ├── arm-hisiv400-linux.tar.bz2
│ │ ├── cross.v400.install
│ │ └── runtime_lib
│ │ ├── a7_hard_neon-vfpv4
│ │ │ └── lib.tgz
│ │ ├── a7_soft
│ │ │ └── lib.tgz
│ └── uboot -------------------------------------- 存放uboot源代码的目录
│ └── u-boot-2010.06.tgz
├── pub ------------------------------------------- 存放各种镜像的目录【从这里可以看出,原本pub是空的,直到make all编译完成后里面才有东西】
├── readme_cn.txt
├── readme_en.txt
├── rootfs_scripts-------------------------------- 存放根文件系统制作脚本
│ └── rootfs.tgz
└── tools --------------------------------------------- 存放各种工具的目录
├── board ----------------------------------------- 各种单板上使用工具
│ ├── e2fsprogs ---------------------------------
│ │ ├── e2fsprogs-1.41.11.tar.gz
│ │ └── Makefile
│ ├── ethtools
│ │ ├── ethtool_6.orig.tar.gz
│ │ └── Makefile
│ ├── gdb
│ │ ├── gdb-7.6.tar.bz2
│ │ ├── Makefile
│ │ └── ncurses-5.9.tar.gz
│ ├── hifat -------------------------------------FAT文件系统制作工具
│ │ ├── glibc
│ │ │ ├── himount_api.h
│ │ │ ├── how_to_use_[chs].txt
│ │ │ ├── how_to_use_[en].txt
│ │ │ ├── shared
│ │ │ │ ├── himount
│ │ │ │ ├── libfs_lib.so
│ │ │ │ ├── libfuse.so
│ │ │ │ ├── libfuse.so.2
│ │ │ │ ├── libfuse.so.2.8.3
│ │ │ │ ├── libhimount_api.so
│ │ │ │ ├── libsdparm.so
│ │ │ │ ├── libulockmgr.so
│ │ │ │ ├── libulockmgr.so.1
│ │ │ │ └── libulockmgr.so.1.0.1
│ │ │ ├── src
│ │ │ │ └── hifat-1.0-glibc.tgz
│ │ │ └── static
│ │ │ ├── himount
│ │ │ └── libhimount_api.a
│ │ └── uclibc
│ │ ├── himount_api.h
│ │ ├── how_to_use_[chs].txt
│ │ ├── how_to_use_[en].txt
│ │ ├── shared
│ │ │ ├── himount
│ │ │ ├── libfs_lib.so
│ │ │ ├── libfuse.so
│ │ │ ├── libfuse.so.2
│ │ │ ├── libfuse.so.2.8.3
│ │ │ ├── libhimount_api.so
│ │ │ ├── libsdparm.so
│ │ │ ├── libulockmgr.so
│ │ │ ├── libulockmgr.so.1
│ │ │ └── libulockmgr.so.1.0.1
│ │ ├── src
│ │ │ └── hifat-1.0-uclibc.tgz
│ │ └── static
│ │ ├── himount
│ │ └── libhimount_api.a
│ ├── mkdosfs ----------------------------------- mkdosfs工具
│ │ ├── dosfstools-3.0.26.tar.gz
│ │ └── Makefile
│ ├── mtd-utils --------------------------------- flash裸读写工具集
│ │ ├── Makefile
│ │ └── mtd-utils-1.5.0.tar.bz2
│ ├── reg-tools-1.0.0 --------------------------- 寄存器读写工具
│ │ ├── include
│ │ │ ├── common ---------------------------- 里面是公共头文件
│ │ │ └── utils ----------------------------- 里面是utils的头文件
│ │ ├── Makefile ------------------------------ tools的makefile
│ │ └── source
│ │ ├── common ---------------------------- 里面是公共c源码
│ │ ├── tools ----------------------------- 里面是tools的c源码
│ │ └── utils ----------------------------- 里面是utils的c源码
│ └── udev-164 --------------------------- udev工具集
│ ├── Makefile
│ ├── rootfs
│ │ ├── bin
│ │ └── etc
│ │ └── udev
│ ├── rootfs.tar.bz2
│ └── udev-164.tar.bz2
├── Makefile
└── pc ------------------------------------------ 各种pc上使用工具
├── cramfs_tool ----------------------------- cramf文件系统制作工具
│ ├── Makefile
│ └── util-linux-2.22-rc2.tar.bz2
├── ext4_utils
│ ├── ext4_utils.tar.bz2
│ └── Makefile
├── jffs2_tool ----------------------------- jffs2文件系统制作工具
│ ├── lzo-2.09.tar.gz
│ ├── Makefile
│ └── mtd-utils-1.5.0.tar.bz2
├── lzma_tool ------------------------------ lzma压缩工具
│ ├── lzma-4.32.7.tar.gz
│ └── Makefile
├── mkimage_tool --------------------------- uImage制作工具
│ ├── fastboot.tar.bz2
│ └── Makefile
├── mkyaffs2image ------------------------- yaffs2文件系统制作工具
│ ├── Makefile
│ └── mkyaffs2image.tar.bz2
├── nand_production ------------------------ nand量产工具
│ ├── nand_production_hitool
│ │ └── readme
│ └── nand_production_linux
│ ├── spinand_product
│ └── spinand_readme.txt
├── squashfs4.2 ------------------------- squashfs文件系统制作工具
│ ├── Makefile
│ ├── squashfs4.2.tar.bz2
│ ├── xz-5.0.4.tar.bz2
│ └── zlib-1.2.7.tar.bz2
├── ubifs_config ---------------------------ulifs文件系统配置工具
│ ├── ubi_hi3516cv200.cfg
│ ├── ubi_hi3518ev200.cfg
│ └── ubi_hi3518ev201.cfg
├── uboot_tools---------------------------- uboot镜像制作工具、xls文件及ddr初始化脚本、Fastboot工具
│ ├── Hi3516CV200-DEMO-uboot-DDR3-DDRC200MHz-256MB-16bit-CPU600MHz-AXI200MHz.log
│ ├── Hi3516CV200-DMEB-uboot-DDR3-DDRC200MHz-256MB-16bit-CPU600MHz-AXI200MHz.xls
│ ├── Hi3518EV200-DMEB-uboot-DDR2-DDRC180MHz-64MB-16bit-CPU540MHz-AXI200MHz.log
│ ├── Hi3518EV200-DMEB-uboot-DDR2-DDRC180MHz-64MB-16bit-CPU540MHz-AXI200MHz.xls
│ ├── Hi3518EV201-DMEB-uboot-DDR2-DDRC180MHz-32MB-16bit-CPU540MHz-AXI200MHz.log
│ ├── Hi3518EV201-DMEB-uboot-DDR2-DDRC180MHz-32MB-16bit-CPU540MHz-AXI200MHz.xls
│ ├── mkboot.sh
│ ├── readme
│ ├── reg_info_hi3516cv200.bin
│ ├── reg_info_hi3518ev200.bin
│ └── reg_info_hi3518ev201.bin
└── zlib
├── Makefile
└── zlib-1.2.7.tar.bz2
编译完成osdrv之后,进入osdrv目录:执行命令tree pub 【编译完后的镜像放在/osdrv/pub目录下】
pub
├── bin
│ ├── board_uclibc -------------------- hisiv300编译出的单板工具
│ │ ├── ethtool
│ │ ├── flashcp
│ │ ├── flash_erase
│ │ ├── flash_otp_dump
│ │ ├── flash_otp_info
│ │ ├── gdb-arm-hisiv300-linux
│ │ ├── hifat -------------------------- hifat工具
│ │ │ ├── himount_api.h
│ │ │ ├── how_to_use_[chs].txt
│ │ │ ├── how_to_use_[en].txt
│ │ │ ├── shared
│ │ │ │ ├── himount
│ │ │ │ ├── libfs_lib.so
│ │ │ │ ├── libfuse.so
│ │ │ │ ├── libfuse.so.2
│ │ │ │ ├── libfuse.so.2.8.3
│ │ │ │ ├── libhimount_api.so
│ │ │ │ ├── libsdparm.so
│ │ │ │ ├── libulockmgr.so
│ │ │ │ ├── libulockmgr.so.1
│ │ │ │ └── libulockmgr.so.1.0.1
│ │ │ ├── src
│ │ │ │ └── hifat-1.0-uclibc.tgz
│ │ │ └── static
│ │ │ ├── himount
│ │ │ └── libhimount_api.a
│ │ ├── mtd_debug
│ │ ├── nanddump
│ │ ├── nandtest
│ │ ├── nandwrite
│ │ └── sumtool
│ └── pc 【各种pc工具 】
│ ├── lzma --------------------------------------- lzma压缩工具
│ ├── make_ext4fs -------------------------------- ext4文件系统制作工具
│ ├── mkfs.cramfs -------------------------------- cramf文件系统制作工具
│ ├── mkfs.jffs2 ------------------------------------ jffs2文件系统制作工具
│ ├── mkimage ------------------------------------ uImage制作工具
│ ├── mksquashfs --------------------------------- squashfs文件系统制作工具
│ └── mkyaffs2image100 ------------------------ yaffs2文件系统制作工具
├── image_uclibc --------------------------------------- hisiv300编译出的镜像文件
│ ├── rootfs_hi3518ev200_128k.jffs2 ------------128K jffs2文件系统镜像
│ ├── rootfs_hi3518ev200_256k.jffs2 ----------- 256K jffs2文件系统镜像
│ ├── rootfs_hi3518ev200_2k_4bit.yaffs2 ------ yaffs 文件系统镜像
│ ├── rootfs_hi3518ev200_32M.ext4 ------------ ext4 文件系统镜像
│ ├── rootfs_hi3518ev200_64k.jffs2 ------------- 64K jffs文件系统镜像
│ ├── u-boot-hi3518ev200.bin -------------------- uboot镜像
│ └── uImage_hi3518ev200 ----------------------- kernel镜像
└── rootfs_uclibc.tgz ------------------------ hisiv300编译出的rootfs文件系统
总结:编译整个osdrv的目的是为了生成相应的uboot,kernel,yaffs以下载到开发板上。
2、ubuntu16.06安装Hi3518EV200 SDK
标签:strong 初始 shc 必须 apt 网上 www 目的 系统
原文地址:https://www.cnblogs.com/Ocean-Star/p/8902397.html