搭建開發環境
1. 準備ubuntu 16.04
還是windows下載東西快,今天網絡差。只好在win下用迅雷下載一些包。
1.1 下載etcher
1.2 準備ubuntu16.04 iso
1.3 用etcher 製作ubuntu啓動USB
I3臺式機開機按F12進入BOOT選項
1.4 等待安裝完成
1.5 複製Hi3518E_V200R001C01SPC030至主機
1.6 ssh
sudo apt install openssh-server
1.7 解壓
tar -zxf Hi3518E_SDK_V1.0.3.0.tgz
1.8 更改source.list
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
2. 展開SDK包內容
./sdk.cleanup
運行shell的時候出現 ./sdk.unpack: source: not found
ubuntu16.04 系統默認的SH(腳本解析器)爲dash,可以使用 ls -l /bin/sh 命令查看
修改默認腳本解析器爲bash,方法如下:
1、命令行輸入:sudo dpkg-reconfigure dash
2、選擇<no>
3、ls -l /bin/sh 查詢確認
./sdk.unpack
3、在linux服務器上安裝交叉編譯器
cd osdrv/opensource/toolchain/arm-hisiv300-linux
sudo ./cross.install.v300
導入環境變量
export PATH=/opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin:$PATH
echo $PATH
修改~/.bashrc
vim ~/.bashrc
在最底部添加:
export PATH=/opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin:$PATH
讓配置生效
source ~/.bashrc
4、編譯OSDRV
cd ~/HI3518EV200/Hi3518E_SDK_V1.0.3.0/osdrv/
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
錯誤,系統找不到arm-hisiv300-linux-gcc,說明交叉編譯工具未安裝完成
4.1 安裝交叉編譯工具
解決方法
步驟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 apt install lib32z1 【注意:要安裝任何軟件之前,一定要確保虛擬機能上網】
步驟14,sudo apt install lib32stdc++6-4.8-dbg 【注意:要安裝任何軟件之前,一定要確保虛擬機能上網】
4.2 再次編譯
cd ~/HI3518EV200/Hi3518E_SDK_V1.0.3.0/osdrv/
make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
4.3 錯誤
4.3.1 "mkimage" command not found - U-Boot images will not be built
解決方法1:
步驟1,cd 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
4.3.2 compr_zlib.c:39:18: fatal error: zlib.h: No such file or directory
解決方法
步驟1,sudo apt install zlib1g-dev
4.3.3 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 vim /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行】
4.3.4 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.2.tar.bz2,替換osdrv\tools\pc\jffs2_tool目錄下的mtd-utils-1.5.0.tar.bz2
步驟1,wget http://nl.archive.ubuntu.com/ubuntu/pool/universe/m/mtd-utils/mtd-utils_1.5.2.orig.tar.bz2
步驟2,下載完可以直接放到osdrv\tools\pc\jffs2_tool目錄下,同時修改壓縮包名字爲mtd-utils-1.5.2.tar.bz2,方可被識別。
步驟3,同時修改該目錄下的Makefile,將版本號改爲1.5.2。第22行的mtd-utils-1.5.0改爲mtd-utils-1.5.2
4.3.5 onfigure: error: ncurses or ncursesw selected, but library not found
解決方案:
sudo apt-get install libncurses5-dev libncursesw5-dev
4.3.6 mkfs.ubifs/mkfs.ubifs.h:46:23: fatal error: uuid/uuid.h: No such file or directory
解決方法:sudo apt-get install uuid-dev
最終編譯完成會出現以下畫面:
參考
HI3518EV200 SDK安裝並編譯osdr。 https://www.cnblogs.com/Ocean-Star/p/8902397.html
Hi3518EV200的環境搭建, https://blog.csdn.net/oqqhutu12345678/article/details/78968791
Hi3518EV200的環境搭建-Ubuntu16、18遇到的問題集錦,https://blog.csdn.net/qq_27158179/article/details/86745776