本文主要是介绍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 开发笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!