01.ubuntu16.06编译安装Hi3518EV200 SDK

Wesley13
• 阅读 781

转载,侵删

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】
    01.ubuntu16.06编译安装Hi3518EV200 SDK
  • 步骤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以下载到开发板上。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这