最近,消费类 IP Camera 越来越火爆,典型产品形态为门铃、门锁、猫眼、电池 IPC 等。海思对该类产品给出了解决方案:由 Camera Soc(Hi3518EV300) 和 IoT-wifi Soc(Hi3861LV100)两颗芯片联合实现。其中hi3518 实现 IP Camera 唤醒状态下媒体相关功能(图像采集, 处理,编码,码流存储及传输)及个性化业务功能,hi3861L Wifi则提供网络通信功能,camera电源管理、待机保活和远程唤醒等功能。
对于门铃、猫眼等产品,Hi3518如果使用linux系统,则不能达到低功耗和快速启动的要求,为满足该需求,将hi3518改用华为LiteOS系统,再配合hi3861L wifi功能,则能轻松达到快速启动要求。
如下为Hi3518EV300 LiteOS的冷启动时间,基本可以控制在几百ms以内。通常情况下Hi3518EV300处于断电状态,仅依靠Hi3861LV100进入保活状态,响应远程唤醒指令或外部中断信号,来控制Hi3518EV300电源使能,这样便能大大降低整个系统功耗。
下面就先来介绍一下整个开发环境的搭建和sdk的编译方法,也以防自己遗忘。
1.配置bash
sudo dpkg-reconfigure dash
选择No
2.安装依赖软件包
sudo apt-get install make libc6:i386 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools:i386 texinfo texlive gawk curl upx
3.创建/etc/ld.so.preload
执行sudo touch /etc/ld.so.preload,官方说是为了解决 64bit linux server 上某些第三方库编译失败的问题
解压交叉编译工具链包:
tar axvf arm-himix310-linux.tgz
解压后进入目录,查看用法:
直接执行脚本安装即可,也可自行指定安装路径:
source ./arm-himix310-linux.install
安装完成后查看是否安装成功:
因为sdk使用了 mtd-utils2.0.2 来生成和制作 ubifs、jffs2、squashfs 文件系统镜像,需要安装依赖组件
sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config
配置pkg-config 工具搜索路径:
vim ~/.bashrc
在最后面添加:
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/lib/x86_64-linuxgnu/pkgconfig"
安装automake1.15.1
因为mtd-utils2.0.2 依赖于 automake1.15.1 版本,先看看有没有安装automake。
如果已经安装不是1.15.1版本,则现删除原有automake版本:
sudo apt-get autoremove automake
如果没有安装,则下载安装包:
wget ftp://ftp.gnu.org/gnu/automake/automake-1.15.1.tar.gz
然后编译安装automake即可:
tar zxvf automake-1.15.1.tar.gz
cd automake-1.15.1/
./configure
make
sudo make install
1.解压sdk包
tar -axvf Hi3518EV300_Hi3861L_SHC_V5.0.1.0.tgz
2.进入已解压目录,创建软连接,选择编译配置文件
cd Hi3518EV300_Hi3861L_SHC_V5.0.1.0
#编译3518 Camera端
ln -vfs configs/config_hi3518ev300_demb_gc2053.conf config.conf
#编译3861L wifi端
ln -vfs configs/config_hi3861lv100_demb_mqtt_pir_key.conf config.conf
3.遇到的问题:
1.python脚本中没有找到reduce定义
原因分析及解决办法:
由于之前在系统中开发其它项目时,将python默认配置成了python3,而在Python3 之后,reduce这个方法从全局命名空间中移除,放在了 functools
模块,因为如果想正确执行,必须将它import出来,在报错的.py文件前添加如下语句即可:
from functools import reduce
修改文件路径为: platform/sdk/platform/liteos/liteos/tools/scripts/dynload_tools/dynload_sh/make_symlst.py