imx6的mipi接口在qnx系统中的调试技巧,vcapture-test功能应用

2023-10-30

锋影

e-mail:174176320@qq.com


在调试 MIPI DSI / CSI 的一些经验总结,因为协议有专门的文档,所以这里就记录一些常用知识点:

一、D-PHY

1、传输模式

LP(Low-Power) 模式:用于传输控制信号,最高速率 10 MHz

HS(High-Speed)模式:用于高速传输数据,速率范围 [80 Mbps, 1Gbps] per Lane

传输的最小单元为 1 个字节,采用小端的方式及 LSB first,MSB last。

2、Lane States

*  LP mode 有 4 种状态: LP00、LP01(0)、LP10(1)、LP11 (Dp、Dn)

* HS mode 有 2 种状态: HS-0、HS-1

HS 发送器发送的数据 LP 接收器看到的都是 LP00,

3、Lane Levels

* LP: 0 ~ 1.2V

* HS: 100 ~ 300mV,HS common level = 200mV,swing = 200 mv

4、操作模式

在数据线上有 3 种可能的操作模式:Escape mode, High-Speed (Burst) mode and Control mode,下面是从停止状态进入相应模式需要的时序:

* Escape mode 进入时序:LP11→LP10→LP00→LP01→LP00,退出时序:LP10→LP11

当进入 Escape mode 需要发送 8-bit entry command 表明请求的动作,比如要进行低速数据传输则需要发送 cmd: 0x87,进入超低功耗模式则发送 cmd: 0x78。在 DSI 中 LP 通讯只用 Data Lane 0。

* High-Speed mode 进入时序:LP11→LP01→LP00→SoT(0001_1101),退出时序:EoT→LP11,时序图如下:


* Turnaround 进入时序:LP11→LP10→LP00→LP10→LP00,退出时序:LP00→LP10→LP11

这是开启 BTA 的时序,一般用于从 slave 返回数据如 ACK: 0x84。

5、时序要求

在调试 DSI 或者 CSI 的时候, HS mode 下的几个时序非常重要:T_LPX,T_HS-SETTLE ≈ T_HS-PREPARE + T_HS-ZERO,T_HS-TRAIL,一般遵循的原则为:Host 端的 T_HS-SETTLE > Slave 端的 T_HS-SETTLE。

二、DSI

1、线路构成

在 DSI 中需要 1 根时钟线以及 1 ~ 4 根数据线。

2、两种接口的 LCD

* Command mode(对应 MPU 接口)

* Video mode(对应 RGB 接口)

该模式下视频数据只能通过 HS mode 传输。

3、数据包类型

 短包:4 bytes,由 3 部分组成:

* Data Identifier (DI) * 1byte: Contains the Virtual Channel[7:6] and Data Type[5:0].

* Packet Data * 2byte:Length is fixed at two bytes

* Error Correction Code (ECC) * 1byte:allows single-bit errors to be corrected and 2-bit errors to be detected.

长包:6 ~ 65541 bytes,同样由 3 部分组成:

* Packet Header(4 bytes) - 包头

Data Identifier (DI) * 1byte:Contains the Virtual Channel[7:6] and Data Type[5:0].
Word Count (WC) * 2byte:defines the number of bytes in the Data Payload.
Error Correction Code (ECC) * 1byte:allows single-bit errors to be corrected and 2-bit errors to be detected.

* Data Payload(0~65535 bytes) - 有效数据
Length = WC × bytes

* Packet Footer(2 bytes):Checksum - 包尾
If the payload has length 0, then the Checksum calculation results in FFFFh
If the Checksum isn’t calculated, the Checksum value is 0000h

4、控制器到外设发送的包类型

    

如果希望从外设读取数据或者状态,则在处理器发送完读取命令后还需要发送 BTA 命令,非读取命令在外设接收成功后会返回 trigger message 0x84

5、外设到处理器数据包类型

    

返回的数据一般分为 4 个类型:

* Tearing Effect (TE):trigger message (BAh)
* Acknowledge:trigger message (84h)
* Acknowledge and Error Report:short packet (Data Type is 02h)
* Response to Read Request:short packet or long packet
Generic Read Response、DCS Read Response(1byte, 2byte, multi byte)

读取数据返回值解析示例如下:

