./build.sh then  ./envset.sh

参考资料------------------------------------------------------------------

docs--common-camera-isp2x--《Rockchip_Driver_Guide_VI_CN_v1.0.8》

《imx214datasheet》《imx214register list》培训视频--4,5,6节+文档配套视频《Rockchip_Driver_Guide_VI_CN_v1.0.8》    《linux设备驱动开发详解》

Owl开发板wiki:https://gitee.com/owlvisiontech/owlvtech-patch-rv1126/wikis/%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/%E5%AA%92%E4%BD%93%E7%9B%B8%E5%85%B3%E5%BC%80%E5%8F%91/Camera%E6%95%B0%E6%8D%AE%E7%9A%84%E8%8E%B7%E5%8F%96

Caution!!!-----------------------------------------------

1:i2c通信不成功check不到id,首先为了方便调试先将驱动里的poweroff关闭,再i2cdetect一下,正常来说只要设备上电就会显示出i2c设备,如果驱动正常加载,则相应位为UU,表示该地址被驱动占用,若仍然不对则检查硬件,广角镜头由于是由排线连接可能会导致线路断开,可以使用示波器测一下sda和scl,i2c协议中,若处于空闲状态,sda和scl均为高电平以实现线与,可以以此判断;若仍然通信不成功,则检查sensor上电,可以查看原理图,三路上电由一个pwdn脚控制同时上电,可以直接查看电源芯片的ce脚,测试是否能控制pwdn脚;

2:图像抓取错误,首先是空数据文件,第一次设置为1920*1080导致抓取不到数据,应该是设置问题,后面更改为4000*3000后抓取到数据但显示不正确,为了确定是否为senor抓取的数据可以先用手挡住再用灯光照射进行对比,若有亮度的变化则表示数据可能为sensor的输出,可能只是数据的输入输出格式不对,因为v4l2的不同节点输出格式不同,可以查看手册多试几次,这里可以使用hexdump工具直接查看16进制文件,如果是raw数据,由于是16位表示10位或12位,高位补0,则最高位肯定为0,以此判断;

3注意一这个的大小

V4l2--------------------------------------------------------------------

1:video for linux2:内核提供给应用程序访问音视频驱动的统一接口;

2:V4L2支持两种方式来采集图像:内存映射方式(mmap)和直接读取方式(read)。前者用于连续视频数据的采集,后者用于静态图片的数据采集;

3:包含了处理视频信息的一系列接口,视频采集,视频输出,视频覆盖,编解码 ;

4:V4L2在include/linux/videodev.h文件中定义了一些重要的数据结构,在采集图像的过程中,就是通过对这些数据的操作来获得最终的图像数据;

5:应用程序通过V4L2接口采集视频数据分为五个步骤:

  首先,打开视频设备文件,进行视频采集的参数初始化,通过V4L2接口设置视频图像的采集窗口、采集的点阵大小和格式;

  其次,申请若干视频采集的帧缓冲区,并将这些帧缓冲区从内核空间映射到用户空间,便于应用程序读取/处理视频数据;

  第三,将申请到的帧缓冲区在视频采集输入队列排队,并启动视频采集;

  第四,驱动开始视频数据的采集,应用程序从视频采集输出队列取出帧缓冲区,处理完后,将帧缓冲区重新放入视频采集输入队列,循环往复采集连续的视频数据;

  第五,停止视频采集。

6:V4L2采集视频操作基本按照打开视频设备、设置视频格式、启动视频采集,循环处理视频数据、停止视频采集、关闭视频设备,具体操作通过ioctl等函数来实现;

7:内核中没有printf,只有printk,printf运行在用户态,printk运行在内核态;

ADD A new sensor

知识点------------------------------------------------------------

1:fps--frame per second

2:VCM--voice coil motor--音圈电机

3:avdd--模拟用电 dvdd--数字电压 iovdd--芯片引脚电压

控制部分--RST  PWDN

4:csi(camera serial interface)

5:主要实现摄像头的上电、时钟控制(MCLK)、设备初始化功能。上电分为DOVDD、DVDD、AVDD、reset、PWDN几个部分。需要按照设备要求顺序操作,一般时钟控制顺序也包含在内,设备初始化过程是将sensor设备的所有寄存器全部初始化一遍,采用IIC方式将初始化寄存器地址和值全部发送到sensor端。完成后此时摄像头模组才能正常工作,并将图像通过MIPI线路传送到CPU端。

