Что я хочу сделать, это попытаться запустить короткий код в Raspberry pi 1 (ARMv6) и получить количество тактов, которые потребовались. Поэтому я должен прочитать регистр счетчика циклов, который находится в CP15 c15. В документе (ARM11->ARM1176->ARM1176JZF-S Technical Reference Manual->System Control Coprocessor->System control processor registers->c15, Cycle Counter Register) говорится, что мне нужно сначала войти в пользовательский режим. Но я понятия не имею, как это сделать.Как получить доступ к пользовательскому режиму в малине pi 1?
В Raspberry Pi 2 (ARMv7) Я знаю, это может быть сделано с помощью модуля ядра из следующего кода:
/* enable user-mode access */
asm ("MCR p15, 0, %0, C9, C14, 0\n\t" :: "r"(1));
, но так как регистры ARMv6 и ARMv7 разные, я не знаю, как напишите сборщик для малины 1. До сих пор я не мог найти ничего об этом в руководстве. Кто-нибудь знает как это делать?
Btw, моя цель - просто получить тактовые циклы запуска кода. Если кто-то знает другие подходы к этому, я тоже рад видеть. Спасибо!
Er, точный текст, на который вы ссылаетесь, является «Доступ к регистру счетчика циклов в режиме пользователя зависит от бит V, см. [C15,« Регистр контроля безопасности для безопасного пользователя и небезопасного доступа »] (http: // infocenter. arm.com/help/topic/com.arm.doc.ddi0301h/Babidacc.html) ", вы не следовали ссылке перекрестной ссылки? (Обратите внимание, что это безопасно). В любом случае использование 'perf' почти наверняка будет лучше, чем разоблачение необработанного глобального счетчика, чтобы попытаться измерить одну задачу, если вы не поймете, почему эта задача будет иногда занимать десятки тысяч циклов дольше, и вы довольны дико неточными данными. – Notlikethat