本文主要是介绍Nvidia Jetson Orin:GMSL2 IMX490/OX08B/ISX031 开发笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Autra.tech
Apache-2.0
持续更新,有问题欢迎 issue 讨论
Autra.tech orin_core_bsp
GMSL 数据链路
- 一般涉及到五个角色
- SOC(MPU)如:
Orin
- 解串器,如:
MAX9296
、MAX96712
- 串行器,如:
MAX9295
、MAX96717
- ISP,如:
GW5300
- 传感器,如:
IMX490
、IMX390
- SOC(MPU)如:
关于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 开发笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!