Q: 

In the memory map of 2803x, there is L0 - dual mapped memory to 0x8000-0x8800 and 0x3f8000-0x3f8800.  On other devices I also see such dual mapped memory.

Why is it dual-mapped? (because other SARAM aren't....)

Does it mean if the user write data onto either one block then the data will be copied to the other one automatically?

Therefore, it appears only size of 2K x 16 bit to the user?

A:

There is only one physical memory block here, 2Kx16 in size.  "Dual mapped" means you can access this block at either of the two address ranges.  Yes, if you write a value to, say, address 0x8000, that same value can then be read from address 0x3f8000.  The value is not "Copied" to the other address as you suggest.  There is only one memory.  The address decoder just allows access to that memory at two different address ranges.

The dual mapping is found on most C28x devices.  It was done to allow contiguous location of different memory blocks, and also to allow a C24x compatible mode for the upper address range.  Don't worry about why it was done.  It is how it is.  My suggestion to all users is to access the memory at the lower address range (i.e., 0x8000 - 0x8800).  Do not put the memory in your linker command file twice.  Just list it once at the lower address range, and link stuff there.