NVIDIA Jetson IMX477摄像头驱动移植调试记录(L4T 36.5.0)
一、概要
Jetson L4T36.5.0原生自带IMX477驱动可直接使用,本次调试并非开发传感器驱动,目的是走通Jetson 驱动交叉编译、设备树修改、dtbo部署、开机加载整套流程。
核心工作内容
- Ubuntu主机交叉编译自定义nv_imx477.ko内核模块
- 修改设备树dts文件,编译生成自定义dtbo设备树覆盖文件
- 修改
extlinux.conf引导配置,开机加载自定义设备树 - 手动insmod加载驱动,通过V4L2校验摄像头识别状态
文件修改要点
1. 文件复制与重命名
在对应源码目录下,复制官方原生文件并改名,生成自定义文件:
- 驱动源码目录:
/Linux_for_Tegra/source/nvidia-oot/drivers/media/i2c/- 原文件:
nv_imx477.c→ 自定义文件:test-nv_imx477.c
- 原文件:
- 设备树源码目录:
/Linux_for_Tegra/source/hardware/nvidia/t23x/nv-public/overlay/- 原文件:
tegra234-p3767-camera-p3768-imx477-A.dts→ 自定义文件:test-imx477-A.dts - 备注:
-A对应CSI0接口、-C对应CSI1接口,按需选择对应文件改造
- 原文件:
2. 核心兼容属性修改(驱动与设备树双向统一)
同步修改两处compatible兼容字符串,必须完全一致:
- 原生匹配字段:
compatible = "ridgerun,imx477" - 自定义匹配字段:
compatible = "test,imx477"
3. 修改同级 Makefile
分别修改自定义文件同级目录下的 Makefile,添加编译条目
- 驱动目录 Makefile
obj-m += test_nv_imx477.o- 设备树目录 Makefile
dtbo-y += test-imx477-A.dtbo二、编译环境搭建
1. 资源下载
适配版本:JetPack 6.2.2(L4T 36.5.0)
- BSP板级源码包:Driver Package (BSP) Sources
- 交叉编译工具链:Bootlin gcc 11.3 aarch64
- 源码解压至Ubuntu主机,进入
Linux_for_Tegra/source目录,解压内部所有源码压缩包,缺失依赖会引发编译报错。