是否有任何默认机制来启用调试 v4l2 驱动程序。基本上我想通过设置 /d 来检查动态调试之类的东西。make 文件中的编译时间标志也很好。
目前,我设置如下,但没有得到太多信息。
echo -n 0xFFFF>/sys/module/videobuf2_core/parameters/debug
谁能帮我获取详细的 v4l2 日志?
是否有任何默认机制来启用调试 v4l2 驱动程序。基本上我想通过设置 /d 来检查动态调试之类的东西。make 文件中的编译时间标志也很好。
目前,我设置如下,但没有得到太多信息。
echo -n 0xFFFF>/sys/module/videobuf2_core/parameters/debug
谁能帮我获取详细的 v4l2 日志?
看一下代码:作为示例,文件 drivers/media/v4l2-core/v4l2-ioctl.c 可能是更有趣的文件之一,因为它向您展示了一些用户/内核空间交互。
在此文件中,您会看到很多pr_cont、pr_info和其他内容。虽然printk总是被打印,但其他人只会做一些事情,如果启用的话。有关这方面的所有详细信息,请访问http://lwn.net/Articles/487437/。
讨厌的方法是用 printk 替换一些 pr_cont 或 pr_info。您甚至可以使用#define 来执行此操作。如果您只想启用其中的 3 或 4 个,甚至添加您自己的特殊功能,这可能是最快的方法。
好的方法是查看系统被认为是如何使用的。如果您可以启用动态调试,您可以尝试,就像这里很好地描述了https://lwn.net/Articles/434833/一样。
最后,最简单的方法可能是查看内核配置。也许您已经知道源目录中的命令make menuconfig。您可以编辑所有不同的设置,就像在 vi 中一样,您可以使用 / 进行搜索。在特定模块旁边,您通常还可以启用或禁用调试选项。如果这还不够,您可以随时在 .config 文件中更改内核的全局调试级别。
您可能感兴趣的一个特定标志是
CONFIG_VIDEO_ADV_DEBUG
Say Y here to enable advanced debugging functionality on some
V4L devices.
In doubt, say N.
Symbol: VIDEO_ADV_DEBUG [=y]
Prompt: Enable advanced debug functionality on V4L2 drivers
Location:
-> Device Drivers
-> Multimedia support (MEDIA_SUPPORT [=y])
Defined at drivers/media/v4l2-core/Kconfig:11
Depends on: MEDIA_SUPPORT [=y]
祝你好运
请参考这里的官方文档:
为 /sys/class/video4linux// 中的每个视频、vbi、无线电或 swradio 设备创建的“dev_debug”属性允许您启用文件操作的日志记录。
我在真实配置上对此进行了测试,它可以工作(它会打印所有信息!),请参见下面的命令:
echo 0x1f > /sys/class/video4linux/video1/dev_debug