ARM嵌入式系統(tǒng)初始化過程
--初始化異常向量表(中斷向量表)
--初始化存儲器系統(tǒng)
--初始化堆棧
--初始化有特殊要求的端口和設備
--初始化應用程序的運行環(huán)境
--調用主應用程序
1、初始化異常向量表(中斷向量表)
ARM微處理器結構要求中斷向量表必須放置在從0x00地址開始的連續(xù)8×4字節(jié)的空間內,每當一個中斷(異常)發(fā)生以后,ARM微處理器便強制把PC置 為對應的中斷向量。由于每個中斷只占用向量表中一個字(4個字節(jié))的存儲空間,只能放一條ARM指令,所以通常為跳轉指令,使程序從向量表跳轉到存儲器的 其他位置,執(zhí)行真正的中斷處理。
具體代碼實現(xiàn)如下:
AREA Init,CODE,READONLY
ENTRY
B Reset_Handler ;異常復位
B Undef_Handler ;未定義指令異常
B SWI_Handler ;軟件中斷
B PreAbort_Handler ;指令預取中止
B DataAbord_Handler ;數(shù)據(jù)中止
B . ;系統(tǒng)保留
B IRQ_Handler ;普通外部中斷
B FIQ_Handler ;快速外部中斷
..........
2、初始化存儲器系統(tǒng)
主要是對系統(tǒng)存儲器控制器(MMU)的初始化。由于存儲器控制器并不是ARM架構的一部分,不同芯片的實現(xiàn)方式各不相同。由于運算能力和尋址能力的強大, 基于ARM內核的微處理器系統(tǒng)一般都需要外擴展各種類型的存儲器。對于存儲器系統(tǒng)的初始化一般包括如下幾個方面:
--存儲器類型、時序和總線寬度的配置
--存儲器地址的配置
(1)存儲器類型
基于ARM微處理系統(tǒng)的存儲器一般有如下幾類:SARM,DRAM,Flah,同時,即使同類存儲器也有訪問速度上的不同。其中,SRAM和Flah屬于 靜態(tài)存儲器,可以共用存儲器端口,而DRAM有動態(tài)刷新和地址復用等特征,需要專門的存儲器端口。
(2)時序
存儲器端口的接口時序優(yōu)化對系統(tǒng)性能影響非常大,因為系統(tǒng)運行的速度瓶頸一般都存在于存儲器的訪問,因此希望存儲器的訪問盡可能快,但又要考慮由此帶來的 系統(tǒng)穩(wěn)定性問題。
(3)總線寬度
ARM微處理器架構支持8/16/32位的數(shù)據(jù)總線寬度訪問存儲器和外設,對于特定的存儲器來說,需要設定數(shù)據(jù)總線的寬度。
(4)存儲器地址的配置
ARM微處理器架構理論上可以支持4GB的地址空間,而對于一個實際的系統(tǒng)來說,配置的物理地址遠沒有這么多,因此,如何配置存儲器的地址,也是一個重要 的問題。
(5)存儲器地址重映射
存儲器地址重映射就是可以通過軟件配置來改變一塊存儲器物理地址的方法,是當前許多先進控制器所具有的功能。
進行地址重映射的原因:提高系統(tǒng)的運行效率。
進行地址重映射的注意:保證程序流程的連續(xù)性。
有的ARM處理器不具有地址重映射的功能,可以采樣代碼搬移加跳轉的方式完成上述功能。
3、初始化堆棧
由于ARM微處理器有7中運行模式,每一種模式的堆棧指針(SP)都是獨立的(其中系統(tǒng)模式和用戶模式使用相同的SP)。因此,需要對每一種模式的SP進 行初始化。
采用的方法是:改變當前程序狀態(tài)寄存器(CPSR)內的狀態(tài)位,使處理器切換到不同的狀態(tài),然后初始化SP。但是對用戶模式下SP的初始化應該放在最后, 因為ARM微處理器進入用戶模式之后就無法再切換到其他模式。
設置堆棧應該注意的問題是:堆棧的大小根據(jù)需要確定,要盡可能給堆棧分配高速存儲器(例如片內的SRAM)。堆棧性能的提高對提高系統(tǒng)整體性能的影響非常 顯著。
初始化堆棧的代碼如下:
MRS R0, CPSR
BIC R0, R0, #MODEMASK
ORR R1, R0, #IRQMODE
MSR CPSR_c, R1
LDR SP, =IRQStack
BIC R0, R0, #MODEMASK
ORR R1, R0, #FIQMODE
MSR CPSR_c, R1
LDR SP, =FIQStack
.........
4、初始化應用程序和有特殊要求的端口和設備
該部分的初始化由具體的系統(tǒng)和用戶需求決定,一般的外設初始化可以放在系統(tǒng)初始化以后進行。比較典型的應用是驅動一些簡單的輸出設備,例如LED等,用來 指示系統(tǒng)啟動的進程和狀態(tài)。初始化應用程序的運行環(huán)境,就是完成必要的從ROM到RAM的數(shù)據(jù)傳輸,初始化有特殊要求的端口、設備和應用程序的運行環(huán)境。
5、改變處理器的模式
ARM微處理器支持7種模式,其中:
超級模式(Supervisor):復位后的缺省模式。
多種特權模式變化:主要完成各模式的堆棧設置,注意不要進入用戶模式。
用戶模式:用戶程序運行模式。
6、調用應用主程序
當完成所有的系統(tǒng)初始化工作之后,就需要把程序流程轉入主應用程序。最常見的操作是:
IMPORT C_Entry
......
B C_Entry
評論