海思平台入门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 端。
还没有评论,来说两句吧...