在MATLAB环境下实现对硬件资源的访问
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
) 应用实例分析
UB;<1G>@ V <=;B= E 4 W UB;<1G>@ X )@* E 4 X Y 7 $./ 文 件 的 头 文 件 7 Y UB;<1G>@ V )@)=+- E 4 W UB;<1G>@ V 5D>B= E 4 W UB;<1G>@ V 5D>1BF E 4 W UB;<1G>@ V CB;>=C5 E 4 W Y 7 调 用 Z*H 程 序 需 要 的 头 文 件 7 Y >@[B;@ S=DZ*H UB;<1G>@ X ),3>@\ E 4 X UB;<1G>@ X CB;B=<D1 E 4 X I%SH’. 4H@\B<@ ] B;D >B)5 8 ! 9 ^ _ ‘"aQ 6 # b ] G;5BT;@> 54=+D %HH,D, # 8 P#a! 9 ] Y 7 申请缓冲区 7 Y G;5BT;@> 54=+D 7FG[[ # 6 7FG[[ ! ] B;D 3=B;D5 ] Y 7 关口函数 7 Y \=B> )@*OG;<DB=; 2 B;D ;145 6 )*%++,- 73145 8 9 6 B;D ;+45 6 <=;5D )*%++,- 73+45 8 9 : _ >=GF1@ 7* 6 7- ] G;5BT;@> 54=+D 7D@)3 ] >=GF1@ c ] B;D ;* 6 ;- 6 ;c 6 ,>d)=>@ 6 5D,DG5 6 )+=C5 6 ;<=15 6 <4,;L ;@1;G) 6 B 6 e ] [1=,D %HO+@ 6 OB1D@+O+@ ] G;5BT;@> 54=+D B;D ,>5D=31 6 ,>5D=34 ] Y 7 调 用 Z*H 程 序 需 要 的 变 量 声 明 7 Y JZfKH B;(G[ 8 # 9 ] Y Y FG[[@+ [=+ 5D+G<D 3=B;D@+ D= Z*H HAfgH g@DK;[= 8 ! 9 ] Y Y FG[[@+ D= +@<@B\@ >, D,
$%&’%( 环 境 提 供 了 $+, - 文 件 , 利 用 该 文 件 可 以 调 用 用 户 自 己 的 . 语 言 或 /01&1%2 语 言 程 序 , 就 像 调 用内部函数一样方便, 这 些 程 序 是 $%&’%( 编 译 器 自
身 可 以 加 载 和 运 行 的 动 态 连 接 子 程 序 库 。本 文 主 要 就 如 何 利 用 $+, 文 件 实 现 在 3 456789 环 境 下 对 数 据 采 集硬件资源的控制和访问。
V746 MI</A5NB475 > 45B 5KG9 O M<%JJFH W@KG9 P R O *5B 5JG9 O .759B M<%JJFH W@KG9 P R ? 其 中 5JG9 O 5KG9 分 别 表 示 输 入 : 输 出 ( 右端 : 左端) 参 数 数 目 X W@KG9 P R O W@JG9 P R 分 别 表 示 指 向 左 端 输 出 :
摘 要 : 在 $%&’%( 环 境 下 对 硬 件 资 源 如 * : 0 端 口 或 存 储 单 元 进 行 访 问 的 方 法 进 行 讨 论 , 通过
$+, 程 序 的 设 计 , $%&’%( 可 以 访 问 硬 件 资 源 , 与 硬 件 进 行 数 据 交 换 , 也 可 以 在 外 部 程 序 中 调 用 $%& ’%( 的 函 数 。在 $+, 程 序 中 需 要 将 $%&’%( 下 的 数 据 格 式 进 行 转 换 为 . 语 言 可 以 处 理 的 数 据 类 型。最后, 结 合 应 用 实 例 说 明 $+, 程 序 的 设 计 。 关 键 词 : 硬 件 资 源 访 问 $%&’%( $+, 程 序
231456 73145 89:6 ;+456 73+45 896 <4,+ 7<=)),;> ? 其 中 31456 731456 ;+456 73+45 等 参 数 意 义 ;,)@: , 和 前 述 参 数 意 义 相 同 , 而 7<=)),;> ?;,)@ 为 指 令 字
符串的指针, 该函数在调用成功以后6就返回 " 值。 反 之, 则返回非零值。 在 AB;>C=C5 平 台 下 , 要 生 成 $./ 文 件 , 就必须先 为 编 译 器 安 置 选 项 文 件 )@*=3D E F,D , 通 过 5@DG3 开 关 可 以进入选项配置程序,只要按照程序提示内容进行, 就可完成对编译器的选项配置。在此之后要把外部
#C
单 片 机 综 合 服 务 网 !"#$ 拨 入 电 话 ( %&% ) ’())%*+%
《 电子技术应用》!""" 年第 #! 期
计算机应用
右端输入变量的指针, 这 两 个 变 量 具 有 $%&’%( 特 有 的 数 据 结 构 )*%++,- 形 式 。 在 $./ 程 序 中 , 也 可 以 调 用 $%&’%( 函 数 或 用 户 自 定 义 的 函 数 。 调 用 的 指 令 为 )*0,11$%&’%( 结 构 和 单 元 阵 列 是 $%&’%( N E " 下 的 新 的 数 据 格 式 , 将 它 们 传 递 到 $./ 文 件 中 就 和 传 递 其 它 类 型 的 数 据 一 样 简 单 , 只 不 过 应 注 意 调 用 函 数 )*M@DOB@1> 和
$./ 的 0 语 言 程 序 的 路 径 加 入 到 $%&’%( 目 录 路 径 , 这 样 只 要 键 入 $./ 8 应 用 程 序 名 0 9 就 可 以 编 译 生 成 带 有 H’’ 扩 展 名 的 $./ 文 件 。 要 调 用 $./ 程 序 就 和
调 用 一 般 的 $%&’%( 内 部 命 令 一 样 。 由 于 $%&’%( 程 序解释器当在同一目录下遇到具有相同名字的 $ 文 件 和 $./ 文 件 时 , 首 先 执 行 $./ 文 件 ; 而 使 用 I.’J 命令时, $%&’%( 首 先 查 找 $ 文 件 , 这 样 就 可 以 用 $ 文 件 对 $./ 文 件 进 行 注 释 。
$%&’%( 语 言 是 一 种 高 性 能 的 数 值 计 算 和 可 视 化
软件, 它集数值分析、 矩阵运算、 信号处理和图形显示 于一体, 构成了一个方便的、 界面友好的用户环境。 尽 管 $%&’%( 本 身 的 编 程 和 数 据 处 理 的 环 境 是 完 整 的 和自成体系的, 可经常在这种环境下, 仍有必要与外 部的程序和数据进行通讯和数据交换, 如需要控制数 据采集板的硬件, 读取采集后存于数据缓存区的数据 函数来支持这 等; 为此它提供了应用程序接口( %)* ) 样的操作,这样可以利用该函数来访问硬件资源。 令; 局部解除对该端口截获; 代替应用程序执行 *:0 指令。如果 *: 0 端口被保护,则应用程序需要利用 ;<= 程 序 进 行 访 问 , 否 则 应 用 程 序 可 以 直 接 进 行 访 问 。系 统 初 始 化 完 毕 后 , 没 有 ;<=9 申 请 要 截 获 的 * : 0 端 口 对 应 用 程 序 来 说 就 是 可 直 接 使 用 *5@AB : 0AB@AB 指 令进行访问。 对内存单元的访问要复杂一些,一般情况下硬件 内存 使 用 的 是 物 理 地 址 如 = C"" : " 。而 在 3 456789 中 , 采用平板模式, 利用分页式的内寸管理方案, 即内存 段 起 始 地 址 为 ", 而偏移地址是线性地址, 这样要访 问实际的物理地址, 就要先将物理地址变换为线性地 址, 而后利用指针对线性地址进行操作, 就如同对其 可以调用 它 内 存 单 元 进 行 操 作 一 样 。 在 3 456789 中 ,
ቤተ መጻሕፍቲ ባይዱ
! "#$%&’( 环 境 下 对 硬 件 资 源 的 访 问
我 们 有 时 可 能 需 要 在 $%&’%( 下 直 接 操 作 * : 0 端口,或者自己设计了专用的数据采集硬件设备并在 希望能够访问这些硬件资源。由于 $%&’%( 下 使 用 , $%&’%( 是 在 3456789 环 境 下 运 行 , 要 在 它 的 环 境 下实现对硬件资源( 如 * : 0 端口或存储单元) 的访问, 就 有 必 要 了 解 3456789 下 对 硬 件 进 行 操 作 的 原 理 。 在 3456789 中 , 操作系统对 * : 0 端口进行保护, 它 将检查是否允许当前程序对这个端口进行操作, 如果 允许, 操作系统就代为执行 *:0 指令; 否则, 操作系 统就会采取相应处理步骤, 要么中止该程序, 要么向 用户报警。 虚拟机管理 在 3456789 中 , 真 正 的 核 心 是 ;$$ ( 器) 和 ;<= > 虚 拟 设 备 驱 动 程 序 ? , 它们工作在特权级 " 上, 控制着整个系统的运转。 正 是 ;$$ 和 ;<= 一 起 负 责管理 * : 0 端口操作。系统正常运转后, 如果应用程 序 执 行 了 # 条 * : 0 指 令 , ;$$ 接 收 到 这 个 消 息 后 , 它 将 调 用 曾 申 请 截 获 该 端 口 的 ;<= 提 供 的 处 理 函 数。 此 时 ;<= 可 能 会 根 据 程 序 的 需 要 选 择 采 取 以 下 四 种动作之一:忽略这条 * : 0 指令;仿真执行 * : 0 指
D=E 中 的 $F@)GH9&7’45IFJ 服 务 函 数 将 物 理 地 址 转 换 为 线 性 地 址 , 也 可 以 利 用 现 有 的 ;<= 程 序 进 行 转 换 , 如 使 用 ;B77K9= 公 司 的 $%)=+; L ;,= 。
) *+,-+. 环 境 下 */0 程 序 的 设 计
P F O Q O N …… R S TA5N > 6 O I O T …… ? 其中, F, Q, N 为左端变量,表示函数调用后要返 回的参数值, 而 6, 表示调用函数 I, T 等为右边变量,
时要送往函数的参数值。 在 $+, 程 序 中 关 口 函 数 总 是 为 MI</A5NB475 , 其变 量和格式为U
)*M@D0@11 返 回 的 是 指 向 )*%++,- 类 型 的 指 针 , 而 后 可
以 调 用 )*M@DH,D, 来 获 取 真 正 的 数 据 。对 复 数 而 言 , 可 以 分 别 调 用 )*M@DJ+ 和 )*M@DJB 来 获 取 指 向 真 正 的 实 部和虚部数据的指针。 要处理 P 位、 在 $./ 函 数 中 , #Q 位 和 R! 位 数 据 , 则 可 以 先 用 )*0+@,DSG)@+B<%++,- 来 建 立 数 组 , 在 )*L 01,55KH 中 定 义 要 创 建 数 据 的 类 型 , 一 旦 建 立 了 数 组 , 可 以 用 )*M@DH,D, 和 )*M@DK),TH,D, 函 数 分 别 获 取 实 部 和虚部的指针, 而 后 进 行 操 作 。这 样 就 可 以 在 $./ 函 数 中 处 理 $%&’%( 中 不 易 处 理 的 P 位 、 #Q 位 和 R! 位 要将其变为双 整数数据, 当 数 据 传 送 回 $%&’%( 后 , 精度数据。对于多维数组, 也可以按照相同的方式处 理, 只不过注意数据是按列存储, 计算下标时要注意。
而在windows中内存采用平板模式利用分页式的内寸管理方案即内存段起始地址为0而偏移地址是线性地址这样要访问实际的物理地址就要先将物理地址变换为线性地址而后利用指针对线性地址进行操作就如同对其它内存单元进行操作一样
计算机应用
在 $%&’%( 环境下实现对硬件资源的访问
北京航空航天大学( #"""CY ) 李 传 日 齐 华 袁 宏 杰
如 . $+, 程 序 提 供 了 $%&’%( 和 外 部 应 用 程 序 ( 语言程序) 的接口, 它自身包含两部分代码: ( 执行 #) 外部程序中的计算和输入:输出命令的程序代码; ( ! ) 通 过 入 口 函 数 MI</A5NB475 及 其 参 数 @JG9 O 5JG9 O @KG9 5KG9 将 $%&’%( 环 境 下 的 变 量 和 数 据 与 应 用 程 序进行接口, 这部分程序称为关口程序。 当 $%&’%( 要 执 行 子 程 序 调 用 时 , 常 用 以 下 命 令 格式: