开发环境
依赖库和驱动(分别对应SDK中mpp目录下的lib和ko)
驱动需要在运行代码前加载,驱动加载命令(/root/ko/loadhi3518e -i ov9732)可以直接添加到/etc/profile。
mpp/sample下的例程:
海思媒体处理平台主要分为视频输入(VI)、视频处理(VPSS)、视频编码(VENC)、视频解码(VDEC)、视频输出(VO)、视频侦测分析(VDA)、音频输入(AI)、音频输出(AO)、音频编码(AENC)、音频解码(ADEC)、区域管理(REGION)等模块。
网络测试
Ubuntu能ping通网络摄像头,而网络摄像头不能ping通ubuntu
虚拟机Ubuntu 主机 网络摄像头
192.168.174.3 192.168.1.116 192.168.1.168
遗留问题
:为啥虚拟机net模式,板子就不能ping通ubuntu?(对虚拟机NET模式原理和网络拓扑比较熟悉的,可以尝试解决。)
文件传输
1)rx命令 串口方法 { 摄像头 — Windows }
将编译的例程sample_venc移到网络摄像头(secureCRT串口连接)
问题:can't open 'xxx': Read-only file system
解决:mount rw -o remount /
重新挂载系统,同时将这个命令添加到/etc/profile,开机后自动添加写权限。
使用rx通过串口传输比较慢,如果联通网络,最好通过网络的传输文件。
2)scp命令 { ubuntu — Windows }
在虚拟机中使用scp工具传输文件到板子(前提是已经移植了ssh)。scp命令的用法与cp类似,scp source dest,传文件夹加-r。
①ubuntu文件传到板子:
②下载文件到ubuntu
文件传输脚本:
#!/bin/bash
# Time: 2021-06-11 21:01:49
ROOT="root@192.168.1.168:/root"
usage() {
if [ $# -ne 3 ]; then
echo "usage: ./mycp.sh get/put file"
fi
}
case "$1" in
get)
echo "scp $ROOT/$2 ."
scp $ROOT/$2 .
;;
put)
echo "scp $2 $ROOT/"
scp $2 $ROOT/
;;
*)
usage
;;
esac
3)FileZilla软件 { 摄像头 — Windows }
问题:没有显示根文件系统!!!
处理:mmcblk0(SD卡)可以访问,所以在SD卡中创建一个目录用于存放摄像头的输出文件。
~ # cd /mnt/mmcblk0/
/mnt/mmcblk0 # mkdir out # 创建文件夹
/mnt/mmcblk0 # cd
~ # ln -s /mnt/mmcblk0/out/ sd # 建立软链接
~ # mv gpio.sh sd/ # 将文件移动到sd卡的输出文件夹
sample下创建一个用户工作目录
sample下的很多例程都使用了sample/common中的接口函数,为了方便开发,我们直接在sample创建工作目录。
mkdir user_prj # 创建一个用户工程目录
cp venc/sample_venc.c user_prj/get_jpg.c # 创建例程
cp venc/Makefile user_prj/Makefile # 创建一个子Makefile
vim Makefile # 在最顶层Makefile添加选项,如下图
编译:在sample下maek user,等价于进入user_prj目录再make。
运行报错:`hi_i2c_wait_txfifo_notfull->265: abort!`
错误码0xa0108010 --》 视频输入系统未初始化
根本原因
:摄像头类型不正确。
解决:需要修改sample/Makefile.param,将SENSOR_TYPE ?= APTINA_AR0130_DC_720P_30FPS 改为 SENSOR_TYPE ?= OMNIVISION_OV9732_DC_720P_30FPS,再重新编译运行。
图片传回ubuntu,使用eog工具查看;或传到Windows下,直接打开。
遗留问题:
1)文件传输特别慢!速度只有几KB/s,而且连接不稳定,FileZille中传输时会重新连接好几次。
2)摄像头参数设置需要修改。