海思開發環境搭建,編譯整個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以下載到開發板上。