天天看點

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如何這兩者不同,說明需要資料拷貝了。

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

繼續閱讀