全志T527 适配双目tp2815_mipi

一、硬件信息

TP2815:

确认硬件信息:

1、通信接口:TWI2总线,引脚组为PE1 、PE2

2、RESET脚:

二、软件配置

1、设备树

t527 dtsi:

bsp/configs/linux-5.15/sun55iw3p1.dtsi

t527 uboot-board.dts

device/config/chips/t527/configs/demo_linux_car/board.dts

 &twi2 {clock-frequency = <400000>;pinctrl-0 = <&twi2_pins_default>;pinctrl-1 = <&twi2_pins_sleep>;pinctrl-names = "default", "sleep";/* For stability and backwards compatibility, we recommend setting ‘twi_drv_used’ to 1 */twi_drv_used = <1>;rproc-name = "7130000.e906_rproc";twi-supply = <&reg_dcdc4>;status = "okay";
};pinctr:twi2_pins_default: twi2@0 {pins = "PE1", "PE2";function = "twi2";drive-strength = <20>;bias-pull-up;};twi2_pins_sleep: twi2@1 {pins = "PE1", "PE2";function = "gpio_in";};

之后配置sensor信息以及video节点

配置挂载完后烧录:

cat /sys/class/video4linux/v4l-subdev0/name

在buildroot/package/auto/sdk_demo/csi_test路径下编译生成测试程序csi_test_usrptr

push到开发板运行

./csi_test_usrptr 0 0 1280 720 /usr/capture_images/ 4 20 30

检查电源是否供电正常或者配置 twi 是否正确

检查后发现tp815没供电

修改设备树,让其输出高电平:

重新编译烧录后:video能正常获取到图像(注意帧率以及图像格式)

配置后正常出图

YUYVViewer查看

第二个TP2815

1、使用的是 PE3, PE4 这一组 twi3 的通讯接口。使用的 mclk2 。

2、RESET 控制接口为 PK10, PWDN 控制接口为 PK22。

两路 sensor 同时输入,但 ISP 只有一个,此时需要开启 ISP 时分复用功能(离线模式)

tdm0、isp00、scaler00/10/20/30、vinc00/10/20/30 的work_mode 均需配置成 ,即离线模式。

注:scaler00/10/20/30的work_mode 配置成 时会出现scaler channel ID nember is lost!!!

双目TP2815场景下,可支持的video节点分别为:

sensor0:video 0/4/8/12

sensor1:video 1/5/9/13

cat /sys/class/video4linux/v4l-subdev*/name

两个驱动加载均正常

使用sensor1:video 1/5/9/13时,出现vin:[ERR]: video1 is controlling by rtos,open /dev/video1 falied的报错

找到相应报错代码:

bsp/drivers/vin/vin-video/vin_video.c:3583: vin_err("video%d is controlling by rtos\n", vinc->id);

解决办法:

CONFIG_RV_RUN_CAR_REVERSE 宏应该是快速倒车,RTOS 应该是内部的RISC MCU模块,起到快速进入倒车的作用, 关闭该宏再次进行测试。

根据log信息,PC的值是pc: sunxi_isp_sensor_type+0x0/0x40

  sunxi_isp_sensor_type:表示出错的函数;

  0x0:表示出错语句在出错函数中的偏移位置;

  0x40:表示sunxi_isp_sensor_type函数的大小;

找出函数地址:

在源码编译目录下的System.map中找到错误函数sunxi_isp_sensor_type

vi out/t527/demo_linux_car/buildroot/System.map

[ 546.395884] pc : sunxi_isp_sensor_type+0x0/0x40

aarch64-linux-gnu-addr2line -e vmlinux ffffffc008767220(ffffffc008767220+0x0)

定位到kernel/linux-5.15/include/linux/ioport.h 220行

打印信息辅助调试:

cap->pipe.sd[VIN_IND_ISP] 的值为 0000000000000000,该指针为空

最终修改video节点后解决

三、问题排查

在线模式:

sensor0:video 0/4/8/12都能正常打开

sensor1:video 1/5/9/13 ,指示 vipp0/4/8/12 正在在线模式下工作,但是 vipp1/5/9/13无法工作。

离线模式:

sensor0:video 0/4/8/12 出现scaler* channel ID nember is lost!!!

sensor1:video 1/5/9/13,能打开,但无信号select timeout,可通过示波器或者读取主控芯片输入寄存器来确认是否有接受到数据

在内核打开ISP_TDM重新编译时,八个video节点均发生错误

cat /sys/kernel/debug/mpp/vi查看链路

询问全志得知T527 同时只支持 6 路输入,不支持 8 路。还有,虚拟 isp 不支持 tdm。

