海思平臺入門1(基於海思Hi3559V200)

海思的影像類芯片Hi3559V200,可以開發行車記錄儀,運動相機,監控攝像頭。

原版SDK源碼如下,現在已經開發到5.0版本,這是1.5版本。
在這裏插入圖片描述
在這裏插入圖片描述

主要目錄功能介紹如下:

 build 目錄提供 SDK 的全局編譯配置,包括各組件的相對路徑和基本配置。

 configs 目錄提供了通過 menuconfig 配置後生成的配置文件。 

 Kconfig 爲 SDK menuconfig 的入口配置文件。 

 Makefile 爲 SDK 的編譯文件,用於編譯安裝 SDK 工程。

 osdrv 目錄主要提供底層系統原始包,包括 Bootloader、OS、Rootfs,關鍵
Driver,工具等。

 amp 目錄提供媒體模塊驅動和庫 mpp、操作系統適配組件 osal、芯片及板級驅動
drv、雙系統核間通信組件 hisyslink。 

 middleware 目錄提供了視頻錄製,文件管理,回放、GUI,流傳輸等典型產品業務
組件及組件 sample;同時還提供了對基礎音視頻功能和數據流封裝模塊(ndk)。 

 reference 目錄在 osdrv、amp 和 middleware 基礎上,提供產品層通用組件、典型產
品形態參考設計,詳細內容可以參見《HiMobileCam V1.0 參考設計開發指南》。 

 pqtool 目錄用於存放圖像調優工具,供用戶在 PC 端進行圖像效果調優,該工具的
實現依賴於 osdrv 和 mpp。

爲了避免糾紛,很多第三方工具源碼海思無法直接提供,需要自己去網上下載源碼,放到文件中,可以在Linux中直接編譯,makefile中已經按照名字增加好了。

3.3 從第三方網站上獲取內核源碼

linux 開源社區下載 v4.9.37 版本的內核
(https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/),
選擇 linux-4.9.37.tar.gz 這個文件
下載,並把該文件放入 osdrv/opensource/kernel/目錄下。


3.4 從第三方網絡上獲取工具類源碼

osdrv 編譯依賴的工具類開源軟件 e2fsprogs、gdb、mtd-utils、gzip、zlib 等
需要從對應網絡獲取。

 e2fsprogs 軟件包準備
− 下載路徑:
https://sourceforge.net/projects/e2fsprogs/files/e2fsprogs/v1.42.13/
e2fsprogs-1.42.13.tar.gz/download
− 放置路徑:osdrv/tools/board/e2fsprogs

 eudev 軟件包準備
− 下載路徑:https://dev.gentoo.org/~blueness/eudev/eudev-3.2.7.tar.gz
− 放置路徑:osdrv/tools/board/eudev-3.2.7

 gdb 軟件包準備 深圳弘源泰信息技術有限公司Hi3559V200_MobileCam_V1.0.1.5
− 下載路徑:http://ftp.gnu.org/gnu/gdb/gdb-7.9.1.tar.gz
− 放置路徑:osdrv/tools/board/gdb

 ncurses 軟件包準備
− 下載路徑:http://ftp.gnu.org/gnu/ncurses/ncurses-6.0.tar.gz
− 放置路徑:osdrv/tools/board/gdb

 mtd-utils 軟件包準備
− 下載路徑:https://src.fedoraproject.org/repo/pkgs/mtd-utils/mtd-utils-
2.0.2.tar.bz2/sha512/5e8e8159a0aef719193e4248b3ed22aa37bacc26e8fa0cceb7501b
0bf05881f5fa1c87599a6fd78a677fe168df3fbae14fa6f3ccaae7c25dbe3c892db243d9a
4/mtd-utils-2.0.2.tar.bz2
− 放置路徑:osdrv/tools/board/mtd-utils、osdrv/tools/pc/jffs2_tool

 libuuid 軟件包準備
− 下載路徑:https://sourceforge.net/projects/libuuid/files/libuuid-
1.0.3.tar.gz/download
− 放置路徑:osdrv/tools/board/mtd-utils

 zlib 軟件包準備
