海思HISI3556V200的開發板,硬件上是單個IMX307的攝像頭,但是從原廠提供過來的軟件SDK版本中的dashcam配置文件沒有單IMX307的配置。
因此,需用自己手動去配置。
這裏我們使用 hi3556v200_dashcam_demb_imx307_bt656_1080p30_carrecorder_128M_config 這個文件作爲配置文件,將這個文件copy到SDK根目錄並修改爲.config
注意:以下操作,全在海思的開發環境下執行。
一、配置SDK
在根目錄執行
make menuconfig
然後去掉如下選項.
保存退出。
二、增加參數配置
1、添加參數目錄
在目錄
reference/dashcam/modules/param/inicfg/hi3559v200/carrecorder
添加 imx307_128M 文件夾(在執行編譯的時候,會到這個文件夾查找參數,所以這個文件夾是必須的)
我的做法是
複製並改名
imx307_bt656_1080p30_128M =================> imx307_128M
2、修改IMX307_128M參數,將其修改爲單攝像頭
A、去掉第二個攝像頭的相關文件
B、修改攝像頭2所涉及的文件
如圖所示,總共有7個文件需要修改。
1)、config_cfgaccess_entry.ini
[module]
module_num = "19"
module1 = "media_common"
module2 = "workmode_common"
module3 = "workmode_record"
module4 = "workmode_photo"
module5 = "workmode_playback"
module6 = "workmode_usb"
module7 = "filemng"
module8 = "devmng"
module9 = "valueset"
module10 = "cam0_comm"
module11 = "cam0_comm_record"
module12 = "cam0_comm_photo"
module13 = "cam0_mediamode0"
module14 = "cam0_mediamode1"
[media_common]
path = "./"
cfg_filename = "config_product_media_common.ini"
[workmode_common]
path = "./"
cfg_filename = "config_product_workmode_common.ini"
[workmode_record]
path = "./"
cfg_filename = "config_product_workmode_record.ini"
[workmode_photo]
path = "./"
cfg_filename = "config_product_workmode_photo.ini"
[workmode_playback]
path = "./"
cfg_filename = "config_product_workmode_playback.ini"
[workmode_usb]
path = "./"
cfg_filename = "config_product_workmode_usb.ini"
[filemng]
path = "./"
cfg_filename = "config_product_filemng.ini"
[devmng]
path = "./"
cfg_filename = "config_product_devmng.ini"
[valueset]
path = "./"
cfg_filename = "config_product_valueset.ini"
[cam0_comm]
path = "./"
cfg_filename = "config_product_mediamode_cam0_comm.ini"
[cam0_comm_record]
path = "./"
cfg_filename = "config_product_mediamode_cam0_comm_record.ini"
[cam0_comm_photo]
path = "./"
cfg_filename = "config_product_mediamode_cam0_comm_photo.ini"
[cam0_mediamode0]
path = "./"
cfg_filename = "config_product_mediamode_cam0_record_1080p30.ini"
2)、config_product_media_common.ini
; ============= Common Vencoder Configure =============
[venc.video.main]
scene_mode = "2"; 0:normal, 1:dv, 2:car
[venc.video.main.h264]
profile = "2";h264 profile 0:baseline, 1:main, 2:high
ref_base = "1"
ref_enhance = "0"
ref_enable_pred = "1"
[venc.video.main.h264.cbr]
max_qp = "45"
min_qp = "10"
max_iqp = "45"
min_iqp = "10"
[venc.video.main.h264.vbr]
max_qp = "45"
min_qp = "10"
max_iqp = "45"
min_iqp = "10"
[venc.video.main.h264.qvbr]
max_qp = "51"
min_qp = "25"
max_iqp = "51"
min_iqp = "25"
bit_percent_ul = "100"
bit_percent_ll = "45"
psnr_fluctuate_ul = "30"
psnr_fluctuate_ll = "23"
[venc.video.main.h265]
profile = "0";h265 profile 0:main
ref_base = "1"
ref_enhance = "0"
ref_enable_pred = "1"
[venc.video.main.h265.cbr]
max_qp = "45"
min_qp = "10"
max_iqp = "45"
min_iqp = "10"
[venc.video.main.h265.vbr]
max_qp = "45"
min_qp = "10"
max_iqp = "45"
min_iqp = "10"
[venc.video.main.h265.qvbr]
max_qp = "51"
min_qp = "25"
max_iqp = "51"
min_iqp = "25"
bit_percent_ul = "100"
bit_percent_ll = "45"
psnr_fluctuate_ul = "30"
psnr_fluctuate_ll = "23"
[venc.video.sub]
scene_mode = "2"; 0:normal, 1:dv, 2:car
[venc.video.sub.h264]
profile = "2";h264 profile 0:baseline, 1:main, 2:high
[venc.video.sub.h264.cbr]
max_qp = "45"
min_qp = "10"
max_iqp = "45"
min_iqp = "10"
[venc.video.sub.h264.vbr]
max_qp = "45"
min_qp = "10"
max_iqp = "45"
min_iqp = "10"
[venc.video.sub.h264.qvbr]
max_qp = "51"
min_qp = "25"
max_iqp = "51"
min_iqp = "25"
bit_percent_ul = "100"
bit_percent_ll = "45"
psnr_fluctuate_ul = "30"
psnr_fluctuate_ll = "23"
[venc.video.sub.h265]
profile = "0";h265 profile 0:main
[venc.video.sub.h265.cbr]
max_qp = "45"
min_qp = "10"
max_iqp = "45"
min_iqp = "10"
[venc.video.sub.h265.vbr]
max_qp = "45"
min_qp = "10"
max_iqp = "45"
min_iqp = "10"
[venc.video.sub.h265.qvbr]
max_qp = "51"
min_qp = "25"
max_iqp = "51"
min_iqp = "25"
bit_percent_ul = "100"
bit_percent_ll = "45"
psnr_fluctuate_ul = "30"
psnr_fluctuate_ll = "23"
[venc.snap.single]
enable_dcf = "1"
quality_factor = "95"
largethumbnail_num = "0"
largethumbnail0_width = "960"
largethumbnail0_height = "720"
largethumbnail1_width = "960"
largethumbnail1_height = "720"
[venc.snap.sub]
enable_dcf = "0"
quality_factor = "95"
largethumbnail_num = "0"
largethumbnail0_width = "0"
largethumbnail0_height = "0"
largethumbnail1_width = "0"
largethumbnail1_height = "0"
[venc.hierarchical.qp]
qp_delta0 = "-2"
qp_delta1 = "-4"
qp_delta2 = "0"
qp_delta3 = "0"
frame_num0 = "1"
frame_num1 = "1"
frame_num2 = "0"
frame_num3 = "0"
; ============= Common Live Configure =================
[venc.live.src.0]
bindedmod = "1"; 0-vcap, 1-vpss
modhdl = "0"; vcappipe handle if binded mod vcap, vpsshdl if binded mod vpss
chnhdl = "1"; vcappipechn handle if binded mod vcap, vpssporthdl if binded mod vpss
; =============== OSD Configure ===============
[osd]
osdcnt = "4"; 0~16
base_font_w = "48"
base_font_h = "96"
base_res_w = "1920"
base_res_h = "1080"
[osd.0]
type = "0"; 0:time,1:string,2:bitmap
timefmt = "0"; 0:yyyy-mm-dd 24h
color = "65535"; 0xffff
bg_color = "3276"; 0x0ccc
dispnum = "1";
[osd.0.display.0]
show = "1"
bind_module = "1"; 0:Vcap, 1:Vpss,2:Stitch,3:Venc,4:Disp
modhdl = "0"; vpsshdl if binded mod vpss
chnhdl = "0"; vpssporthdl if binded mod vpss
start_x = "50";
start_y = "0";
fg_alpha = "100"
bg_alpha = "0"
batch = "0" camid+type
[osd.1]
type = "0"; 0:time,1:string,2:bitmap
timefmt = "0"; 0:yyyy-mm-dd 24h
color = "65535";
bg_color = "3276";
dispnum = "1";
[osd.1.display.0]
show = "1"
bind_module = "3"; 0:Vcap, 1:Vpss,2:Stitch,3:Venc,4:Disp
modhdl = "0"; vpsshdl if binded mod vpss
chnhdl = "1"; vpssporthdl if binded mod vpss
start_x = "50";
start_y = "0";
fg_alpha = "100"
bg_alpha = "0"
batch = "0" camid+type
[osd.2]
type = "2"; 0:time,1:string,2:bitmap
bmp_width = "160"; for 1080P
bmp_height = "160"; for 1080P
dispnum = "1";
[osd.2.display.0]
show = "1"
bind_module = "1"; 0:Vcap, 1:Vpss,2:Stitch,3:Venc,4:Disp
modhdl = "0"; vpsshdl if binded mod vpss
chnhdl = "0"; vpssporthdl if binded mod vpss
start_x = "0";
start_y = "0";
fg_alpha = "100"
bg_alpha = "0"
batch = "2" camid+type
[osd.3]
type = "2"; 0:time,1:string,2:bitmap
bmp_width = "86"; for VGA
bmp_height = "86"; for VGA
dispnum = "1";
[osd.3.display.0]
show = "1"
bind_module = "3"; 0:Vcap, 1:Vpss,2:Stitch,3:Venc,4:Disp
modhdl = "0"; vpsshdl if binded mod vpss
chnhdl = "1"; vpssporthdl if binded mod vpss
start_x = "0";
start_y = "0";
fg_alpha = "100"
bg_alpha = "0"
batch = "2" camid+type
; ============= Common Vdisplay Configure =============
[disp.0]
enable = "1";
disphdl = "0"
bg_color = "0"
windowcnt = "1"
[disp.0.csc]
enable = "1"
cscmatrix = "VO_CSC_MATRIX_BT601_TO_RGB_PC"
luma = "50"
contrast = "50"
hue = "50"
saturation = "50"
[disp.0.SRC.0]
bindedmod = "1"; 0-vcap, 1-vpss
modhdl = "0"; vcappipe handle if binded mod vcap, vpsshdl if binded mod vpss
chnhdl = "2"; vcappipechn handle if binded mod vcap, vpssporthdl if binded mod vpss
[disp.0.window.0]
enable = "1"
wndhdl = "0"
preview_cam_id = "0"
rotate = "1"; 0:0,1:90,2:180,3:270
[disp.0.window.0.aspectratio]
mode = "2"; 0:full screen,1:ratio no change,1:1, 2:ratio manual set
bg_color = "0"
rect_x = "0"
rect_y = "0"
rect_width = "240"
rect_height = "320"
[disp.0.window.0.wndattr]
rect_x = "0"
rect_y = "0"
rect_width = "320"
rect_height = "240"
priority = "0"
; ============= Common Acapture Configure =============
[acapture.0]
enable = "1"
handle = "0"
sample_rate = "48000"
bit_width = "1";0:8,1:16,2:24
sound_mode = "0";0:mono,1:stereo
track_mode = "0";0:normal,1:both left,2:both right,3:exchange,4:mix,5:left mute,6:right mute,7:both mute
work_mode = "0";0:I2S_MASTER,1:I2S_SLAVE,2:PCM_SLAVE_STD,3:PCM_SLAVE_NSTD,4:PCM_MASTER_STD,5:PCM_MASTER_NSTD
ptnum_per_frm = "1024"
mixer_mic_mode = "1";0:IN0,1:IN1,2:IN_D
resample_rate = "48000"
audiogain = "20"
[acapture.0.chnl.0]
handle = "0"
enable = "1"
enable_vqe = "1"
[acapture.0.chnl.1]
handle = "1"
enable = "0"
enable_vqe = "0"
; ============= Common Aencoder Configure =============
[aenc.0]
enable = "1"
aenchdl = "0"
acaphdl = "0"
acapchdl = "0"
audio_format = "0"; 0:aac-lc,1:opus
ptnum_per_frm = "1024"
[aenc.0.aac]
aac_type = "0"; 0:AAC-LC,1:EAAC,2:EAACPLUS,3:AACLD,4:AACELD
bit_rate = "128000"
sample_rate = "48000"
bit_width = "1"; 1:16
sound_mode = "0"; 0:mono,1:stereo
trans_type = "0";0:ADTS,1:LOAS,2:LATM_MCP1
band_width = "0"
; ============= Common Ao Configure =============
[ao.0]
enable = "1"
handle = "0"
sample_rate = "48000"
bit_width = "1"; 1:16
sound_mode = "1";0:mono,1:stereo
track_mode = "0";0:normal,1:both left,2:both right,3:exchange,4:mix,5:left mute,6:right mute,7:both mute
work_mode = "0";0:I2S_MASTER,1:I2S_SLAVE,2:PCM_SLAVE_STD,3:PCM_SLAVE_NSTD,4:PCM_MASTER_STD,5:PCM_MASTER_NSTD
ptnum_per_frm = "1024"
ao_i2c_type = "0"
volume = "66"; 0:off, 66;low, 83: middle, 96:high
[ao.0.chnl.0]
handle = "0"
enable = "1"
[ao.0.chnl.1]
handle = "1"
enable = "0"
3)、config_product_valueset.ini
; ============= Configure Item ValueSet =============
[cam.0.enc.payloadtype]
num = "2"
description0 = "H264"
value0 = "0"
description1 = "H265"
value1 = "1"
[screen.dormant]
num = "3"
description0 = "OFF"
value0 = "0"
description1 = "1MIN"
value1 = "60"
description2 = "3MIN"
value2 = "180"
[screen.brightness]
num = "3"
description0 = "LOW"
value0 = "20"
description1 = "MIDDLE"
value1 = "50"
description2 = "HIGH"
value2 = "100"
[cam.0.mediamode.record]
num = "1"
description0 = "1080P30"
value0 = "HI_PDT_MEDIAMODE_1080P_30"
[cam.0.mediamode.photo]
num = "1"
description0 = "1080P"
value0 = "HI_PDT_MEDIAMODE_PHOTO_1080P"
[volume]
num = "4"
description0 = "MUTE"
value0 = "0"
description1 = "LOW"
value1 = "33"
description2 = "MIDDLE"
value2 = "66"
description3 = "HIGH"
value3 = "100"
[drive_sensitivity]
num = "4"
description0 = "OFF"
value0 = "0"
description1 = "LOW"
value1 = "1"
description2 = "MIDDLE"
value2 = "2"
description3 = "HIGH"
value3 = "3"
[parking_sensitivity]
num = "4"
description0 = "OFF"
value0 = "0"
description1 = "LOW"
value1 = "1"
description2 = "MIDDLE"
value2 = "2"
description3 = "HIGH"
value3 = "3"
[usb.mode]
num = "3"
description0 = "CHARGE"
value0 = "0"
description1 = "UVC"
value1 = "1"
description2 = "STORAGE"
value2 = "2"
[system.language]
num = "2"
description0 = "en"
value0 = "0"
description1 = "zh"
value1 = "1"
[cam.0.wdr.status]
num = "1"
description0 = "OFF"
value0 = "0"
description1 = "ON"
value1 = "3"
[cam.0.video.mode]
num = "2"
description0 = "PAL"
value0 = "0"
description1 = "NTSC"
value1 = "1"
[cam.0.ldc.status]
num = "1"
description0 = "OFF"
value0 = "0"
[cam.0.flip.status]
num = "2"
description0 = "OFF"
value0 = "0"
description1 = "ON"
value1 = "1"
[cam.0.mirror.status]
num = "2"
description0 = "OFF"
value0 = "0"
description1 = "ON"
value1 = "1"
[cam.0.antiflicker.mode]
num = "3"
description0 = "NONE"
value0 = "0"
description1 = "50"
value1 = "1"
description2 = "60"
value2 = "2"
[splite_time]
num = "3"
description0 = "1MIN"
value0 = "60"
description1 = "3MIN"
value1 = "180"
description2 = "5MIN"
value2 = "300"
[record.lapse.interval]
num = "3"
description0 = "0.5S"
value0 = "500"
description1 = "1S"
value1 = "1000"
description2 = "5S"
value2 = "5000"
[record.type]
num = "2"
description0 = "NORMAL"
value0 = "0"
description1 = "LAPSE"
value1 = "1"
4)、config_product_workmode_photo.ini
; ============= Common Media Configure ======================
[common.mediamode.config.0]
CAMID = "0"
mediamode = "HI_PDT_MEDIAMODE_PHOTO_1080P"
; ============= photo data source Configure ================
[photosource.0]
enable = "1"
vcappipehdl = "0"
pipechnhdl = "0"
vpsshdl = "0"
vporthdl = "0"
venchdl = "2"; jpeg
5)、config_product_workmode_playback.ini
; =============Playback WorkMode Configure =============
; ============= Playback Configure =============
[playback.mediamode.config.0]
CAMID = "0"
mediamode = "HI_PDT_MEDIAMODE_1080P_30"
[playback.player.config]
interval_ms = "500";Current playing Time notify interval in Ms
video_buff = "6291456"; unit:byte;if 0,use the inner default value
audio_buff = "0"; [1k,100M] unit:byte;if 0,use the inner default value
pause_mode = "0"; 0:do not pause; 1:pause after first frame render.
[playback.vout.opt]
vout_type = "0"; 0-vpss, 1-vo
mod_hdl = "0"; vpsshdl if vout_type vpss
chn_hdl = "1"; vpssporthdl if vout_type vpss
[playback.aout.opt]
dev_hdl = "0";
ao_hdl = "0";
; ============= Playback Configure =============
6)、config_product_workmode_record.ini
; ============= Apply To NormalRec WorkMode =================
; ============= Common Media Configure ======================
[common.mediamode.config.0]
CAMID = "0"
mediamode = "HI_PDT_MEDIAMODE_1080P_30"
; ============= photo data source Configure ================
[photosource.0]
enable = "1"
vcappipehdl = "0"
pipechnhdl = "0"
vpsshdl = "0"
vporthdl = "0"
venchdl = "2"; jpeg
; ================= record Configure =======================
[record.common]
muxer_type = "0"; 0:mp4,1:mov,2:ts
thm_type = "1"; 0:independence,1:embedded,2:none
repaire_unit = "10485760";0:unsupport, >0 repair data unit Byte
pre_alloc_unit = "20971520"; 0:unsupport, >0 pre allocate unit Byte
[normal.0]
enable = "1"
split_type = "1"; 0:none, 1:time
split_time = "60"; second
recbuffer_time = "3000"; ms
prerec_time = "0"; second
filecnt = "1"
thmcnt = "1"
thmhdl0 = "3"
playfps = "-1"
record_type = "0"; 0:norm,1:lapse
lapse_interval = "500"; millisecond
[normal.0.filenum.0.fileattr]
venccnt = "1"
venc_hdl0 = "0"; main record
aenccnt = "1"
aenc_hdl0 = "0";
thumbnail_hdl = "3"; record thumbnail
recvbuf_size = "131072"; unit:Byte
7)、config_product_workmode_usb.ini
; ============= USB WorkMode =================
[common]
usb_mode = "0"; 0:charge, 1:uvc, 2:storage
; ============= UVC Configure =============
[uvc.mediamode.config.0]
CAMID = "0"
mediamode = "HI_PDT_MEDIAMODE_1080P_30"
[uvc]
dev_path = "/dev/video0";
[uvc.capability.yuv420]
count = "1"
video_mode0 = "0"; 0:VGA30
video_defmode = "0"; 0:VGA30
[uvc.capability.mjpeg]
count = "3"
video_mode0 = "0"; 0:VGA30
video_bitrate0 = "20480";
video_mode1 = "1"; 1:720P30
video_bitrate1 = "20480";
video_mode2 = "2"; 2:1080P30
video_bitrate2 = "40960";
video_defmode = "1"; 1:720P30
[uvc.capability.h264]
count = "3"
video_mode0 = "0"; 0:VGA30
video_bitrate0 = "20480";
video_mode1 = "1"; 1:720P30
video_bitrate1 = "20480";
video_mode2 = "2"; 2:1080P30
video_bitrate2 = "40960";
video_defmode = "1"; 1:720P30
[uvc.datasource]
vproc_hdl = "0"
vport_hdl = "1"
venc_hdl = "1"
acap_hdl = "0"
[uvc.buffer]
buffer_size = "3110400"; 1920*1080*1.5
buffer_count = "6"; >= 6
; ============= USB Storage Configure =============
[usb.storage]
dev_path = "/dev/mmcblk0p1";
sysfile = "/sys/devices/platform/soc/100e0000.hidwc3_0/gadget/lun0/file";
usb_state_proc = "/proc/dwc3/100e0000.hidwc3_0/csts";
3、重新編譯及燒錄新固件開發板
在SDK根目錄下執行
make all
等待編譯完成之後,從目錄 reference/out/hi3559v200_dashcam_carrecorder_demb_imx307/burn/spinor 中獲取相應的升級鏡像,燒錄到開發板即可。