Arm 如何在Raspberry pi 1中访问用户模式?

Arm 如何在Raspberry pi 1中访问用户模式?,arm,raspberry-pi,clock,armv6,Arm,Raspberry Pi,Clock,Armv6,我想做的是尝试在Raspberry pi 1(ARMv6)中运行一段短代码,并获取它所花费的时钟周期数。所以我必须读取循环计数器寄存器,它位于CP15 c15中。在document()中,它说我需要首先访问用户模式。但是我不知道怎么做 在Raspberry pi 2(ARMv7)中,我知道这可以通过以下代码的内核模块实现: /* enable user-mode access */ asm ("MCR p15, 0, %0, C9, C14, 0\n\t" :: "r"(1)); 但是由于AR

我想做的是尝试在Raspberry pi 1(ARMv6)中运行一段短代码,并获取它所花费的时钟周期数。所以我必须读取循环计数器寄存器,它位于CP15 c15中。在document()中,它说我需要首先访问用户模式。但是我不知道怎么做

在Raspberry pi 2(ARMv7)中,我知道这可以通过以下代码的内核模块实现:

/* enable user-mode access */
asm ("MCR p15, 0, %0, C9, C14, 0\n\t" :: "r"(1));
但是由于ARMv6和ARMv7的寄存器不同,我不知道如何为Raspberry 1编写汇编程序。直到现在,我在手册中还找不到关于这方面的任何东西。有人知道怎么做吗


顺便说一句,我的目的只是获取运行代码的时钟周期。如果有人知道其他方法,我也很高兴看到。谢谢大家!

没有修改内核参数的一般能力。要编辑/boot/cmdline.txt,您必须已经具有root访问权限,或者能够物理交换卡。它也只在下一次引导时生效,因此您已经拥有了最大可能的拒绝服务功能

既然这个线程不会死,我至少要指出init=shell不是所谓的单用户模式。单用户模式是当您将“Single”添加到cmdline,或以其他方式引导或转换到运行级别1或S时。您几乎没有启动后台守护程序,只有root用户可以在控制台上登录。如果设置了根密码,通常需要输入


init=/bin/bash最好称为“单进程模式”。将完全跳过init系统、运行级别和init脚本,并启动根shell。即使是像/dev和/proc和/sys这样的重要的伪文件系统也没有挂载,因此许多正常命令都会失败。作业控制不可用。

Er,您所指的确切文本是“在用户模式下访问循环计数器寄存器取决于V位,请参阅”,您没有遵循交叉参考链接吗?(注意,这只是安全的)无论如何,使用
perf
几乎肯定比暴露原始全局计数器来尝试测量单个任务要好,除非您理解为什么该任务有时需要花费数万个周期才能运行,并且您对极不准确的数据感到满意。哈?这与访问硬件性能计数器有什么关系?我告诉你什么是真正的用户模式,它可以与硬件实现兼容。