有個問題請教一下
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.
是會有誰把vector table copy過去才對。但影片中說reset一開始就跑0x00,0x00要有instructions.讓我聽得有點模糊。 reset的時候 , RAM的內容都還保留著? 只有Power on and Power on的情況才會重新從bootloader copy vector table to RAM?
每個系統有其 PowerOn 流程,如從ROM, EEPROM, NOR Flash或特定bootable devcie開機,而這些地方就是要先放好Exception Vector Table的地方,Power on 即觸發ARM Reset Exception , 故立即進行ARM Reset Handler 的工作。而這個Reset 工作的執行 (Stage 1 boot ),是屬於XIP (Excute In Place) ,即boot code是在ROM或Nor Flash 內被執行的。
Reset 工作會初始化SDARM, 將SDRAM , ROM 分別映射到CPU定址空間的一塊位址, 如SDRAM 位於 0x0, 若啓用CPU virtual address , 舉例 0x8000 (使用CPU virtual) 也是對應到SDRAM 。接著copy 一份完整的boot code 到SDRAM (頭幾行的內容當然也會是Exception Vector )。
將CPU的PC 指向ARM Reset Handler ( Stage 2 boot ) , 而此時的Reset Handler 是在SDRAM內。並且這時候的ARM Reset Handler 和前面一開始開機的ARM Reset 做不一樣的事了。前面ARM reset 可以只作少量的事, 後面的Reset 做更多事, 如驅動裝置,如 UART, LED, 等, 還有準備好OS載入的相關工作。
我想知道一般broadcom的bootloader,不含我們bootloader的流程。到底有沒有copy vector table to RAM 0x00,以及power on/off and reset是否一樣?
在ARM Reset時, 做copy o RAM (可參考上課實作的程式碼)
如果不一樣,是否power on/off, bootloader會重新copy vector table to RAM, 至於reset是用之前已經copy過存留在RAM的vecto
沒有留言 :
張貼留言