SA6145P max9288 camera 笔记
一、相关的服务和库
./vendor/qcarcam_edrm_rvc.rc
./system/lib64/vendor.qti.automotive.qcarcam@1.0.so
./system/lib/vendor.qti.automotive.qcarcam@1.0.so
./system/bin/qcarcam_test
./early_services/system/bin/qcarcam_test
./early_services/system/bin/qcarcam_edrm_rvc
./vendor/lib64/libais_log_proprietary.so
./vendor/lib64/libais_client_proprietary.so //mark
./vendor/lib64/libais_test_util_proprietary.so
./vendor/lib/libais_log_proprietary.so
./vendor/lib/libais_test_util_proprietary.so
./vendor/bin/ais_v4l2loopback_config.xml
./vendor/bin/ais_v4l2_proxy
./system/lib64/libais.so
./system/lib64/libais_client.so
./system/lib64/libais_test_util_edrm.so
./system/lib64/libais_max9296.so
./system/lib64/libais_test_util.so
./system/lib64/libais_log.so
./system/lib64/libais_config.so
./system/lib/libais.so
./system/lib/libais_client.so
./system/lib/libais_test_util_edrm.so
./system/lib/libais_max9296.so
./system/lib/libais_test_util.so
./system/lib/libais_log.so
./system/lib/libais_config.so
./early_services/system/bin/ais_server
二、EARLY_INIT的配置
BoardConfig.mk
BOARD_SUPPORTS_EARLY_INIT := true
export CONFIG_EARLY_INIT := true
/early_services/system/bin //开机走的这个里面的服务
三、宏配置
1、BOARD_SUPPORTS_EARLY_INIT
#Build AIS for early(system) or late(vendor)
ifeq (
(
B
O
A
R
D
S
U
P
P
O
R
T
S
E
A
R
L
Y
I
N
I
T
)
,
t
r
u
e
)
i
f
n
e
q
(
(BOARD_SUPPORTS_EARLY_INIT),true) ifneq (
(BOARDSUPPORTSEARLYINIT),true)ifneq((PLATFORM_VERSION), 10)
AIS_BUILD_FOR_EARLYSERVICE := true //走的这个里面
ais_compile_cflags += -DAIS_EARLYSERVICE
endif
endif
2、AIS_BUILD_STATIC
AIS_BUILD_STATIC := false
3、AIS_32_BIT_FLAG
#build 64bit by default
AIS_32_BIT_FLAG := false
4、AIS_DISABLE_HEALTH
#option to disable health monitor
AIS_DISABLE_HEALTH := false
ifeq ($(AIS_DISABLE_HEALTH),true)
ais_compile_cflags +=
-DAIS_DISABLE_HEALTH
endif
client中会有一个进程一直check
./CameraMulticlient/client/src/ais_client.c
./CameraMulticlient/common/inc/ais_comm.h:94:#define HEALTH_CHECK_DELAY_MSEC 200
./CameraMulticlient/client/src/ais_client.c:732: int sleep_usec = HEALTH_CHECK_DELAY_MSEC * 1000; // Convert msec to usec
./CameraMulticlient/server/src/ais_server.c:1199: int sleep_usec = HEALTH_CHECK_DELAY_MSEC * 1000; // Convert msec to usec
5、AIS_BAYER_ISP
没打开
ifeq ($(AIS_BAYER_ISP),true) //代码没看到这个宏被打开了
ais_compile_cflags +=
-DMAX9296_DEFAULT_BAYER
-DAIS_DEFAULT_FRAMEBASED
endif
5.1、MAX9296_DEFAULT_BAYER
./ImagingInputs/SensorLibs/max9296_lib/src/max9296_lib.c:170:#ifdef MAX9296_DEFAULT_BAYER
#ifdef MAX9296_DEFAULT_BAYER
static max9296_topology_config_t default_config =
{
#ifdef AIS_EARLYSERVICE
.boardType = CAMERA_DAUGHTER_BOARD_TYPE_2,
#else
.boardType = CAMERA_DAUGHTER_BOARD_TYPE_1,
#endif
.opMode = MAXIM_OP_MODE_DEFAULT,
.num_of_cameras = 1,
.sensor_id = {
MAXIM_SENSOR_ID_AR0231,
MAXIM_SENSOR_ID_INVALID
}
};
#else
static max9296_topology_config_t default_config =
{
#ifdef AIS_EARLYSERVICE
.boardType = CAMERA_DAUGHTER_BOARD_TYPE_2,
#else
.boardType = CAMERA_DAUGHTER_BOARD_TYPE_1,
#endif
.opMode = MAXIM_OP_MODE_DEFAULT,
.num_of_cameras = 2,
.sensor_id = {
MAXIM_SENSOR_ID_AR0231_EXT_ISP, //走的else,
MAXIM_SENSOR_ID_AR0231_EXT_ISP
}
};
#endif
//驱动里面ID定义
typedef enum
{
MAXIM_SENSOR_ID_INVALID,
MAXIM_SENSOR_ID_AR0231,
MAXIM_SENSOR_ID_AR0231_EXT_ISP,
MAXIM_SENSOR_ID_MAX
}maxim_sensor_id_t;
5.2、AIS_DEFAULT_FRAMEBASED
./Engine/src/ais_ife_configurer.cpp:602:#ifdef AIS_DEFAULT_FRAMEBASED
#ifdef AIS_DEFAULT_FRAMEBASED
sRdiCfg.outputConfig.mode = IFE_OUTPUT_MODE_FRAME_BASED;
#else
/Enable line based as default mode./
sRdiCfg.outputConfig.mode = IFE_OUTPUT_MODE_LINE_BASED;
#endif
//驱动里面mode定义
typedef enum
{
IFE_OUTPUT_MODE_LINE_BASED = 0,
IFE_OUTPUT_MODE_FRAME_BASED
}IfeOutputModeType;
6、 TARGET_USES_TV_TUNER
没有用到
./Android.mk:39:ifeq ($(TARGET_USES_TV_TUNER),true)
ifeq ($(TARGET_USES_TV_TUNER),true)
ais_compile_cflags += -DENABLE_TV_TUNER
endif
7、AIS_ISP_DISABLE_SHDR
没打开
ifeq ($(AIS_ISP_DISABLE_SHDR),true)
ais_compile_cflags +=
-DAIS_ISP_DISABLE_SHDR
endif
./Engine/src/chi/ais_pproc_isp.cpp
#ifdef AIS_ISP_DISABLE_SHDR
// User can decide at compile time to disable sHDR
m_usecaseId = UsecaseBPSAECAWBIPEInputMipiRaw16OutNV12;
#else
m_usecaseId = UsecaseShdrBpsIpeAECAWB;
#endif
四、调试命令
/early_services/system/bin/ais_server &
qcarcam_test -config=/system/bin/qcarcam_config.xml
后面可以带一些参数:
qcarcam_test -config=/system/bin/qcarcam_config.xml -dumpFrame=1
五、代码
device_id和link配置
./ImagingInputs/SensorLibs/max9296_lib/config/max9296_config.xml
代码修改:
./ImagingInputs/SensorLibs/max9296_lib/
── src
├── ar0231.c
├── ar0231_ext_isp.c
├── ar0231_ext_isp.h
├── ar0231.h
├── max9296_lib.c
└── max9296_lib.h