What is Memory Map ? It is just as it sound. It is a kind of Map for a memory (mainly for the memory that is used for programmng). From this map, you can easily get the information like what is the maximum memory space and which part (which address) is associated with what kind of MCU functionality etc.
Putting it in very short, Embedded programming is mainly a sequence of writing specific values to a specific memory location or specific retisters and read values from the memory or registers. Actually this can applies not only to embedded programming but also for programming large scale CPU like the CPU in the PC. However, in large scale application like PC that is operated by high level operating system like Windows / Linux. This kind of memory manipulation is not visible to general programmer. Most of those operation is done by the high level programming tool like Visuall C, C++ or VB etc and all the detailed memory operation is done by underlying operating system. In other words, you as a programmer don't have to care of those detailed process. However in embedded system you need to controll all of those memory operation on your own. Of course, it would be tedius and confusing / frustrating, however you can have full control of those operation. As you get into the embedded system, understanding the memory map and utilizing the map for your needs would be the first obstacle to overcome.
Do we have any easy guide to understand the memory map as we use GPS Navigation system ? Unfortunately No. You have to find where to go in a memory map just by looking at a couple of block diagram and a lot of boring description.
Let's first see how the memory map is given to us. Following is an example of memory map for a microcontroller called 80C196KC. Don't be scared if this does not make any clear sense to you. Just have some general feeling about how a memory map look like.
< Memory map of 80C196KC >
In some case, the memory map is given in a tabular form as below.