Linux环境:Ubuntu10.04
SDK版本:(Hi3518E_SDK_V1.0.3.0.tgz)Hi3518EV200R001C01SPC030
一、Hi3518E_SDK_V1.0.3.0.tgz解压后默认sensor为ar0230,为了适配ov9712,需要做如下修改:
1、mpp/ko/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
修改后配置如下:
SNS_TYPE=ov9712 # 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
2、mpp/sample/Makefile.param中
原来配置如下:
CHIP_ID ?= CHIP_HI3516C_V200
#CHIP_ID ?= CHIP_HI3518E_V200
#CHIP_ID ?= CHIP_HI3518E_V201
################# select sensor type for your sample ####################
#SENSOR_TYPE ?= APTINA_9M034_DC_720P_30FPS
SENSOR_TYPE ?= SONY_IMX222_DC_1080P_30FPS
#SENSOR_TYPE ?= SONY_IMX222_DC_720P_30FPS
#SENSOR_TYPE ?= APTINA_AR0130_DC_720P_30FPS
#SENSOR_TYPE ?= PANASONIC_MN34222_MIPI_1080P_30FPS
#SENSOR_TYPE ?= APTINA_AR0230_HISPI_1080P_30FPS
#SENSOR_TYPE ?= OMNIVISION_OV9712_DC_720P_30FPS
#SENSOR_TYPE ?= OMNIVISION_OV9732_DC_720P_30FPS
#SENSOR_TYPE ?= OMNIVISION_OV9750_MIPI_720P_30FPS
#SENSOR_TYPE ?= OMNIVISION_OV9752_MIPI_720P_30FPS
#SENSOR_TYPE ?= OMNIVISION_OV2718_MIPI_1080P_25FPS
修改后配置如下:
#CHIP_ID ?= CHIP_HI3516C_V200
CHIP_ID ?= CHIP_HI3518E_V200
#CHIP_ID ?= CHIP_HI3518E_V201
################# select sensor type for your sample ####################
#SENSOR_TYPE ?= APTINA_9M034_DC_720P_30FPS
#SENSOR_TYPE ?= SONY_IMX222_DC_1080P_30FPS
#SENSOR_TYPE ?= SONY_IMX222_DC_720P_30FPS
#SENSOR_TYPE ?= APTINA_AR0130_DC_720P_30FPS
#SENSOR_TYPE ?= PANASONIC_MN34222_MIPI_1080P_30FPS
#SENSOR_TYPE ?= APTINA_AR0230_HISPI_1080P_30FPS
SENSOR_TYPE ?= OMNIVISION_OV9712_DC_720P_30FPS
#SENSOR_TYPE ?= OMNIVISION_OV9732_DC_720P_30FPS
#SENSOR_TYPE ?= OMNIVISION_OV9750_MIPI_720P_30FPS
#SENSOR_TYPE ?= OMNIVISION_OV9752_MIPI_720P_30FPS
#SENSOR_TYPE ?= OMNIVISION_OV2718_MIPI_1080P_25FPS
二、运行load3518e加载mpp所需的ko
mount -t nfs 192.168.1.6:/nfsroot/ /nfsroot -o nolock
cd /nfsroot/hi3518e/mpp/ko
./load3518e -a -sensor ov9712 -osmem 32 -total 64
加载mmz.ko出错、OS和MMZ内存重叠了。错误原因:
设置boot启动参数时如下
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),3M(kernel),12M(rootfs)'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'
sa
其中 mem=64M,为OS内存,DDR总内存64M,而1中分配OS内存32M,MMZ内存32M。
修改uboot启动参数如下:
setenv bootargs 'mem=32M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),3M(kernel),12M(rootfs)'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'
sa
重启后再次运行,可以成功加载load3518e。
三、编译mpp/sample/venc/sample_venc并运行
Linux主机端:make
板卡端:
cd ../sample/venc
./sample_venc 0
起初会报错 system init failed,调用SAMPLE_COMM_SYS_Init进行SAMPLE_COMM_SYS_Init出错,追溯下去是HI_MPI_VB_Init出错,返回值是0xA002800C,分配内存失败,原因是没有进行一中2的修改,默认CHIP_HI3516C_V200的g_u32BlkCnt是10,所以VB分配出错。
可以成功获取h264码流文件,使用播放器播放可以出画面,只是白色区域偏粉,原因VI掩码设置与硬件不匹配,硬件使用的是D0~D9,修改如下:
VI_DEV_ATTR_S DEV_ATTR_OV9732_DC_720P_BASE ={
...
{0x03FF0000, 0x0},//{0xFFC0000, 0x0},//D2~D11
...
};
到此,可以成功的运行ov9712的sample_venc demo。