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