Skip to the content.

Debugging driver model

1. 简介

本文档旨在当您无法找出驱动程序模型未按预期执行的原因时提供帮助。

2. 一般有用的技术

以下是一些有用的调试功能。

并不是说大多数这些在启用时会稍微增加代码/数据大小。

3. 无法定位设备

假设你有 uclass_first_device_err() 并且它没有找到任何东西。

如果它返回错误,那么这会给你一个线索。 查找 linux/errno.h 以查看错误。 常见的有:

如果没有错误,您应该检查设备是否真正绑定。 在找到设备之前调用 dm_dump_tree() 以确保其存在。

如果不存在,请检查设备树兼容字符串是否与驱动程序期望的字符串(在 struct udevice_id 数组中)匹配。

如果您使用 of-platdata(例如 CONFIG_SPL_OF_PLATDATA),请检查驱动程序名称是否与设备树中的第一个兼容字符串相同(无效变量字符转换为下划线)。

如果你真的陷入困境,将“#define LOG_DEBUG”放在 drivers/core/lists.c 的顶部应该会告诉你发生了什么。