原文

https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/06_02_00_21/exports/docs/psdk_rtos_auto/docs/user_guide/developer_notes.html

正文

Imaging library是与 PSDKRA 打包在一起的示例算法和图像传感器驱动程序的集合,用于启用基于相机的应用程序。 它包括传感器驱动程序框架,这是一个模块化和可扩展的框架

  • 轻松添加新的传感器驱动程序。
  • 为应用程序和算法提供一致的接口。

该框架的目标是向应用程序添加零代码修改的新传感器。 任何使用图像传感器的应用程序都预计与底层硬件无关。 应用程序应使用 RPC 命令与驱动程序框架进行通信。 在运行时查询支持的传感器的详细信息和传感器功能。

与图像传感器(例如 AutoExposure)通信的类似算法需要在运行时发送 RPC 命令,而无需知道哪个传感器在运行。 驱动程序框架负责将相机 ID 映射到关联的物理图像传感器。

这种机制允许算法和应用程序代码在新传感器添加到框架时保持不变。

关键数据结构

1 、 IssSensor_CreateParams

为图像传感器创建时间参数,如宽度、高度、数据格式、I2C 地址。 更多详情请参考imaging/sensor_drv/include/iss_sensor.h

2、IssSensorFxns

传感器驱动程序要实现的所有例程的回调集。 更多详情请参考imaging/sensor_drv/include/iss_sensor.h

3、 IssSensorIntfParams

接口参数例如 CSI-2数据通道的数量、位置、极性等。更多细节请参考imaging/sensor_drv/include/iss_sensor.h
4、 I2c参数

包含寄存器地址、值和延迟(毫秒)的结构。 更多详情请参考imaging/sensor_drv/include/iss_sensor.h
5、 传感器配置

包含指向传感器和 SerDes 配置结构的指针的结构。

Serializer 和 Deserializer 配置脚本中的最后一个条目必须是 {0xFFFF, 0x00, 0x0}

6、 IssSensors_Handle

处理图像传感器驱动程序,包括有关传感器的所有信息有关更多详细信息,请参阅imaging/sensor_drv/include/iss_sensor.h

接口

RPC 命令

应用程序使用 RPC(远程过程调用)命令与传感器驱动程序通信 下面列出了当前定义的命令。

命令 说明
IM_SENSOR_CMD_ENUMERATE 由应用程序调用以获取支持的所有传感器的名称列表。
IM_SENSOR_CMD_QUERY 由应用程序调用以按名称查询图像传感器的功能。
IM_SENSOR_CMD_PWRON 由应用程序调用以打开传感器电源。 Sensor f/w 调用所选传感器的 powerOn 回调。此功能的具体实现留给特定的传感器驱动程序。
IM_SENSOR_CMD_PWROFF 由应用程序调用以关闭传感器。 Sensor f/w 调用所选传感器的 powerOff 回调。此功能的具体实现留给特定的传感器驱动程序。
IM_SENSOR_CMD_STREAM_ON 由应用程序调用以开始流式传输。传感器 f/w 调用所选传感器的 streamOn 回调。此功能的具体实现留给特定的传感器驱动程序。
IM_SENSOR_CMD_STREAM_OFF 由应用程序调用以停止流式传输。传感器 f/w 调用所选传感器的 streamOff 回调。此功能的具体实现留给特定的传感器驱动程序。
IM_SENSOR_CMD_CTL 由应用程序调用以发送运行时控制命令。下一节描述当前支持的运行时控件。

控制命令

IM_SENSOR_CMD_STREAM_CTL 命令可以有一个控制命令的参数。下面列出了当前定义的控制命令。

命令 说明
IMAGE_SENSOR_CTRLCMD_GETEXPPRG 通常由 AutoExposure 算法调用以了解传感器的曝光约束,然后可用于初始化 AutoExposure 算法。
IMAGE_SENSOR_CTRLCMD_SETEXPGAIN 通常由 AutoExposure 算法调用以设置曝光时间和模拟/数字增益。传感器 f/w 调用所选传感器的 setAeParams 回调。此功能的具体实现留给特定的传感器驱动程序。
IMAGE_SENSOR_CTRLCMD_GETEXPGAIN 保留以备将来使用。
IMAGE_SENSOR_CTRLCMD_SETWBGAIN 保留以备将来使用。
IMAGE_SENSOR_CTRLCMD_GETWBGAIN 保留以备将来使用。
IMAGE_SENSOR_CTRLCMD_DEBUG 保留以备将来使用。

创建新传感器驱动程序的步骤

1 创建文件夹

在 image/sensor_drv/src/ 中创建一个新文件夹,例如 <新传感器123>

