總結一下,
之前一直有個困惑,比如我在編譯器MDK(或者ADS)下,加入了分散加載文件,把RW指定到了SDRAM區域。
編譯後生成了相應的.bin文件,因爲事先我把RO區域放到0x0開始的地方,所以我知道RO在bin中的位置。
之後我把bin燒寫到nand flash的0開始處。在boot裏面執行nandcopy會首先把ROcopy到SDRAM區域,但
RW也需要拷貝到SDRAM區域啊(之前分散加載中指定的位置)。但是我怎麼知道RW數據段在bin中的地址呢?(即相當於在nandflash中地址)
之前這個問題一直沒想通。。。
現在受啓發想通了,
原來不管是ADS還是MDK,編譯後的bin文件中,其RO,RW,ZI都是嚴格按照次序來排放的,
所以既然知道了bin中RO的基址,且RO 大小也知道,那麼 RO 在bin中結束的地方肯定就是RW開始的地方。
在copy RW到SDRAM中時,會首先比較 R0_LIMIT 和 RW_BASE如何這兩者不同,說明需要數據拷貝了。
希望有同樣困混的朋友們看到我的文章後,會對你們有所幫助。~~