Raspberry pi1 如何进入用户模式?
How to access user mode in Raspberry pi 1?
我想做的是尝试 运行 Raspberry pi 1(ARMv6) 中的一个短代码,并获取它所花费的时钟周期数。所以我必须读取 CP15 c15 中的循环计数器寄存器。在文档(ARM11->ARM1176->ARM1176JZF-S Technical Reference Manual->System Control Coprocessor->System control processor registers->c15, Cycle Counter Register)中它说我需要先访问用户模式。但我不知道该怎么做。
在 Raspberry pi 2(ARMv7) 中,我知道这可以通过以下代码的内核模块来完成:
/* enable user-mode access */
asm ("MCR p15, 0, %0, C9, C14, 0\n\t" :: "r"(1));
但是由于ARMv6和ARMv7的寄存器不同,我不知道Raspberry 1的汇编器怎么写。直到现在我在手册中找不到任何相关内容。有人知道怎么做吗?
顺便说一句,我的目的只是获取 运行ning 代码的时钟周期。如果有人知道其他方法,我也很高兴看到。谢谢!
一般没有修改内核参数的能力。要编辑 /boot/cmdline.txt,您必须已经拥有 root 访问权限,或者能够物理交换卡。它也只在下次启动时生效,所以你已经拥有了最大可能的拒绝服务能力。
既然这个线程不会死,我至少可以指出 init=shell 不是所谓的单用户模式。单用户模式是当您将 "single" 添加到 cmdline 时,或者以其他方式引导或转换到运行级别 1 或 S。您几乎没有启动后台守护进程,并且只有 root 可以登录,在控制台上。如果设置了root密码,一般需要输入。
init=/bin/bash 叫作 "single-process mode" 可能更好。 init 系统、运行级别和 init 脚本被完全跳过,而是启动了一个 root shell。即使是重要的伪文件系统,如 /dev 和 /proc 和 /sys 也没有挂载,所以许多正常的命令都会失败。作业控制不可用。
我想做的是尝试 运行 Raspberry pi 1(ARMv6) 中的一个短代码,并获取它所花费的时钟周期数。所以我必须读取 CP15 c15 中的循环计数器寄存器。在文档(ARM11->ARM1176->ARM1176JZF-S Technical Reference Manual->System Control Coprocessor->System control processor registers->c15, Cycle Counter Register)中它说我需要先访问用户模式。但我不知道该怎么做。
在 Raspberry pi 2(ARMv7) 中,我知道这可以通过以下代码的内核模块来完成:
/* enable user-mode access */
asm ("MCR p15, 0, %0, C9, C14, 0\n\t" :: "r"(1));
但是由于ARMv6和ARMv7的寄存器不同,我不知道Raspberry 1的汇编器怎么写。直到现在我在手册中找不到任何相关内容。有人知道怎么做吗?
顺便说一句,我的目的只是获取 运行ning 代码的时钟周期。如果有人知道其他方法,我也很高兴看到。谢谢!
一般没有修改内核参数的能力。要编辑 /boot/cmdline.txt,您必须已经拥有 root 访问权限,或者能够物理交换卡。它也只在下次启动时生效,所以你已经拥有了最大可能的拒绝服务能力。
既然这个线程不会死,我至少可以指出 init=shell 不是所谓的单用户模式。单用户模式是当您将 "single" 添加到 cmdline 时,或者以其他方式引导或转换到运行级别 1 或 S。您几乎没有启动后台守护进程,并且只有 root 可以登录,在控制台上。如果设置了root密码,一般需要输入。
init=/bin/bash 叫作 "single-process mode" 可能更好。 init 系统、运行级别和 init 脚本被完全跳过,而是启动了一个 root shell。即使是重要的伪文件系统,如 /dev 和 /proc 和 /sys 也没有挂载,所以许多正常的命令都会失败。作业控制不可用。