海思HI3516A 開發記錄(sdk環境搭建)

2021-09-26 03:18:16 字數 3515 閱讀 1917

ubuntu 16

解壓sdk檔案

1、hi3516a sdk包位置

在"hi3516a_v100r001***/01.software/board"目錄下,您可以看到乙個 hi3516a_sdk_vx.x.x.x.tgz 的檔案,

該檔案就是hi3516a的軟體開發包。

2、解壓縮sdk包

在linux伺服器上(或者一台裝有linux的pc上,主流的linux發行版本均可以),使用命令:tar -zxf hi3516a_sdk_vx.x.x.x.tgz ,

解壓縮該檔案,可以得到乙個hi3516a_sdk_vx.x.x.x目錄。

可以提前把下面的都裝上,省的報錯

sudo apt install zlib1g-dev

sudo apt-get install u-boot-tools

sudo apt-get install uboot-mkimage

sudo aptitude install lib32z1

sudo apt-get install build-essential

遇到問題

./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: 20: ./sdk.unpack: echo: not found

./sdk.unpack: 22: ./sdk.unpack: run_command_progress_float: not found

./sdk.unpack: 24: ./sdk.unpack: echo: not found

./sdk.unpack: 26: ./sdk.unpack: run_command_progress_float: not found

./sdk.unpack: 37: ./sdk.unpack: echo: not found

./sdk.unpack: 39: ./sdk.unpack: run_command_progress_float: not found

./sdk.unpack: 42: ./sdk.unpack: echo: not found

./sdk.unpack: 44: ./sdk.unpack: run_command_progress_float: not found

解決方案:

原因

bash 和 dash 的問題。

debian和ubuntu中,/bin/sh預設已經指向dash,這是乙個不同於bash的shell,它主要是為了執行指令碼而出現,而不是互動,

它速度更快,但功能相比bash要少很多,語法嚴格遵守posix標準。

解決

方法一1、vim scripts/common.sh; 第一行, #!/bin/sh 為 #!/bin/bash

2、vim sdk.unpack 第一行, #!/bin/sh 為 #!/bin/bash, 也可以正常解壓

方法二sudo dpkg-reconfigure dash

using dash as the system shell will improve the system』s overall performance. it does not alter the shell presented to interactive users.

use dash as the default system shell (/bin/sh)?

選擇no

備註在編譯海思sdk時,會出現如下錯誤:

serve_image.c:32:18: error: storage size of 『hints』 isn』t known

serve_image.c:94:19: error: 『ai_addrconfig』 undeclared (first use in this function)

serve_image.c:99:40: warning: implicit declaration of function 『gai_strerror』 [-wimplicit-function-declaration]

fprintf(stderr, 「getaddrinfo: %s\n」, gai_strerror(ret));

fprintf(stderr, 「getaddrinfo: %s\n」, gai_strerror(ret));

serve_image.c:103:35: error: dereferencing pointer to incomplete type 『struct addrinfo』

make[6]: *** [/home/sky2_klockwork/motianbiao/hmtisi/sdk/kitkat/out/target/product/hi3798mv100/obj/tools_obj/mtd-utils/tmp/mtd-utils-1.5.0/serve_image.o] error 1

make[5]: *** [/home/sky2_klockwork/motianbiao/hisi/sdk/kitkat/out/target/product/hi3798mv100/obj/tools_obj/mtd-utils/tmp/sbin/mkfs.jffs2] error 2

make[4]: [mkmtdutils_tool] error 1 (ignored)

make[4]: [mkmtdutils_tool] error 1 (ignored)

make[4]: [mkmtdutils_tool] error 1 (ignored)

究其原因,在於ubuntu作業系統版本太高,而sdk使用的mtd-utils版本太低導致(device/hisilicon/bigfish/sdk/tools/linux/utils/mtd-utils/mtd-utils-1.5.0),正常情況下,ubuntu12.04.04下支援mtd-utils-1.5.0,但是ubuntu16.04版本相容不是很好,但是16.04支援mtd-utils-2.0.0版本,所以,解決辦法有如下幾種:

方法1.修改sdk版本下的mtd-utils-1.5.0為mtd-utils-2.0.0,可以在root許可權下通過命令:wget 獲取,然後替換device/hisilicon/bigfish/sdk/tools/linux/utils/mtd-utils/下的mtd-utils-1.5.0.tar.bz2版本

方法2.修改作業系統標頭檔案/usr/include/netdb.h,將此巨集__use_xopen2k注釋,如下圖(注意#ifdef與#endif是一一對應的)

方法3.當然是修改作業系統的核心版本咯,可以通過如下命令更換作業系統核心版本:

以上3中方法,就看哪種更適合你了。

海思Hi3516A上移植OpenCV

最近新換了工作,工作中一項任務是將opencv移植到hi3516a平台上。這項工作涉及到很多步驟,中間可以說經歷了千難萬險,克服了種種艱難困苦,最終成功了!現將過程詳細寫出,一方面作為此段工作的總結和回顧,另一方面也使後來者能不必再經歷我所經歷的困難乃至苦難。言歸正傳。這個任務需要很多步驟,下邊一步...

Hi3516A開發 記憶體換算

一 做嵌入式開發,常會遇到記憶體計算的,但是大多是以十六進製制來表示的,不能一眼看出是多大記憶體。比如 phys start 0x85000000 phys end 0x88000000 從0x85000000到0x88000000,剛好是48m,這個是怎麼換算出來的?換算 從0x85000000到...

hi3516a之開發環境搭建

本人使用centos6.5開發 1.安裝centos6.5作業系統 2.安裝交叉編譯環境 root demo home cd hi3516a root demo hi3516a ls demo p7zip sdk root demo hi3516a cd sdk root demo sdk ls 0...