ARM的內部啟動與外部啟動

2021-05-24 08:17:48 字數 656 閱讀 7639

arm有內部啟動和外部啟動之分,究竟何為內部何為外部有必要做個說明,這也是熟悉arm運作的基礎。下文以我目前所使用的atmel公司at91sam9260系列arm9單板機為例。         

arm啟動時會產生復位異常,程式計數器指向異常向量位址0x0000_0000,即啟動時首先執行的是位於位址0x0000_0000處的指令。因此,從0x0000_0000到0x0010_0000的1m的內部儲存區域(內部儲存區0)在上電後將決定系統的啟動過程。若bms(boot mode select)=1,則系統將內部儲存區1(0x0010_0000--0x0010_8000)的資料對映到內部儲存區0,即從內部啟動;若bms=0,則將外部儲存器的區域0對映到內部儲存區0,實現外部啟動。

外部啟動過程相對簡單,但是需要自行編寫整個啟動過程的**,**量要大一些。外部啟動一般將bootloader**放在容量小相對昂貴但是可以片內執行**(xip)的norflash中,作業系統和應用程式以及資料放在低價大容量的nandflash中。系統上電後將在norflash中執行bootloader,bootloader一般為功能較為全面的uboot,eboot,redboot等,完成系統硬體初始化和堆疊分配的任務,同時搬移作業系統核心**到sdram某一位址,最後跳轉到該位址將指揮權交給作業系統核心,核心執行後掛在在nandflash中的檔案系統,整個外部啟動過程完畢。

ARM啟動解析

參考文章 起始位址 在分析啟動流程之前我們首先要清楚不論是arm的何種處理器,其都是從0x0000 0000位址處開始執行程式的。以2440為例 1.啟動方式 s3c2440支援兩種啟動模式 nand和非nand 這裡是nor flash 具體採用的方式取決於om0 om1兩個引腳的狀態。需要檢測硬...

啟動外部程式

啟動外部程式我們可以使用函式winexec shellexecute和shellexecuteex。我推薦大家使用函式shellexecute,因為它既靈活,又簡單。看看下面的例子,用法就清楚了 啟動乙個程式 shellexecute handle,open lpcstr d 模擬程式.exe nu...

ARM的啟動過程

從開機,即對處理器傳送乙個 reset 訊號後,arm 處理器就進入中斷模式,從中斷向量 reset 處理,即位址0x00000000 處開始執行。但是,我們看到,整個系統在實體地址 0 處是沒有儲存器件的。實際上是,對與大多數的arm處理器來講,有乙個硬體對映的機制。對與這個處理器來說,開始時,預...