顯示廣告
隱藏 ✕
看板 uefacool
作者 uefangsmith (唉呦!不錯哦~)
標題 [Boot] ARM 嵌入式軟體開機程式原理及實務
時間 2011年08月26日 Fri. PM 10:29:08




download



硬體初始化
硬體重置(reset)後,通常會處於未知狀態,此時ARM處理器程式指位器
(program counter) 會跳至一個預設重置中斷向量(reset interrupt vector),通
常為0x00000000記憶體位址,來擷取(fetch)初始化整個系統第一道指令,此
指令通常為一個跳躍指令並儲存於快閃記憶體(Flash memory)。接著,之後
指令完成以下硬體初始化工作:

 處理器相關設定:切換處理器模式至特權模式,例如 SVC mode ,
以確保處理器之後可執行一些特權指令,例如MSR、MRS等指令。
接著,利用特權指令關閉處理器的外部中斷 (IRQ、FIQ),避免因
有問題的硬體發出異常中斷而導致不可預期結果。最後關閉處理器
快取記憶體及記憶體管理單元,讓系統處於最簡單狀態。

 SDRAM 控制器設定:嵌入式系統通常會配置一塊大容量可讀寫
SDRAM,然而SDRAM並不像快閃記憶體可直接讀取,基於特性
一些刷新時序(refresh timing) 必須在SDRAM控制器裡設定,如此
程式才可讀寫此記憶體。

 記憶體配置(memory map)設定:嵌入式系統記憶體位址的解碼,在
系統重置後,通常低位址的區域對應於快閃記憶體;高位址的區域
對應於SDRAM。這樣配置是可理解,因為系統重置需要一段指令
來初始化整個系統,此段指令又位於0x00000000的記憶體位址,因
此需要一塊永久保存(non-volatile)的記憶體來存放。然後,這只是
階段性組態,我們還需要設定記憶體控制器,來重置整個記體配置
(memory remapping),使得SDRAM和快閃記憶體對應的記憶體區域
置換,如圖二所示。如此當開啟中斷並且跳至中段處理向量的記憶
體位址時 (0x00000000~0x0000001C),可降低中斷處理的延遲時間,
這對設計即時作業系統(Realtime Operating System)研究人員來說,
--
※ 作者: uefangsmith 時間: 2011-08-26 22:29:08
※ 編輯: uefangsmith 時間: 2011-08-26 22:43:10
※ 看板: uefacool 文章推薦值: 0 目前人氣: 0 累積人氣: 31 
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