This problem has troubled me for about a week, and it stems from the need to write a document on the grammar rules of CMD files.
The problem is roughly as follows:
1. PAGE0, PAGE1....PAGEn in the CMD file are just for the convenience of programmers to manage storage space (in code style), or different pages correspond to different memory spaces (for example, page 0 corresponds to program space, page 1 corresponds to data space)
I have seen the above two explanations in different official documents, so I am very confused.
If it is just a division in code style, then it is hard to explain the C2XLP core device and the C55X series device, because the memory spaces of these two devices are not addressed in the same way. For example, the program, data, and IO spaces of C2XLP are all addressed separately. If page is just a division in code style, and does not represent different data spaces, then how to explain the overlapping space in Figure 1, and how does the connector distinguish the two overlapping parts of the code and put them into the corresponding physical storage space.
If different pages correspond to different data spaces, then my verification on 28335 (c28x) cannot support this assumption. I changed the originally allocated PAGE0 and PAGE1 to PAGE3 and PAGE5 respectively, and did not allocate any data blocks in PAGE0, PAGE1, PAGE2, and PAGE4. After the compilation passed, I checked the map file and found that the corresponding segments were allocated to the corresponding PAGE3 and PAGE5. And the code runs normally. If different pages correspond to different data spaces, then what spaces do PAGE3 and PAGE5 represent? Why can the compilation still connect normally?
|