如何从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背后的原理背道而驰。