首页 > 解决方案 > 在linux C中以轮询模式与虚拟串行设备交互

问题描述

我正在尝试在 android 内核上启用对串行 USB 驱动程序的轮询支持,以便我可以使用 kgdboc 对其进行调试。我基于这些 github 中的代码:

但是,我找不到通过用户空间上的 C 程序启用和使用 char by char 轮询模式的方法。这使得调试非常困难,因为我唯一能做的就是将 kgdboc 设置为/dev/ttyGS0然后将“g”发送到 sysrq-trigger,并祈祷它可以工作。

换句话说,我需要一个用户态程序来触发代码路径,该代码路径在tty_operations结构上达到以下操作:

.poll_init = gs_poll_init,
.poll_get_char = gs_poll_get_char,
.poll_put_char = gs_poll_put_char,

相反,每当我写信时,/dev/ttyGS0我都会触发“写”操作。

任何帮助将不胜感激。

谢谢!

标签: linux-kernelserial-portlinux-device-driverandroid-kernel

解决方案


正如 Chris Stratton 建议的那样,我最终创建了一个导出 sysfs 节点的驱动程序。

我以本教程为基础


推荐阅读