參考海思官方文檔:《Hi3519AV100╱Hi3556AV100 開發(fā)環(huán)境用戶指南.pdf》、《Hi3519AV100 SDK 安裝及升級(jí)使用說明.pdf》
1旗国、安裝ubuntu18.04虛擬機(jī)
- 虛擬機(jī)版本:VMware? Workstation 15 Pro
- 操作系統(tǒng)版本:ubuntu-18.04.1-desktop-x64
- 海思Hi3519A交叉編譯工具只支持32位
- ubuntu18.04無官方32位ISO鏡像
- ubuntu16.04的32位系統(tǒng),正在vmware-tools無法正常復(fù)制文件的問題
- 所以選擇ubuntu18.04 64位操作系統(tǒng)作為開發(fā)環(huán)境
# 系統(tǒng)版本
hisilicon@ubuntu:~$ uname -a
Linux ubuntu 5.3.0-28-generic #30~18.04.1-Ubuntu SMP Fri Jan 17 06:14:09 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
# 系統(tǒng)更新
hisilicon@ubuntu:~$ sudo apt update
......
hisilicon@ubuntu:~$ sudo apt upgrade
......
2验庙、安裝arm-himix200-linux工具鏈
- 切換到root賬號(hào)或者使用sudo安裝硼啤,避免權(quán)限不足
- 工具鏈默認(rèn)會(huì)安裝/opt/hisi-linux/x86-arm路徑下
- 解壓需要時(shí)間較長聪富,需要耐心等待
- 由于開發(fā)環(huán)境操作系統(tǒng)為64位,工具鏈為32位玻靡,安裝完成后直接運(yùn)行相關(guān)命令會(huì)提示文件不存在
- 所以需要安裝32位庫:sudo apt install lib32z1-dev
- 如果修改軟件源為阿里等國內(nèi)鏡像源结榄,可能會(huì)因?yàn)樵吹刂放渲貌蝗斐?2位庫安裝失敗
# 切換root
hisilicon@ubuntu:~$ sudo su
[sudo] password for hisilicon:
# 將安裝包復(fù)制到Downloads目錄,并進(jìn)入該目錄
root@ubuntu:/home/hisilicon# cd Downloads/arm-himix200-linux/
# 安裝工具鏈
root@ubuntu:/home/hisilicon/Downloads/arm-himix200-linux# source ./arm-himix200-linux.install
Installing HuaWei LiteOS Linux at /opt/hisi-linux/x86-arm
mkdir: created directory '/opt/hisi-linux'
mkdir: created directory '/opt/hisi-linux/x86-arm'
mkdir: created directory '/opt/hisi-linux/x86-arm/arm-himix200-linux'
Extract cross tools ...
export path /opt/hisi-linux/x86-arm/arm-himix200-linux/bin
# 安裝32位庫
hisilicon@ubuntu:~$ sudo apt install lib32z1-dev
[sudo] password for hisilicon:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
cpp-7 gcc gcc-7 gcc-7-base gcc-7-multilib gcc-8-base gcc-multilib lib32asan4
lib32atomic1 lib32cilkrts5 lib32gcc-7-dev lib32gcc1 lib32gomp1 lib32itm1
lib32mpx2 lib32quadmath0 lib32stdc++6 lib32ubsan0 lib32z1 libasan4
libatomic1 libc-dev-bin libc6-dev libc6-dev-i386 libc6-dev-x32 libc6-i386
libc6-x32 libcc1-0 libcilkrts5 libgcc-7-dev libgcc1 libgomp1 libitm1
liblsan0 libmpx2 libquadmath0 libstdc++6 libtsan0 libubsan0 libx32asan4
libx32atomic1 libx32cilkrts5 libx32gcc-7-dev libx32gcc1 libx32gomp1
libx32itm1 libx32quadmath0 libx32stdc++6 libx32ubsan0 linux-libc-dev
manpages-dev zlib1g-dev
Suggested packages:
gcc-7-locales make autoconf automake libtool flex bison gcc-doc gcc-7-doc
libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan4-dbg
liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx2-dbg
libquadmath0-dbg glibc-doc
The following NEW packages will be installed:
gcc gcc-7 gcc-7-multilib gcc-multilib lib32asan4 lib32atomic1 lib32cilkrts5
lib32gcc-7-dev lib32gcc1 lib32gomp1 lib32itm1 lib32mpx2 lib32quadmath0
lib32stdc++6 lib32ubsan0 lib32z1 lib32z1-dev libasan4 libatomic1
libc-dev-bin libc6-dev libc6-dev-i386 libc6-dev-x32 libc6-i386 libc6-x32
libcilkrts5 libgcc-7-dev libitm1 liblsan0 libmpx2 libquadmath0 libtsan0
libubsan0 libx32asan4 libx32atomic1 libx32cilkrts5 libx32gcc-7-dev
libx32gcc1 libx32gomp1 libx32itm1 libx32quadmath0 libx32stdc++6 libx32ubsan0
linux-libc-dev manpages-dev zlib1g-dev
The following packages will be upgraded:
cpp-7 gcc-7-base gcc-8-base libcc1-0 libgcc1 libgomp1 libstdc++6
7 upgraded, 46 newly installed, 0 to remove and 179 not upgraded.
Need to get 43.8 MB/44.3 MB of archives.
After this operation, 152 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
......
# 驗(yàn)證工具鏈?zhǔn)欠窨烧_\(yùn)行
root@ubuntu:/home/hisilicon/Downloads/arm-himix200-linux# arm-himix200-linux-gcc -v
Using built-in specs.
COLLECT_GCC=arm-himix200-linux-gcc
COLLECT_LTO_WRAPPER=/opt/hisi-linux/x86-arm/arm-himix200-linux/host_bin/../libexec/gcc/arm-linux-gnueabi/6.3.0/lto-wrapper
Target: arm-linux-gnueabi
Configured with: /home/sying/SDK_CPU_UNIFIED/build/script/arm-himix200-linux/arm_himix200_build_dir/src/gcc-6.3.0/configure --host=i386-redhat-linux --build=i386-redhat-linux --target=arm-linux-gnueabi --prefix=/home/sying/SDK_CPU_UNIFIED/build/script/arm-himix200-linux/arm_himix200_build_dir/install --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --disable-nls --enable-clocale=gnu --enable-extra-hisi-multilibs --with-sysroot=/home/sying/SDK_CPU_UNIFIED/build/script/arm-himix200-linux/arm_himix200_build_dir/install/target --with-build-sysroot=/home/sying/SDK_CPU_UNIFIED/build/script/arm-himix200-linux/arm_himix200_build_dir/install/target --with-gmp=/home/sying/SDK_CPU_UNIFIED/build/script/arm-himix200-linux/arm_himix200_build_dir/obj/host-libs/usr --with-mpfr=/home/sying/SDK_CPU_UNIFIED/build/script/arm-himix200-linux/arm_himix200_build_dir/obj/host-libs/usr --with-mpc=/home/sying/SDK_CPU_UNIFIED/build/script/arm-himix200-linux/arm_himix200_build_dir/obj/host-libs/usr --enable-libgomp --disable-libitm --enable-poison-system-directories --with-pkgversion='HC&C V1R3C00SPC200B005_20190606' --disable-bootstrap
Thread model: posix
gcc version 6.3.0 (HC&C V1R3C00SPC200B005_20190606)
# 如果重啟后或者切換用戶后無法使用相關(guān)工具命令啃奴,可重新引用相關(guān)環(huán)境變量
hisilicon@ubuntu:~/Downloads/arm-himix200-linux$ sudo su
root@ubuntu:/home/hisilicon/Downloads/arm-himix200-linux# source /etc/profile
3潭陪、安裝Hi3519AV100SDK
- SDK并不是真正的安裝,而是當(dāng)前目錄解壓展開,需提前規(guī)劃好目錄
- 由于默認(rèn)shell的原因依溯,直接運(yùn)行./sdk.unpack會(huì)出錯(cuò)老厌,可使用bash shell運(yùn)行解包腳本
# 解壓SDK
root@ubuntu:/home/hisilicon/3519A# tar -zxf Hi3519AV100_SDK_V2.0.2.0.tgz
root@ubuntu:/home/hisilicon/3519A# cd Hi3519AV100_SDK_V2.0.2.0/
root@ubuntu:/home/hisilicon/3519A/Hi3519AV100_SDK_V2.0.2.0# ls
package scripts sdk.cleanup sdk.unpack smp_image_glibc
# 安裝SDK
root@ubuntu:/home/hisilicon/3519A/Hi3519AV100_SDK_V2.0.2.0# /bin/bash sdk.unpack
Unpacking SDK
WARN: Be sure you have installed the cross-compiler. if not, install it first!
WARN: ALL THE SOUCE FILES WILL BE OVERWRITED, FILES YOU MOTIFIED WILL BE LOST !!!
SDK_CHIP =hi3519av100
unpacking drv
mkdir: created directory 'drv/'
run_command_progress_float: 'tar -xvzf package/drv.tgz'
[100%]##################################################|
unpacking osal
mkdir: created directory 'osal/'
run_command_progress_float: 'tar -xvzf package/osal.tgz'
[100%]##################################################|
unpacking osdrv
run_command_progress_float: 'tar -xvzf package/osdrv.tgz'
[100%]##################################################|
mkdir: created directory 'smp'
mkdir: created directory 'smp/a53_linux/'
unpacking mpp_smp_linux.tgz
run_command_progress_float: 'tar -xvzf package/mpp_smp_linux.tgz -C smp/a53_linux'
[100%]##################################################|
/home/hisilicon/3519A/Hi3519AV100_SDK_V2.0.2.0/smp/a53_linux /home/hisilicon/3519A/Hi3519AV100_SDK_V2.0.2.0
/home/hisilicon/3519A/Hi3519AV100_SDK_V2.0.2.0
直接執(zhí)行./sdk.unpack進(jìn)行解壓安裝會(huì)報(bào)錯(cuò),因?yàn)閁buntu中黎炉,/bin/sh默認(rèn)已經(jīng)指向dash枝秤,這是一個(gè)不同于bash的shell,主要是為了執(zhí)行腳本而出現(xiàn)慷嗜,而不是交互淀弹,dash速度更快,但功能比bash少很多庆械,語法嚴(yán)格遵守POSIX標(biāo)準(zhǔn)薇溃,出現(xiàn)錯(cuò)誤后不會(huì)執(zhí)行后續(xù)腳本命令。
解決方法1:
步驟1:/bin/bash sdk.unpack
解決方法2:
步驟1:vim scripts/common.sh; 第一行:#!/bin/sh->!/bin/bash
步驟2:vim sdk.unpack; 第一行:#!/bin/sh->!/bin/bash
步驟3:./sdk.unpack
解決方法3:
步驟1:sudo dpkg-reconfigure dash
步驟2:出現(xiàn)菜單問是否需要dash,選no.
步驟3:./sdk.unpack
root@ubuntu:/home/hisilicon/3519A/Hi3519AV100_SDK_V2.0.2.0# ./sdk.unpack
./sdk.unpack: 2: ./sdk.unpack: source: not found
./sdk.unpack: 4: ./sdk.unpack: ECHO: not found
./sdk.unpack: 6: ./sdk.unpack: WARN: not found
./sdk.unpack: 7: ./sdk.unpack: WARN: not found
./sdk.unpack: 8: ./sdk.unpack: ECHO: not found
./sdk.unpack: 15: ./sdk.unpack: ECHO: not found
./sdk.unpack: 20: ./sdk.unpack: ECHO: not found
mkdir: created directory 'drv/'
./sdk.unpack: 22: ./sdk.unpack: run_command_progress_float: not found
./sdk.unpack: 24: ./sdk.unpack: ECHO: not found
mkdir: created directory 'osal/'
./sdk.unpack: 26: ./sdk.unpack: run_command_progress_float: not found
./sdk.unpack: 28: [: =: unexpected operator
./sdk.unpack: 28: [: =: unexpected operator
./sdk.unpack: 34: ./sdk.unpack: ECHO: not found
mkdir: created directory 'osdrv/'
./sdk.unpack: 36: ./sdk.unpack: run_command_progress_float: not found
./sdk.unpack: 39: [: =: unexpected operator
./sdk.unpack: 54: [: =: unexpected operator
./sdk.unpack: 54: [: =: unexpected operator
./sdk.unpack: 82: [: =: unexpected operator
./sdk.unpack: 82: [: =: unexpected operator
./sdk.unpack: 110: [: =: unexpected operator
./sdk.unpack: 110: [: =: unexpected operator