在MATLAB环境下实现对硬件资源的访问
发布时间:2008/5/27 0:00:00 访问次数:719
来源:《电子技术应用》
在matlab环境下实现对硬件资源的访问 摘要:在matlab环境下对硬件资源如i/o端口或存储单元进行访问的方法进行讨论,通过mex程序的设计,matlab可以访问硬件资源,与硬件进行数据交换,也可以在外部程序中调用matlab的函数。在mex程序中需要将matlab下的数据格式进行转换为c语言可以处理的数据类型。最后,结合应用实例说明mex程序的设计。 关键词:硬件资源 访问 matlab mex程序
matlab语言是一种高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境。尽管matlab本身的编程和数据处理的环境是完整的和自成体系的,可经常在这种环境下,仍有必要与外部的程序和数据进行通讯和数据交换,如需要控制数据采集板的硬件,读取采集后存于数据缓存区的数据等;为此它提供了应用程序接口(api)函数来支持这样的操作,这样可以利用该函数来访问硬件资源。matlab环境提供了mex-文件,利用该文件可以调用用户自己的c语言或fortran语言程序,就像调用内部函数一样方便,这些程序是matlab编译器自身可以加载和运行的动态连接子程序库。本文主要就如何利用mex文件实现在windows环境下对数据采集硬件资源的控制和访问。
1 windows环境下对硬件资源的访问
我们有时可能需要在matlab下直接操作i/o端口,或者自己设计了专用的数据采集硬件设备并在matlab下使用,希望能够访问这些硬件资源。由于matlab是在windows环境下运行,要在它的环境下实现对硬件资源(如i/o端口或存储单元)的访问,就有必要了解windows下对硬件进行操作的原理。
在windows中,操作系统对i/o端口进行保护,它将检查是否允许当前程序对这个端口进行操作,如果允许,操作系统就代为执行i/o指令;否则,操作系统就会采取相应处理步骤,要么中止该程序,要么向用户报警。
在windows中,真正的核心是vmm(虚拟机管理器)和vxd(虚拟设备驱动程序),它们工作在特权级0上,控制着整个系统的运转。正是vmm和vxd一起负责管理i/o端口操作。系统正常运转后,如果应用程序执行了1条i/o指令, vmm接收到这个消息后,它将调用曾申请截获该端口的vxd 提供的处理函数。此时vxd可能会根据程序的需要选择采取以下四种动作之一:忽略这条i/o指令;仿真执行i/o指令;局部解除对该端口截获;代替应用程序执行i/o指令。如果i/o端口被保护,则应用程序需要利用vxd程序进行访问,否则应用程序可以直接进行访问。系统初始化完毕后,没有vxds申请要截获的i/o端口对应用程序来说就是可直接使用input/output指令进行访问。
对内存单元的访问要复杂一些,一般情况下硬件使用的是物理地址如d800:0。而在windows中,内存采用平板模式,利用分页式的内寸管理方案,即内存段起始地址为0,而偏移地址是线性地址,这样要访问实际的物理地址,就要先将物理地址变换为线性地址,而后利用指针对线性地址进行操作,就如同对其它内存单元进行操作一样。在windows中,可以调用sdk中的mapphystolinear服务函数将物理地址转换为线性地址,也可以利用现有的vxd程序进行转换,如使用vtoolsd公司的mapdev.vxd。
2 matlab环境下mex程序的设计
mex程序提供了matlab和外部应用程序(如c语言程序)的接口,它自身包含两部分代码:(1)执行外部程序中的计算和输入/输出命令的程序
来源:《电子技术应用》
在matlab环境下实现对硬件资源的访问 摘要:在matlab环境下对硬件资源如i/o端口或存储单元进行访问的方法进行讨论,通过mex程序的设计,matlab可以访问硬件资源,与硬件进行数据交换,也可以在外部程序中调用matlab的函数。在mex程序中需要将matlab下的数据格式进行转换为c语言可以处理的数据类型。最后,结合应用实例说明mex程序的设计。 关键词:硬件资源 访问 matlab mex程序
matlab语言是一种高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境。尽管matlab本身的编程和数据处理的环境是完整的和自成体系的,可经常在这种环境下,仍有必要与外部的程序和数据进行通讯和数据交换,如需要控制数据采集板的硬件,读取采集后存于数据缓存区的数据等;为此它提供了应用程序接口(api)函数来支持这样的操作,这样可以利用该函数来访问硬件资源。matlab环境提供了mex-文件,利用该文件可以调用用户自己的c语言或fortran语言程序,就像调用内部函数一样方便,这些程序是matlab编译器自身可以加载和运行的动态连接子程序库。本文主要就如何利用mex文件实现在windows环境下对数据采集硬件资源的控制和访问。
1 windows环境下对硬件资源的访问
我们有时可能需要在matlab下直接操作i/o端口,或者自己设计了专用的数据采集硬件设备并在matlab下使用,希望能够访问这些硬件资源。由于matlab是在windows环境下运行,要在它的环境下实现对硬件资源(如i/o端口或存储单元)的访问,就有必要了解windows下对硬件进行操作的原理。
在windows中,操作系统对i/o端口进行保护,它将检查是否允许当前程序对这个端口进行操作,如果允许,操作系统就代为执行i/o指令;否则,操作系统就会采取相应处理步骤,要么中止该程序,要么向用户报警。
在windows中,真正的核心是vmm(虚拟机管理器)和vxd(虚拟设备驱动程序),它们工作在特权级0上,控制着整个系统的运转。正是vmm和vxd一起负责管理i/o端口操作。系统正常运转后,如果应用程序执行了1条i/o指令, vmm接收到这个消息后,它将调用曾申请截获该端口的vxd 提供的处理函数。此时vxd可能会根据程序的需要选择采取以下四种动作之一:忽略这条i/o指令;仿真执行i/o指令;局部解除对该端口截获;代替应用程序执行i/o指令。如果i/o端口被保护,则应用程序需要利用vxd程序进行访问,否则应用程序可以直接进行访问。系统初始化完毕后,没有vxds申请要截获的i/o端口对应用程序来说就是可直接使用input/output指令进行访问。
对内存单元的访问要复杂一些,一般情况下硬件使用的是物理地址如d800:0。而在windows中,内存采用平板模式,利用分页式的内寸管理方案,即内存段起始地址为0,而偏移地址是线性地址,这样要访问实际的物理地址,就要先将物理地址变换为线性地址,而后利用指针对线性地址进行操作,就如同对其它内存单元进行操作一样。在windows中,可以调用sdk中的mapphystolinear服务函数将物理地址转换为线性地址,也可以利用现有的vxd程序进行转换,如使用vtoolsd公司的mapdev.vxd。
2 matlab环境下mex程序的设计
mex程序提供了matlab和外部应用程序(如c语言程序)的接口,它自身包含两部分代码:(1)执行外部程序中的计算和输入/输出命令的程序
热门点击
- 由ICL8308制作的多波形信号发生器
- 采用运算放大器设计正弦波振荡器
- 电容模块在缓冲电路中的应用
- EPC-755A微型光电编码器及其应用
- LVDS输入电平问题
- 相移谐振控制器UC1875系列应用
- 电子鼓音响芯片HT3670C及应用
- 基于FPGA的多种形式分频的设计与实现
- 图像数字化电路中的高精度行锁相象素时钟发生器
- AMBE-100语音编码-解码芯片及其应用
推荐技术资料
- 泰克新发布的DSA830
- 泰克新发布的DSA8300在一台仪器中同时实现时域和频域分析,DS... [详细]