驱动实现步骤--------------------------------------------------------

1:主要需要用到四个文件,依次进行改动

Kconfig 加一个default y!!! 表示内核编译该驱动

Makefile添加相关项

2:DTS

1:7位IIc slave地址 需要右移一位,因为最后一位是读和写,为0x10;

2:dts相关语法--->https://kdocs.cn/l/cgnuyAVEh7ZR

3:使用通路sensor->cif->isp->ispp

4:添加imx214节点

3:imx214.c

改动不多,具体可以参考

->Rockchip_Developer_Guide_Linux4.4_Camera_CN

->Rockchip_Driver_Guide_VI_CN

 调试指令-----------------------------------------------------------

1: mount -t ext4 /dev/mmcblk0p4 /userdata

media-ctl -p -d /dev/media0

2:若要查看16位地址,先i2cset设置16位地址,在i2cget;例 i2cset -f -y 1 0x10  0x16 0x17

i2cget 1 0x10

3:dmesg 打印内核信息

4:

可知entity-name:m01_f_imx214 1-0010

V4l2的子设备

对应节点/dev/v4l-subdev3

仅一个输出节点 source 记为pad0

输出格式为SRGGB10_1X10/1920x1080@1/10

Source节点连接到rockchip-mipi-dphy-rx

抓CIF的RAW图

先 mount -t ext4 /dev/mmcblk0p4 /userdata ----------------------mkdir /userdata/wzw

check一下  media-ctl -p -d /dev/media0(看一下是否有imx214的entity)

抓一下节点 grep '' /sys/class/video4linux/video*/name(这里选取stream_cif_mipi_id0的videoXX)

Debug-------  dmesg -c       echo 3>/sys/class/video4linux/video2/dev_debug

media-ctl  -l '"rkisp-isp-subdev":2->"rkisp_selfpath":0[0]' -d /dev/media2

media-ctl  -l '"rkisp-isp-subdev":2->"rkisp_mainpath":0[1]' -d /dev/media1

最后

echo 0 > /sys/devices/platform/rkcif_mipi_lvds/compact_test

v4l2-ctl -d /dev/video25 --set-fmt-video=width=4000,height=3000,pixelformat=BG10\

--stream-mmap=1 --stream-skip=1 --stream-to=/userdata/wzw.out \

--stream-count=1 --stream-poll

ispserver --no-sync-db &   先开启ispserver!!!

v4l2-ctl -d /dev/video --set-fmt-video=width=4000,height=3000,pixelformat=NV12\

--stream-mmap=1 --stream-skip=1 --stream-to=/userdata/wzw.out \

--stream-count=1 --stream-poll

rkisp_demo --device /dev/video30 --width 4000 --height 3000 --stream-to /userdata/isp.yuv

rkispdemo-------------------------------------------------------------

mount -t ext4 /dev/mmcblk0p4 /userdata

Ps  kill掉ispserver

手挡 在ctrl+z

rkisp_demo --device /dev/video33 --width 1920 --height 1080--vop --rkaiq --hdr --sync-to-raw  --stream-to /userdata/wzw.out

6:查看是否启用cif isp ispp----->>dmesg | grep Async

7:链路节点-- grep '' /sys/class/video4linux/video*/name

ISP ISPP---------------------------------------------------------------

Rkisp_demo源码分析------------------------------------------------------------------------------------------

效果图------------------------------------------------------

使用adb

.\adb.exe pull /userdata/wzw.out wzw.out  拉图

.\adb.exe push cif.out /userdata/cif.out  传图

CIF

rkispdemo-------------------------------------------------------------

注:mmc.c中的大小改为485

mount -t ext4 /dev/mmcblk0p4 /userdata

Ps  kill掉ispserver

ctrl+z+退出该进程

rkisp_demo --device /dev/video39 --width 1920 --height 1080 --rkaiq --sync-to -raw --stream-to /userdata/wzw.out

OR

rkisp_demo --device /dev/video39 --width 2000 --height 2000 --rkaiq --sync-to -raw --stream-to /userdata/wzw.out

