2009-10-26 2 views
2

Windows CE 운영 체제가 ARMV4 또는 ARMV4I 또는 ARMV4T를 대상으로하는지 확인하는 방법이 있습니까?Windows CE 운영 체제가 특정 프로세서 유형 (예 : ARMV4/ARMV4I/ARMV4T)에 대해 빌드되었는지 런타임에서 결정

내가 알 수있는 한, 엄지 명령 세트의 존재 여부 만 확인할 수 있도록하지만, 나는 coredll의 IsProcessorFeaturePresent() API 호출을 알고있다.

내가 정말로 감지하고 싶은 것은 O/S가 인터 워킹 (ARMv4I의 I)을 기반으로 만들어 졌는지 (가정하지 않고)입니다. PF_ARM_THUMB을 사용하면 ARMV4T와 ARMV4I를 구분하지 않습니다.

감사합니다.

답변

0

프로세서에 대한 자세한 내용은 IOCTL_PROCESSOR_INFORMATION으로 KernelIoControl API를 사용해 볼 수 있습니까?

+0

이 호출을 검사하고 Windows CE 4.20 장치 (인터 워킹 기능이없는 ARMV4)에서 PROCESSOR_INFO 구조체는 여전히 장치가 PROCESSOR_16BITINSTRUCTION을 통해 16 비트 명령어를 지원함을 나타냅니다. –

0

OS에서 액세스 할 수있는 기능에 대해 항상 BX LR을 쉽게 사용할 수 없습니까?

인터 워킹을 활성화하면 Microsoft는 비 인터 워킹 ARM 아키텍처에 대한 ARM 목표를 준수하고 있습니다. 16 비트 및 32 비트 코드는 모든 ARM 플랫폼에서 지원되어야합니다.

C++ try/catch를 사용하여 확인할 필요가있는 기능입니다. 지원되지 않는 기능을 사용하여 예외를 발생시킬 수 있으면이 방법이 유용합니다. 그러나 인터 워킹을 확인하기 위해이를 제기하는 것은 어렵습니다.