2

使用 VxWorks 时,我们试图从实时进程访问内存映射的 I/O 设备。
由于 RTP 具有内存保护,我如何从一个访问我的 I/O 设备?

4

1 回答 1

4

您可以使用两种方法从 RTP 访问 I/O 映射设备。

I/O 子系统(首选)

您实际上创建了一个小型设备驱动程序。该驱动程序可以集成到 VxWorks 的 I/O 子系统中。集成后,RTP 只需使用标准 I/O 操作即可使用驱动程序:打开、关闭、读取、写入、ioctl。

请注意,“创建设备驱动程序”并不一定很复杂。它可以像为 ioctl 函数定义一个包装器一样简单。有关详细信息,请参阅 ioLib。

直接映射内存(不推荐)

您可以通过 sdOpen 调用创建一个共享内存区域。创建共享内存时,您可以指定物理地址应该是什么。指定地址为您设备的 I/O 映射区域,您可以直接访问该设备。

问题是共享内存区域是任何空间都可以使用的公共对象,直接在硬件上进行操作与 RTP 背后的理念背道而驰。

于 2008-09-22T03:21:49.540 回答