DSP的CMD文件中MEMORY PAGE的真正含义

2019-12-01 12:42发布

<p> 这个问题困扰了大概一周,源自需要写一份CMD文件语法规则的文档。</p><p> 问题大致如下:</p> <strong>CMD文件中的PAGE0,PAGE1....PAGE n仅仅是方便程序员管理存储空间(在代码风格上),还是不同的page对应着不同的内存空间(比如page 0 对应着程序空间,page 1对应着数据空间)</strong><br><p> 以上两种解释我在不同的官方文档中都有看到,所以很纠结。</p><p> 1.如果仅仅是代码风格上的分割,那么对于C2XLP内核器件和C55X系列器件又解释不过去,因为这两种器件的内存空间不是同一编址的,例如C2XLP的程序、数据、IO空间都是分开编址的。如果page仅是代码风格上的分割,而不代表不同的数据空间,那么图1中重叠的空间怎么解释,连接器 怎么区分这两个重叠部分的代码,并将其放到对应的物理存储空间。</p><p> 2.如果不同的page对应着不同的数据空间,那么我在28335(c28x)上的验证又不能支撑这一点假设,我将原来分配的PAGE0和PAGE1分别改成了PAGE3和PAGE5,并将PAGE0,PAGE1,PAGE2,PAGE4中没有分配任何数据块。编译通过后查看map文件,发现对应的段都分配到了对应的PAGE3和PAGE5。且代码运行正常。如果不同的page对应着不同的数据空间,那么PAGE3和PAGE5代表什么空间?为什么编译还能正常连接?</p><br> <p><img id="aimg_w861y" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" src="data/attach/1912/onnthog8n2xqyw7xng19fwyy7ulu4mnq.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""></p><br> <br> <p><br></p>