相关疑难解决方法(0)

如何在ARM体系结构中读取协处理器

我正在尝试在以下片上系统中读取CP15协处理器

Cortex A7 - ARMv7-A

在我的片段下方

void main (void)
{
    unsigned int reg_value = 0;
    asm volatile("mrc p15, 0, %0, c0, c0, 0" : "=r"(reg_value) );
    printf("reg_value: %d", reg_value);
}
Run Code Online (Sandbox Code Playgroud)

我不知道这是否是读取协处理器寄存器的正确方法,但其编译完成且没有错误.问题出现在执行期间(代码在root中执行):

Illegal instruction
Run Code Online (Sandbox Code Playgroud)

如果我使用gdb,我会得到以下结果:

   0x000086a0 <+16>:    str r3, [r11, #-40] ; 0x28
=> 0x000086a4 <+20>:    mrc 15, 0, r3, cr0, cr0, {0}
   0x000086a8 <+24>:    str r3, [r11, #-40] ; 0x28
Run Code Online (Sandbox Code Playgroud)

为什么我无法读取协处理器寄存器?我的代码出了什么问题?

c assembly arm

5
推荐指数
1
解决办法
578
查看次数

标签 统计

arm ×1

assembly ×1

c ×1