GMSL方案,还是记录一下吧,调试过程中随手记录
比较杂乱,没有整理,随便看看吧
MAX9288 3.12Gbps GMSL Deserializers for Coax or STP Input and MIPI CSI-2 …
MAX9286 Quad 1.5Gbps GMSL Deserializer with Coax or STP Input and CSI-2 …
MAX9295 ==>serializer
本发明提供了一种基于PCIE和摄像头同轴传输技术的多摄像头同测装置,其包括依次连接的图像采集及PCIE发送模块、同轴远距离传输模块、数字电源模块,所述图像采集及PCIE发送模块包括互相连接的PCIE接口和FPGA,所述同轴远距离传输模块包括用同轴电缆互相连接的芯片max9295A和芯片max9296B,FPGA通过I2C总线连接芯片max9295A,芯片max9296B通过I2C总线连接数字电源模块,每路摄像头分别连接数字电源模块,并通过MIPI接口和I2C接口与芯片max9296B连接。本发明的优点是:一个测试电路能够完成几十个摄像头的同时检测,大幅提升测试效率;模组通过同轴电缆实现摄像头MIPI数据的远距离传输,有效解决了MIPI数据远距离传输的问题,通过由MIPI信号转换为同轴再转MIPI,保障了MIPI信号的完整性。
问一下 MAX9295 对端用什么片子解串比较好
客户做ADAS(高级辅助驾驶系统)
模组这边是 MAX9295出来的
我需要一个解串芯片?
开始测试 MAX96705+MAX9286 画质不能满足要求,
Maxim的吉比特(千兆)多媒体串行链路(GMSL)方案可以对数字视频和音频数据进行串行转换,然后通过一对双绞线串行传输。另外,集成双向控制通道可以使能单个微处理器©对串行器、解串器和所有连接外设编程。在典型应用中可以省去远端微处理器及相关器件,如:时钟源/晶体和低压电源。此方案不但简化了远端设计,而且降低了系统成本、尺寸和功耗。但是,有些情况下,考虑到GMSL之外的特殊需求,系统中仍然在链路的两端驻留了μC.这篇应用笔记描述了如何连接两个μC,控制GMSL.
//================================== 数据手册
//MAX96705
MAX96705 pin compatible with the MAX9271
I 2 C TIMING
Low f SCL range: (I2CMSTBT = 010,
I2CSLVSH = 10) 9.6 100
Mid f SCL range: (I2CMSTBT 101,
I2CSLVSH = 01) > 100 400
High f SCL range: (I2CMSTBT = 111,
I2CSLVSH = 00) > 400 1000
//MAX9288
The audio channel supports L-PCM I 2 S stereo and up to
eight channels of L-PCM in TDM mode. Sample rates of
32kHz to 192kHz are supported with sample depth up to
32 bits.
The GMSL
supply is 3.0V to 3.6V, the MIPI CSI-2 supply is 1.7V to
1.9V, and the I/O supply is 1.7V to 3.6V.
I 2 C TIMING (Figure 6)
Low f SCL range:
(I2CMSTBT = 010, I2CSLVSH = 10) 9.6 100
Mid f SCL range:
(I2CMSTBT 101, I2CSLVSH = 01) > 100 400
High f SCL range:
(I2CMSTBT = 111, I2CSLVSH = 00) > 400 1000
I2CSEL I 2 C Select. Control channel interface protocol select input with internal pulldown to EP. Set I2CSEL =
high to select I 2 C interface. Set I2CSEL = low to select UART interface.
//寄存器 0x1C
Set the I2CMSTBT (register 0x1C) to set the remote I 2 C
bit rate. If using a bit rate different from 400kbps, local- and
remote-side I 2 C setup and hold times should be adjusted
by setting the I2CSLVSH register settings on both sides.
//================================== 原理图
PWDN_ == R359(1K) == gpio_47
MIPI_INT == gpio_46
VREG_3P3 == AVDD3_1
VREG_S4A_1P8 == AVDD18_1 DVDD18_3 IOVDD_1
HS_I2CSEL 高电平
MIPI_CSI0_EN ==== gpio20 ==== 9288(GPIO1)
MIPI_CSI0_RST ==== gpio21 ==== 9288(GPIO0)
//接口pin信息
HS_IN- HS_LMN1 == FPDNLink RIN0- ==== J106(LVDS+)
HS_IN+ HS_LMN0 == FPDNLink RIN0+ ==== J106(LVDS-)
J106:Camera_POW Camera_POW_EN(R156 没贴??) ==== FS32K144HRT0MLLT(MCU) ====》不用控制
//================================== 摄像头信息
1280*960
UYVY,8bit
PCLK 99MHz
25fps
ISX019(SONY) ===== MAX96701
PCLK
D7
D6
D5
D4
D3
D2
D1
D0
H sync
V sync
Frame sync
EXBUSY
SENSOR_ERROR
RST_SENSOR
SCL
SDA
//============================================= userdata 不能刷机
writing ‘userdata’…
FAILED (remote: Error flashing partition : Volume Full)
//============================================= 这次的cpu版本和以前不一样,以前是19周工程样件,这次基本是量产件
console:/ #
console:/ # [ 59.299945] Fatal error on adsp!
[ 59.303341] adsp subsystem failure reason: SFR Init: wdog or
reboot bootloader
fastboot erase modem
[ 11.958773] ueventd: Coldboot took 1.086 seconds
[ 12.022911] ueventd: firmware: loading ‘adsp.mdt’ for ‘/devices/platform/soc/62400000.qcom,lpass/firmware/adsp.mdt’
[ 12.033351] Registered swp emulation handler
[ 74.727994] firmware cdsp.mdt: _request_firmware_load: firmware state wait timeout: rc = -110
[ 74.727996] firmware adsp.mdt: _request_firmware_load: firmware state wait timeout: rc = -110
[ 74.728198] subsys-pil-tz 62400000.qcom,lpass: adsp: Failed to locate adsp.mdt(rc:-11)
[ 74.736893] subsys-pil-tz 8300000.qcom,turing: cdsp: Failed to locate cdsp.mdt(rc:-11)
[ 74.745756] adsp-loader soc:qcom,msm-adsp-loader: adsp_load_fw: pil get failed,
[ 74.753854] cdsp-loader soc:qcom,msm-cdsp-loader: cdsp_loader_do: pil get failed,
[ 74.761826] adsp-loader soc:qcom,msm-adsp-loader: adsp_load_fw: Q6 image loading failed
[ 74.769333] cdsp-loader soc:qcom,msm-cdsp-loader: cdsp_loader_do: CDSP image loading failed
[ 74.794022] init: Command ‘write /sys/kernel/boot_cdsp/boot 1’ action=init (/vendor/etc/init/hw/init.target.rc:46) took 62753ms and succeeded
不能禁用,否则屏起不来:
screencap -p /data/11.png
新板子adsp影响调试的话,可以先在kernel下drivers\soc\qcom\subsystem_restart.c文件中,在"subsys->desc->sysmon_pid = -1;“后面加上一句"subsys->restart_level = RESET_SUBSYS_COUPLED;”,忽略subsystem异常,以便看能否先调试其它功能。adsp的异常再进一步分析
//============================================
drivers/media/platform/msm/ais/cam_sensor_module/cam_sensor_io/
drivers/media/platform/msm/camera/cam_sensor_module/cam_sensor_io/cam_sensor_cci_i2c.c
obj- ( C O N F I G S P E C T R A C A M E R A ) + = c a m e r a / o b j − (CONFIG_SPECTRA_CAMERA) += camera/ obj- (CONFIGSPECTRACAMERA)+=camera/obj−(CONFIG_MSM_AIS) += ais/
vendor/sdmsteppe-auto-perf_defconfig
vendor/sdmsteppe-auto_defconfig
arch/arm64/configs/vendor/sdmsteppe-auto_defconfig
CONFIG_MSM_AIS=y
video0 video1 video32 video33 video51 video52
qcarcam_test -config=/system/bin/qcarcam_config.xml
//===================== info
0x1E
Device identifier
(MAX9288 = 0x2A)
(MAX9290 = 0x2C)
[ 10.128395] CAM_INFO: CAM-CPAS: cam_cpas_hw_start: 1021 AXI client=[3][cci][0] comp[1024], comp_ab[1024], uncomp[1024]
[ 10.140350] CAM_INFO: CAM-SENSOR: cam_sensor_driver_cmd: 930 SENSOR_POWER_UP Success 0
[ 10.149672] CAM_ERR: CAM-CCI: cam_cci_irq: 228 Base:ffffff8019090000, M0 NACK ERROR: 0x10000000
[ 10.158632] CAM_ERR: CAM-CCI: cam_cci_read: 1305 read_words = 0, exp words = 1
[ 10.166055] CAM_ERR: CAM-CCI: cam_cci_read_bytes: 1573 failed to read rc:-22
[ 10.173316] CAM_ERR: CAM-SENSOR: cam_cci_i2c_read: 42 rc = -22
[ 10.179317] CAM_ERR: CAM-SENSOR: cam_sensor_driver_cmd: 1004 Failed to read 0x90:0xd
[ 10.188444] CAM_WARN: CAM-SENSOR: cam_sensor_driver_cmd: 920 powering up 1
if (rc < 0) {CAM_ERR(CAM_SENSOR, "Failed to read 0x%x:0x%x",slave_info.slave_addr, i2c_read.reg_addr); //xc(void)cam_sensor_restore_slave_info(s_ctrl);goto release_mutex;}
/*
[ 10.667962] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1013 Failed to read 0x94:0xd
*/
echo 0 > /proc/sys/kernel/printk
-#define MSM_DES_0_SLAVEADDR 0x90
+
+#define MSM_DES_0_SLAVEADDR 0x2A //应该是子设备
#define MSM_DES_1_SLAVEADDR 0x94
-#define MSM_DES_CHIP_ID_REG_ADDR 0xD
+#define MSM_DES_CHIP_ID_REG_ADDR 0x1E//0xD //mark
[ 9.982815] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1017 Failed to read 0x2a:0x1e
[ 10.345249] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1017 Failed to read 0x94:0x1e
[ 10.760075] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1017 Failed to read 0x2a:0x1e
reboot bootloader
gpio32 : in 1 2mA pull up
gpio33 : in 1 2mA pull up
gpio47 : out 0 2mA no pull
Device Address Defaults (Register 0x00, 0x01) P28
HS_ADD0 HS_ADD1 HS_ADD2_CNTL2_MCLK
[ 12.318689] ========== i2c_read.i2c_config.slave_addr =0x90, cci_i2c_master = 0,cci_num = 0
[ 12.327351] xcz enter cam_cci_core_cfg — line:1706
[ 12.332472] xcz enter cam_cci_read_bytes — line:1523
[ 12.337756] xcz enter cam_cci_read — line:1148
[ 12.343725] xcz temp = 0x2a
[ 12.346598] update enter CCI_MASTER
[ 12.350204] update enter end, rc=0
[ 11.129837] ========== i2c_read.i2c_config.slave_addr =0x90, cci_i2c_master = 0,cci_num = 0
[ 11.146047] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1231 Read 0x90 : 0x17 <- 0x4
qcarcam_test -config=/system/bin/qcarcam_config.xml
07-02 11:03:29.247 3690 3690 I qcarcam_test: ais_initialize:1243 HIGH AIS CLIENT START 404
07-02 11:03:29.247 386 386 I ais_server: ais_server_create:1423 HIGH E ais_server_create 0x0x7fce865698
07-02 11:03:29.247 386 386 E ais_server: ais_server_exchange:1351 WARN API version of Client is compatible with version of Server
07-02 11:03:29.247 386 386 E ais_server: ais_server_exchange:1362 WARN API version of APP is compatible with version of Server
07-02 11:03:29.248 386 386 E MM_OSAL : MM_Thread_CreateEx::thread 0x547711669488 created with stack 1048576 bytes
07-02 11:03:29.248 386 386 I ais_server: ais_server_create:1467 HIGH X ais_server_create 0x0x7fce865698 0
07-02 11:03:29.259 386 3691 E MM_OSAL : MM_Thread_CreateEx::thread 0x547710612720 created with stack 1048576 bytes
07-02 11:03:29.260 386 3692 I ais_server: ais_server_cmd_thread:2202 HIGH E ais_server_cmd_thread 0x0x55689db008 0
07-02 11:03:29.270 3690 3690 E MM_OSAL : MM_Thread_CreateEx::thread 0x543656555760 created with stack 1032192 bytes
07-02 11:03:29.271 3690 3690 E MM_OSAL : MM_Thread_CreateEx::thread 0x543651001584 created with stack 1032192 bytes
07-02 11:03:29.272 386 3691 E MM_OSAL : MM_Thread_CreateEx::thread 0x547709555952 created with stack 1032192 bytes
07-02 11:03:29.272 3690 3690 E MM_OSAL : MM_Thread_CreateEx::thread 0x543649961200 created with stack 1032192 bytes
07-02 11:03:29.278 3690 3690 I qcarcam_test: QCARCAM main:2503 HIGH test_util_init : 7 ms
07-02 11:03:29.279 3690 3690 E qcarcam_test: QCARCAM test_util_parse_xml_config_file:274 ERR Wrong config file format, root node != qcarcam_inputs
07-02 11:03:29.279 3690 3690 E qcarcam_test: QCARCAM main:2524 ERR Failed to parse config file! //这里报错了
07-02 11:03:29.302 386 3692 E ais_server: ais_conn_recv:504 ERR 0x0x55689db030 0 0 0
07-02 11:03:29.302 386 3692 E ais_server: ais_conn_recv:520 ERR X 0x0x55689db030 0x0x7f86189e70 0x0x7f86189e6c | 5080 -4
07-02 11:03:29.302 386 3692 I ais_server: ais_server_destroy:1486 HIGH E ais_server_destroy 0
07-02 11:03:29.377 386 3692 I ais_server: ais_server_destroy:1559 HIGH X ais_server_destroy 0 0
07-02 11:03:29.378 386 3692 I ais_server: ais_server_cmd_thread:2262 HIGH X ais_server_cmd_thread 0x0x55689db008 0
./ImagingInputs/SensorLibs/max9296_lib/config/max9296_config.xml
./test/test_util/config/1cam_bayer_raw.xml
./test/test_util/config/12cam.xml
./test/test_util/config/1cam.xml //=====》用这个
./test/test_util/config/1cam_pipeline6.xml
./test/test_util/config/1cam_pproc_nv12.xml
./test/test_util/config/14stream_display0.xml
./test/test_util/config/8cam_display0.xml
./test/test_util/config/8cam.xml
./test/test_util/src/agl/disp_protocol/viewporter.xml
./test/test_util/src/agl/disp_protocol/xdg-shell.xml
./test/test_util/src/agl/disp_protocol/ivi-application.xml
./test/test_util/src/agl/disp_protocol/scaler.xml
./test/test_util/src/agl/disp_protocol/gbm-buffer-backend.xml
./hal/ais_v4l2_proxy/config/ais_v4l2loopback_config.xml
07-02 11:11:31.466 5445 5445 I qcarcam_test: ais_initialize:1243 HIGH AIS CLIENT START 404
07-02 11:11:31.466 386 386 I ais_server: ais_server_create:1423 HIGH E ais_server_create 0x0x7fce865698
07-02 11:11:31.466 386 386 E ais_server: ais_server_exchange:1351 WARN API version of Client is compatible with version of Server
07-02 11:11:31.466 386 386 E ais_server: ais_server_exchange:1362 WARN API version of APP is compatible with version of Server
07-02 11:11:31.466 386 386 E MM_OSAL : MM_Thread_CreateEx::thread 0x547711669488 created with stack 1048576 bytes
07-02 11:11:31.466 386 386 I ais_server: ais_server_create:1467 HIGH X ais_server_create 0x0x7fce865698 0
07-02 11:11:31.470 464 464 W hwservicemanager: getTransport: Cannot find entry vendor.qti.hardware.tui_comm@1.0::ITuiComm/default in either framework or device manifest.
07-02 11:11:31.478 386 5446 E MM_OSAL : MM_Thread_CreateEx::thread 0x547710612720 created with stack 1048576 bytes
07-02 11:11:31.479 386 5447 I ais_server: ais_server_cmd_thread:2202 HIGH E ais_server_cmd_thread 0x0x55689db008 0
07-02 11:11:31.489 5445 5445 E MM_OSAL : MM_Thread_CreateEx::thread 0x497022457072 created with stack 1032192 bytes
07-02 11:11:31.490 5445 5445 E MM_OSAL : MM_Thread_CreateEx::thread 0x497016632560 created with stack 1032192 bytes
07-02 11:11:31.490 5445 5445 E MM_OSAL : MM_Thread_CreateEx::thread 0x497015592176 created with stack 1032192 bytes
07-02 11:11:31.491 386 5446 E MM_OSAL : MM_Thread_CreateEx::thread 0x547709555952 created with stack 1032192 bytes
07-02 11:11:31.497 5445 5445 I qcarcam_test: QCARCAM main:2503 HIGH test_util_init : 5 ms
07-02 11:11:31.498 5445 5445 I qcarcam_test: QCARCAM main:2529 HIGH xml parsing : 1 ms //这个改完okay了
07-02 11:11:31.498 5445 5445 E qcarcam_test: QCARCAM main:2541 ERR Failed qcarcam_query_inputs number of inputs with ret 0 //这里报错了
07-02 11:11:31.522 386 5447 E ais_server: ais_conn_recv:504 ERR 0x0x55689db030 0 0 0
07-02 11:11:31.522 386 5447 E ais_server: ais_conn_recv:520 ERR X 0x0x55689db030 0x0x7f86189e70 0x0x7f86189e6c | 5080 -4
07-02 11:11:31.522 386 5447 I ais_server: ais_server_destroy:1486 HIGH E ais_server_destroy 0
07-02 11:11:31.551 386 5451 E ais_server: ais_conn_send:436 ERR 0x0x55689db408 -1 32
07-02 11:11:31.551 386 5451 E ais_server: ais_conn_send:449 ERR X 0x0x55689db408 0x0x7f86089438 12 -4
07-02 11:11:31.552 386 5447 I ais_server: ais_server_destroy:1559 HIGH X ais_server_destroy 0 0
07-02 11:11:31.552 386 5447 I ais_server: ais_server_cmd_thread:2262 HIGH X ais_server_cmd_thread 0x0x55689db008 0
//qcarcam_query_inputs
./hal/qcarcam/client/src/qcarcam_api.cpp
//库文件
out/target/product/sm6150_au/vendor/bin/ais_v4l2_proxy
07-02 10:57:26.598 502 1603 E ais_v4l2_proxy: QCARCAM ais_v4l2_poll_thread:723 ERR
07-02 10:57:26.598 502 1603 E ais_v4l2_proxy: fd open is successful
07-02 10:57:26.598 502 1603 E ais_v4l2_proxy:
07-02 10:57:26.598 502 502 E MM_OSAL : MM_Thread_CreateEx::thread 0x535149180144 created with stack 1032192 bytes
07-02 10:57:26.598 502 1604 E ais_v4l2_proxy: QCARCAM ais_v4l2_poll_thread:723 ERR
07-02 10:57:26.598 502 1604 E ais_v4l2_proxy: fd open is successful
07-02 10:57:26.598 502 1604 E ais_v4l2_proxy:
没有log:
libais_client
qcarcam_test -config=/system/bin/qcarcam_config.xml
//log 这里的
./CameraMulticlient/client/src/qcarcam.c
./Engine/src/ais_engine.cpp:1405:CameraResult AisEngine::ais_query_inputs(qcarcam_input_t* p_inputs, unsigned int size, unsigned int* ret_size)
carcam_test -config=/system/bin/qcarcam_config.xml <
xcz result = 0
qcarcam.c.cpp qcarcam_query_inputs
xcz result = 0
#define CAMERA_SUCCESS 0 ///< No error
static qcarcam_ret_t camera_to_qcarcam_result(CameraResult result)
{
switch (result)
{
case CAMERA_SUCCESS : return QCARCAM_RET_OK ; break;
case CAMERA_EFAILED : return QCARCAM_RET_FAILED ; break;
case CAMERA_ENOMEMORY : return QCARCAM_RET_NOMEM ; break;
case CAMERA_ECLASSNOTSUPPORT : return QCARCAM_RET_FAILED ; break;
07-02 11:03:15.291 3710 3710 I qcarcam_test: QCARCAM main:2503 HIGH test_util_init : 5 ms
07-02 11:03:15.292 3710 3710 I qcarcam_test: QCARCAM main:2529 HIGH xml parsing : 0 ms
07-02 11:03:15.292 3710 3710 E qcarcam_test: QCARCAM main:2541 ERR Failed qcarcam_query_inputs number of inputs with ret 0 //这个应该是正常的log
07-02 11:03:15.315 386 3712 E ais_server: ais_conn_recv:504 ERR 0x0x5568588030 0 0 0
07-02 11:03:15.315 386 3712 E ais_server: ais_conn_recv:520 ERR X 0x0x5568588030 0x0x7f91646e70 0x0x7f91646e6c | 5080 -4
07-02 11:03:15.315 386 3712 I ais_server: ais_server_destroy:1486 HIGH E ais_server_destroy 0
07-02 11:03:15.402 466 466 W hwservicemanager: getTransport: Cannot find entry vendor.qti.hardware.tui_comm@1.0::ITuiComm/default in either framework or device manifest.
07-02 11:03:15.415 386 3712 I ais_server: ais_server_destroy:1559 HIGH X ais_server_destroy 0 0
07-02 11:03:15.415 386 3712 I ais_server: ais_server_cmd_thread:2262 HIGH X ais_server_cmd_thread 0x0x5568588008 0
//=============================== 换个方向
[ 10.913890] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1231 Read 0x90 : 0x17 <- 0x4
[ 11.005554] ========== i2c_read.i2c_config.slave_addr =0x90, cci_i2c_master = 0,cci_num = 0
[ 11.014314] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1231 Read 0x90 : 0xe <- 0x0
[ 11.038281] xcz enter cam_sensor_subdev_ioctl — line:25
[ 11.043841] xcz enter cam_sensor_driver_cmd — line:745
[ 11.049363] cmd = 281
[ 11.051722] enter AIS_SENSOR_I2C_WRITE_ARRAY
[ 11.056154] update enter CCI_MASTER
[ 11.059818] update enter end, rc=0
[ 11.063329] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1399 Write 0x90, 2 regs [1, 1]
[ 11.071804] xcz enter cam_cci_core_cfg — line:1706
[ 11.082544] CAM_ERR: CAM-xczCCI: cam_cci_irq: 228 Base:ffffff80190a0000, M0 NACK ERROR: 0x8000000
[ 12.568039] CAM_ERR: CAM-xczCCI: cam_cci_wait: 255 wait for queue: 0
[ 12.581165] CAM_ERR: CAM-xczCCI: cam_cci_transfer_end: 337 failed rc -110
[ 12.597410] CAM_ERR: CAM-xczCCI: cam_cci_data_queue: 861 failed rc -110
[ 12.619828] CAM_ERR: CAM-xczCCI: cam_cci_i2c_write: 1419 failed rc: -110
[ 12.638351] CAM_ERR: CAM-xczSENSOR: cam_cci_i2c_write_table_cmd: 130 Failed rc = -110
[ 12.654570] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1406 Failed to write array to 0x90 2
0x17 <- 0x4 //原来是 0xD
0xe <- 0x0
//======================= 9296
//id寄存器
REG13 (0xD)
0x94: MAX9296A
//版本号
REG14 (0xE)
DEV_REV
[ 11.151783] enter AIS_SENSOR_I2C_WRITE_ARRAY
[ 11.151792] xczhaha==== addr:0x1, data:0x2, delay:0x0
[ 11.166909] xczhaha==== addr:0x10, data:0x21, delay:0x0
[ 11.196952] i2c_write.i2c_config.i2c_freq_mode = 2
[ 11.238342] update enter CCI_MASTER
[ 11.238345] update enter end, rc=0
[ 11.238349] ========== i2c_write.i2c_config.slave_addr =0x90, cci_i2c_master = 0,cci_num = 0
[ 11.148123] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1233 Read 0x90 : 0x1e <- 0x2a
[ 11.239052] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1233 Read 0x90 : 0xe <- 0x0
[ 11.797084] xczhaha==== addr:0x1, data:0x2, delay:0xa
[ 11.797091] xczhaha==== addr:0x10, data:0x22, delay:0xa //okay
[ 11.507907] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0xc4:0xd
[ 11.624088] ========== i2c_read.i2c_config.slave_addr =0x88, cci_i2c_master = 0,cci_num = 0
[ 11.632770] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x88:0xd
[ 11.499108] ========== i2c_read.i2c_config.slave_addr =0xc4, cci_i2c_master = 0,cci_num = 0
[ 11.507907] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0xc4:0xd
[ 11.624088] ========== i2c_read.i2c_config.slave_addr =0x88, cci_i2c_master = 0,cci_num = 0
[ 11.632770] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x88:0xd
[ 11.776145] ========== i2c_read.i2c_config.slave_addr =0x80, cci_i2c_master = 0,cci_num = 0
[ 11.776148] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x80:0xd
//报错:
[ 898.411779] init: cannot execve(‘/vendor/bin/ais_v4l2_proxy’): Permission denied
[ 903.419458] init: cannot execve(‘/vendor/bin/ais_v4l2_proxy’): Permission denied
[ 908.426398] init: cannot execve(‘/vendor/bin/ais_v4l2_proxy’): Permission denied
chmod 777 后解决
xcz@xcz-OptiPlex-7070:~/log$ grep “CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_” minicom-0707.txt
[ 9.756639] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 971 SENSOR_POWER_DOWN Success 0
[ 10.107343] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 971 SENSOR_POWER_DOWN Success 1
[ 10.298384] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 971 SENSOR_POWER_DOWN Success 2
[ 11.173638] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 946 SENSOR_POWER_UP Success 0
//============= 1
[ 11.255941] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1233 Read 0x90 : 0x1e <- 0x2a
[ 11.319803] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1233 Read 0x90 : 0xe <- 0x0
[ 11.450999] xczhaha==== addr:0x1, data:0x2, delay:0xa
[ 11.484915] xczhaha==== addr:0x10, data:0x21, delay:0xa
[ 11.571110] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1408 Write 0x90, 2 regs [1, 1]
//============= 2
[ 11.949436] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0xc4:0xd
[ 12.115576] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x88:0xd
[ 12.338359] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x80:0xd
[ 12.410254] xczhaha==== addr:0x1, data:0x2, delay:0xa
[ 12.418846] xczhaha==== addr:0x10, data:0x22, delay:0xa
[ 12.487366] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1408 Write 0x90, 2 regs [1, 1]
[ 12.839291] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0xc4:0xd
[ 12.947138] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x88:0xd
[ 13.129999] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x80:0xd
a-改了版本号:
b-.addr_type = CAMERA_I2C_WORD_ADDR,
[ 9.734012] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 971 SENSOR_POWER_DOWN Success 0
[ 9.996507] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 971 SENSOR_POWER_DOWN Success 1
[ 10.323778] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 971 SENSOR_POWER_DOWN Success 2
[ 11.146188] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 946 SENSOR_POWER_UP Success 0
[ 11.228086] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1233 Read 0x90 : 0x1e <- 0x90
[ 11.328786] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1233 Read 0x90 : 0x1f <- 0x90
[ 11.424621] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1408 Write 0x90, 2 regs [2, 1]
[ 11.601796] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0xc4:0xd
[ 11.758209] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x88:0xd
[ 11.953003] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x80:0xd
[ 12.080421] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1408 Write 0x90, 2 regs [2, 1]
[ 12.361325] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0xc4:0xd
[ 12.517848] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x88:0xd
[ 12.749352] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x80:0xd
[ 13.338810] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 946 SENSOR_POWER_UP Success 1
[ 13.519786] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x94:0x1e
[ 14.603128] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 946 SENSOR_POWER_UP Success 2
[ 14.704871] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x90:0x1e
CAMERA_I2C_BYTE_ADDR
[ 11.228086] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1233 Read 0x90 : 0x1e <- 0x90
[ 11.328786] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1233 Read 0x90 : 0x1f <- 0x90
.sensor_id_mask = 0xff,//.sensor_id_mask = 0xff00,
[ 11.228086] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1233 Read 0x90 : 0x1e <- 0x90
[ 11.328786] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1233 Read 0x90 : 0x1f <- 0x90
[ 12.410254] xczhaha==== addr:0x1, data:0x2, delay:0xa
[ 12.418846] xczhaha==== addr:0x10, data:0x22, delay:0xa
if (pCtxt->num_supported_sensors > 1){// Enable I2C forwarding and select linkstruct camera_i2c_reg_array write_regs[] = {{0x0001, 0x02, _max9296_delay_},{0x0010, 0x20 | (1 << i), _max9296_delay_}
//reg:0x01
0x01 ===>3Gbps
0x02 ===>6Gbps
//reg:0x10
bit5:
Reset whole data path (keep register
settings) one shot. Write 1 to activate reset,
bit self clears and automatically releases
reset.
bit1-0:
LINK_CFG
0b00: If AUTO_LINK = 0, Dual link selected. If
AUTO_LINK = 1, Link mode is automatically
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,//2, //xcz only one
.sensor_id = {
MAXIM_SENSOR_ID_AR0231_EXT_ISP,
MAXIM_SENSOR_ID_AR0231_EXT_ISP
}
};
static int max9296_set_default(max9296_context_t * pCtxt)
{
pCtxt->max9296_config = default_config;
memcpy(&pCtxt->max9296_sensors, max9296_sensors_init_table, sizeof(pCtxt->max9296_sensors));
/*default to dev id 0*/
switch (pCtxt->subdev_id)
{
case 1:
case 3:pCtxt->slave_addr = MSM_DES_1_SLAVEADDR;pCtxt->max9296_sensors[0].serializer_alias = MSM_DES_1_ALIAS_ADDR_CAM_SER_0;pCtxt->max9296_sensors[1].serializer_alias = MSM_DES_1_ALIAS_ADDR_CAM_SER_1;pCtxt->max9296_sensors[0].sensor_alias = MSM_DES_1_ALIAS_ADDR_CAM_SNSR_0;pCtxt->max9296_sensors[1].sensor_alias = MSM_DES_1_ALIAS_ADDR_CAM_SNSR_1;break;
default:pCtxt->slave_addr = MSM_DES_0_SLAVEADDR;break;
}return 0;
}
//=====================================================
01-01 00:00:29.060 493 493 E ais_v4l2_proxy: QCARCAM main:916 ERR ais v4l2loopback source app started
01-01 00:00:29.061 493 493 E ais_v4l2_proxy: QCARCAM main:965 ERR Filename is /vendor/bin/ais_v4l2loopback_config.xml
01-01 00:00:29.061 493 493 E ais_v4l2_proxy:
01-01 00:00:29.093 493 493 E ais_v4l2_proxy: QCARCAM main:992 ERR qcarcam_init_v4l2device success for node /dev/video51
01-01 00:00:29.114 493 493 E ais_v4l2_proxy: QCARCAM main:992 ERR qcarcam_init_v4l2device success for node /dev/video52
255|console:/ # ls /dev/video
video0 video1 video32 video33 video51 video52
//=====================================================
01-01 00:01:06.207 760 760 I qcarcam_test: QCARCAM main:2503 HIGH test_util_init : 1 ms
01-01 00:01:06.208 760 760 I qcarcam_test: QCARCAM main:2529 HIGH xml parsing : 0 ms
01-01 00:01:06.208 760 760 E qcarcam_test: QCARCAM main:2541 ERR Failed qcarcam_query_inputs number of inputs with ret 0
01-01 00:01:06.215 386 762 E ais_server: ais_conn_recv:504 ERR 0x0x555fc02030 0 0 0
01-01 00:01:06.215 386 762 E ais_server: ais_conn_recv:520 ERR X 0x0x555fc02030 0x0x7f91586e70 0x0x7f91586e6c | 5080 -4
01-01 00:01:06.215 386 762 I ais_server: ais_server_destroy:1486 HIGH E ais_server_destroy 0
01-01 00:01:06.308 386 762 I ais_server: ais_server_destroy:1559 HIGH X ais_server_destroy 0 0
01-01 00:01:06.308 386 762 I ais_server: ais_server_cmd_thread:2262 HIGH X ais_server_cmd_thread 0x0x555fc02008 0v
01-01 00:19:32.286 1057 1057 I qcarcam_test: QCARCAM main:2503 HIGH test_util_init : 2 ms
01-01 00:19:32.286 1057 1057 I qcarcam_test: QCARCAM main:2529 HIGH xml parsing : 0 ms
01-01 00:19:32.286 1057 1057 E qcarcam_test: QCARCAM main:2538 ERR enter main
01-01 00:19:32.286 1057 1057 E qcarcam_test: QCARCAM main:2542 ERR qcarcam_test.cpp Failed qcarcam_query_inputs number of inputs with ret 0
//qcarcam_test.cpp
xcz ais_client_create enter
xcz ais_client_create enter idx = 0
xcz ais_client_create enter sg_main_client_idx = 0
xcz result = 0
xcz qcarcam.c.cpp qcarcam_query_inputs
xcz enter ais_query_inputs
xcz enter ais_query_inputs — ret_size == NULL after
xcz enter ais_query_inputs — sg_main_client_idx = 0
xcz enter ais_query_inputs — ais_client_process_cmd
xcz enter ais_query_inputs — ais_client_process_cmd after
xcz enter ais_query_inputs — cmd_param.ret_size = 0
xcz result = 0
rc = ais_client_process_cmd(p, &cmd_param, sizeof(cmd_param), sizeof(cmd_param), AIS_CONN_RECV_TIMEOUT);
cmd_param.ret_size; //函数调用后,这个返回0
//更新这2个库文件
system/lib/libais_config.so system/lib64/libais_config.so
//==================== 是不是这个有关系
[ 10.518795] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0xc4:0xd
[ 10.572788] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x88:0xd
[ 10.949458] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x80:0xd
[ 10.433244] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1233 Read 0x90 : 0x1e <- 0x90
[ 10.479747] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1233 Read 0x90 : 0x1f <- 0x90
[ 10.518795] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0xc4:0xd //远端的轮训
[ 10.572788] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x88:0xd
[ 10.949458] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x80:0xd
//修改下面参数后正常了:
static void* max9296_sensor_open_lib(void* ctrl, void* arg)
pCtxt->max9296_reg_setting.addr_type = CAMERA_I2C_BYTE_ADDR;
[ 10.375896] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1233 Read 0x90 : 0x1e <- 0x2a
[ 10.552311] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1233 Read 0x90 : 0x1f <- 0x3
[ 10.694740] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0xc4:0x1e
[ 10.836814] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x88:0x1e
[ 10.953046] CAM_ERR: CAM-xczSENSOR: cam_sensor_driver_cmd: 1224 Failed to read 0x80:0x1e
几个宏:
MAX9296_DEFAULT_BAYER 默认关闭
DEBUG_SINGLE_SENSOR 默认关闭 ====》打开
MAX9296_ENABLE_INTR_HANDLER 默认关闭
//xcz mark 重要数组
static struct camera_i2c_reg_array max9296_mode_split_receiver[] = CAM_DES_INIT_SPLITTER_MODE_RECEIVER;
static struct camera_i2c_reg_array max9296_mode_split_sender[] = CAM_DES_INIT_SPLITTER_MODE_SENDER;
static struct camera_i2c_reg_array max9296_mode_link_receiver[] = CAM_DES_INIT_LINK_MODE_RECEIVER;
static struct camera_i2c_reg_array max9296_start_reg_array[] = CAM_DES_START;
static struct camera_i2c_reg_array max9296_stop_reg_array[] = CAM_DES_STOP;
static struct camera_i2c_reg_array max9296_reg_array_disable_reverse[] = CAM_DES_DISABLE_I2C_REVERSE;
ar0231_ext_isp_info 中定义的接口都是在这个里面是使用的
max9296使用的寄存器,直接在 max9296_lib.c 中使用
./src/max9296_lib.c:608: rc = pSensor->sensor->init_link(pCtxt, i);
./src/max9296_lib.c:864: rc = pSensor->sensor->detect(pCtxt, i);
./src/max9296_lib.c:1255: rc = pSensor->sensor->get_link_cfg(pCtxt, i, &pSensor->link_cfg);
./src/max9296_lib.c:1393: pCtxt->max9296_sensors[i].sensor->start_link(pCtxt, i);
./src/max9296_lib.c:1495: rc = pCtxt->max9296_sensors[i].sensor->stop_link(pCtxt, i);
./src/max9296_lib.c:1545: pCtxt->max9296_sensors[src_id].sensor->calculate_exposure)
./src/max9296_lib.c:1547: rc = pCtxt->max9296_sensors[src_id].sensor->calculate_exposure(pCtxt, src_id, exposure_info);
./src/max9296_lib.c:1569: pCtxt->max9296_sensors[src_id].sensor->apply_exposure)
./src/max9296_lib.c:1571: rc = pCtxt->max9296_sensors[src_id].sensor->apply_exposure(pCtxt, src_id, exposure_info);
./src/max9296_lib.c:1592: pCtxt->max9296_sensors[src_id].sensor->apply_hdr_exposure)
./src/max9296_lib.c:1594: rc = pCtxt->max9296_sensors[src_id].sensor->apply_hdr_exposure(pCtxt, src_id, hdr_exposure);
./src/max9296_lib.c:1616: pCtxt->max9296_sensors[src_id].sensor->apply_gamma)
./src/max9296_lib.c:1618: rc = pCtxt->max9296_sensors[src_id].sensor->apply_gamma(pCtxt, src_id, gamma);
//关于曝光的2个寄存器
#define AP0200_REFRESH_CMD 0x8606
#define AP0200_GET_STATE_CMD 0x8607
ap0200_refresh_cmd ap0200_apply_exposure 后需要刷新下
没找到这个寄存器,先暂时不要
AP0200_GET_STATE_CMD 设置刷新后用来获取状态的,等待
#define CAM_SENSOR_DEFAULT_ADDR 0xE0 //不带用
#define CAM_EXT_ISP_DEFAULT_ADDR 0xBA //带isp用
static int ar0231_ext_isp_detect(max9296_context_t* ctxt, uint32 link)
{
//上面会依次轮训远端地址是否有效
if (i == num_addr) //3个地址都没有找到
{SERR("xcz No Camera connected to Link %d of MAX9296 0x%x", link, pCtxt->slave_addr);
}
else if (pSensor->serializer_alias == pSensor->serializer_addr)
{SERR("xcz LINK %d already re-mapped", link);rc = 0;
}
else
{struct camera_i2c_reg_array remap_ser[] = {{0x0, pSensor->serializer_alias, _ar0231_ext_isp_delay_}};//link reset, remap cam, create broadcast addr,struct camera_i2c_reg_array remap_ser_2[] = {{0x0010, 0x31, MAX9295_LINK_RESET_DELAY },{0x0042, pSensor->sensor_alias, _ar0231_ext_isp_delay_},{0x0043, CAM_EXT_ISP_DEFAULT_ADDR, _ar0231_ext_isp_delay_},{0x0044, CAM_SER_BROADCAST_ADDR, _ar0231_ext_isp_delay_},{0x0045, pSensor->serializer_alias, _ar0231_ext_isp_delay_}};
//地址相关初始化
pSensor = &pCtxt->max9296_sensors[link];
static max9296_sensor_info_t max9296_sensors_init_table[] =
{
{
.state = SENSOR_STATE_INVALID,
.serializer_alias = MSM_DES_0_ALIAS_ADDR_CAM_SER_0,
.sensor_alias = MSM_DES_0_ALIAS_ADDR_CAM_SNSR_0,
},
{
.state = SENSOR_STATE_INVALID,
.serializer_alias = MSM_DES_0_ALIAS_ADDR_CAM_SER_1,
.sensor_alias = MSM_DES_0_ALIAS_ADDR_CAM_SNSR_1,
},
};
static int max9296_set_default(max9296_context_t * pCtxt)
{
pCtxt->max9296_config = default_config;
memcpy(&pCtxt->max9296_sensors, max9296_sensors_init_table, sizeof(pCtxt->max9296_sensors));
SERR("xcz enter max9296_set_default");
/*default to dev id 0*/
switch (pCtxt->subdev_id) //3个摄像头???
{
SERR("xcz enter max9296_set_default (%d)", pCtxt->subdev_id);
printf("xcz222 enter max9296_set_default (%d)", pCtxt->subdev_id);
case 1:
case 3:pCtxt->slave_addr = MSM_DES_1_SLAVEADDR; //0x94pCtxt->max9296_sensors[0].serializer_alias = MSM_DES_1_ALIAS_ADDR_CAM_SER_0;pCtxt->max9296_sensors[1].serializer_alias = MSM_DES_1_ALIAS_ADDR_CAM_SER_1;pCtxt->max9296_sensors[0].sensor_alias = MSM_DES_1_ALIAS_ADDR_CAM_SNSR_0;pCtxt->max9296_sensors[1].sensor_alias = MSM_DES_1_ALIAS_ADDR_CAM_SNSR_1;break;
default: //0 和 2pCtxt->slave_addr = MSM_DES_0_SLAVEADDR; //0x90break;
static int max9296_sensor_power_resume(void *ctxt)
{
int rc = 0;
#ifndef AIS_EARLYSERVICE
max9296_context_t *pCtxt = (max9296_context_t *)ctxt;
SERR("xcz enter max9296_sensor_power_resume");
if (pCtxt->state == MAX9296_STATE_SUSPEND){pCtxt->platform_fcn_tbl.execute_power_up(pCtxt->ctrl);pCtxt->state = MAX9296_STATE_INVALID;pCtxt->num_connected_sensors = 0;if (pCtxt->slave_addr == MSM_DES_0_SLAVEADDR){memcpy(&pCtxt->sensor_lib, &sensor_lib_ptr, sizeof(pCtxt->sensor_lib));memcpy(&pCtxt->max9296_sensors, max9296_sensors_init_table, sizeof(pCtxt->max9296_sensors));}else{memcpy(&pCtxt->sensor_lib, &sensor_lib_ptr, sizeof(pCtxt->sensor_lib));memcpy(&pCtxt->max9296_sensors, max9296_sensors_init_table, sizeof(pCtxt->max9296_sensors));pCtxt->slave_addr = MSM_DES_1_SLAVEADDR;pCtxt->max9296_sensors[0].serializer_alias = MSM_DES_1_ALIAS_ADDR_CAM_SER_0;pCtxt->max9296_sensors[1].serializer_alias = MSM_DES_1_ALIAS_ADDR_CAM_SER_1;pCtxt->max9296_sensors[0].sensor_alias = MSM_DES_1_ALIAS_ADDR_CAM_SNSR_0;pCtxt->max9296_sensors[1].sensor_alias = MSM_DES_1_ALIAS_ADDR_CAM_SNSR_1;}
#define MSM_DES_0_SLAVEADDR 0x90//0x2A
#define MSM_DES_1_SLAVEADDR 0x94
#define CAM_SER_BROADCAST_ADDR 0x8E
//Addresses after reprogramming the serializer and cameras attached to MAX9296 //这个什么???
#define MSM_DES_0_ALIAS_ADDR_CAM_SER_0 0x82 //第1个通道的
#define MSM_DES_0_ALIAS_ADDR_CAM_SER_1 0x84
#define MSM_DES_1_ALIAS_ADDR_CAM_SER_0 0x8A //第二个通道的
#define MSM_DES_1_ALIAS_ADDR_CAM_SER_1 0x8C
#define MSM_DES_0_ALIAS_ADDR_CAM_SNSR_0 0xE4 //第1个通道的
#define MSM_DES_0_ALIAS_ADDR_CAM_SNSR_1 0xE8
#define MSM_DES_1_ALIAS_ADDR_CAM_SNSR_0 0xEA //第二个通道的
#define MSM_DES_1_ALIAS_ADDR_CAM_SNSR_1 0xEC
//=========================================================================================== 强制
cam_ser_reg_setting.reg_array[0].reg_addr = MSM_SER_CHIP_ID_REG_ADDR; //查询远端的IDrc = sensor_fcn_tbl->i2c_slave_read(pCtxt->ctrl, supported_ser_addr[i], &cam_ser_reg_setting);//if (!rc)if (1){pSensor->serializer_addr = supported_ser_addr[i];break;}
//early_services分区不能push
failed to copy ‘./early_services/system/bin/ais_server’ to ‘./early_services/system/bin/ais_server’: couldn’t create file: Read-only file system
cat /proc/mounts
/dev/early_userspace /early_services ext4 ro,seclabel,relatime,block_validity,delalloc,barrier,user_xattr 0 0