這個問題困擾了大概一周,源自需要寫一份CMD文件語法規則的文檔。 問題大致如下: 1.CMD文件中的PAGE0,PAGE1....PAGE n僅僅是方便程序員管理存儲空間(在代碼風格上),還是不同的page對應著不同的內存空間(比如page 0 對應著程序空間,page 1對應著數據空間) 以上兩種解釋我在不同的官方文檔中都有看到,所以很糾結。 如果僅僅是代碼風格上的分割,那么對于C2XLP內核器件和C55X系列器件又解釋不過去,因為這兩種器件的內存空間不是同一編址的,例如C2XLP的程序、數據、IO空間都是分開編址的。如果page僅是代碼風格上的分割,而不代表不同的數據空間,那么圖1中重疊的空間怎么解釋,連接器怎么區分這兩個重疊部分的代碼,并將其放到對應的物理存儲空間。
如果不同的page對應著不同的數據空間,那么我在28335(c28x)上的驗證又不能支撐這一點假設,我將原來分配的PAGE0和PAGE1分別改成了PAGE3和PAGE5,并將PAGE0,PAGE1,PAGE2,PAGE4中沒有分配任何數據塊。編譯通過后查看map文件,發現對應的段都分配到了對應的PAGE3和PAGE5。且代碼運行正常。如果不同的page對應著不同的數據空間,那么PAGE3和PAGE5代表什么空間?為什么編譯還能正常連接?
|