− 下載路徑:https://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-
1.2.11.tar.gz/download
− 放置路徑:osdrv/tools/board/mtd-utils、osdrv/tools/pc/squashfs4.3、
osdrv/tools/pc/zlib

 util-linux 軟件包準備
− 下載路徑:https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.31/util-linux-
2.31.tar.gz
− 放置路徑:osdrv/tools/pc/cramfs_tool

 gzip 軟件包準備
− 下載路徑:http://ftp.gnu.org/gnu/gzip/gzip-1.8.tar.gz
− 放置路徑:osdrv/tools/pc/hi_gzip

 lzo 軟件包準備
− 下載路徑:http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz
− 放置路徑:osdrv/tools/pc/jffs2_tool

 lzma 軟件包準備
− 下載路徑:https://src.fedoraproject.org/repo/pkgs/lzma/lzma-
4.32.7.tar.gz/2a748b77a2f8c3cbc322dbd0b4c9d06a/lzma-4.32.7.tar.gz
− 放置路徑:osdrv/tools/pc/lzma_tool

 yaffs2utils 軟件包準備
− 下載路徑:https://github.com/dorigom/yaffs2utils/archive/0.2.9.tar.gz
− 放置路徑:osdrv/tools/pc/mkyaffs2image

 squashfs 軟件包準備
− 下載路徑:
https://sourceforge.net/projects/squashfs/files/squashfs/squashfs4.3/squashfs4.3.tar.gz
/download 
− 放置路徑:osdrv/tools/pc/squashfs4.3

 xz 軟件包準備
− 下載路徑:https://tukaani.org/xz/xz-5.2.2.tar.bz2
− 放置路徑:osdrv/tools/pc/squashfs4.3

3.5 從第三方網站上獲取第三方源碼

中間件編譯依賴的開源軟件 ffmpeg、tiff、rapidjson、xmp-toolkit-sdk、expat 需要從對應網站獲取。

參考設計編譯依賴的開源軟件 freetype、thttpd 需要從對應網站獲取。

當服務器能夠訪問網絡且能夠通過 curl 命令下載軟件包時,編譯過程中會自動下載依
賴軟件包,無需用戶手動下載放置軟件包。如果服務器不支持自動下載軟件包或者下
載失敗,需要用戶手動下載軟件包並放入對應路徑,各開源軟件下載地址及放入路徑
如下:

 ffmpeg 軟件包準備
− 下載路徑:http://ffmpeg.org/releases/ffmpeg-4.1.4.tar.gz
− 放置路徑:middleware/thirdparty/ffmpeg  tiff 軟件包準備
− 下載路徑:http://download.osgeo.org/libtiff/tiff-4.0.10.tar.gz
− 放置路徑:middleware/thirdparty/tiff

 rapidjson 軟件包準備
− 下載路徑:https://codeload.github.com/Tencent/rapidjson/tar.gz/v1.1.0
− 放置路徑:middleware/thirdparty/rapidjson

 xmp-toolkit-sdk 軟件包準備
− 下載路徑:http://download.macromedia.com/pub/developer/xmp/sdk/XMP-ToolkitSDK-CC201607.zip
− 放置路徑:middleware/thirdparty/xmp-toolkit-sdk

 expat 軟件包準備
− 下載路徑:https://codeload.github.com/libexpat/libexpat/tar.gz/R_2_2_6
− 放置路徑:middleware/thirdparty/xmp-toolkit-sdk

 freetype 軟件包準備
− 下載路徑:https://bigsearcher.com/mirrors/nongnu/freetype/freetype-2.9.1.tar.gz
− 放置路徑:reference/thirdparty/freetype

 thttpd 軟件包準備
− 下載路徑:http://www.acme.com/software/thttpd/thttpd-2.29.tar.gz
− 放置路徑:reference/thirdparty/thttpd

 iniparser 軟件包準備
− 下載路徑:https://github.com/ndevilla/iniparser/archive/v4.1.tar.gz 
− 放置路徑:reference/thirdparty/iniparser

 hostapd 軟件包準備
