1. 程式人生 > >海思開發環境搭建,編譯整個osdrv

海思開發環境搭建,編譯整個osdrv

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

進入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以下載到開發板上。