紧固式虚拟机在智能相机中的设计与实现
虚拟机(VirtualMachine,VM)技术是把虚拟资源或状态映射成真实资源,并使用真实机器的指令来执行虚拟机指令[1]。虚拟机主要分为进程虚拟机和系统虚拟机。进程虚拟机主要作用是使一个平台的软件或程序在另一个平台正常运行,文献[2]实现了一种基于PAL的进程虚拟机Elavm,提高了Server对客户线程的响应。系统虚拟机的主要作用是使单个主机硬件可以支持多个客户机操作系统环境,文献[3]的系统虚拟机主要用在服务器中,以实现不同应用程序的完全隔离。
在机器视觉中采取以上两种结构的虚拟机均有其不足之处:进程虚拟机不便实现虚拟机与宿主软件的数据共享,而系统虚拟机无法满足实时性要求。在某些工业场合,采用固有的模块进行方案设计时,由于限制了模块间的资源访问,实现会相对困难。因此,在机器视觉中引入虚拟机技术是设计方案灵活多变、实现模块调用、访问组态软件资源、扩展机器视觉功能的重要前提。目前,只有少数几家国外知名公司(COGNEX、NI等)在机器视觉中引入虚拟机,以实现访问采集到的数据、访问和修改产品参数、与外部设备建立通信。
文中开发了一个针对嵌入式智能相机(以下简称智能相机)的紧固式虚拟机(Fastening VirtualMachine,FVM),以实现模块调用、动态访问其他工具资源。由于该虚拟机是应用在智能相机上,其与硬件密切相关,故取名为紧固式虚拟机。
1 FVM设计原理
为克服进程虚拟机与系统虚拟机的不足,文中设计了一种新的虚拟机结构,其逻辑分层如图1所示。在智能相机中,应用程序进程(APP)与FVM在DSP中运行, FVM是一个单独进程,当脚本工具执行时会启动该进程,并与APP中其他模块交互,执行完毕后将结果返回APP。将FVM作为一个单独进程,相比传统的进程虚拟机既可以增加APP与OS的通信,又不失FVM与OS的交互,使其更能适合DSP+FPGA结构的智能相机。APP中工具模块如果完全依托FVM来解释运行效率会十分低下,只有当某些特殊功能(如位操作、硬件访问、用户自定义函数等)无法靠现有的工具模块完成时才使用FVM,因此文中采取图1中的分层结构。
FVM结构如图2所示。主要由类装载、内存、本地方法接口、仿真引擎4部分组成[4]。
由于DSP无法识别class文件,因此在PC组态软件下载到智能相机的不是class文件,而是一个包含该class文件信息的字节码数组ByteCode。字节码数组经过类装载器装载到内存中,根据信息的不同,其装载后的内容存放在内存的不同区域,该区域主要有方法区、堆和本地方法库。在FVM运行时建立运行时栈和本地方法栈。为了提高运行速度,FVM以本地方法(采用其他语言实现的方法,非Java语言)的方式实现了数学库、机器视觉库。因为方法本地化后,其在运行时会编译成与系统相关的机器码。本地方法还有助于用户扩展模块,采用自己的算法。
相关文章
- 2021-10-26基于频域滤波数字均衡器的设计
- 2024-02-05激光干涉仪在机床位置精度检测中测量不确定度分量的分解
- 2022-07-15角膜接触镜专用顶焦度标准器的研制
- 2023-08-25汶川Ms8.0地震前的潮汐变化分析
- 2024-01-04探究型课程教学模式在工程力学教学中的实践
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。