Hi,
I am using gdb with J-Link (actually SAM-ICE) with the GDBServer.
When debugging, I would like to switch the MMU on/off.
Is there any way to do this ?
I am using ATMEL AT91SAM9261.
Thanks,
Mike
Hi,
I am using gdb with J-Link (actually SAM-ICE) with the GDBServer.
When debugging, I would like to switch the MMU on/off.
Is there any way to do this ?
I am using ATMEL AT91SAM9261.
Thanks,
Mike
Hi Mike,
You can enable / disable the MMU by writing to
the CP15 registers. This can be done with the
J-Link GDB Server via remote commands.
To read a CP15 register:
CP15 <CRn>, <CRm>, <op1>, <op2>
To write a CP15 register:
CP15 <CRn>, <CRm>, <op1>, <op2> = <Value>
Tobias,
what exactly do I need to do ?
Can you give me an example ?
Thanks !
Mike
Hi Mike,
The MMU can be enabled / disabled by bit 0 of the CP15 control
register (which is addressed with: CRn=1, CRm=0, op1=0, op2=0).
You can use the GDB Server to read out the current value
of the control register and to write back a modified value.
The sequence below shows how to disable and enable
the MMU on an Atmel AT91SAM9260.
We have configured the MMU to map SDRAM @ 0x40000000
which was normally address of the NAND flash. As you can see,
we disable the MMU and we read NAND flash (which was empty).
If we enable the MMU again, we read SDRAM.
(gdb) monitor long 0x40000000
Reading from address 0x40000000 (Data = 0x2204480B)
(gdb) monitor cp15 1 0 0 0
Reading CP15 register (1,0,0,0 = 0x0005507D)
(gdb) monitor cp15 1 0 0 0 = 0x5507c
Writing CP15 register (1,0,0,0 = 0x0005507C)
(gdb) monitor long 0x40000000
Reading from address 0x40000000 (Data = 0xFFFFFFFF)
(gdb) monitor cp15 1 0 0 0 = 0x5507d
Writing CP15 register (1,0,0,0 = 0x0005507D)
(gdb) monitor long 0x40000000
Reading from address 0x40000000 (Data = 0x2204480B)
Does this answer your questions ?
Best regards,
Tobias
Perfect, that answers it.
I can now select between virtual and physical memory by swithing the MMU on/off.
Mike
Don’t have an account yet? Register yourself now and be a part of our community!