全志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改为下列代码,可以看到其中包含一…

【Daily Code】leetcode2951. 找出峰值

Problem: 2951. 找出峰值 Code class Solution { public:vector<int> findPeaks(vector<int>& mountain) {int n mountain.size();vector<int> res;for(int i 1; i < n - 1; i ) {if(mountain[i] > mountain[i - 1] && mountain[i] >…

【并发程序设计】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…

大模型-大模型评测

1、参考文章&#xff1a;https://www.linkresearcher.com/information/f4a3b0e0-9d14-45cc-9f8a-acac0ce6addd 2、总结&#xff1a; 语义评测&#xff1a;评测大模型是否能正确理解语言的含义代码评测&#xff1a;评测大模型是否能给出能够执行出正确结果的代码对齐评测&#…

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;它能够通过创建一个新进…

SAP_MM_业务数据

在SAP的物料管理模块&#xff08;MM&#xff0c;Materials Management&#xff09;中&#xff0c;业务数据&#xff08;Transactional Data&#xff09;是日常业务操作所产生的动态数据。这些数据记录了与采购、库存和物料需求计划&#xff08;MRP&#xff09;相关的实际业务活…

微乐校园管理系统的设计

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

MPE中environment.py复盘

1.__init__ 初始化函数参数&#xff1a; world: 一个包含环境信息和所有智能体的世界对象。reset_callback, reward_callback, observation_callback, info_callback, done_callback: 这些都是回调函数&#xff0c;用于在环境的特定事件发生时执行相应的操作。shared_viewer: 一…

邦芒面试:面试官“青睐”你的微妙信号

在激烈的面试过程中&#xff0c;你是否好奇过面试官是如何评估你的表现&#xff0c;以及哪些举动表明你有可能成为他们心仪的候选人&#xff1f;接下来&#xff0c;我们将揭示面试官“青睐”你的几个微妙信号。 1. 主动分享职位详情 当面试官不仅满足于询问你的工作经历&#…

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

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

云WAF:守护网络安全的强大盾牌

随着互联网技术的飞速发展&#xff0c;网络安全问题已经成为全球性的难题。为了应对日益复杂的网络安全威胁&#xff0c;云WAF&#xff08;Web Application Firewall&#xff0c;即Web应用防火墙&#xff09;应运而生&#xff0c;并以其强大的功能和优势&#xff0c;成为网络安…

GPT-4o:人工智能交互的新纪元

GPT-4o作为OpenAI最新发布的模型&#xff0c;标志着人工智能领域的一大飞跃&#xff0c;特别是在自然语言处理和交互体验上。本文将概述GPT-4o的主要特点、技术改进以及它如何改变我们与AI互动的方式。 GPT-4o的诞生背景 在GPT-4o之前&#xff0c;用户通过Voice Mode与ChatGPT…

Spring如何管理Bean的生命周期呢?

我们都知道&#xff0c;在面试的过程中&#xff0c;关于 Spring 的面试题&#xff0c;那是各种各样&#xff0c;很多时候就会问到关于 Spring的相关问题&#xff0c;比如 AOP &#xff0c;IOC 等等&#xff0c;还有就是关于 Spring 是如何管理 Bean 的生命周期的相关问题&#…

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

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