[cpp]  view plain  copy     在CODE上查看代码片 派生到我的代码片
  1. - Acknowledge and Error report (if error occurs)   
  2. Byte 0 is 0x87 (escape mode low power data transmission header)   
  3. Byte 1 is 0x02 (Data type, 8.10 of “MIPI Alliance Specification for DSI”)   
  4. Byte 3,2 are error report bits[15:0] (8.9.5 of “MIPI Alliance Specification for DSI”)   
  5. Byte 4 is the ECC, calculated from byte 1,2,3   
  6.    
  7. - Generic Short READ response   
  8. Byte 0 is 0x87 (escape mode low power data transmission header)   
  9. Byte 1 is 0x11 or 0x12 (8.10 of “MIPI Alliance Specification for DSI”)   
  10. Byte 2,3 are the read data. If only 1 byte is returned, byte 3 will be 0x00   
  11. Byte 4 is the ECC, calculated from byte 1,2,3   
  12.    
  13. - Long READ packet response   
  14. Byte 0 is 0x87 (escape mode low power data transmission header)   
  15. Byte 1 is 0x1A (8.10 of “MIPI Alliance Specification for DSI”)   
  16. Byte 3,2 are the word count N (N=0 to 65535)   
  17. Byte 4 is the ECC, calculated from byte 1,2,3   
  18. Byte 5 to byte 5+N-1 are the N-byte read data   
  19. Byte 5+N+1, byte 5+N are the checksum, calculated on byte 5 to byte 5+N-1. If   
  20. checksum is not calculated by peripheral, this field is 0x0000.   
6、Video 模式的 3 种数据格式

    

* Non-Burst Mode with Sync Pulses
* Non-Burst Mode with Sync Events
* Burst Mode


* 调试记录

        LCD半边闪屏问题,原厂给的信息:分析了系統板送出的 video mode timing,資訊摘要如下


        HSCLK: 160MHz 
        Per lane bit-rate: 320Mbps (UI=3.125ns) 
        HS SoT HS-prepare + HS-zero 約 155ns   

        由上述的 timing 懷疑與現象是因為 IC HS data settle timing 搭配不當所導致
        看来是我们输出的mipi信号 HS-prepare + HS-zero 比 LCD 默认设置短引起的。还有随机整屏闪动的问题通过调节 VFP 和 VBP 的值调到了理想状态。另外 LCD 的 VCC 在使用 mos 管控制后休眠后会有 2.0V 的悬浮电压,通过 RC 电路将电压放掉,将 C78 换成了 10K 电阻。
        LCD电路上有几个比较重要的电压: AVDD、VCC、VGH、VGL、HAVDD、VCOM(由AVDD通过电阻分压得到)

* 唤醒慢的问题

在最初调试的几款 LCD 里面初始化 cmd 都比较少,后来在调试一款 IPS 屏的时候发现唤醒需要 3 秒左右,这款 LCD 初始化 cmd 有100多条,之前在调试一款 LCD 的时候每条 cmd 发送之后需要 delay 10ms 再发下一条 cmd,所以在这款 LCD 这里不能有 delay,并且经过调试在确保发送成功的情况下将 LP 的传输速度提高了 3 倍(这里需要读取每条 cmd 的返回值 0x84 确认命令是否发送成功),优化后唤醒时间不到 1 秒。

* LCD 参数理解更正

才发现之前一直对 LCD 的几个参数 HFP、HBP、VFP、VBP 理解有错误,正确的应该是以同步信号(HSYNC、VSYNC)为基准,在同步信号之前的称为 Front,在同步信号之后的称为 Back,而不是之前理解的以有效像素为基准。

* LCD 显示呈锯齿状问题

这两天(12.11)还调试了一款 540 x 960 分辨率的 mipi LCD,在开始的时候一直点不亮,和供应商确认了好久无意间才发现是他们给的初始化代码是错的,使用正确的初始化代码就能点亮了,不过显示出来的图像却是呈锯齿状的,即没有对齐。之前在别的平台也遇到过类似问题,也就是分辨率不是 16 的整数倍,LCD controller 在取数据的时候会对不齐。边研究 Datasheet 边和 ASIC 同事讨论,后来确定了一个方案:即在 DSI、LCD 寄存器里面设置分辨率为 540 x 960 以让 LCD 正确识别信号,但 framebuffer 需要设置为 544 x 960 以对齐,并且设置 Source pitch 寄存器为 544,这样显示就正常了,相当于 framebuffer 里每一行的最后 4 个 pixel 会被 LCD controller 丢掉。

