1. 程式人生 > >高通camera bring up軟體流程

高通camera bring up軟體流程

高通camera bring up分為兩種型別:YUV和bayer

bring up yuv sensor
1、kernel空間
1) vim kernel/driver/media/platform/msm/camera_v2/sensor
新增sensor驅動檔案-可參考其他
修改Makefile
2) kernel/arch/arm/configs
新增CONFIG_<sensor>定義
3) kernel/driver/media/platform/msm/camera_v2/kconfig
新增選項
4) 裝置樹檔案kernel/arch/arm/boot/dts/qcom/<target>_camera*.dtsi
新增新的條目

gpio set
clk set
power set
i2c slave
2、使用者空間
1) mm-camera2/media-controller/modules/sensors/sensor_libs/<snesor>
新增lib檔案
2) vendor/qcom/proprietary/common/config/device-vendor.mk
加入新的條目
3) 
a、sensor init parameter
2D/3D、前/後置、安裝角度
b、sensor output
bayer/yuv、mipi/並口、位數
c、output size
static struct sensor_lib_out_info_t sensor_out_info[] = {

{
/* full size @ 24 fps*/
.x_output = 4208,
.y_output = 3120,
.line_length_pclk = 4572,
.frame_length_lines = 3142,
.vt_pixel_clk = 360000000,
12/26例如
.op_pixel_clk = 360000000,
.binning_factor = 1,
.max_fps = 24.01,
.min_fps = 7.5,
.mode = SENSOR_DEFAULT_MODE,
},
x_output –
sensor 輸出有效寬度
y_output – sensor 輸出有效高度
line_length_pclk –包含 blanking 的寬度值

frame_length_lines –包含 blanking 的高度值
vt_pixel_clk(video timing clk value) –該虛擬時鐘值用於曝光時間計算,用於 AEC 演算法
的 banding artifacts 糾正,vt_pixel_clk 的計算如下:
vt_pixel_clk = line_length_pclk * frame_length_lines * frame rate
op_pixel_clk – VFE 時鐘,表示每秒 VFE 處理的資料量(in pixel).
op_pixel_clk = (sensor 輸出實際位元率)/bits-per-pixel
比如,如果 MIPI DDR
時鐘值
(sensor MIPI 的時鐘 lane 頻率) 為 300Mhz, 同時
sensor 使用 4 個 lane (一組差分訊號屬於一個lane)傳輸資料, 每一個 lane 的資料率是 300*2 = 600Mhz. 因此, 總資料
率為 600*4= 2400Mhz. 對於 10bit 的 bayer sensor, op_pixel_clk 值可設定為 2400/10 =
240Mhz.這些值可以從 sensor 的暫存器設定中計算出來。
d、chromatix
e、register addr
f、mipi receiver
g、regiseter setting