MIPI_Sensor配置参考


1. 平台相关sensor驱动说明


1.1 平台相关相关Driver编译

sensor驱动源码所在位置: aosp/vendor/sigmastar/alkaid/sdk/driver/SensorDriver/drv/src

编译执行如下命令:

1. cd aosp
2. source build/envsetup.sh
3. lunch sstar_pioneer5_xxx-userdebug
4. ./sstar_make.sh -s arm
5. cd vendor/sigmastar/alkaid/sdk/driver/SensorDriver
6. make clean; make

编译后在aosp/vendor/sigmastar/alkaid/sdk/driver/SensorDriver/drv/src目录下有相应的ko生成,然后需要把对应型号的ko拷贝到aosp/device/sigmastar/pioneer5/kernel下面。

例如:drv_ms_cus_gc2053_MIPI.c编译生成的gc2053_MIPI.ko

1.2 平台相关相关Driver加载

配置文件所在路径:aosp/device/sigmastar/pioneer5/sdk/modparam.json

以gc2053在linux上的加载参数insmod gc2053_MIPI.ko chmap=1 lane_num=2 为例,在modparam.json中找到"E_MI_MODULE_ID_SNR"节点,参考修改如下:

参数 说明
sensor_num 表示sensor的个数
sensor_name 加载sensor驱动的名称
chmap sensor pad参数,按2^(sensor pad)来填写
mclk clk时钟参数
lane_num lane数

注:若不知道当前sensor_name的全称是什么,可以先尝试insmod一次,SensorDriver会将自己的name打印出来,例如:

上述信息都修改完成后,执行./sstar_make.sh -a 重新打包,更新vendor.img/vendor_boot.img,测试用Android Camera2 apk测试即可。


2. 平台相关Sensor DTS配置


mipi sensor一般需要配置的引脚为I2C引脚、MIPI信号引脚、MCLK、RST、PDN等pin脚,这部分需要根据相应的原理图并参考hw_checklist来选择相应的引脚mode。

以gc2053 2lane mipi sensor为例,选择相应的2lane接口,下面以sensor pad0的接口为例:

2.1 sensorif节点配置

I2C配置

采用i2c0跟SOC的接线如下,在padmux中可以添加相应的配置:

以上可以看出,该sensor使用的是I2C0,具体使用的pin脚是:PAD_I2C0_SCL/PAD_I2C0_SDA,再通过HW_Checklist查看,该pin做为I2C0的时候,是使用的I2C0_MODE1

则需要在对应的DTS中配置,具体如下:

  • Padmux中配置该pin为I2C0_MODE1

  • 在sensorif节点中配置对应的sensor grp的i2c bus,这里是I2C0,所以直接写0即可

2.2 vif节点配置

MIPI PIN MODE设置

gc2053为2 lane的mipi输出信号,sr0_mipi_mode 可以选择2的模式:

以上可以看出,该sensor使用2lane 的mipi来传输,根据原理图可以看出对应使用的pin为:

MIPI_MODE:PAD_OUTN_RX0_CH0 ~ PAD_OUTN_RX0_CH2 对应sr0_mipi_mode=2
MCLK: PAD_SR_MCLK0 对应mclk_mode=1 mclk_id=00
PDN:  PAD_SR_PDN0  对应pdn_mode=1  pdn_id=00
RST:  PAD_SR_RST0  对应rst_mode=1  rst_id=00

则在dts上的的vif节点配置如下:

2.3 csi节点配置

MIPI LANE Select配置

csi_sr0_lane_num :选择mipi的data lane数

csi_sr0_lane_select :对应MIPI CSI的< CLK Lane0 Lane1 Lane2 Lane3>

csi_sr0_lane_pn_swap :对应原始PIN的 PAD_OUT<CH0 CH1 CH2 CH3 CH4>,跟csi_sr0_lane_select无关

GC2053 Sensor的原理接线图如下,配置示例:

如上图clk 在CH2位置:

1、接线是2lane :所以csi_sr0_lane_num=<2>

2、D0在CH0位置,CLK在CH2,D1在CH1,对应上< CLK Lane0 Lane1 Lane2 Lane3>,所以csi_sr0_lane_select = <2 0 1>

3、原理图P/N是线序相同无交换,所以csi_sr0_lane_pn_swap = <0 0 0 >


3. Android camera_hal配置修改:camera_configuration.xml


Camera HAL是通过camera_configuration.xml来配置的,可以在里面添加删减支持的Camera信息,Camera HAL在初始化时会来读取这个配置文件,然后根据配置的Camera信息来配置对应的Pipeline。

配置文件所在目录:aosp/device/sigmastar/pioneer5/pioneer5_xxx/camera_configuration.xml

配置文件格式大致如下,根节点为CameraSettings,CameraInfo节点为设备上使用的Camera,Common节点为一些额外的功能项配置(目前是IQServer配置这一项),Settings name="xxx" 节点为添加的Camera的CameraStaticMetadata信息:

<CameraSettings>
    <CameraInfo>
        ...
    </CameraInfo>
    <Common>
        ...
    </Common>
    <Settings name = "xxx">
        <CameraStaticMetadata>
            ...
        </CameraStaticMetadata>
    </Settings>
    <Settings name = "xxx">
        <CameraStaticMetadata>
            ...
        </CameraStaticMetadata>
    </Settings>
    ...
</CameraSettings>

3.1. CameraInfo节点

CameraInfo表示当前设备接入的Camera信息。实际要接入多少个Camera,就在这里添加。

参数 描述
name Camera名称,需要与下面setting节点的name匹配,不然会找不到CameraStaticMetadata信息。
cameraId 即index,从0开始依次加1递增。目前默认支持两个sensor,0表示Back Camera,1表示Front Camera。
chmap 根据实际接在哪个sensor填写,计算方法为chmap = 2^(sensor pad),比如接在sensor pad0,那么chmap是2的0次方1;接在sensor pad1,那么chmap是2的1次方2,以此类推。
sensorType camera类型
  • SENSOR_TYPE_SOC(自带ISP的模组,输出YUV数据,不需要经过主芯片的ISP,走MI流程)
  • SENSOR_TYPE_RAW(输出RAW数据,需要经过主芯片的ISP,走MI流程)
  • SENSOR_TYPE_USB(usbcam,不需要走主芯片的ISP,走V4L2,不走MI流程)
  • frame.initialSkip 由于AE收敛过程导致的颜色异常,可以通过这个值来Skip掉前面未收敛前的帧数。

    3.2. Common节点

    目前只有一项配置,IQServer.open,表示是否打开IQServer。

    3.3. Settings节点

    包含camera name和CameraStaticMetadata。

    CameraStaticMetadata是描述Camera的静态能力属性,hal初始化时,上层会通过get_camera_info来获取这些能力属性值。

    3.4. 新增camera的配置

    以新增gc2053为例:

    1. 新增添加的camera的camerainfo节点信息

    2. 新增settings节点配置,添加CameraStaricMetadata信息


    4. IQ调试


    iq.bin所在路径:aosp/device/sigmastar/pioneer5/sdk

    代码路径:aosp/vendor/sigmastar/hardware/camera/sstar_iqserver

    可执行文件在板端的位置:/vendor/bin/sstar_iqserver

    使用方式:

    1. 板子联网,确认和iqtool所在电脑互通;

    2. 打开iqserver;

      cd /vendor/bin
      ./sstar_iqserver &
      
    3. iq tool连接。