如何解决如何从linux内核访问uart?
我正在尝试编写简单的内核模块,该模块使用通过串行线连接到系统的设备,但我在实际访问 UART 时遇到了问题。我想我知道如何使用 kernel_read
和 kernel_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 举报,一经查实,本站将立刻删除。