RV1126----新增sensor--imx214相关推荐

  1. 海思Hi3516新增sensor imx214 笔记

    海思平台------------------------------------------------- 本文档简述了如何在海思平台(以原版SDK为例)更换一块新屏幕和新sensor,并完成采集显示 ...

  2. RV1126新增驱动IMX415 SENSOR,实现v4l2抓图

    RV1126新增驱动IMX415 SENSOR,实现v4l2抓图. 1:内核dts修改 &csi_dphy0 { status = "okay"; ports { #add ...

  3. 高通camera架构讲解

    转自:http://www.cnblogs.com/thjfk/p/4086001.html Camera原理:外部光线穿过lens后,经过color filter滤波后照射到sensor面上,sen ...

  4. OpenHarmony 1.1.0 LTS 版本发布,十六大性能全面提升

    OpenHarmony 1.1.0 LTS 版本来啦!相比 OpenHarmony 1.0 版本,1.1.0 LTS 版本新增 AI 子系统.电源管理子系统.泛Sensor子系统.升级子系统,及统一A ...

  5. note_2020_3

    ----------------------------------- 网上摘录的一段话,觉得有点道理,出处就不记得了 1.首先要选一门赚钱的语言,然后精通之.这是大前提,方向选错了一切都白搭.语言基 ...

  6. 海思3559:BT656调试笔记

    前言   海思3559a的sdk例子是没有提供BT1120和BT656视频接入的,但实际上硬件是可以支持接入的.不过前提是只支持逐行方式输入,不支持隔行视频,如果想输入PAL制式的隔行视频,请先用芯片 ...

  7. 基于RV1126 Video分析-----sensor模块所代表的subdev子设备注册

    工作: static LIST_HEAD(notifier_list); //异步通知链表 static LIST_HEAD(subdev_list);//v4l2_subdev 链表LIST_HEA ...

  8. 基于RV1126 Video分析-----sensor 的 media模块注册

    工作 kernel\drivers\media\i2c\techpoint\techpoint_v4l2.c static int techpoint_probe(struct i2c_client ...

  9. pm1 android,Android Sensor SDK

    Android Sensor SDK Step By Step 1.新建工程 Android Studio配置 将sensoro-sensor-kit.jar包放入道libs文件夹下,然后在当前工程下 ...

  10. MTK 驱动开发(32)---Sensor 移植及调试2

    接续上一节,本文主要介绍驱动部分的客制化 3. Sensor Driver 的客制化 主要涉及三个方面: 1)配置 codegen.dws ---I2C 地址.eint.gpio 2)配置驱动参数 3 ...

最新文章

  1. python列表可以混合类型_如何在Python中将混合数据类型的列表转换为数据帧
  2. 浅谈微博精准推荐——用户行为挖掘与相似用户挖掘
  3. win10+anaconda环境下pyqt5+qt tools+eric6.18安装及汉化过程
  4. 引用 CSS+DIV/Ul+LI/dl+dt+dd/tabale+css 样式
  5. JAVA程序入门(✨详解✨)
  6. 简单易上手的微信电子名片的制作方法!
  7. 数据科学 IPython 笔记本 一、TensorFlow
  8. 极简番茄钟与白噪音|潮汐
  9. JAVA测试人员考核_自动化测试的绩效考核
  10. 程序员如何快速上手一个自己不太熟悉的新项目
  11. Web相关:Sublime如何安装ESLint插件?
  12. scrum立会报告+燃尽图(第三周第四次)
  13. IP段是什么意思?扬州高防服务器103.219.30.X
  14. 简介DefaultView
  15. php nl2p,PHP函数nl2br()与自定义函数nl2p()换行用法分析,nl2brnl2p_PHP教程
  16. 7.Python 文件I/O
  17. LabVIEW使用两三年感触
  18. Elasticsearch:Data streams(三)
  19. 国产之路:复旦微调试笔记3:环境配置
  20. h5 获取当前地理位置信息

热门文章

  1. 2022年安徽省机器人大赛——程序设计赛道 第十三届安徽省大学生程序设计大赛————I 玩捉迷藏
  2. 锁竞争导致的慢sql分析
  3. kears 7_CNN应用于手写字体识别
  4. 杰里之手表开发之codeblock 工程【篇44】
  5. [LintCode] Delete Node in the Middle of Singly Linked List 在单链表的中间删除节点
  6. Vue中使用的el-upload时批量上传图片时报错问题处理
  7. 磁卡YD-606读写
  8. angry_birds_again_and_again SD5THACM
  9. 自动售货机微信支付 服务器,售货机微信支付原理和技术难点
  10. 江苏计算机编程中小学,江苏推广低年级学生编程教育 培养计算机思维体系