全⾯认识海思SDK及嵌⼊式层开发(4)
⽬录
⼀、mpp的部署研究和实战
海思提供的媒体处理软件平台(Media Process Platform,简称 MPP),可⽀持应⽤软件快速开发。该平台对应⽤软件屏蔽了芯⽚相关的复杂的底层处理,并对应⽤软件直接提供MPI(MPP Program Interface)接⼝完成相应功能。该平台⽀持应⽤软件快速开发以下功能:输⼊视频捕获、 H.265/H.264/JPEG 编码、 H.265/H.264/JPEG 解码、 视频输出显⽰、视频图像前处理(包括去噪、增强、锐化)、 图像拼接、 图像⼏何矫正、智能、⾳频捕获及输出、⾳频编解码等功能。
1、mpp的⽂件结构详解
(1)ko
.ko海思预先编译好的⼀些模块⽂件,并⾮完全开源。我们来分析下load3518e⽂件:
将所有的模块先全部卸载,再全部装载,确保可以正常⼯作。默认⽀持⼀些的sensor,每种sensor在⼯作之前,都要进⾏⼀定的初始化。
# load3518e⽂件开头部分
SNS_TYPE=ar0230 # sensor type
mem_total=64;# 64M, total mem
mem_start=0x80000000;# phy mem start
os_mem_size=32;# 32M, os mem
mmz_start=0x82000000;# mmz start addr
mmz_size=32M;# 32M, mmz size
# load3518e⽂件中间部分
insert_ko()
{
# sys config
sys_config;
# driver load
# mmz.ko内存管理模块,从芯⽚内部⾃带的64M内存中分出⼀部分⽤于mpp,即mmz
# $mmz_start,$mmz_size是mpp所⽤内存的范围
insmod mmz.ko mmz=anonymous,0,$mmz_start,$mmz_size anony=1 || report_error
insmod hi_media.ko
insmod hi3518e_base.ko
insmod hi3518e_sys.ko vi_vpss_online=$b_arg_online sensor=$SNS_TYPE
if[[ $? -ne 0 ]]; then
exit;
fi
insmod hi3518e_tde.ko
insmod hi3518e_region.ko
insmod hi3518e_vgs.ko
insert_isp;
insmod hi3518e_viu.ko detect_err_frame=10;
insmod hi3518e_vpss.ko rfr_frame_comp=1;
insmod hi3518e_vou.ko
#insmod hi3518e_vou.ko transparentTransmit=1 #enable transparentTransmit
insmod hifb.ko video="hifb:vram0_size:1620"# default pal
insmod hi3518e_rc.ko
insmod hi3518e_venc.ko
insmod hi3518e_chnl.ko ChnlLowPower=1
insmod hi3518e_h264e.ko
insmod hi3518e_jpege.ko
insmod hi3518e_ive.ko save_power=0;
# insmod hi3518e_ive.ko
insmod extdrv/sensor_i2c.ko
echo"==== Your input Sensor type is $SNS_TYPE ===="
insmod extdrv/pwm.ko
insmod extdrv/piris.ko
#insert_sns > /dev/null
insert_sns
insert_audio
insmod hi_mipi.ko
echo"==== Your input Sensor type is $SNS_TYPE ===="
}
(2)lib
静态库、动态库⽂件,我们不⼀定全都会⽤到,将来为了节约根⽂件系统的空间,可以适当删除。
(3)sample
官⽅提供的⽰例代码
(4)Makefile.param:Makefile的参数⽂件
(5)其他⼏个⽂件夹,tools⽂件夹包含⼀些⼯具代码。exdrv⽂件夹包含⼀些外部设备的驱动(hi3518e芯⽚外部对接并使⽤的设备)。ko ⽂件夹中包含内部设备的驱动。
我们重点关注ko和lib⽂件夹,因为其需要我们进⾏部署。
2、开发板启动挂载主机
(1)在profile⽂件的末尾添加设置⽹卡IP地址
ifconfig lo 127.0.0.1
ifconfig eth0 192.168.1.10
(2)开发板启动后挂载主机nfs服务器
sudo showmount -e # 查看nfs服务器设置的挂载⽬录
mount-t nfs -o nolock 192.168.1.141:/home/aston/rootfs /mnt
3、部署ko⽂件
ubuntu端执⾏:
cp ko lib ~/rootfs/-rf
开发板端执⾏:
cp/mnt/ko /-rf
cp/mnt/lib/*/usr/lib/-rf
修改profile⽂件,末尾添加:
cd /ko
./load3518e -i -sensor ar0130 -osmem 32 -total 64
cd /mnt
-i:执⾏insert_ko()函数
-sensor:指定那个sensor
-osmem:操作系统占⽤的内存
-total:芯⽚内部内置的SDRAM⼤⼩
mmz = total-osmem
4、部署lib⽂件
SDRAM范围:80000000-83FFFFFF
linux内存:0x80000000-0x81FFFFFF
MMZ内存:0x82000000-0x83FFFFFF
上边3中已经进⾏过了,我们不需要再次操作了:
Ubuntu中:
cp ko lib ~/rootfs/-rf
开发板中:
cp /mnt/lib/* /usr/lib/ -rf
sdk⼆、sample的编译和测试
每个⽂件夹是⼀个分⽀,演⽰⼀个不同的功能,sample/venc/sample_venc.c实现了将视频采集并编码成⼀个H.264的码流,并将其保存在本地,可以使⽤VLC播放器查看。其他⽂件夹中的⽂件编译时都会⽤到common⽂件夹中的⽂件。
1、sample的编译
(1)sample结构简单浏览
(2)Makefile研究
(3)编译得到sample_venc
我们可以参考阅读:sample/readme⽂件了解如何去编译。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论