You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yocto构建树莓派3系统中自定义平台驱动未生效问题排查

排查步骤:设备树与Platform驱动匹配失败问题

1. 确认驱动是否被编译并加载

  • 检查Yocto构建产物:在build目录的tmp/work/<machine>/<your-driver-package>/<version>/image/lib/modules/<kernel-version>/extra/路径下,确认是否存在驱动的.ko文件
  • 系统启动后执行lsmod,查看驱动是否被加载;若未加载,尝试手动执行insmod my_driver.ko,观察是否有依赖缺失、符号未定义等报错
  • 检查Yocto配方是否配置了KERNEL_MODULE_AUTOLOAD += "my_driver",确保驱动会被自动加载

2. 验证设备树与驱动的兼容字符串匹配

  • 执行cat /sys/firmware/devicetree/base/<your-node-path>/compatible,确认输出严格等于my_driver(注意大小写敏感,不能有多余空格或换行)
  • 检查驱动代码中的匹配表是否正确:
    static const struct of_device_id my_driver_of_match[] = {
        { .compatible = "my_driver", },
        { /* Sentinel */ }
    };
    MODULE_DEVICE_TABLE(of, my_driver_of_match);
    
    static struct platform_driver my_driver_driver = {
        .probe = my_driver_probe,
        .remove = my_driver_remove,
        .driver = {
            .name = "my_driver",
            .of_match_table = my_driver_of_match,
        },
    };
    
    确保.compatible字段与设备树完全一致,且MODULE_DEVICE_TABLE宏正确注册了匹配表

3. 检查驱动的注册与probe逻辑

  • 确认驱动代码中正确调用了platform_driver_register(&my_driver_driver);,且注册逻辑没有提前返回错误
  • 给probe函数添加基础日志(比如pr_info("my_driver probe triggered\n");),即使未创建设备文件,probe触发时也会有日志输出

4. 验证设备树节点状态

  • 执行cat /sys/bus/platform/devices/<your-node-name>/status,确认节点状态为okay(无status属性则默认生效)
  • 执行cat /sys/bus/platform/devices/<your-node-name>/driver,查看该节点是否被其他驱动抢先绑定

5. 检查内核配置

  • 通过bitbake -c menuconfig virtual/kernel打开内核配置界面,确认开启了CONFIG_PLATFORM_DEVICES=y和CONFIG_OF=y
  • 若驱动为模块化,确认CONFIG_MY_DRIVER=m(若编译进内核则设为y)

6. 查看内核详细日志

  • 执行dmesg | grep -i platform过滤Platform总线相关日志,查找类似platform my_driver: no driver found或platform my_driver: registered的信息
  • 可在启动参数中添加loglevel=7提升日志级别,获取更详细的启动过程记录

7. 检查Yocto配方正确性

  • 确认配方中添加了DEPENDS += "virtual/kernel"以依赖内核头文件
  • 检查SRC_URI是否正确包含驱动源码及必要补丁
  • 确认编译安装逻辑正确,比如:
    do_compile() {
        oe_runmake -C ${STAGING_KERNEL_DIR} M=${S} modules
    }
    do_install() {
        oe_runmake -C ${STAGING_KERNEL_DIR} M=${S} modules_install INSTALL_MOD_PATH=${D}
    }
    

内容的提问来源于stack exchange,提问作者zupoluzu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:10:29