Nvidia Jetson Orin:GMSL2 IMX490/OX08B/ISX031 开发笔记

2024-02-12 07:10

本文主要是介绍Nvidia Jetson Orin:GMSL2 IMX490/OX08B/ISX031 开发笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Autra.tech Apache-2.0 持续更新,有问题欢迎 issue 讨论
Autra.tech orin_core_bsp

GMSL 数据链路

在这里插入图片描述

  • 一般涉及到五个角色
    • SOC(MPU)如:Orin
    • 解串器,如:MAX9296MAX96712
    • 串行器,如:MAX9295MAX96717
    • ISP,如:GW5300
    • 传感器,如:IMX490IMX390

关于GMSL相机驱动的软件设计

  • 传感器驱动 xxx.ko 方式,如:gmsl2_sensor.ko,不负责通过I2C配置传感器、解串器、串行器,只负责正确生成 /dev/videox
  • DTS overlay 方式,参考:关于custom-overlay.dts
  • user space 通过 脚本(shell + i2c-tools)或 代码(c/c++ 调动 标准Linux I2C 操作)配置串行器、解串器,目前看YUV格式下传感器和ISP不需要用户配置
  • DTS 里通过多个 modex 来支持多种分辨率相机
  • xxx.ko 里通过 static const struct camera_common_frmfmt gmsl2_sensor_frmfmt[] 来支持多种分辨率相机

调试步骤

  • S1:解串器I2C可以通(MAX96712
  • S2:串行器I2C可以通(MAX9295
  • S3:user space 通过 i2c-tools 配置解串器和串行器
  • S4:v4l2-ctl 测试帧率

调试技巧

  • 供电 pwdn (解串器I2C能通这个供电就没问题)如果是 Jeston AGX Orin 一般情况扩展板的供电都是 PH.06,参考:Autra.tech setup.sh
  • 给相机12V供电(串行器I2C能通供电就没问题)
  • serdes_pix_clk_hz 计算方式
serdes_pix_clk_hz = (deserializer output data rate in hertz) * (number of CSI lanes) / (bits per pixel)
mipi 1.5GHz
mipi 4 lines
bits per pixel 16bit(YUV422)
serdes_pix_clk_hz = 1500000000 * 4 / 16 = 375000000
  • pix_clk_hz 貌似在 serdes_pix_clk_hz 非0的情况下无效,实测也无效,计算方式
Sensor output size = 2200 × 1125
(actual output size 1920 × 1080)
Frame rate = 30 frames/second
pixel_clk_hz = 2200 × 1125 × 30 = 74250000
  • line_length 需要 ≥ active_w 相等就行了
  • 一个xxx.ko/gmsl2_sensors.ko适配多个相机分辨率需要配置 use_sensor_mode_id = false ,具体去搜索这个关键字它等于false v4l2系统就会按照你输入的分辨率自动去找modex

这篇关于Nvidia Jetson Orin:GMSL2 IMX490/OX08B/ISX031 开发笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/701974

相关文章

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

如何在Ubuntu上安装NVIDIA显卡驱动? Ubuntu安装英伟达显卡驱动教程

《如何在Ubuntu上安装NVIDIA显卡驱动?Ubuntu安装英伟达显卡驱动教程》Windows系统不同,Linux系统通常不会自动安装专有显卡驱动,今天我们就来看看Ubuntu系统安装英伟达显卡... 对于使用NVIDIA显卡的Ubuntu用户来说,正确安装显卡驱动是获得最佳图形性能的关键。与Windo

一文教你如何解决Python开发总是import出错的问题

《一文教你如何解决Python开发总是import出错的问题》经常朋友碰到Python开发的过程中import包报错的问题,所以本文将和大家介绍一下可编辑安装(EditableInstall)模式,可... 目录摘要1. 可编辑安装(Editable Install)模式到底在解决什么问题?2. 原理3.

Python+PyQt5开发一个Windows电脑启动项管理神器

《Python+PyQt5开发一个Windows电脑启动项管理神器》:本文主要介绍如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新... 目录开篇:为什么我们需要启动项管理工具功能全景图核心技术解析1. Windows注册表操作2. 启动文件

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3