使用VxWorks时,我们尝试从实时进程访问内存映射的I / O设备 由于RTP具有内存保护功能,如何从一个接入I / O设备?
答案 0 :(得分:4)
您可以使用两种方法从RTP访问I / O映射设备。
I / O子系统(首选)
您实质上是创建一个小型设备驱动程序。该驱动程序可以集成到VxWorks的I / O子系统中。集成后,只需使用标准I / O操作即可为RTP提供驱动程序:打开,关闭,读取,写入,ioctl。
请注意,“创建设备驱动程序”不一定非常复杂。它可以像为ioctl函数定义包装一样简单。有关详细信息,请参阅ioLib。
直接映射内存(不推荐)
您可以通过sdOpen调用创建共享内存区域。创建共享内存时,您可以指定物理地址应该是什么。指定地址作为设备的I / O映射区域,您可以直接访问设备。
问题在于共享内存区域是任何空间可用的公共对象,而直接在硬件上查找违背了RTP背后的理念。