微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从linux内核访问uart?

如何解决如何从linux内核访问uart?

我正在尝试编写简单的内核模块,该模块使用通过串行线连接到系统的设备,但我在实际访问 UART 时遇到了问题。我想我知道如何使用 kernel_readkernel_write 与设备通信:

struct file* serial_file;
char buf[32];
lsoff_t off = 0;
serial_file = filp_open("/dev/ttyS0",O_RDWR,0);
kernel_write(serial_file,"test\n",5,&off);
kernel_read(serial_file,buf,32,&off);

文件似乎已打开(IS_ERR(serial_file) 为 0),但读取和写入返回 EIO - 可能是因为波特率错误。由于没有 kernel_ioctl,因此没有明显的方法解决这个问题。

对上述问题的回答会很好,但由于这更像是一种黑客攻击(根据我的理解,文件系统不应该以这种方式真正从内核访问),因此更好的解释是如何正确执行此操作?我猜这会涉及直接从 tty_struct 调用函数,但是如何从 file(或从路径,或从它应该生成的任何内容获取它?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。