一、产品概述
1.1 芯片概述
Hi3559V200 是一颗面向运动相机、流媒体后视镜等领域推出的高性能、低功耗的4K Ultra-HD Mobile Camera SOC。该芯片支持 H.265/H.264 编解码,
编码/解码性能高达 4KP30/1080P120;该芯片集成了海思第四代 ISP,支持 WDR、多级降噪、六轴防抖及多种图像增强和矫正算法,为客户提供专业级的图像质量。
该芯片采用先进低功耗工艺和低功耗架构设计,为用户提供更长的电池续航时间。
Hi3559V200 集成了 Cortex-A7 双核 CPU,支持 Linux 和 LiteOS 双操作系统,使得快速启动、实时性和外设驱动的丰富性得以兼顾。
Hi3559V200 采用先进的 28nm 低功耗工艺和小型化封装,同时支持 DDR3(L)/DDR4/LPDDR3,使得 Hi3559V200 可支撑产品小型化设计。
1.2 应用场景
Hi3559V200 运动相机解决方案如图 1.1,录像模式支持 3840 x 2160@30fps 编码用于 SD 卡存储+720p@30fps 子码流编码用于 WiFi 点播/预览。
拍照模式支持 16M(4608 x 3456)@10fps/12M@15fps 连拍。回放模式支持 3840 x 2160@30fps 解码 + HDMI 3840 x 2160@30fps 送TV 显示。
图 1.1 Hi3559V200 运动相机方案
二、软硬件环境选择
2.1 硬件环境
使用的硬件平台是 Hi3559V200DMEB VER.A ,这个板是海思官方的 EVM Board ,搭配的摄像头是IMX458 ,LCD 屏是 St7789 ,WiFi 模块是 REALTEK 的 RTL8189。
图 2.1 Hi3559V200DMEB VER.A Board
2.2 软件环境
HiMobileCam 软件架构在 Hi3559V200 芯片平台上采用 Linux+Huawei LiteOS 双系统 AMP架构解决方案。
使用的 SDK 版本是:Hi3559V200_MobileCam_SDK_V1.0.1.5
GCC 编译器为:arm-himix100-linux
推荐使用的操作系统平台为:Ubuntu14.04
三、 软件包安装
3.1 配置默认使用 bash
$ sudo dpkg-reconfigure dash
选择 “否”
图 3.1 配置默认 bash
3.2 输入以下命令安装所依赖的软件包:
$ sudo apt-get install make libc6 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev \
ncurses-term libncursesw5-dev g++ u-boot-tools texinfo texlive gawk curl upx pngquant
3.3 安装 gperf 软件包
gperf 3.1 .tar.gz
下载路径: http://ftp.gnu.org/pub/gnu/gperf/gperf 3.1.tar.gz
$ tar -xzf gperf-3.1.tar.gz
$ cd gperf-3.1
$ ./configure
$ make
$ make install
3.4 创建 /etc/ld.so.preload 文件,并执行
$ echo "" > /etc/ld.so.preload
以解决 64bit linux server 上某些第三方库编译失败的问题。
四、交叉编译工具链安装
4.1 安装交叉编译工具链
对应工具链为 arm-himix100-linux ,获取工具链安装包 arm-himix100-linux .tgz ,执行以下命令安装交叉编译工具链:
# 解压
$ tar zxvf arm-himix100-linux.tgz
# 安装工具链
$ cd arm-himix100-linux
$ sudo chmod +x arm-himix100-linux.install
$ sudo ./arm-himix100-linux.install
$ export PATH=/opt/hisi-linux/x86-arm/ arm-himix100-linux/bin:$PATH
五、安装 mtd-utils 工具依赖的组件
5.1 安装依赖库
$ sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config
5.2 设置 pkg-config 路径
由于 mtd-utils2.0.2 通过 pkg-config 工具检查依赖库是否已正常安装,因此需要设置
pkg-config 工具搜索路径:
$ export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/pkgconfig"
5.3 安装 automake1.15.1
mtd-utils2.0.2 依赖于 automake1.15.1 版本,因此需要将服务器 automake 版本升级到
1.15.1 ,方式如下:
# 删除原有 automake 版本
$ sudo apt get autoremove automake
# 通过此命令下载 automake
$ wget ftp://ftp.gnu.org/gnu/automake/automake-1.15.1.tar.gz
# 编译安装 automake1.15.1
$ tar -zxvf automake-1.15.1.tar.gz
$ cd automake-1.15.1
$ ./configure
$ make
$ make install
六、安装 ffmpeg 工具
6.1 ffmpeg 的作用
发布包编译过程中使用ffmpeg工具对开机画面资源文件、开机声音资源文件进行格式转换。为保证编译正常进行,需要在编译前完成ffmpeg工具的安装。
6.2 下载压缩包
在https://johnvansickle.com/ffmpeg/ 下载对应服务器版本的压缩包
图 6.1 ffmpeg 版本
6.3 安装 ffmpeg 工具
# 删除原有 automake 版本
$ sudo apt get autoremove automake
# 通过此命令下载 automake
$ wget ftp://ftp.gnu.org/gnu/automake/automake-1.15.1.tar.gz
# 编译安装 automake1.15.1
$ tar -zxvf automake-1.15.1.tar.gz
$ cd automake-1.15.1
$ ./configure
$ make
$ make install
七、安装 SDK
7.1 解压 SDK 包
使用的 SDK 版本是 Hi3559V200_MobileCam_SDK_V1.0.1.5,获取压缩包并解压,解压后进入SDK 根目录可以看到以下目录和文件:
图 7.1 SDK 根目录
7.2 打内核补丁包
进入 osdrv/opensource/kernel 目录中,确保可以看到以下文件:
图 7.2 内核存放目录 osdrv/opensource/kernel
然后执行如下命令即可安装内核并打上 Hi3559V200 的内核补丁包:
$ tar -zxf linux-4.9.37.tar.gz
$ mv linux-4.9.37 linux-4.9.y
$ cd linux-4.9.y
$ patch -p1 < ../linux-4.9.37.patch
$ cd ../
$ tar -czf linux-4.9.y.tgz linux-4.9.y
$ cd ../../
7.3 将第三方工具类源码和第三方源码放到指定目录
第三方工具都可以在网上寻找资源,Hi3559V200 所需的第三方工具如下:
l e2fsprogs 软件包准备
− 放置路径: osdrv/tools/board/e2fsprogs
l eudev 软件包准备
− 放置路径: osdrv/tools/board/eudev-3.2.7
l gdb 软件包准备
− 放置路径: osdrv/tools/board/gdb
l ncurses 软件包准备
− 放置路径: osdrv/tools/board/gdb
l mtd-utils 软件包准备
− 放置路径: osdrv/tools/board/mtd-utils 、osdrv/tools/pc/jffs2_tool
l libuuid 软件包准备
− 放置路径: osdrv/tools/board/mtd-utils
l zlib 软件 包准备
− 放置路径: osdrv/tools/board/mtd-utils 、 osdrv/tools/pc/squashfs4.3 、osdrv/tools/pc/zlib
l util-linux 软件包准备
− 放置路径: osdrv/tools/pc/cramfs_tool
l gzip 软件包准备
− 放置路径: osdrv/tools/pc/hi_gzip
l lzo 软件包准备
− 放置路径: osdrv/tools/pc/jffs2_tool
l lzma 软件包准备
− 放置路径: osdrv/tools/pc/lzma_tool
l yaffs2utils 软件包准备
− 放置路径: osdrv/tools/pc/mkyaffs2image
l squashfs 软件包准备
− 放置路径: osdrv/tools/pc/squashfs4.3
l xz 软件包准备
− 放置路径: osdrv/tools/pc/squashfs4.3
l ffmpeg 软件包准备
− 放置路径: middleware/thirdparty/ffmpeg
l tiff 软件包准备
− 放置路径: middleware/thirdparty/tiff
l rapidjson 软件包准备
− 放置路径: middleware/thirdparty/rapidjson
l xmp-toolkit-sdk 软件包准备
− 放置路径: middleware/thirdparty/xmp-toolkit-sdk
l expat 软件包准备
− 放置路径: middleware/thirdparty/xmp-toolkit-sdk
l freetype 软件包准备
− 放置路径: reference/thirdparty/freetype
八、编译 SDK
8.1 选择 .config 文件
① 进入 ./configs 目录,选择 imx458 的 samplecam 配置文件放到 SDK 根目录进行编译
图 8.1 configs 目录
② 在根目录把配置文件重命名为 “.config”
图 8.2 重命名配置文件
8.2 编译整个 SDK
直接在 …/Hi3559V200_MobileCam_SDK_V1.0.1.5 目录下执行
$ make all
编译过程可能会遇到宏定义识别不出来的问题,出现的原因可能是:
① 前面搭建的环境不完整,缺少软件包,或第三方工具和库。
② 解压第三方工具或库的过程中丢失了一些数据。
最终都会导致 osdrv_mem_cfg.sh 文件的内容有缺失,缺少了一部分数据。
解决方法有两种:
① 编译过程中 osdrv_mem_cfg.sh 文件会生成一个备份,可以先尝试用备份文件替换原来的。
② 上面的方法不行的话,可以查找该宏定义的源文件,直接用具体数值代替。
8.3 生成镜像文件
编译成功后会在 …/Hi3559V200_MobileCam_SDK_V1.0.1.5/reference/out/ hi3559v200_samplecam_demb_imx458/burn/spinor 目录下生成 reference 镜像文件。
图 8.3 编译产生的镜像文件
九、SDK 镜像烧写
9.1 SD 卡烧写
当单板上无可用 u-boot 时可通过 SD 卡裸烧方式烧写 u-boot 及其他镜像 ,SD 卡烧写的具体步骤如下:
① SD 卡准备:此 SD 卡必须被格式化为 FAT32 格式,容量至少要大于要升级镜像的总大小。
② 准备烧写镜像:将需要烧写的镜像及升级配置文件 config 拷贝至 SD 卡的根目录下。
③ 插入 SD 卡,并按下单板 UPDATE 键。
④ 上电,当出现以下升级流程时可松开 UPDATE 键。
图 9.1 烧录页面
⑤ 等待烧录完成,成功启动系统。
图 9.2 Linux 系统启动页面
参考资料:
【1】《 WM_Hi3559V200 4K Mobile Camera SoC 用户指南.pdf 》
【2】《 WM_HiMobileCam SDK安装使用说明.pdf 》
评论