Wu_mingyuan 2024-02-11 21:56 采纳率: 0%
浏览 22
已结题

Linux CSI驱动问题

本人再做一个视觉识别的项目,但是对于Linux驱动和内核的开发不是很了解。想使用TC358743这款HDMI转CSI芯片采集HDMI信号转换成CSI输入给RK3588s。根据https://blog.csdn.net/huntenganwei/article/details/131591229 的教程已经编译好了内核,在制作dts设备树的时候,有关于hdmi时钟的和mipi接口的报错,我应该怎么修改这些端口,去哪里查看呢,基于rk3588s,Ubuntu2204,麻烦各位指教。

img

cat@lubancat:~/kernel/kernel-develop-5.10$ make dtbs
DTC arch/arm64/boot/dts/rockchip/rk3588s-lubancat-4.dtb
arch/arm64/boot/dts/rockchip/rk3588s-lubancat-4.dts:78.21-96.4: ERROR (phandle_references): /tc358743: Reference to non-existent node or label "hdmi_osc"
arch/arm64/boot/dts/rockchip/rk3588s-lubancat-4.dts:78.21-96.4: ERROR (phandle_references): /tc358743: Reference to non-existent node or label "gpio6"
arch/arm64/boot/dts/rockchip/rk3588s-lubancat-4.dts:88.34-94.13: ERROR (phandle_references): /tc358743/port/endpoint: Reference to non-existent node or label "mipi_csi2_in"
ERROR: Input tree has errors, aborting (use -f to force output)
make[2]: *** [scripts/Makefile.lib:386:arch/arm64/boot/dts/rockchip/rk3588s-lubancat-4.dtb] 错误 2
make[1]: *** [scripts/Makefile.build:516:arch/arm64/boot/dts/rockchip] 错误 2
make: *** [Makefile:1471:dtbs] 错误 2

  • 写回答

16条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-02-11 21:56
    关注
    获得0.60元问题酬金

    引自免费微信小程序:皆我百晓生

    在您提供的日志中,Linux内核编译过程中设备树(Device Tree, DTS)构建时报错,错误信息指向了tc358743节点引用的几个非-existent节点或标签。要解决这些报错,您需要确保以下几点:

    1. hdmi_osc 时钟源: 在您的DTS文件中,tc358743驱动需要引用一个名为hdmi_osc的时钟源。首先检查RK3588s SoC的参考文档或者官方提供的DTS示例,确定是否有这样一个时钟源,并正确声明它。例如,您可能需要在DTS文件中的合适位置添加类似于以下内容来定义时钟源:
    &clocks {
        hdmi_osc: hdmiosc {
            compatible = "rockchip,hdmiosc"; /* 或者合适的compatible属性 */
            /* 其他相关属性,比如频率、分频等 */
        };
    };
    
    1. gpio6 引脚控制: 错误信息指出reset-gpios属性引用了一个不存在的gpio6节点。您需要在DTS文件中定义这个GPIO控制器及其引脚:
    &gpio6 {
        pinctrl-names = "default";
        pinctrl-0 = <&gpio6_pin9>;
    
        gpio6_pin9: pin9 {
            rockchip,pins = <9>; /* 根据实际引脚号配置 */
            rockchip,function = GPIO_FUNC_OUTPUT; /* 或其他合适的配置 */
            rockchip,direction = GPIO_ACTIVE_LOW;
        };
    };
    
    1. mipi_csi2_in 端点: 驱动试图连接到一个名为mipi_csi2_in的CSI接收端口,但该端口未被声明。您需要找到RK3588s上对应的CSI接收器并在DTS中定义它,然后将其与tc358743端点相连。类似这样:
    &mipi_csi2 {
        mipi_csi2_in: endpoint@0 {
            compatible = "rockchip,mipi-csi2-in";
            remote-endpoint = <&tc358743_out>;
            data-lanes = <1 2 3 4>; /* 按照芯片实际数据通道配置 */
            clock-lanes = <>; /* 如果需要时钟线,请配置 */
            /* 其他必要的属性 */
        };
    };
    

    请根据RK3588s芯片手册和Linux内核文档调整上述代码片段以适应实际情况。正确配置后,设备树将能够正确描述硬件资源,从而避免编译时的错误。同时,在修改DTS文件之后,别忘了重新编译并安装新的设备树blob(dtb),以及重新加载内核模块(如果适用)。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 2月19日
  • 创建了问题 2月11日

悬赏问题

  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵
  • ¥15 cfx离心泵非稳态计算