Регистр безопасной конфигурации Raspberry Pi 1B

Теперь я делаю низкоуровневый инструмент для RPi. И мне нужно получить значение Регистр безопасной конфигурации. Я написал следующую инструкцию mrc p15, 0, r0, c1, c1, 0, чтобы получить это. Но ЦП переходит в режим неопределенных исключений, а значение CPSR равно 0x600001DB.

Инструкция чтения значения SCR - это первая инструкция, выполняемая ЦП.

Я читал ARM1176JZF-S TRM r0p7 несколько раз, но я не нашел никаких ограничений на использование инструкции чтения SCR, за исключением того, что ЦП находится в безопасном привилегированном режиме, но согласно TRM этот ЦП запускается из безопасного привилегированного режима. Если быть более конкретным, начальным режимом является Безопасный режим супервизора.

Я использую следующую команду для выполнения кода с QEMU qemu-system-arm -cpu arm1176 -M versatilepb -m 256 -nographic -kernel start.elf -s -S -monitor stdio

Я не могу понять, что я упустил из виду?


person Vasily Yurchenko    schedule 28.09.2018    source источник
comment
Вы уверены, что qemu точно отражает логику. Что происходит, когда вы работаете на оборудовании?   -  person old_timer    schedule 03.10.2018
comment
Нет, я не уверен, но надеюсь. Что касается железа, то пока не запускал.   -  person Vasily Yurchenko    schedule 04.10.2018


Ответы (1)


Плата QEMU versatilepb не поддерживает TrustZone: она создает ЦП с отключенной этой функцией.

Другие модели плат QEMU поддерживают TZ, если вы хотите поиграть с ним: например, vexpress-a9, vexpress-a15 и raspi2; также "virt", если вы укажете -machine secure = on в командной строке QEMU.

person Peter Maydell    schedule 05.10.2018
comment
Ok. Спасибо. Я попробую. - person Vasily Yurchenko; 06.10.2018