SA6155P max9288 camera 笔记-2

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 link
        struct 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; //0x94
    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: //0 和 2
    pCtxt->slave_addr = MSM_DES_0_SLAVEADDR;  //0x90
    break;

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;  //查询远端的ID
    rc = 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

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
sa8295p 源码分析中的第二部分是关于镜像分析的。镜像是计算机系统中存储程序和数据的一种方式。镜像分析就是对程序的镜像进行深入的研究和分析。 首先,镜像分析可以帮助我们了解程序的内部结构和运行机制。通过反汇编器和调试器等工具,我们可以查看程序的汇编指令、变量和函数等信息,了解程序的执行流程和数据处理方式。这有助于我们理解程序的具体实现细节,为进一步的分析奠定基础。 其次,镜像分析可以帮助我们发现程序的潜在安全问题。通过分析程序的镜像,我们可以查找其中的漏洞、弱点和不安全的代码片段。例如,我们可以检查是否存在缓冲区溢出、访问控制错误或者代码注入等安全隐患。通过找出这些问题,我们可以及时修复并提高程序的安全性。 此外,镜像分析还可以帮助我们进行逆向工程。通过分析程序的镜像,我们可以还原出源代码的大致结构和功能,进一步了解程序的运行逻辑和算法。这对于研究和分析复杂的程序、解密加密算法或者进行软件逆向等方面非常有帮助。 总之,镜像分析是源码分析中重要的一环,它能帮助我们理解程序的内部结构和运行机制,发现潜在的安全问题,以及进行逆向工程。通过深入研究程序的镜像,我们可以全面了解并优化程序的功能和性能,提高软件的质量和安全性。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值