国科gk7102s-sensor框架驱动笔记

版权声明: 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:隔行

猜你喜欢

转载自blog.csdn.net/hecong129/article/details/79756771
今日推荐