I'm analyzing a Seagate HDD that provides a serial boot console that allows reading/writing bytes to memory and setting an address pointer.
There's a block of memory from
0x20000 and then it repeats all the way to
0x100000. This isn't just a copy - if I write a byte to
0x40000 the data at location
0x0 also changes. At
0x100000 there's another
128k block that is mirrored over and over until
0x400000 the first block of memory is mirrored again and again.
Here's a map:
1) 0x000000 - 0x020000 *) (mirrors of block 1) 2) 0x100000 - 0x120000 *) (mirrors of block 2) 3) 0x200000 - 0x300000 4) 0x300000 - 0x400000 *) (mirrors of block 1)
MCU is some kind of
ARM processor. Is this some hardware memory-mapping feature of
ARM, is it setup by the
OS, or something else?