【问题标题】:Determine at runtime if Windows CE operating system is built against a particular processor type (eg. ARMV4/ARMV4I/ARMV4T)在运行时确定 Windows CE 操作系统是否针对特定处理器类型(例如 ARMV4/ARMV4I/ARMV4T)构建
【发布时间】:2010-12-10 00:17:55
【问题描述】:

有没有办法确定 Windows CE 操作系统是否针对 ARMV4、ARMV4I 或 ARMV4T。

我知道 coredll 上的 IsProcessorFeaturePresent() API 调用,但据我所知,它只允许您确定拇指指令集的存在。

我真正想要检测的是操作系统是否是通过互通构建的(ARMV4I 中的 I) - 不做任何假设。使用 PF_ARM_THUMB 不会区分 ARMV4T 和 ARMV4I。

谢谢!

【问题讨论】:

    标签: embedded arm windows-ce processor


    【解决方案1】:

    您能否尝试使用带有 IOCTL_PROCESSOR_INFORMATION 的 KernelIoControl API 以了解有关处理器的更多信息。

    【讨论】:

    • 我检查了这个调用,在 Windows CE 4.20 设备(没有互通的 ARMV4)上,PROCESSOR_INFO 结构仍然表明设备通过 PROCESSOR_16BITINSTRUCTION 支持 16 位指令。
    【解决方案2】:

    为什么不能简单地将BX LR 用于操作系统可以访问的函数?

    通过启用互通,Microsoft 符合 ARM 的目标,即弃用非互通的 ARM 架构。所有 ARM 平台都应支持 16 位和 32 位代码。

    您可以使用 C++ try/catch 来检查是否需要提供的功能。如果您可以使用不受支持的功能引发异常,这将起作用。但是很难提高它来检查互通性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      • 2020-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多