今天(12.12)在和 ASIC 同事的讨论下更正了之前的理解:LCD controller 在计算取数据的时候,地址是根据(x,y)坐标来算的,差不多是address = y * pitch + x + base,pitch 就是一行 pixel 在内存里的大小,这个至少是要对齐到 8byte, 因为 bus 宽度是 8byte,如 Data sheet 中的描述 ”Source pitch for RGB channel, QWORD aligned if linear mode“。之前计算 pitch 值的公式为:xres / 8 * bits_per_pixel / 8,如果 xres = 540,bits_per_pixel = 32,计算的结果因为取整的原因为 0x10c,实际上正确的值应该是 0x10e,所以需要将公式改为:xres * (bits_per_pixel / 8) / 8,即在每个像素占 4byte 的情况下只要 xres 为偶数就可以满足对齐的要求,而不用改为 544。



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

imx6的mipi接口在qnx系统中的调试技巧,vcapture-test功能应用 的相关文章

  • 黑莓 Facebook NoClassDefFoundError

    我可能做了一些愚蠢的事情 但我访问 BB Facebook 功能的尝试失败了 这是代码 直接取自提供的 FB 示例代码 String NEXT URL http www facebook com connect login success
  • 如何开始黑莓编程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Android、Windows Phone 7 和 Blackberry 的等效配置文件 (iOS)

    在 iOS 中 可以使用配置文件通过无线方式推送电子邮件 wifi 和 VPN 等的配置 有适用于 Android Windows Phone 7 和 Blackberry 的同等产品吗 链接到 iOS 的配置文件http develope
  • Blackberry 9800 模拟器在启动浏览器时崩溃

    Blackberry 9800 模拟器在启动浏览器时崩溃 抛出异常 JVM 错误 104 未捕获 非法状态异常 这是模拟器的全新安装 没有安装任何第三方应用程序 我非常想用它来测试 Web 应用程序 设备上的所有其他应用程序似乎都可以正常运
  • 下载图像并在 BlackBerry 上显示

    我必须开发一个网址 其中涉及从网址下载图像并在黑莓刺激器中显示 任何人都可以在这方面帮助我吗 此代码将连接给定的 URL 并返回 Bitmap 对象 public static Bitmap connectServerForImage St
  • 适用于 iPhone 和 BlackBerry 的共享库

    我有一组功能 类 希望与我为 iPhone 和 Blackberry Java 构建的应用程序共享 有人有这样做的最佳实践吗 据我了解你的问题 这是不可能的 iPhone 和 Java 的二进制格式不兼容 甚至对于黑莓设备上的本机库也是如此
  • 适用于 iPhone、Android 和 Blackberry 的移动开发

    我最近偶然发现了 PhoneGap 我喜欢这个概念 但我无法在 Android 应用程序上进行第一次尝试 该文档跳过了一些细节 注释中充满了遇到问题的人 有人正在运行 PhoneGap 吗 你对 Android 做了什么调整 大约有 3 种
  • 当我尝试垂直对齐字段时,它们的行为不符合我的预期?(Blackberry JDE4.5.0 eclipse)

    我正在使用 Eclipse 和 JDE 4 5 0 插件 如何垂直对齐字段 我们可以对齐字段吗LEFT BOTTOM RIGHT BOTTOM LEFT VCENTER RIGHT VCENTER CENTER 垂直和水平 BOTTOM C
  • 黑莓 - 如何调整图像大小?

    我想知道我们是否可以调整图像大小 假设我们要在黑莓屏幕上绘制一张实际尺寸为 200x200 尺寸为 100 x 100 的图像 Thanks 您可以非常简单地使用以下命令来完成此操作EncodedImage scaleImage32 htt
  • 使用 Java SE 功能的 BlackBerry 问题

    我已将 net rim api jar 导入到我的项目中 我还想使用标准 rt jar 中的 StringTokenizer 和 PrintWriter 等非 j2me 类 但是当我运行该应用程序时 它给出了错误 java io UTFDa
  • make:安装:找不到命令

    当我尝试安装时git从它的源头开始qnx 我收到以下错误 请注意 pound 是 sudo 的提示qnx configure without iconv with perl usr pkg bin perl with python usr
  • BlackBerry SQLite 数据库创建:“文件系统未就绪”

    我的应用程序从服务器获取数据并将其保存到 SQLite 数据库中 这在 9550 中工作得很好 黑莓风暴2 http en wikipedia org wiki BlackBerry Storm 2 模拟器 但是当我在任何其他模拟器中运行它
  • 使用 BlackBerry 应用程序安装 SSL 证书

    我们有一个 BlackBerry 应用程序 可以访问安全 Web 服务 该服务使用某些 BlackBerry OS5 设备上未安装的 SSL 证书 这会给看到此消息的我们应用程序的用户带来问题 您正在尝试打开安全连接 但服务器的证书不受信任
  • 无法在 eclipse 中安装 blackberry webworks 插件

    using http www blackberry com go eclipseUpdate 3 6 java http www blackberry com go eclipseUpdate 3 6 java 我安装了Blackberry
  • 黑莓 - 等待屏幕[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在黑莓java开发中开发一个应用
  • 如何使用 Bitmap.getBitmapResource() 访问存储在 Blackberry 中的图像?

    我想访问存储在黑莓中的图像 例如位置 store home user image png 现在我可以访问这个图像 String filePath file store home user image png Bitmap image Bit
  • 来自 Blackberry Phonegap 应用程序的 Ajax 请求

    我正在为 Blackberry 操作系统 5 0 及更高版本 创建一个应用程序 我过去没有任何移动开发经验 我创建了一个运行良好的示例应用程序 按照中提到的准则http wiki phonegap com w page 31930982 G
  • 运行为黑莓设备创建的黑莓应用程序需要哪些步骤?

    我使用 java me 和 BlackBerry 特定 API 创建了一个 BlackBerry 应用程序 它在黑莓模拟器上运行良好 我想知道如何将此应用程序部署到 BlackBerry 设备 从文档中我发现 在设备上运行 BlackBer
  • 适用于 BlackBerry 应用程序的 OAuth 库(适用于 Twitter 客户端)

    是否有可用于与 BlackBerry 应用程序集成的 OAuth 库 我想从我的应用程序发布一条推文 但找不到任何有助于登录的内容 找到了吗this URL http developerlife com tutorials p 648但无法
  • 如何检测来自 QNX 中 ncurses 的屏幕调整大小事件?

    我无法配置为接收有关使用 ncurses QNX Momentics 更改终端大小的事件 我使用Putyy作为终端 通过COM端口传输数据 我的问题是如何实现使用远程终端时接收屏幕变化事件 FILE fcons fopen dev ser1

随机推荐

  • 百度飞桨PaddlePaddle论文复现训练营——U-GAT-IT 论文复现心得

    项目背景 本次论文复现是源自百度顶会论文复现营 https aistudio baidu com aistudio education group info 1340 复现对象是 2020 ICLR 上的 U GAT IT 这篇论文 htt
  • 整理

    1 前端安全问题有哪些 如何防范 主要有XSS攻击和CSRF攻击 xss 跨站脚本攻击 在网页里植入一段恶意代码 在该网站的作用域下执行了这段代码 防范 1 在服务端设置对cookie的保护 也就是设置httponly 防止用户通过docu
  • IO进程线程day7(2023.8.4)

    一 Xmind整理 二 课上练习 练习1 创建两个线程 其中一个线程拷贝前半部分 另一个线程拷贝后半部分 只允许开一份资源 且用互斥锁方式实现 提示 找临界区 gt 找临界资源 include
  • Python爬虫入门10:select方法快速定位HTML内容

    前往老猿Python博客 https blog csdn net LaoYuanPython 一 引言 在前两节介绍了通过属性和查找方法定位HTML报文的内容的方法 除了这两种方法还有一种方法就是通过使用CSS选择器的语法找到tag 关于c
  • IntelliJ IDEA 2018.3.3版本破解,亲测可用

    一 到官网下载收费版本 如下 二 安装 破解 1 下载http idea lanyus com 标题 2 找到intelliJ IDEA的安装目录的bin目录 然后把下载的JetbrainsIdesCrack 4 2 release sha
  • 逻辑滚动条LVM测试记录1

    逻辑滚动条LVM测试记录 一 由partition或disk到实体滚动条PV的过程 1 划分出系统标示符为8e00的partition gdisk l dev sda命令查看现有分区情况 系统标示符 system ID 指的就是code一项
  • Python缺失值处理

    没有高质量的数据 就没有高质量的数据挖掘结果 数据值缺失是数据分析中经常遇到的问题之一 当缺失比例很小时 可直接对缺失记录进行舍弃或进行手工处理 但在实际数据中 往往缺失数据占有相当的比重 这时如果手工处理非常低效 如果舍弃缺失记录 则会丢
  • 西门子V90伺服驱动器的面板控制

    前言 本文主要讲解一下伺服驱动器的面板控制 大致了解它的功能 一 V90概述 概述 SINAMICS V90是西门子推出的一款小型 高效便捷的伺服系统 它作为 SINAMICS 驱动系列家族的新成员 与SIMOTICS S 1FL6 伺服电
  • 启动Jmeter时遇到的几种错误

    1 权限不够 解决办法 用管理员权限运行 2 sdk版本太低 解决办法 1 查看当前sdk版本 java version 2 安装sdk1 7或以上版本 jmeter3 0版本要用sdk1 7及以上版本 3 配置的环境变量没有生效 在ubu
  • Spring Boot实战之配置使用Logback进行日志记录

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Spring Boot实战之配置使用Logback进行日志记录 在这篇文章中我们将讨论在Spring Boot中使用Logback 在Spring Boot中使用Logba
  • 开源 AI库Stable Diffusion 介绍

    Stable Diffusion 是一个用于生成高质量 AI 绘画的 Python 库 以下是一些使用 Stable Diffusion 的基本步骤 安装 Stable Diffusion 库 您可以使用 pip 安装 命令如下 pip i
  • 性能测试包括哪些方面?

    性能测试 通过自动化测试工具模拟多种正常 峰值 以及异常的负载情况下对系统各项性能指标进行的测试 负载测试 压力测试 容量测试都属于性能测试 性能测试指标是衡量系统性能的评价标准 主要关注一些响应时间 并发用户 并发 点击率 吞吐量 TPS
  • Android JNI/NDK开发(2)JNI实现C/C++与Android/JAVA相互调用

    前言 一直觉得无论是从行业形式来看 还是从就业角度说 学习JNI NDK开发是一条必经之路 很多说Android和IOS几乎没有市场了 其实只能说现在开发APP的需求没那么多了 再加上之前培训机构疯狂向市场输出Android IOS开发人员
  • [转]文档去重算法:SimHash和MinHash

    simhash与重复信息识别 来源 http grunt1223 iteye com blog 964564 在工作学习中 我往往感叹数学奇迹般的解决一些貌似不可能完成的任务 并且十分希望将这种喜悦分享给大家 就好比说 老婆 出来看上帝 随
  • 【Linux】Linux环境搭建

    目录 1 Linux的发展历史 2 Linux环境的搭建 为什么要使用Linux 环境准备 3 使用 XShell 远程登陆 Linux 下载安装 XShell 使用 XShell 登陆主机 1 Linux的发展历史 要知道Linux操作系
  • uboot使用

    我一贯认为 对于一个技术类的东西 你连用都不会用 那根本就不可能会开发 就好像一个人连Linux不会用 那还谈何开发Linux程序呢 同样的要开发和移植U boot 首先要对U boot有一定的了解 起码要会使用 所以这里我们首先熟悉一下U
  • 解决报错Fatal error in launcher

    换电脑重装python 打算安装第三方库的时候出现错误 Fatal error in launcher 然而在网上搜到的大多数是解决 Fatal error in launcher Unable to create process usin
  • 网络摄像头rtsp流延迟无法解决,改用Mjpeg流成功保证低延迟稳定传输,并成功解决opencv对Mjpeg流支持问题

    最近做的一个小项目 是需要通过一个网络实时将画面传输给后端进行处理 因为涉及到对运动的捕捉 延迟要求较为严格 我的网络摄像头是Z CAM E2 M4 内置了rtsp流 使用rtsp流时总会产生2秒的延迟 直接使用ffmpeg播放依然存在2s
  • 使用NumPy索引和切片操作可以方便地访问和操作多维数组。本文将介绍如何使用NumPy索引语法来获取指定行之后的所有数据行的数值内容。

    使用NumPy索引和切片操作可以方便地访问和操作多维数组 本文将介绍如何使用NumPy索引语法来获取指定行之后的所有数据行的数值内容 首先 确保已经安装了NumPy库 可以使用以下命令在Python中安装NumPy pip install
  • imx6的mipi接口在qnx系统中的调试技巧,vcapture-test功能应用

    锋影 e mail 174176320 qq com 在调试 MIPI DSI CSI 的一些经验总结 因为协议有专门的文档 所以这里就记录一些常用知识点 一 D PHY 1 传输模式 LP Low Power 模式 用于传输控制信号 最高