0

我正在开发一个 linux 内核模块,我需要从串口(字符)读取数据。我想将字符(例如:'D'、'T' 和 '-')设置为来自串行端口的条目,并且我想读取这些条目。我花了很长时间尝试使用“inb(0x3f8)”和“termios”,但没有成功。但是,使用“outb”写入数据可以正常工作,我在我设置的 VBox 配置上的 VirtualBox 上将 Ubuntu 10.10 作为系统安装为访客:

   activated serial port
   port number :   COM1    IRQ 4  PORT I/O : 0x3f8
   Port/path   D:\Oracle\serial.txt
4

1 回答 1

1

我认为如果您在内核线程中运行,则可以使用 filp_open 或其他一些函数来获取文件操作指针,然后您可以通过 file_operations 指针使用“正常”调用。

适用于您在“正常”上下文中运行 - “用户”进程或可能的内核线程,如果您处于某些“不寻常”上下文中,它肯定无法正常工作。

在正常任务中,这些调用可能会被阻塞,一切都会“正常工作”。我认为。我已经用套接字尝试过它并且它有效。

您可能会遇到挂载文件系统的问题,因为内核线程可能会获得一个包含很少(或没有)文件节点的命名空间。这可能意味着在用户空间中打开设备并以某种方式通过它会更容易。

还要注意内核中有限的堆栈大小。

于 2012-05-07T01:32:43.240 回答