I'm trying to read CP15 coprocessor in the following System-on-chip
Cortex A7 - ARMv7-A
Below my snippet
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);
}
I don't know if this is the correct way to read the coprocessor register but its compilation is completed without errors.
The problem is arisen during its execution (the code is executed in root):
Illegal instruction
If I use gdb I obtain the following result:
0x000086a0 <+16>: str r3, [r11, #-40] ; 0x28
=> 0x000086a4 <+20>: mrc 15, 0, r3, cr0, cr0, {0}
0x000086a8 <+24>: str r3, [r11, #-40] ; 0x28
Why I'm not able to read coprocessor registers? What's wrong with my code?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…