Определение безопасного присутствия XScale - PullRequest
0 голосов
/ 22 марта 2012

У меня есть устройство ARMv5 не XScale (электронный словарь SHARP Brain ™ ) с Windows Embedded CE 6.0, установленной во флэш-памяти NAND, и я использую TCPMP для воспроизведения своих любимых мелодий AAC и MPEG- 4 фильма.

Но когда я запускаю TCPMP, иногда TCPMP зависает. Поэтому я посмотрел на TCPMP и обнаружил, что при выполнении этого кода происходит зависание.

CheckARMXScale PROC
mov r0,#0x1000000
mov r1,#0x1000000
mar acc0,r0,r1 ; <--- here
mov r0,#32
mov r1,#32
mra r0,r1,acc0
cmp r0,#0x1000000
moveq r0,#1
movne r0,#0
cmp r1,#0x1000000 ;64bit or just 40bit?
moveq r0,#2
mov pc,lr

Этот код определяет, присутствует ли XScale, пытаясь выполнить инструкцию XScale и перехватывая исключение, если было сгенерировано исключение «Undefined Instruction».

Проблема в том, что системе не удается правильно передать это исключение в TCPMP, что приводит к зависанию TCPMP. Похоже, что это связано не с Windows CE, а с ошибками драйверов в этом устройстве. Обновления драйверов не ожидаются, поскольку запуск TCPMP на этом устройстве официально не поддерживается.

Я опубликовал эту проблему в 2channel , и некоторые люди утверждали, что этот способ определения наличия XScale не годится, но никто даже не пытался найти лучший способ. Поэтому я погуглил и прочитал Справочное руководство по архитектуре ARMv5 и так далее, но ничего не смог найти. Похоже, что почти каждая программа, использующая набор команд XScale, определяет, присутствует ли XScale таким же образом.

Вопрос в том, можно ли определить, присутствует ли набор команд XScale, без использования каких-либо исключений или какого-либо режима ЦПУ, кроме режима пользователя?

1 Ответ

0 голосов
/ 22 марта 2012
  1. Попробуйте IOCTL_PROCESSOR_INFORMATION

  2. (требуется переключение в режим ядра). Считать регистр CP15 c0, регистр Main ID, также известный как ID Code Register, также известный как ARM CPUID. Старший байт - это разработчик, который будет 0x69 ('i', Intel) для XScale.

Проверьте также эту тему .

...