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_V201
################# select sensor type for your sample ####################
#SENSOR_TYPE ?= APTINA_9M034_DC_720P_30FPS
SENSOR_TYPE ?= SONY_IMX222_DC_1080P_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_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
################# select sensor type for your sample ####################
#SENSOR_TYPE ?= APTINA_9M034_DC_720P_30FPS
#SENSOR_TYPE ?= SONY_IMX222_DC_1080P_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_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。
</div>
</div>
</article>