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);
p1 == 835a0000 *p1==1p2 == 875a0000 *p2==2p1 == 835a0000 *p1==2
Is it definitely a 128MB RAM device? Some memory controllers support "up to 128MB" via a number of chip selects but often use smaller physical RAM chips. (i.e. 2 64MB devices via 2 chip selects). It is not uncommon to fit less than the maximum RAM and then alias the address range by using multiple chip select lines to drive the same chip select pin. May not be true in your case, but seen it happen before, so could be worth checking.