转载,侵删
HI3518EV200 SDK安装并编译osdr。
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 【确保虚拟机能上网】
- 步骤13,sudo aptitude install lib32z1 【注意:要安装任何软件之前,一定要确保虚拟机能上网】
- 步骤14,sudo aptitude install lib32stdc++6-4.8-dbg 【注意:要安装任何软件之前,一定要确保虚拟机能上网】
测试是否已经成功安装了交叉编译工具链:
在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
4.3 出现错误
"mkimage" command not found - U-Boot images will not be built
解决方法1:
- 步骤1,cd osdrv/opensource/uboot/u-boot-2010.06
- 步骤2,ls 【可以看到里面uboot.bin已经生成了】
- 步骤3,cd tools 【里面有mkimage.c和mkimage】
- 步骤4,file mkimage 【写x86-64位的架构,ubuntu16.0.04也是x86-64架构,因此可以在当前虚拟机上运行】
- 步骤5,sudo cp mkimage /usr/local/bin
- 步骤6,cd ../../
- 步骤7,ls 【发现里面要u-boot-2010.06文件夹和u-boot-2010.06.tgz压缩包】
- 步骤8,mki[连续按TabTab键] 【发现补全mkimage,说明已经成功解决了】
解决方法2:
- 步骤1, ping www.baidu.com 确保虚拟机能上网
- 步骤2,sudo apt-get install u-boot-tools
进入osdrv,继续编译
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
4.4 出现错误:
compr_zlib.c:39:18: fatal error: zlib.h: No such file or directory
解决方法
- 步骤1,sudo aptitude install zlib1g-dev
进入osdrv,继续编译
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
4.5 出现错误:
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是一一对应的)
- 步骤1,sudo vi /usr/include/netdb.h
- 步骤2,:set nu 【显示行号】
- 步骤3,/__USE_XOPEN2K 【搜索】
- 步骤4,将第79行的#if defined __USE_XOPEN2K || defined __USE_XOPEN_EXTENDED和相应的第82行的#endif用//注释掉
- 步骤5,/__USE_XOPEN2K 【搜索】
- 步骤6,第565行的#ifdef __USE_XOPEN2K和第681行的的#endif用//注释掉 【用:681命令跳转到681行】
进入osdrv,继续编译
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
4.6 出现错误:
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/** 【上面的那一句打印信息对应此句】
- 总结: make -C $(OSDRV_DIR)/**tools/pc/mkyaffs2image/**目的是为了生成mkyaffs2image100和mkfs.jffs2文件。
分析2:
- 步骤1,进入**osdrv/tools/pc/mkyaffs2image/**mkyaffs2image/目录,并且ls,【发现里面有很多.c,.h文件,以及有makefile。推测这个文件是为了生成某个东西】
- 步骤2,进入**osdrv/tools/pc/mkyaffs2image/**bin,并且ls 【发现已经里面生成了mkyaffs2image100文件】
- 步骤3,进入osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0 ,并且ls 【发现已经里面生成了mkfs.jffs2】【分析makfile,并结合网上信息】
对照打印错误信息3:
********************************经过验证分析发现从这里开始出错了
推测2:
cp $(OSDRV_DIR)/tools/pc/mkyaffs2image/bin/$(YAFFS_TOOL) $(OSDRV_DIR)/pub/bin/pc【上面的那一句打印信息对应此句】
- 总结:这句话的目的:将生成的mkyaffs2image100和mkfs.jffs2文件复制到osdrv/pub/bin/pc目录中去
验证上面的语句是否成功执行:
- 步骤1,cd osdrv/pub/bin/pc
- 步骤2,ls 【里面只有mkyaffs2image100】
解决方案:
第一步:手动执行这一句[cp $(OSDRV_DIR)/tools/pc/mkyaffs2image/bin/$(YAFFS_TOOL) $(OSDRV_DIR)/pub/bin/pc]
- 步骤1,cd osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0
- 步骤2,cp ./mkfs.jffs2 ./../../../../../pub/bin/pc
- 步骤3,ls ./../../../../../pub/bin/pc 【里面mkfs.jffs2,mkyaffs2image100】
第二步:然后将osdrv的总Makefile里面的jffs2_tool注释掉【用#】:
步骤1,sudo vi Makefile
步骤2,/jffs2_tool 【搜索】
#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
#cp $(OSDRV_DIR)/tools/pc/jffs2_tool/ubi.cfg $(OSDRV_DIR)/pub/bin/pc########################################################################################## #task [5] build pc tools ########################################################################################## 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 #cp $(OSDRV_DIR)/tools/pc/jffs2_tool/ubi.cfg $(OSDRV_DIR)/pub/bin/pc #make -C $(OSDRV_DIR)/tools/pc/cramfs_tool/ #cp $(OSDRV_DIR)/tools/pc/cramfs_tool/mkfs.cramfs $(OSDRV_DIR)/pub/bin/pc #make -C $(OSDRV_DIR)/tools/pc/mkimage_tool/ #cp $(OSDRV_DIR)/tools/pc/mkimage_tool/mkimage $(OSDRV_DIR)/pub/bin/pc #make -C $(OSDRV_DIR)/tools/pc/squashfs4.2/ #cp $(OSDRV_DIR)/tools/pc/squashfs4.2/mksquashfs $(OSDRV_DIR)/pub/bin/pc #make -C $(OSDRV_DIR)/tools/pc/lzma_tool/ #cp $(OSDRV_DIR)/tools/pc/lzma_tool/lzma $(OSDRV_DIR)/pub/bin/pc #make -C $(OSDRV_DIR)/tools/pc/ext4_utils/ #cp $(OSDRV_DIR)/tools/pc/ext4_utils/bin/$(EXT4_TOOL) $(OSDRV_DIR)/pub/bin/pc hipctools_clean: make -C $(OSDRV_DIR)/tools/pc/mkyaffs2image clean make -C $(OSDRV_DIR)/tools/pc/jffs2_tool distclean #make -C $(OSDRV_DIR)/tools/pc/cramfs_tool distclean #make -C $(OSDRV_DIR)/tools/pc/mkimage_tool distclean #make -C $(OSDRV_DIR)/tools/pc/squashfs4.2 distclean #make -C $(OSDRV_DIR)/tools/pc/lzma_tool distclean #make -C $(OSDRV_DIR)/tools/pc/ext4_utils clean
进入osdrv,继续编译
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
4.7 出现错误:
configure: error: ncurses or ncursesw selected, but library not found (--without-ncurses to disable)
解决方法
- 步骤1,sudo apt-get install libncurses5-dev libncursesw5-dev【先确保能ping通】
进入osdrv,继续编译
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
4.8 结果
出现---------finish osdrv work,表示整个osdrv编译成功
- 总结:此时只有mkfs.ubifs/hashtable/hashtable_itr.c:42:1: error: redefinition of ‘hashtable_iterator_key’被跳过了。拍摄快照。
4.9 查看成果:
查看:
- cd /home/aston/sambashare/Hi3518E_SDK_V1.0.3.0/osdrv/pub/image_uclibc
4.8M rootfs_hi3518ev200_128k.jffs2
4.8M rootfs_hi3518ev200_256k.jffs2
12M rootfs_hi3518ev200_2k_4bit.yaffs2
16M rootfs_hi3518ev200_32M.ext4
4.8M rootfs_hi3518ev200_64k.jffs2
268K u-boot-hi3518ev200.bin
2.6M uImage_hi3518ev200
5. 整个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
5. 分析osdrv的目录结构
编译完成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以下载到开发板上。