浅淡WINCE环境下操作ARM芯片GPIO的方法

  • 格式:pdf
  • 大小:241.05 KB
  • 文档页数:2

8 8・
信息产 业
浅淡 WI C N E环境下操作 A M芯 片 G I R PO的方法
李 清峰
( 尔 滨威 克 科技 有 限公 司 , 龙 江 哈 尔滨 10 0 ) 哈 黑 5 0 0
摘 要 : 此 对 如何 在 WI C 在 N E环 境 下 操 作 A M 芯 片 G I 行 了技 术 原 理 与程 序 设 计 的详 细 讨 论 与 阐 述 。 R PO进 关 键 词 : R G I WI C A M; PO; N E环 境
应用程序仍然可以使用这两个函数来访问所有这些虚拟空间 ,对于 18 95年 , oe l n和 S v ub r 计 了 他 们 自己 的 第 一 不太复杂 的程序 , R grWio s t eF re 设 e 甚至可 以省略写驱动直接在应用程序中操作 , 其实 代 3 位 、M 的处理器 , 2 6 Hz 用它做 f了一台 R S } J IC指令集的计算机 , 在 C 6 简 E 之前 ,这些驱动也是工作在用户态的。下面以操作 S m u g a sn 称 A M( cr IC Mah e 。 就是 A M 这 个 名 字 的 由来 。 IC ¥ C 4 0的 G I R A on RS ci )这 n R RS 3 2 1 PO为例 , 讲述这个步骤 : a . 首先 在 B P中 的 s4 0 的 全称 是 “ 简 指 令 集 计 算 机 ”rd cd i t co e cm u r , 精 (eu e n r t n st o p t ) su i e S 2 1. 件 ,找 到 虚 拟地 址 映 射 以及 操 作 h文 它支持 的指 令 比较简单 , 以功耗 小 、 所 价格便 宜 , 特别合适 移动设 G I PO的寄存器结构体 ( 这个在 自己制作 一些特殊设 备的 B P时 , S 会 备。 依 据需 要 而发 生 更 改 ) / /Re itr : IO p r gse s / ot 2 1 年初 , 01 微软公 司宣布 , 版 Widw 将正式支持 A M处 下一 no s R #de ne I i f OP_BAS E Ox 60 00 / 0 56 00 0 B1 00 / x 0 00 理器 。 这是计算机工业发展历史上的一件大事 , 标识着 X 6 8 处理器的 主导 地 位发 生 动 摇 。 目前 在 移 动设 备 市 场 , R 处 理 器 的市 场 份 额 A M tp d fs u t { ye e t c r un ine it r sg d n GPACON ; / /O0 超 过 9 %; 0 在服 务 器 市场 , 年 (0 1 ) 会 有 2 G z 服务 器 上 今 21年 就 . H 的 5 市 ; 面 电脑 市 场 , 在 又有 了微 软 的支 持 。A M 成 为 主 流 , 怕 在桌 现 R 恐 u sg e n r ADA n i n d it GP T; 指 日可待。作为 Ⅱ 人 , 应该紧跟 主流 , 率先掌握 A M 的软件开发技 R u s e n r A 2 ; n i d i P D1 ] n g t 1 un i n d n r sg e it GPBCON; / 1 / 0 巧, 才能在 A M 的时代成为 I R T的主流 。接下来就针对 WI C N E环境 下操 作 A M 芯 片 G I 方 法 及 A M 芯 片 的程 序 开 发 、编程 等 问 R PO的 R 题展 开讨 论 。 un in d i t r TATUS3; / sg e n GS /B8
Hale Waihona Puke 引言 一 1 W l CE下 I 操 作 N , 0
u sg e n r T US n in d it GS AT 4; / /BC
对外设进行 I / O操作实际上也就是读写外设 的寄存器 , 而通常使 } Pe ; I rg O 用的 X 6或者 A M处理器在硬件上决定 了 wne系统启动后 , 8 R i c 无法 将这 些 复 制 备用 。 直 接访 问物 理 地址 , 因此需 要 做 一些 工 作来 实 现 I / 作。 O操 b E C中建立一个应用程序工程 , . V 在 由于 Vn a o y iul p 函数没有 C 首先 ,要理解 wn o sC idw E下的地址 映射机制。wne ic 有两种地 在头文件中定义 , 但是在 crd1i oel b里面提供了符号连接 , 以, . 1 所 这里 址 : 地 址和 虚 拟地 址 。不 同架 构 的 C U 硬 件 上 的 区别 导 致 地址 直 接 添加 一 个 函数 定 义就 O 了。 物理 P K #f e c l s ls i f d pu pu 映 射也 不 同 。MIS和 S x P H 处理 器 , 采用 MMU, 在 C U和 内核 不 直接 P 里定义 1 G的物理地址 ; X 6和 A M带有 MMU单元 , O MA — 而 8 R 在 E d elr ” xe n C” desa l 中定 义 物 理 地 址 到 虚 拟 地 址 间 的映 射 关 系或 者 是 O rsTbe S启 { #e i ndf 动 后调 用 C et tiM p ig N Cet t i p i r e a c a p 和 K ra Sac pu aS t n e t Ma g来 实现 从 虚 拟地址到物理地址 的静态映射。 经过静态映射的地址 , 可以由操作系 B OOL Vi n l p (L VOI r aCo y P t D,L VO D,DWORD,DWO P I RD ) ; 统内核用于 IR访 问设备 。 S 如果要在应用程序中访 问外设 , 必须在物 #f e c l s l s i f d pu pu 理 地 址 和 虚 拟地 址 问 建 立 动 态 映 射 关 系 ,可 以使 用 Vr a lc和 iul l t Ao 】 Vr a oy或 者 直接 调用 M aIS ae函数 ) 实 现 。 iul p( t C mm pop c 来 # ndf e i 其次, 如果是操作通过总线挂接的 I / O或者存储器 , 必须先把总 同时将步骤( ) 1里面的定义复制到这里。 线 地 址 转化 成 C U上 的系 统 地 址 ,再 做 物 理 地 址 到 虚 拟 地 址 的 映 P e 按照驱动程序里面操作 的方法在应用程序 中写 G I . PO操作 函 射 。这 里 需 要查 C U的 D tset 出所 要 操作 的 I P aahe, 找 / O地址 . 调用 数 。 先 H L r s t uA des) 总 线地 址 转化 成 C U上 的系 统地 址 , A Ta l e s d rs(把 naB P 再 A: 定义一个寄存器结构体变量 调 用 M maIS ae函数 实 现 虚 实映 射 ; 可 以使 用 Tas uA d— m pop e 也 rnB s dr v lt e OP e v p OPRe s oai I r g l I g; T Vr a(直接把总线上的地址转化成系统的虚拟地址。 o iul) t B 给这个变量分配空间并且 映射到寄存器的空间上 : 第 三 ,在一 般 的应 用 程 序 中访 问 I 是访 问它 的缓 存 段 虚 拟地 / O pO R g I P e s= (o te I P e V r a l c 0 s ef I P e ) v l i O rg ) iu l l ( , zo (O rg , al t Ao i RES ERVE , PAGE N 址 , 动 中必 须 访 问无 缓存 段 虚拟 地址 。简单 来 说无 缓存 段 虚 拟地 M EM 而驱 OACC S ; E S) 址 = 存 段 虚拟 地 址 + x 0 0 00 缓 0 20 0 0 。 i pI ff v OPRe s =: NULL) g 总结 起 来 , 果 是 wne内核 ( H L 访 问外 部 I 只需 要 在 如 ic 如 A ) / O, { O MA desal 中定 义物 理 地 址 到 虚 拟地 址 间 的映 射 关 系 就 可 以 E d rs be T D B G G ( ,( E T (vpO R g i o lct E U MS 1 T X ”_ IP es s t l a— n a o 了; 如果是应用程序或者驱动要访问 I 要做的工作包括 :. C U e k x ) ) / O, a 住 P dn ” ) ;  ̄ r tr TRUE; eu n 物理地址和虚拟地址问做一个动态映射 ;. h 对虚拟地址进行操作 。