取消ISP复用,修改为六路摄像头

sensor0:video 0/4/8/12

sensor1:video 16/17/

sensor1的两个节点如下:

烧录测试后sensor0的四个video节点正常出图,sensor1的两个节点应用抓图出现select timeout,无数据输入

排查如下;

确认是否正常是波形输出,mipi data ,mipi clk 都要确认

示波器测量后与正常出图的波形对比,波形正常

  1. 上面确认正确后,微调下面手段:

用 csitest 打开对应节点后,提示 select timeout 时候,动态调整一下,动态写寄存器,看看哪个寄存器值可以稳定出图

echo 0x05810318 xxxxx > /sys/class/sunxi_dump/write;修改写入的 20:24 bit ,动态测试看看,有哪个值会更稳定

写入 0x7 示范如下:

echo 0x05810318 0x00700000 > write

[20:24] 范围是 0x00-0x1f ,也就是 0x00000000 到 0x01f00000

也可以通过 echo 0x05810318 > /sys/class/sunxi_dump/dump;cat /sys/class/sunxi_dump/dump 来确认是否正常写入

写入0x01后能正常出图

echo 0x05810318 0x00100000 > /sys/class/sunxi_dump/write;echo 0x05810318 > /sys/class/sunxi_dump/dump;cat /sys/class/sunxi_dump/dump

多次测试,写入0x01 会比较稳定

修改代码,路径:bsp/drivers/vin/vin-mipi/combo_csi/combo_csi_reg.c

修改如下:Deskew通常用于调整信号的时序,以消除因信号传输延迟而引起的问题

至此,六路摄像头正常出图,完工撒花!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/18486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重学java 49 增强for

知之俞明&#xff0c;则行之越笃&#xff1b;行之愈笃&#xff0c;则知之愈益&#xff1b; —— 24.5.28 一、基本使用 1.作用: 遍历集合或者数组 2.格式: for(元素类型 变量名:要遍历的集合名或者数组名) 变量名就是代表的每一个元素 3.快捷键: 集合名或者数组名.for package …

ESXI8.0虚拟机和主机之间进行粘贴复制

1&#xff1a;默认情况下新建一个虚拟机是无法和主机之间进行粘贴复制操作的&#xff0c;主要是为了安全。 2&#xff1a;可以参考下面的文档进行操作&#xff0c;操作成功也只能复制粘贴数据&#xff0c;而无法复制粘贴文件或文件夹 https://knowledge.broadcom.com/externa…

组建RAID后安装系统时发现无法识别硬盘!

计算环境中,RAID(独立磁盘冗余阵列)是一种广泛采用的数据存储技术,它通过组合多个物理硬盘来提升数据读写速度、增加存储容量或提供数据冗余以确保数据安全。然而,用户在使用SAS或SATA RAID阵列卡组建RAID后,可能会遇到在安装操作系统过程中硬盘无法被系统识别的问题。接…

【会议征稿,IEEE出版】第九届信息科学、计算机技术与交通运输国际学术会议(ISCTT 2024,6月28-30)

第九届信息科学、计算机技术与交通运输国际学术会议&#xff08;ISCTT 2024&#xff09;将于2024年6月28-30日在中国绵阳举行。 ISCTT 2024将围绕 “信息科学”、"计算机技术”、“交通运输” 等最新研究领域&#xff0c;为来自国内外高等院校、科学研究所、企事业单位的专…

安卓 view淡入淡出(fade in fade out) kotlin

文章目录 前言一、布局文件二、kotlin扩展方法1.fadeOutAnimation 淡出动画2.fadeInAnimation 淡入动画 三、使用总结 前言 好久没写文章了,简单码一个淡入淡出,我们先上效果图 那么接下来上代码 一、布局文件 我这边直接将activity_main.xml改为下列代码,可以看到其中包含一…

【并发程序设计】11.进程间通信

11.进程间通信 &#xff08;IPC&#xff0c;InterProcess Communication&#xff09;进程和进程之间交换信息。 常用通信方式 无名管道&#xff08;pipe&#xff09;有名管道 &#xff08;fifo&#xff09;信号&#xff08;signal&#xff09;共享内存(mmap)套接字&#xff0…

jenkins+sonarqube部署与配置过程

1、部署jenkins&#xff08;本文不做说明&#xff09; 2、部署sonarqube(docker-compose) version: "2.1"services:sonarqube:image: sonarqube:9.9.4-communitycontainer_name: sonarqubedepends_on:- dbports:- 9000:9000networks:- sonarnetenvironment:SONARQU…

C++候捷stl-视频笔记1

认识headers、版本、重要资源 STL的核心思想是泛型编程 新式头文件内的组件封装在命名空间std中&#xff1a; using namespace std; using std::cout;或std::vector vec; 旧式头文件内的组件不封装在命名空间std中 注:不建直接使用using namespace xxx&#xff0c;如果使用的…

Meterpreter工具使用

Meterpreter属于stage payload&#xff0c;在Metasploit Framework中&#xff0c;Meterpreter是一种后渗透工具&#xff0c;它 属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型Payload。这种工具是基于“内存DLL注 入”理念实现的&#xff0c;它能够通过创建一个新进…

微乐校园管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;基础数据管理&#xff0c;叫车管理&#xff0c;代跑管理&#xff0c;二手商品管理 司机账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;叫车管理&#xff0c…

【Linux进程篇】Linux内核——程序地址空间的初构

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; 程序地址空间回顾 我们在讲C语言的时候&#xff0c;大家应该都见过这样的空间布局图&#xff1a; 为了更好的验证不同的数据在内存中的存储位置&#xff0c;下面这段代码我们可以去实验一下&#xff1a; #include<…

基于高光谱数据集的创新点实现-高斯核函数卷积神经网络

一、高光谱数据集简介 1.1 数据集简介 数据集链接在这:高光谱数据集(.mat.csv)-科研学术 数据集包含下面三个文件&#xff1a; 文件中包含.mat与.csv,145x145x220, 其实主要使用avirissub.csv文件&#xff0c;在代码上只是将mat文件转成了csv文件。具体avirissub.csv如下&am…

计算机网络-BGP基础概念

一、BGP的基本概念 BGP是一种实现自治系统AS之间的路由可达&#xff0c;并选择最佳路由的矢量性协议。早期发布的三个版本分别是BGP-1&#xff08;RFC1105&#xff09;、BGP-2&#xff08;RFC1163&#xff09;和BGP-3&#xff08;RFC1267&#xff09;&#xff0c;1994年开始使用…

TiDB-从0到1-MVCC

TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCC 一、MVCC Multi-Version Concurrency Control 多版本并发控制&#xff0c;其主要解决了读并发的问题。 其维持一个数据的多个版本使读写操作没有冲突。也就是说数据元素X…

虚拟机报错:VMX 进程已提前退出。VMware Workstation 无法连接到虚拟机。

解决报错&#xff1a;VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及访问所有临时文件目录。 VMX 进程已提前退出。 解决方案&#xff1a;右键桌面图标进入VMware Workstation Pro的属性设置&#xff0c;兼容性–勾选“以管理员…

【windows】Total Uninstall:一款功能强大的完全卸载软件

软件介绍 Total Uninstall是一款专业的软件卸载工具&#xff0c;旨在帮助用户彻底地清除计算机上的应用程序&#xff0c;包括与应用程序相关的所有文件和注册表项。以下是Total Uninstall的一些主要功能和特点&#xff1a; 完全卸载&#xff1a;软件可以监视应用程序的安装过程…

【C++题解】1321. 时钟旋转(2)

问题&#xff1a;1321. 时钟旋转&#xff08;2&#xff09; 类型&#xff1a;字符串 题目描述&#xff1a; 时钟从时间&#xff1a;xx:xx&#xff08;xx时xx分&#xff09;&#xff0c;走到时间&#xff1a;xx:xx&#xff08;xx时xx分&#xff09;&#xff0c;时针共旋转了多…

uniapp一些问题解决

1.按钮边框如何去除&#xff1f; 参考博主&#xff1a;微信小程序按钮去不掉边框_微信小程序button去掉边框-CSDN博客文章浏览阅读1k次。最近在学uni-app&#xff0c;顺便自己写个小程序。左上角放了个button&#xff0c;可边框怎么也去不掉…原来微信小程序的按钮要去掉边框要…

新零售数据中台:打造智能商业运营的核心引擎_光点科技

随着数字化转型的浪潮席卷全球&#xff0c;新零售行业正在经历一场前所未有的革新。在这一过程中&#xff0c;“新零售数据中台”逐渐成为企业构建智能商业运营的核心引擎。本文将重点介绍新零售数据中台的概念、其在新零售中的作用&#xff0c;以及如何通过数据中台实现商业价…

基于YOLOV8/YOLOV5的远距离停车场车位检测识别系统

摘要&#xff1a; 在本文中深入探讨了基于YOLOv8/v7/v6/v5的停车位检测系统&#xff0c; 开发远距离停车位检测系统对于提高停车效率具有关键作用。。本系统核心采用YOLOv8技术&#xff0c;并整合了YOLOv7、YOLOv6、YOLOv5算法&#xff0c;以便进行性能指标对比。深入解释了YOL…