首页 > 嵌入式软件 > WinCE

由于桌面Windows绝大多数情况下运行于X86平台上,也就不存在不同平台的可移植性问题。然而Windows CE运行在四大架构(X86,SHx,MIPS,ARM)的CPU上,编写应用程序时就需要考虑它的移植。

本文引用地址: http://embed.21ic.com/software/wince/201803/51080.html

以下通过在WinCE系统下访问物理地址,来看看如何编写可移植性较好的应用程序。

首先必须明确两个概念。

1. 在X86平台下才有I/O地址这一说,在其他体系的CPU(如ARM/MIPS)下是没有I/O端口的。因为X86下把I/O和存储器分开编址,导致其有两种地址;而别的CPU是把两者统一编址,即把I/O映射到存储器上。

2. WinCE的存储管理是通过MMU实现的,在系统启动后,我们只能访问虚拟存储空间,必须经过MMU。但是在X86下,访问I/O口和存储器走的地址总线不同,不用经过MMU。

比如我们想要访问挂在某总线上物理地址为360h的端口,对于X86平台我们可以直接嵌入汇编操作物理地址, 或者使用地址指针访问物理地址。但对于其他平台,我们必须先作一个物理地址到虚拟地址的映射,然后操作其虚拟地址。这样显然程序的可移植性不好,我们需要定义 #ifdef __x86....#elif defined __arm 使得在不同平台下程序能够顺利运行。

如果使用下面的代码我们就可以不用这么费劲的定义不同平台了:

先定义

 

10.jpg

随后对于端口的操作( ioPortBase),我们也可以充分挖掘它的可移植性。通过使用READ_PORT_UCHAR, WRITE_PORT_UCHAR这些wince下的宏来实现端口读写。而不是在X86下用指针操作(不仅移植性差,而且容易产生问题)。CE下的宏在内部是封装好的API函数。例如WRITE_PORT_UCHAR这个宏在X86 处理器上转化为一条OUT的汇编指令;而在ARM处理器上会转化成一条对虚拟地址的写指令。

WinCE5.0下可以使用CreateBusAccessHandle(总线注册表路径)+BusTransBusAddrToVirtual来实现总线物理地址到系统虚拟地址的直接变换。这种方式比起使用OEMAddressTable+VirtualAlloc+VirtualCopy方式更具不同平台的可移植性.

换一批

延伸阅读

[疯狂史] 9大曾轰动一时的云计算故障事件

9大曾轰动一时的云计算故障事件

对一些人来说,本文列举的云计算故障可能仅仅表明了云服务提供商在哪些方面需要加强或改进,以便更好地服务于客户。对另一些人来说,这几个例子可能更事关个人,因为你的数据或应用程序说不定实实在在地受到了影响。我们大多数人想必已听说过至少一起引人注目......

关键字:云计算 应用程序 提供商 技术 影响

[新鲜事] 孩子教你学编程:探秘曼罗应用程序学院

孩子教你学编程:探秘曼罗应用程序学院

一个阳光明媚、气温和暖的早上,在硅谷高档住宅区阿瑟顿(Atherton),风险投资者加里·迪尔拉博(Gary Dillabough)家的后院充满了田园风光,草木齐整,到处散发着休闲的吸引力。这里有一个游泳池、一个网球场......

关键字:编程 应用程序

[新鲜事] 我骄傲啊!微信入选“最好的100个iPhone应用”

我骄傲啊!微信入选“最好的100个iPhone应用”

在这个“有史以来最好的100个应用”榜单中,只有一个来自中国,它就是WeChat——微信。......

关键字:科技 应用程序 微信 Facebook

[新鲜事] 基于 Android 原生码的 Facebook 应用程序已进入最后的内测阶段

基于 Android 原生码的 Facebook 应用程序已进入最后的内测阶段

既然 Zuckerberg 已表示用 HTML5 编写 Android 平台的 Facebook 程式是个错误,而且 iOS 平台也早已获得更新,那自然不能让 Android 平台用户等待太久。 据我们的情报来源透漏,Facebook 终......

关键字:Facebook Android 应用程序

[新鲜事] Facebook 将应用程序中心(App Center)正式推向全球使用者

Facebook 将应用程序中心(App Center)正式推向全球使用者

Facebook 从一个月前开始,便已经在数个区域将「应用程序中心(App Center)」带给使用者,但其实全球仍有很多国家还尚未享有这个应用商店的便利之处。不过这情况将有所改变,该公司发言人已经在 Twitter 上宣布,他们......

关键字:Facebook Center App 应用程序

[猎聘集] 程序员最核心的竞争力是什么?

程序员最核心的竞争力是什么?

学习力强的程序员敢大胆地体验尝试新技术,他们的技术栈始终在保持不断地更新。他们能快速把握事物的本质,并判断出它能用来做什么,不能用来做什么。他们拥抱技术升级和革命,因为他们学习并掌握新技术的速度比其他人更快,所以他们永远不用担心失业。......

关键字:程序员 核心竞争力 学习力
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi®和蓝牙®combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14