版权声明: https://blog.csdn.net/hecong129/article/details/79756771
*总体介绍*
SENSOR 驱动是为了实现不同厂家的 SENSOR,按照自身能力及系统配置的要求输出合适的分辨率、帧率的数据供 ISP 处理,同时需要满足 3A 算法所需要实现的功能,比如调整曝
光时间、调整增益、Slow Shutter 等功能。
文件位置,SENSOR 驱动分四个部分*1. software/linux/kernel/drv/sensors/sensor
下的驱动主体 sensor.ko,该部分由驱动人员
维护更新,系统统一加载 sensor.ko,然后由应用传入 sensor 的驱动数据。
2. software/linux/kernel/drv/sensors/sensor/xxxx_ex
下的驱动外挂逻辑 sensor_ex.ko,该
部分可选,目前支持 5 个功能函数,有 sample 代码 sc1135_ex。
3. software/image/sensor_drv/drv/
下各 sensor 的驱动数据的描述。
4. software/image/sensor_drv/bin/
下各 sensor 的驱动数据发布 bin 及自动检测 sensor
的 bin 文件
增加自己sensor
在software/image/sensor_drv/mksensor.c 中加入 sensor 的数据结构文件
include “drv/SENSOR 名称_reg_tbl.c”
在 sensor 结构中加入
&SENSOR 名称_sensor
创建 drv/SENSOR 名称_reg_tbl.c。
├── bin
│ ├── ar0130_hw.bin
│ ├── ar0230_hw.bin
│ ├── ar0237_hw.bin
│ └── tw9912_hw.bin
├── build
│ ├── arm11-gcc-glibc-linux-GK710XS
│ │ ├── bin
│ │ │ └── sensordetect
│ │ ├── info
│ │ │ └── build-info.txt
│ │ └── obj
│ │ └── sensordetect.o
│ └── arm11-gcc-uClibc-linux-GK710XS
│ ├── bin
│ │ └── sensordetect
│ ├── info
│ │ └── build-info.txt
│ └── obj
│ └── sensordetect.o
├── drv
│ ├── ar0130_reg_tbl.c
│ ├── ar0230_reg_tbl.c
│ ├── sp2307_reg_tbl.c
│ └── tw9912_reg_tbl.c
├── Makefile
├── Makefile.rel
├── mksensor.c
├── mksensor.h
├── run.sh
└── sensordetect.c
#include "drv/nt99231_reg_tbl.c"
#include "drv/pseudo_sensor_reg_tbl.c"
#include "drv/nvp6134_reg_tbl.c"
GADI_VI_SensorDrvInfoT* sensor[] =
{
&imx122_sensor,
&imx291_sensor,
&imx238_sensor,
创建 drv/SENSOR 名称_reg_tbl.c。
GADI_VI_SensorDrvInfoT nvp6134_mach =
20 {
21 .magic_start = GADI_SENSOR_HW_INFO_MAGIC_START,
22 .version = GADI_SENSOR_HW_INFO_VERSION,
23 .length = sizeof(GADI_VI_SensorDrvInfoT),
24 .file_date = 0x20171123,
25 .HwInfo =
26 {
27 .name = "nvp6134",
28 .ctl_type = GADI_SENSOR_CTL_I2C,
29 .addr_len = sizeof(GADI_U16),
30 .data_len = sizeof(GADI_U8),
31 .reset_active_level = GADI_GPIO_LOW,
32 .hw_addr = (0x6C>>1),
33 .id_reg =
34 {
35 {GADI_VI_SENSOR_TABLE_FLAG_END,},
36 },
37 .reset_reg =
38 {
39 {GADI_VI_SENSOR_TABLE_FLAG_END,},
40 },
41 },
42 .debug_print = 0,
43 #ifdef PROG_MODE
44 .input_format = GADI_VI_INPUT_FORMAT_YUV_422_PROG,
45 .field_format = 0,
46 #endif
47 #ifdef INTLC_MODE
48 .input_format = GADI_VI_INPUT_FORMAT_YUV_422_INTLC,
49 .field_format = 2,
成员名称 | 描述 |
---|---|
magic_start | 检测驱动使用,固定填写 GADI_SENSOR_HW_INFO_MAGIC_START |
version | 检测驱动使用,固定填写 GADI_SENSOR_HW_INFO_VERSION |
length | 数据结构长度,固定填写 sizeof(GADI_VI_SensorDrvInfoT) |
file_date | 驱动数据文件生成日期,可自行修改,用于区分不同时期的版本 |
HwInfo | 该部分数据也用于自动检测 sensor 使用,参看 GADI_VI_SensorHWInfoT |
debug_print | 是否开启 debug 信息,非 0 为打开,release 时请关闭。 |
input_format | 输入格式:RGB_RAW一般422_INTLC656隔行输入422_PROGYUV656逐行输入 |
field_format | 暂时全部使用 1 |
adapter_id | 暂时全部使用 0 |
sensor_id | sensor id,需要和 image,adi 全部统一一致 |
source_type | 暂时全部使 GADI_VI_CMOS_CHANNEL_TYPE_AUTO |
Input 设备类型: | GADI_VI_DEV_TYPE_CMOS 用于一般的Sensor GADI_VI_DEV_TYPE_CCD暂时不用 GADI_VI_DEV_TYPE_DECODER 用于 656 输入的芯片 |
video_system | 视频数据格式 暂时全部使用 GADI_VIDEO_SYSTEM_AUTO |
vs_polarity | 帧/场同步信号格式 GADI_VI_RISING_EDGE 表示高电平有效 GADI_VI_FALLING_EDGE 表示低电平有效 |
hs_polarity | 行同步信号格式 |
GADI_VI_RISING_EDGE 表示高电平有效 | |
GADI_VI_FALLING_EDGE 表示低电平有效 | |
data_edge | Data 数据采集的 Pixel CLK 信号格式 |
GADI_VI_RISING_EDGE 表示上升沿有效 | |
GADI_VI_FALLING_EDGE 表示下降沿有效 | |
emb_sync_switch | 是否启用内同步信号开关,一般多用于 656 信号输入 |
GADI_VI_EMB_SYNC_OFF 表示关 | |
GADI_VI_EMB_SYNC_ON 表示开 | |
emb_sync_loc | emb_sync_switch 开时有效 |
GADI_VI_EMB_SYNC_LOWER_PEL | |
GADI_VI_EMB_SYNC_UPPER_PEL | |
GADI_VI_EMB_SYNC_BOTH_PELS | |
emb_sync_mode | emb_sync_switch 开时有效 |
GADI_VI_EMB_SYNC_ITU_656 | |
define GADI_VI_EMB_SYNC_ALL_ZEROS | |
max_width | 最大 pixel 宽度 |
max_height | 最大 pixel 高度 |
def_sh_time | 默认曝光时间,一般选用 GADI_VIDEO_FPS(50) |
fmt_num | 视频格式数量,fmt_table、video_info_table、video_mode_table |
填写数量必须与 fmt_num 对齐。 | |
auto_fmt | 外部设置 vi_mode 为 0 时选用的视频格式,一般为以下 8 种中的一种: |
GADI_VIDEO_MODE(1920, 1080, 30, 1) | |
GADI_VIDEO_MODE(1920, 1080, 25, 1) | |
GADI_VIDEO_MODE(1280, 960, 30, 1) | |
GADI_VIDEO_MODE(1280, 960, 25, 1) | |
GADI_VIDEO_MODE(1280, 720, 60, 1) | |
GADI_VIDEO_MODE(1280, 720, 50, 1) | |
GADI_VIDEO_MODE(1280, 720, 30, 1) | |
GADI_VIDEO_MODE(1280, 720, 25, 1) | |
参数 1:宽度 | |
参数 2:高度 | |
参数 3:fps | |
参数 4:1:逐行,0:隔行 |