ARM920T MMU configuration

Note: This was originally posted on 16th August 2010 at http://forums.arm.com

Hello. I'm making boot loader for arm board SMDK2443 based on ARM920T. There is 128 Mb of RAM on board, and i set up MMU to map addresses 0x80000000-0x88000000 as sections to physical 0x30000000-0x38000000. But for some reason addresses in upper part of address space point to the same physical address that in the lower part.
I.e. running following code
char *p1 = 0x835a0000,
   *p2 = 0x875a0000;

*p1 = 1;
printf("p1 == %x\t*p1==%x\n", p1,*p1);
*p2 = 2;
printf("p2 == %x\t*p2==%x\n", p2,*p2);
printf("p1 == %x\t*p1==%x\n", p1,*p1);

makes output:
p1 == 835a0000 *p1==1
p2 == 875a0000 *p2==2
p1 == 835a0000 *p1==2


Of course, this makes mess for operating system, and it doesn't boot.

Can you tell me, what could be the reason of such behavior?
Parents Reply Children
No data
More questions in this forum