如何从VxWorks中的RTP访问内存映射的I / O设备(FPGA)?

时间:2020-03-06 14:31:20  来源:igfitidea点击:

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

解决方案

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

I / O子系统(首选)

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

请注意,"创建设备驱动程序"不必太复杂。就像为ioctl函数定义一个包装器一样简单。有关更多详细信息,请参见ioLib。

直接映射内存(不推荐)

我们可以通过sdOpen调用创建共享内存区域。创建共享内存时,可以指定物理地址。将地址指定为设备的I / O映射区域,然后就可以直接访问该设备。

问题在于,共享内存区域是可用于任何空间的公共对象,直接戳硬件与RTP背后的原理背道而驰。