2 创建传感器驱动文件

创建一个新的源文件,实现关键数据结构中提到的所有结构和回调。

createParams

参数 用法
姓名 选择任何不超过 32 个字符的唯一字符串
i2cInstId 指定连接传感器的 I2C 通道。对于 Jacinto 7 EVM,默认值为 0x6
i2cAddrSensor 传感器地址别名数组。最多支持 8 个实例。必须匹配 UB960 配置中指定的别名值。注意如果传感器直接连接,即没有 SerDes,请在此处提供传感器的物理 I2C 地址(7 位)
i2cAddrSer 序列化器地址别名数组。最多支持 8 个实例。必须匹配 UB960 配置中指定的别名值。
宽度 传感器输出中每行的像素数,不包括 H 消隐。
高度 传感器输出中每帧的行数,不包括 V 消隐或元数据。
num_exposures 每帧曝光通道数。
line_interleaved 保留以备将来使用。
像素容器 容器元素的宽度。
女士 有效数据的 MSB。必须设置为 bpp -1。例如。对于 12b RAW,MSB = 11。
功能 指定传感器功能的二进制掩码。
fps 每秒帧率。目前没有使用。
numDataLanes CSI-2 数据通道的数量。必须匹配传感器和解串器设置。
数据车道地图 传感器 CSI2 通道到 CSI2 Rx 的映射。必须匹配传感器和解串器设置。
dataLanesPolarity 保留以备将来使用。
csi_ddr_clock 保留以备将来使用。
num_channels 支持的相机实例数。有效值:1-8。
dccId 唯一的数字标识符。用于 ISP 调谐。

IssSensorFxns

API 名称 说明
探针 检测传感器是否可访问,通常通过读取传感器芯片 ID。
配置 配置串行器和传感器。参数 sensor_features_requested 可用于根据应用程序请求加载不同的配置。例如 30fps 模式与 60fps 模式。
在传感器和解串器上启用流。
流关闭 禁用传感器和解串器上的流。
开机 硬件依赖。如果需要,拉上/拉下任何 GPIO。配置解串器,以便可以通过 FPD Link 反向通道访问传感器。
断电 硬件依赖。如果需要,拉上/拉下任何 GPIO。
getExpParams 保留以备将来使用。必须作为返回 0 的虚拟函数实现。
设置AeParams 将 AE 计算的曝光时间和模拟增益转换为传感器特定设置。用新值更新传感器寄存器。
getDccParams 保留以备将来使用。必须作为返回 0 的虚拟函数实现。
initAewbConfig 保留以备将来使用。必须实现为返回 void 的虚拟函数。
getIspConfig 保留以备将来使用。必须实现为返回 void 的虚拟函数。
readWriteReg 保留以备将来使用。必须作为返回 0 的虚拟函数实现。
getExpPrg 由 AE 算法调用以获取传感器曝光约束。
去初始化 保留以备将来使用。必须实现为返回 void 的虚拟函数。

3. Update makefile

修改sensor_drv/src/concerto.mak,添加新添加的sensor文件。 例如

 CSOURCES += newsensor123/iss_sensor_newsensor123.c

4. 用框架注册新的传感器

修改sensor_drv/src/iss_sensors.c文件中的IssSensor_Init函数,调用新传感器的init函数。 例如

 状态 |= IssSensor_NewSensor123_Init();

5. Build and Run

  • 做一个干净的镜像构建,然后是 sdk 构建。
  • 执行时,应在枚举传感器列表中填充新传感器。
  • 选择传感器并运行。 如果传感器和 SerDes 设置正确,则应在连接的显示器上显示预览。
  • 在此阶段,传感器驱动程序正常运行。 但是,图像质量可能并不完美。
  • 有关使用 TI ISP 获得良好图像质量的步骤,请参阅 DCC 调整工具文档。

