海思的影像類芯片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 端。