2019年8月5日 星期一

boot code 說明


有個問題請教一下
Linker Start up code那個章節 56分:28秒的那一段
1. For broad com的bootloader,是不是也應該會把vector table copy to RAM 0x00的位置?
2. Power on and Reset 是一樣的嗎? 都會直接執行RAM上面0x00的位置? 還是Power on的時候會從走一次bootloader,然後copy vector table to RAM 0x00.

    每個系統有其 PowerOn 啓動流程,如從ROM, EEPROM, NOR Flash或特定bootable devcie開機.執行boot code
    接著會去初始化了SDARM, 再將boot code 前面幾行複製到SDRAM 0x0位址 (實際上內容就是Exception Vector Table及Exception handler), 接著再觸發ARM Reset ,就進入ARM Reset 這就是CPU Reset標準流程.  

是會有誰把vector table copy過去才對。但影片中說reset一開始就跑0x00,0x00要有instructions.讓我聽得有點模糊。reset的時候 , RAM的內容都還保留著? 只有Power on and Power on的情況才會重新從bootloader copy vector table to RAM?
  Power ON流程中就會重新copy vector table from ROM to RAM的動作. 所以RAM的內容會被換掉
  Vector table 是描述於ROM裡程式碼中,這些內容會被複制到RAM中

我想知道一般broadcom的bootloader,不含我們bootloader的流程。到底有沒有copy vector table to RAM 0x00,以及power on/off and reset是否一樣?
如果不一樣,是否power on/off, bootloader會重新copy vector table to RAM, 至於reset是用之前已經copy過存留在RAM的vector table.

  


還有一個問題,RAM and ROM share 相同的位置空間嗎? 不同空間 
課程中常提到 0x8000 and 0x0。這個位置 是RAM 還是 ROM。當我拿到一個位置的時候,我怎麼知道他是RAM還是ROM還是某個peripheral?
   
    0x8000 and 0x0 都是RAM 

   詳看晶片手冊..一般 memory map 會告訴你address指的是什麼....

    

沒有留言 :

張貼留言