nandboot中是如何copy RW數據到RAM區域

總結一下,

之前一直有個困惑,比如我在編譯器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如何這兩者不同,說明需要數據拷貝了。

 

希望有同樣困混的朋友們看到我的文章後,會對你們有所幫助。~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章