SA6155P max9288 camera 笔记-2

news/2024/11/23 23:14:59/

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


http://www.ppmy.cn/news/159077.html

相关文章

Camera AF和FF

Camera按对焦功能可以分为FF(Fixed Focus)和AF(Auto Focus),即固定对焦和自动对焦。固定对焦顾名思义就是焦距是固定的&#xff0c;而自动对焦可以通过移动镜头位置来改变焦距从而实现自动对焦。以前摄像的功能机大多是固定对焦&#xff0c;现在的手机都带有自动对焦功能。 FF…

数码相机购买指南

数码相机购买指南 2005 年 04 月 27 日 16:29 尽管许多人都有数码相机&#xff0c;但更多的人却不知道如何挑选数码相机。这并不奇怪&#xff0c;因为“像素”和“数码变焦”这类词汇已经让数码相机变得和个人电脑一样让人无所适从。 本文是购买数码相机的年度指南。我的助理凯…

5d4的白平衡模式_佳能5D4怎样调整白平衡?

佳能5D4是一款全新全画幅单反相机&#xff0c;支持自动(氛围优先)&#xff0c;自动(白色优先)&#xff0c;预设(日光、阴影、阴天、钨丝灯、白色荧光灯、闪光灯)&#xff0c;用户自定义&#xff0c;色温(约2500-10000K)&#xff0c;具备白平衡校正和白平衡包围曝光&#xff0c;…

佳能EOS R3 和索尼Alpha 9 II 参数对比

能EOS R3双手柄设计和巨大的电池&#xff0c;它的块头当然很大&#xff08;请注意上面的图像比较不是按实际比例排放的&#xff09;&#xff0c;也明显更重&#xff0c;1015 克的重量可以说是比 Alpha 9 II 的 678 克重接近一半&#xff0c;不过如果你在 Alpha 9 II 上安装电池…

佳能数码相机ActiveX控件 CanonOcx V1.0.0

CanonOcx 是一款专门用于控制佳能数码相机在PC端操作拍照的ActiveX控件&#xff0c;通过CanonOcx封装好的接口函数可简单快速进行佳能数码相机软件的开发,提供丰富的相机参数设置功能。 最新更新: CanonOcx V1.0.0 CanonOcx控件发布。 支持数码相机: 佳能PowerShot系列数码相机…

佳能A590 IS全手动运用

一张好的PP构成的因素包括&#xff1a;感光度、正确的白平衡、正确的测光模式、适合的快门速度、适合的光圈、正确的对焦、准确的曝光。 在全手动模式下的具体步骤 1、在拍照模式下将机顶的模式拨盘拨到M档。 2、设置正确的白平衡&#xff0c;选择对应的白平衡模式。最好…

vulhub打靶第一周

title: vulhub打靶第一周 description: vulhub打靶第一周 难度&#xff1a;middle date: 2023-06-01 categories: [渗透,靶机] 图片链接有问题访问&#xff1a;https://qing3feng.github.io/2023/06/01/%E6%89%93%E9%9D%B6%E7%AC%AC%E4%B8%80%E5%91%A8 vulhub打靶第一周 刷完…

适合程序员的耳机_程序员编程用什么耳机?

很多人基本手头上拿着什么耳机便用什么&#xff0c;部分人会特意选用专业耳机&#xff0c;品牌多为索尼、森海塞尔和苹果。如果是为了隔音&#xff0c;比如在没有隔间的环境&#xff0c;有些人会选择边听音乐边敲代码&#xff0c;也有些人会选择用耳塞或耳罩&#xff0c;午休时…