【TDA4系列】向 PSDKRA 添加新的图像传感器相关推荐

  1. Sharepoint学习笔记—Ribbon系列-- 2. 在Ribbon中添加新Tab

    有了上面的基础,我们来看看如何向Sharepoint网站的Ribbon中添加我们定义的Tab. 直接进入操作步骤 一.创建 SharePoint 项目 要添加新选项卡,应首先创建一个空白 ShareP ...

  2. SAP ABAP实用技巧介绍系列之利用RTTC给DDIC structure动态添加新的field

    Created by Jerry Wang, last modified on Dec 29, 2014 例如需要给DDIC structure COMM_PRODUCT在runtime时添加新的fi ...

  3. Sharepoint学习笔记—Ribbon系列-- 5. 在Ribbon中添加新控件(针对用户自定义Tab)

    前面我们实现了向用户自定义的Tab中添加新的Group,并向其中创建了两个Button按钮.这里我们看看如何向这个已经创建好的Group中再另外添加新的Button控件(当然,你可以添加其它控件,实现 ...

  4. 小京鱼APP - 添加新设备日记 - 格力空调静享WIFI系列 - “没有找到待添加的设备”

    实战环境 小京鱼 v6.4.3 格力(GREE)静享 2匹 变频冷暖 智能 静音 立柜式圆柱空调柜机KFR-50LW/(50555)FNhAd-A3(WIFI) 普通家用WIFI环境(2.4GHz) ...

  5. 深度学习目标检测指南:如何过滤不感兴趣的分类及添加新分类?

    编译 | 庞佳 责编 | Leo 出品 | AI 科技大本营(公众号ID:rgznai100) AI 科技大本营按:本文编译自 Adrian Rosebrock 发表在 PyImageSearch 上 ...

  6. 刀片服务器 如何增加硬盘,IBM为刀片服务器添加新SAS及固态硬盘

    在调整过X64产品线后,我们又收到IBM将为服务器产品线添加新SAS硬盘及固态硬盘的消息. 上周IBM刚发布了一款小尺寸的SAS硬盘,它只有2.5英寸,而之前的硬盘基本上都是3.5英寸的SCSI硬盘. ...

  7. 苹果iOS 16将改进通知 添加新的健康追踪功能

    4月11日消息,据国外媒体报道,代号为"Sydney"的iOS16将在6月的WWDC上推出预览版,分析师称,总体来说不会有太大的设计改变,主要将对通知和新健康追踪功能进行改进. 据 ...

  8. 在Blazor中构建数据库应用程序——第6部分——向天气应用程序添加新记录类型及其UI

    目录 介绍 示例项目和代码 过程概述 数据库 CEC天气库 为记录添加模型类 添加一些实用程序类 更新WeatherForecastDbContext 添加数据和控制器服务 表单 WeatherSta ...

  9. Android内核开发:在源码树中添加新的app应用

    本文是<Android内核开发>系列的第十二篇文章,上一篇文章介绍了如何从源码中删除出厂的app应用,本文则在此基础上,详细介绍一下如何在Android内核源码树中添加一个新的app应用. ...

  10. anki模板_【授权转载】【Anki高级操作技巧】(19)-如何在模板上添加新字段

    如何在模版上添加新字段? 有些时候,我们需要为一些需要发音的是卡片添加音频,但是会碰到一个问题就是现有的字段已经填满了,没有字段再放置发音的字段,所以今天我们解决的问题就是如何为模版添加新的字段.第一 ...

最新文章

  1. 李德毅院士:新一代人工智能十问
  2. Google推出的新服务:Docs Spreadsheets
  3. 兼容IE和FF的js脚本做法(比较常用)[问题点数:20分]
  4. pyinstaller打包流程
  5. python在cmd界面输入命令_python如何分别向两个cmd窗口输入指令?
  6. [NFrog]工具(NHibernate)终于成形了
  7. 重新leetcode第1天——二叉树遍历算法讲解合集
  8. 大教堂与集市(The Cathedral and the Bazaar)读书笔记
  9. 设备管理系统未来发展的四大趋势
  10. 用友NCCloud2021.11 专项漏洞补丁列表
  11. 什么是硬件加速引擎?
  12. iOS性能优化-列表卡顿
  13. CMAQ-5.2安装
  14. Android实现简单账号密码登录
  15. Javascript数组部分
  16. 计算器ajax实现代码,jQuery实现计算器功能
  17. favicon.ico介绍,网页图标的制作动态网页图标
  18. python2.7安装pytorch_Pytorch如何安装,Linux安装Pytorch,OSX安装Pytorch教程
  19. Java给字符串数组动态赋值
  20. Qt界面编程-Qt简介

热门文章

  1. 【ArcGIS|空间分析】数据交互(Google Earth与ArcGIS,ENVI与ArcGIS)
  2. SSH项目搭建-01-使用idea创建Maven工程
  3. Flutter之ParentDataWidget和RenderObjectWidget详解
  4. Flink 1.10 和 Hive 3.0 性能对比(附 Demo 演示 PPT)
  5. Flink on Zeppelin (1) - 入门篇
  6. 如何分析及处理 Flink 反压?
  7. android AChartEnginee讲解之自定义图表类
  8. Python数据库操作——连接MySQL
  9. ai如何置入_AI中如何导入图形图像?
  10. file 关闭_不会吧,还有人在 finally 里关闭资源?