海思平台入门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 端。

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