− 下載路徑:https://w1.fi/releases/hostapd-2.7.tar.gz
− 放置路徑:reference/thirdparty/hostapd

 libnl 軟件包準備
− 下載路徑:https://www.infradead.org/~tgr/libnl/files/libnl-3.0.tar.gz
− 放置路徑:reference/thirdparty/libnl

一般開發用Source Insight軟件,感覺其他軟件無法替代。
在這裏插入圖片描述

初級開發,一般只是UI的開發,很多功能是海思開發好的,可以在海思的開發板直接運行。

支持NOR、NAND啓動。

UI開發,就是在reference層寫代碼,如果需要更換WiFi模塊驅動什麼的。都在amp層和osdrv層。

海思提供讀寫寄存器和IO口的函數 himm 和 himd 一個寫一個讀。
在這裏插入圖片描述

 actioncam //actioncam code 
│ ├── build //compile configure 
│ ├── Makefile 
│ ├── modules 
│ │ ├── init //initialization procedure 
│ │ ├── Makefile 
│ │ ├── media 
│ │ ├── netctrl 
│ │ ├── param //param module, including core/ini2bin/bin2image/inicfg 
│ │ ├── scene 
│ │ ├── statemng 
│ │ ├── ui 
│ │ └── usbctrl 
│ └── rootfs // rootfs, including Makefile, burn config, private files 
├── build //reference compile configure, script, path definination 
├── common //common component code 
│ ├── devmng 
│ ├── filemng 
│ ├── filetrans 
│ ├── hiconfaccess 
│ ├── hiosd 
│ ├── hisnet 
│ ├── include 
│ ├── inc.mak 
│ ├── Kconfig 
│ ├── liveserver 
│ ├── Makefile 
│ ├── photomng 
│ ├── playback 
│ ├── pm 
│ ├── rawcap 
│ ├── system 
│ ├── usb 
│ └── utils 
│ ├── hicycle 
│ ├── hiflash 
│ ├── hilog 
│ ├── include 
│ ├── Makefile 
│ ├── misc 
│ ├── msg 
│ ├── timedtask 
│ └── timestamp 
├── dashcam 
│ ├── build 
│ ├── Makefile 
│ ├── modules 
│ │ ├── init 
│ │ ├── Makefile 
│ │ ├── media 
│ │ ├── netctrl 
│ │ ├── param 
│ │ ├── scene 
│ │ ├── statemng 
│ │ ├── ui 
│ │ └── usbctrl 
│ └── rootfs 
├── hal 
│ ├── common 
│ ├── gauge 
│ ├── gsensor 
│ ├── inc.mak 
│ ├── Kconfig 
│ ├── key 
│ ├── Makefile 
│ ├── screen 
│ ├── touchpad 
│ └── wifi 
├── Makefile 
├── panocam 
│ ├── build 
│ ├── Makefile 
│ ├── modules 
│ │ ├── inc.mak 
│ │ ├── init 
│ │ ├── Makefile 
│ │ ├── media 
│ │ ├── netctrl 
│ │ ├── param 
│ │ ├── powerctrl 
│ │ ├── scene 
│ │ ├── statemng 
│ │ └── ui 
│ └── rootfs 
├── thirdparty 
│ ├── hostapd 
│ ├── iniparser 
│ ├── libnl 
│ └── thttpd 
└── tools

海思芯片是雙系統:Linux和Liteos,一部分功能是在linux端實現,一部分功能是在Liteos實現。

系統框架爲 linux+Huawei LiteOS 雙系統架構,媒體業務部署在 Huawei LiteOS 端,爲了上電快速預覽,需要屏幕需部署在 Huawei LiteOS。用戶交互業務在 linux 端,屏幕亮度、熄屏/亮屏等屏幕動態屬性需要在 linux 端提供接口。

屏幕 HAL 層含 linux 和 Huawei LiteOS 業務接口。

linux 通過 ipcmsg 將命令傳送給 Huawei liteOS,所有業務功能實現都在 Huawei
LiteOS 端。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章